1、read:从标准输入读取数值

http://www.runoob.com/linux/linux-comm-scp.html

  1. # 循环,直到读入数据
  2. username=""
  3. while [ "$username" = "" ]
  4. do
  5. read -p "请输入你的用户名:" username
  6. done
  7. echo "输入成功! 用户名:$username"

2、判断文件夹是否存在

  1. # 获取当前目录下的所有文件夹
  2. dir=$(ls -l | awk '/^d/ {print $NF}')
  3. tgt_dir="target_dir"
  4. #循环判断
  5. for i in $dir
  6. do
  7. if [ $i == $tgt_dir ]; then
  8. echo "target_dir 文件夹存在"
  9. exit 0
  10. fi
  11. done
  12. echo "target_dir 文件夹不存在"

3、scp:用于Linux之间复制文件和目录

http://www.runoob.com/linux/linux-comm-scp.html
工作中主要用于文件中转

  1. # 1、从本地复制到远程
  2. scp -P 22 scp_common.tgz calvin.zhang@192.168.0.1:/home/calvin.zhang/
  3. # 2、从远程复制到本地
  4. scp -P 22 calvin.zhang@192.168.0.1:/home/calvin.zhang/scp_common.tgz .

4、时间戳格式化

  • 格式化时间戳
  1. # unix/linux
  2. date -d @1556163233
  3. # mac
  4. date -r 1556163233
  • 获取当前时间戳
  1. # unix/linux/mac
  2. date +%s

5、tar 压缩、解压缩

  1. # 压缩
  2. tar -zcvf package.tar.gz package
  3. # 解压缩
  4. tar -zxvf package.tar.gz

6、ssh config

一般登录服务器时候需要这样写

  1. ssh root@192.168.1.1 -p 22

或者有各种工具一键登录也很好,但是在服务器上可能啥都没有,就需要使用ssh config 文件啦!

~/.ssh 目录下面添加config文件,添加如下内容

  1. Host the_machine
  2. HostName 192.168.1.1
  3. User root
  4. Port 22
  5. Host gitlab.myownsite.com
  6. Port 33
  1. 当我们需要访问 192.168.1.1 机器的时候,就只需要 ssh the_machine 就可以了
  2. 当 域名 gitlab.myownsite.com 机器的ssh端口是33的时候,任何发往 gitlab.myownsite.com 的ssh都会自动发送到33端口。这个在访问非默认端口的git服务器时很有用,一般人可能一辈子也遇不到。详见https://www.yuque.com/calvin.zhang/log/issue-20190404

7、ps + awk + kill 清理进程

  1. ps -ef | grep $key_words | grep -v grep | awk '{print $2}' | xargs kill

或者

  1. kill $(ps -ef | grep $key_words | grep -v grep | awk '{print $2}')
  2. ## echo
  3. echo $(ps -ef | grep $key_words | grep -v grep | awk '{print $2}')

8、当前shell脚本执行目录

  1. current=$(cd `dirname $0`;pwd)

9、sed替换文本内的字符串

  1. sed -i 's/old_str/new_str/g' filename.txt

实例:将文件里的_1,替换成,

  1. sed -i 's/_1,/,/g' filename

10、awk 统计Hive表分区占用存储

  1. hdfs dfs -du -h /user/hive/warehouse/table_xxx/ds=20191209*/ | awk '{sum+=$1} END {print "Sum = ", sum}'