外部過濾器,程式和命令 複雜命令

2021-08-07 02:04:04 字數 2455 閱讀 3682

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過濾器 能夠接受資料,過濾 處...