1. 判斷文件是否存在
if [ -f ./$NAME.tar ]; then
//do something
else
//something else
2. 點號作為source
使用
# 包含公共函數(shù)庫
if [ -f ./commons/bigdata.head ];then
. ./commons/bigdata.head
fi
3. 獲取當(dāng)前的時間戳
date '+%s'
4. 將輸出的結(jié)果以表格形式展示出來
|columns -t
結(jié)果以表格形式輸出
5. 對查詢到的結(jié)果統(tǒng)一處理
ps aux | awk '{print $1" "$2}' | grep 101 | grep -v root | awk '{print $2}' | xargs -i kill -9 {}
6. 迭代查找包含某個字符串的文件
grep -rn "base_version" *
7. 切換到某個用戶下執(zhí)行一條命令
su - user -c Command
例如:
su - oracle -c "lsnrctl start"
這樣的好處就是不用切換到oracle用戶下去執(zhí)行恩尾,如果是在腳本中就更方便了畜隶。
8. 截取字符串變量的一部分
#original_var="/home/streaming.bak"
#echo ${original_var:0:5}
輸出: /home
9. 刪掉root用戶不能修改的文件
原因:有 隱藏的 -i
屬性 感昼。
lsattr 文件名 #找到隱藏文件
chattr -i 文件名 #取消-i 參數(shù) #-R將所有的子目錄下文件也取消-i參數(shù)
rm -rf 文件名 #刪除文件
10. shell中局部使用expect
expect -c "
set timeout 1200;
spawn kinit hdfs
expect {
\"*Password*\" {send \"${FIhdfsPW}\r\";}
}
expect eof;"
11. shell中打印進(jìn)度條
#!/bin/bash
for i in {1..100}
do
for j in `seq $i`
do
echo -n "#"
done
sleep 1
echo -ne "\r"
done
12. 查看進(jìn)程號和端口號的幾個小命令
# 查看進(jìn)程pid
ps -ef | grep 進(jìn)程名
# RedHat查看進(jìn)程占用的端口號
netstat -nltp | grep pid
# ubuntu查看進(jìn)程占用的端口號
netstat -anp | grep pid
# 查看占用端口號的進(jìn)程
lsof -i:端口號
13. 利用more命令進(jìn)行文件翻頁查看
如果希望查看的日志文件過大华蜒,那么可以通過使用more
命令進(jìn)行分頁查找耐朴。例如勾哩,設(shè)置每頁展示10條數(shù)據(jù)死嗦,命令如下:
more -10 fileName
通過使用more
命令可以查看到每一頁的數(shù)據(jù)窒悔,同時通過敲空格鍵,可以跳轉(zhuǎn)下一頁度迂。同時窗口中會顯示進(jìn)度藤乙。
14. 查看日志最后一次出現(xiàn)關(guān)鍵詞test
的日志記錄
grep 'test' -A 10 log.file | tail -n 11
15. 一條命令循環(huán)打印
while true; do du -sh .; sleep 1;done
16. 去除注釋和空行
egrep -v "^$|#" 文件名