破解shell的exec用法迷霧

前言

首先吐槽一下,通過百度出來的東西,很多寫的都沒有什麼深度和內涵。很多寫shell教程的人,採用的都是線性的思維方式,給出一個命令介紹,後面跟上實例介紹,採用的是“學->用”的思維模式。這種模式屬於最低級最不科學的學習方式。絕大多數人習慣於用線性思維來思考,但是這個世界卻是一個多維、非線性的空間。本文的內容採用的非線性的思維方式,充分發揮想象和聯想,以左右逢源的方式貫穿shell的四面八方。

1、exec 簡介

exec 是一個內置命令,位高權重,甚至比 find 等級還高。exec 可以調用並執行其他的指令,類似這樣的場景---exec ls,比 find 更有權勢,但是 exec 卻常常當做 find 的小跟班,被人視為 find 命令的一個選項,下面的場景大家應該不陌生吧:

破解shell的exec用法迷霧

exe執行刪除命令

2、exec 用法迷霧

但是,對於上述這個命令很多人搞不明白,尤其是後半部分,常常被大括號所迷惑。簡單的來說,在這裡大括號{}用於代替查找到的文件。一句話點醒夢中人,眾人恍然大悟。可是等用 exec 的時候,往往還是記不住它的使用規範,歸根到底還是因為我們沒有深入的挖掘大括號的內涵。

其實理解了大括號的內涵,那能熟練的使用 exec。大括號{}是有內涵的,它通常用來表示集合,所以在上述命令中代替查找到的文件集合,也是理所當然的。這就是為什麼上面命令用大括號{},而不是用中括號[]、小括號()的原因。

3、大括號內涵

深入挖掘一下,你會發現大括號的學問還是挺多的。在數學領域,大括號表示集合,在shell裡面延續了集合這個內涵,而且把集合這個東西發揮的淋漓盡致。在 shell 裡面,集合的種類多種多樣,百花鬥豔:

(1)文件的集合。大括號用於代替查找到的文件,如下所示:

破解shell的exec用法迷霧

大括號表示文件集合

(2)數字的集合。大括號用於創建序列,如下所示:

破解shell的exec用法迷霧

大括號用於創建數字集合

(3)字符的集合。大括號用於擴展字符串,如下所示:

破解shell的exec用法迷霧

大括號用於字符集合

(4)指令的集合。大括號用於標識動作指令,例如:awk的{action}

備註:本文源自《趣談shell》,用非線性思維學習shell,讓天下沒有難學的shell。


分享到:


相關文章: