1. 程式人生 > >系列·Linux精選命令列(第2期)

系列·Linux精選命令列(第2期)

一直嘗試一個命令直到成功
until [[ $? -eq 0 ]]; do YOURCOMMAND; done

按型別統計檔案數量
ls | tr [:upper:] [:lower:] | grep -oP ‘\.[^\.]+$’ | sort | uniq -c | sort

檢視兩個目錄下檔案的區別,快速複製和貼上打印出的東西,用vimdiff進行更詳細的比較
diff -q dir1/ dir2/ | grep differ | awk ‘{ print “vimdiff ” $2 ” ” $4 }’

對當前目錄下的所有檔案進行替換
find . -type f -exec sed -i ‘s/gw10./gw17./g’ {} \;

找一個可以用的埠
port=32768; while netstat -atn | grep -q :$port; do port=$(expr $port + 1); done; echo $port

檢視監聽的埠
netstat -ltun

假裝比較忙方法
export GREP_COLOR=’1;32′; cat /dev/urandom | hexdump -C | grep –color=auto “ca fe”

列出已經定義的bash函式
compgen -A function

查詢超過指定大小的檔案
find directory -size +nnn

監視檔案的方法
watch -d ‘ls -l’

建立目錄並且進入剛建立的目錄
mkdir /home/foo/doc/bar && cd $_

basename命令的替代用法
echo ${file##*/}

顯示所有有活動程序的使用者
ps -eo user | sort -u

排序最多使用的命令
history | awk ‘{print $2,$3}’ | sed s/sudo// | awk ‘{print $1}’ | awk ‘BEGIN {FS=”|”}{print $1}’ | sort | uniq -c | sort -n | tail | sort -nr

倒計時
MIN=10;for ((i=MIN*60;i>=0;i–));do echo -ne “\r$(date -d”0+$i sec” +%H:%M:%S)”;sleep 1;done

顯示BIOS資訊
dmidecode -t bios

遠端壓縮後寫到本地
ssh [email protected] “tar cfp – /path/to/log/* | gzip” > local.tar.gz

帶進度條的複製命令
copy(){ cp -v “$1” “$2″&watch -n 1 ‘du -h “$1” “$2”;printf “%s%%\n” $(echo `du -h “$2″|cut -dG -f1`/0.`du -h “$1″|cut -dG -f1`|bc)’;}

獲得小於500的隨機數
RANGE=500;number=$RANDOM let “number %= $RANGE”; echo “Random number less than $RANGE — $number”