1、read:从标准输入读取数值
http://www.runoob.com/linux/linux-comm-scp.html
# 循环,直到读入数据
username=""
while [ "$username" = "" ]
do
read -p "请输入你的用户名:" username
done
echo "输入成功! 用户名:$username"
2、判断文件夹是否存在
# 获取当前目录下的所有文件夹
dir=$(ls -l | awk '/^d/ {print $NF}')
tgt_dir="target_dir"
#循环判断
for i in $dir
do
if [ $i == $tgt_dir ]; then
echo "target_dir 文件夹存在"
exit 0
fi
done
echo "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/linux
date -d @1556163233
# mac
date -r 1556163233
- 获取当前时间戳
# unix/linux/mac
date +%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_machine
HostName 192.168.1.1
User root
Port 22
Host gitlab.myownsite.com
Port 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}')
## echo
echo $(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}'