1. 判断文件是否存在
if [ -f ./$NAME.tar ]; then
//do something
else
//something else
2. 点号作为source
使用
# 包含公共函数库
if [ -f ./commons/bigdata.head ];then
. ./commons/bigdata.head
fi
3. 获取当前的时间戳
date '+%s'
4. 将输出的结果以表格形式展示出来
|columns -t
结果以表格形式输出
5. 对查询到的结果统一处理
ps aux | awk '{print $1" "$2}' | grep 101 | grep -v root | awk '{print $2}' | xargs -i kill -9 {}
6. 迭代查找包含某个字符串的文件
grep -rn "base_version" *
7. 切换到某个用户下执行一条命令
su - user -c Command
例如:
su - oracle -c "lsnrctl start"
这样的好处就是不用切换到oracle用户下去执行,如果是在脚本中就更方便了。
8. 截取字符串变量的一部分
#original_var="/home/streaming.bak"
#echo ${original_var:0:5}
输出: /home
9. 删掉root用户不能修改的文件
原因:有 隐藏的 -i
属性 。
lsattr 文件名 #找到隐藏文件
chattr -i 文件名 #取消-i 参数 #-R将所有的子目录下文件也取消-i参数
rm -rf 文件名 #删除文件
10. shell中局部使用expect
expect -c "
set timeout 1200;
spawn kinit hdfs
expect {
\"*Password*\" {send \"${FIhdfsPW}\r\";}
}
expect eof;"
11. shell中打印进度条
#!/bin/bash
for i in {1..100}
do
for j in `seq $i`
do
echo -n "#"
done
sleep 1
echo -ne "\r"
done
12. 查看进程号和端口号的几个小命令
# 查看进程pid
ps -ef | grep 进程名
# RedHat查看进程占用的端口号
netstat -nltp | grep pid
# ubuntu查看进程占用的端口号
netstat -anp | grep pid
# 查看占用端口号的进程
lsof -i:端口号
13. 利用more命令进行文件翻页查看
如果希望查看的日志文件过大,那么可以通过使用more
命令进行分页查找。例如,设置每页展示10条数据,命令如下:
more -10 fileName
通过使用more
命令可以查看到每一页的数据,同时通过敲空格键,可以跳转下一页。同时窗口中会显示进度。
14. 查看日志最后一次出现关键词test
的日志记录
grep 'test' -A 10 log.file | tail -n 11
15. 一条命令循环打印
while true; do du -sh .; sleep 1;done
16. 去除注释和空行
egrep -v "^$|#" 文件名