1、read:从标准输入读取数值
http://www.runoob.com/linux/linux-comm-scp.html
# 循环,直到读入数据username=""while [ "$username" = "" ]doread -p "请输入你的用户名:" usernamedoneecho "输入成功! 用户名:$username"
2、判断文件夹是否存在
# 获取当前目录下的所有文件夹dir=$(ls -l | awk '/^d/ {print $NF}')tgt_dir="target_dir"#循环判断for i in $dirdoif [ $i == $tgt_dir ]; thenecho "target_dir 文件夹存在"exit 0fidoneecho "target_dir 文件夹不存在"
3、scp:用于Linux之间复制文件和目录
http://www.runoob.com/linux/linux-comm-scp.html
工作中主要用于文件中转
# 1、从本地复制到远程scp -P 22 scp_common.tgz calvin.zhang@192.168.0.1:/home/calvin.zhang/# 2、从远程复制到本地scp -P 22 calvin.zhang@192.168.0.1:/home/calvin.zhang/scp_common.tgz .
4、时间戳格式化
- 格式化时间戳
# unix/linuxdate -d @1556163233# macdate -r 1556163233
- 获取当前时间戳
# unix/linux/macdate +%s
5、tar 压缩、解压缩
# 压缩tar -zcvf package.tar.gz package# 解压缩tar -zxvf package.tar.gz
6、ssh config
一般登录服务器时候需要这样写
ssh root@192.168.1.1 -p 22
或者有各种工具一键登录也很好,但是在服务器上可能啥都没有,就需要使用ssh config 文件啦!
在 ~/.ssh 目录下面添加config文件,添加如下内容
Host the_machineHostName 192.168.1.1User rootPort 22Host gitlab.myownsite.comPort 33
- 当我们需要访问
192.168.1.1机器的时候,就只需要ssh the_machine就可以了 - 当 域名
gitlab.myownsite.com机器的ssh端口是33的时候,任何发往 gitlab.myownsite.com 的ssh都会自动发送到33端口。这个在访问非默认端口的git服务器时很有用,一般人可能一辈子也遇不到。详见https://www.yuque.com/calvin.zhang/log/issue-20190404
7、ps + awk + kill 清理进程
ps -ef | grep $key_words | grep -v grep | awk '{print $2}' | xargs kill
或者
kill $(ps -ef | grep $key_words | grep -v grep | awk '{print $2}')## echoecho $(ps -ef | grep $key_words | grep -v grep | awk '{print $2}')
8、当前shell脚本执行目录
current=$(cd `dirname $0`;pwd)
9、sed替换文本内的字符串
sed -i 's/old_str/new_str/g' filename.txt
实例:将文件里的_1,替换成,
sed -i 's/_1,/,/g' filename
10、awk 统计Hive表分区占用存储
hdfs dfs -du -h /user/hive/warehouse/table_xxx/ds=20191209*/ | awk '{sum+=$1} END {print "Sum = ", sum}'
