Shell拾遗

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 "^$|#" 文件名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容