find
-exec command \;
在每乙個find匹配到的檔案執行command命令. 命令序列以;結束(「;」是轉移以保證shell傳遞到find命令中的字元不會被解釋為其他的特殊字元).
bash$ find ~/
-name
'*.txt'
/home/liudezhi/
/home/liudezhi/misc/irmeyc.txt
/home/liudezhi/test-scripts/1.txt
如果command中包含{},那麼find命令將會用所有匹配檔案的路徑名來替換」{}」.
find ~/ -name 'core*' -exec rm {} \;
# 從使用者的home目錄中刪除所有的 core dump檔案.
xargs
這是給命令傳遞引數的乙個過濾器, 也是組合多個命令的乙個工具.它把乙個資料流分割為一些足夠小的塊, 以方便過濾器和命令進行處理.由此這個命令也是後置引用的乙個強有力的替換. 當在一般情況下使用過多引數的命令替換都會產生失敗的現象, 這時候使用xargs命令來替換, 一般都能成功.一般的, xargs從 stdin 或者管道中讀取資料, 但是它也能夠從檔案的輸出中讀取資料.
xargs的預設命令是echo. 這意味著通過管道傳遞給xargs的輸入將會包含換行和空白, 不過通過xargs的處理, 換行和空白將被空格取代.
bash$ ls -l
total 0
-rw-rw
-r--
1 liudezhi liudezhi 0 aug 18
18:11 file1
-rw-rw
-r--
1 liudezhi liudezhi 0 aug 18
18:11 file2
bash$ ls -l
| xargs
total 0
-rw-rw
-r--
1 liudezhi liudezhi 0 aug 18
18:11 file1 -rw
-rw-r
--1 liudezhi liudezhi 0 aug 18
18:11 file2
bash$ find ~/mail -type f | xargs grep "linux"
./misc:user-agent: slrn/0.9
.8.1 (linux)
...
ls | xargs -p -l gzip 使用gzips壓縮當前目錄下的每個檔案, 每次壓縮乙個, 並且在每次壓縮前都提示使用者.
*乙個有趣的xargs選項是-n nn, nn用來限制每次傳遞進來的引數的個數.
*乙個有用的選項是-0, 使用find -print0grep -lz這兩種組合方式. 這允許處理包含空白或引號的引數.
find /
-type f -print0
| xargs -o grep -liwz gui | xargs -o rm -f
grep -rliwz gui /
| xargs -o rm -f
上面兩行都可以用來刪除任何包含」gui」的檔案.
expr
通用求值表示式: 通過給定的操作(引數必須以空格分開)連線引數, 並對引數求值. 可以使算術操作, 比較操作, 字串操作或者是邏輯操作.
expr 3 + 5 # return
8expr 5 % 3 # return
2expr 1 / 0 # return expr: 除以零.(不允許非法的算術操作.)
expr 5 \* 3 # return
15(*在算術表示式expr中使用乘法操作時, 乘法符號必須被轉義.)
expr `expr 5 * 3` # expr:syntax error.
y=`expr $y + 1` # 增加變數的值, 與 lety=y+1 和 y=$(($y+1)) 的效果相同.
z=`expr substr $string $position $length` # 在位置$position上提取$length長度的子串.
: 操作可以替換match命令. 比如,b=`expr $a : [0-9]*`與b=`expr match $a [0-9]*`完全等價.
perl, sed, 和awk是更強大的字串分析工具. 在指令碼中加入一段比較短的sed或者awk」子程式」, 比使用expr更有吸引力.
外部過濾器,程式和命令 數學計算命令
factor 將乙個正數分解為多個素數.bash factor 2345 2345 5 767bc bc命令是一種支援任意精度的互動執行的計算器語言.bash內建了對整數四則運算的支援,但是並不支援浮點運算,而bc命令可以很方便的進行浮點運算,當然整數運算也不再話下.bc比較類似於c語言的語法.這裡...
jumpserver設定命令過濾器
一.環境 jumpserver部署方式 docker容器一鍵部署 jumpserver版本 v2.17.2 二.命令過濾器 1.新增 資產管理 命令過濾 新增 2.新增規則 操作剛才建立的命令過濾器容器 設定命令過濾規則 三.設定危險命令告警 系統設定 訊息訂閱 會話管理 危險命令告警 四.驗證 1...
Linux命令 5 管道和過濾器
1管道 有時候,我們可以把兩個命令連起來使用,乙個命令的輸出作為另乙個命令的輸入,這就叫做管道 為了建立管道,需要在兩個命令之間使用豎線 連線。管道是linux程序之間一種重要的通訊機制 除了管道,還有共享記憶體 訊息佇列 訊號 套接字 socket 等程序通訊機制 2過濾器 能夠接受資料,過濾 處...