命令別名:保護和服務
Linux shell 允許你將命令彼此連結在一起,一次觸發執行復雜的操作,並且可以對此建立別名作為快捷方式。
讓我們將繼續我們的別名系列。到目前為止,你可能已經閱讀了我們的關於別名的第一篇文章,並且應該非常清楚它們是如何為你省去很多麻煩的最簡單方法。例如,你已經看到它們幫助我們減少了輸入,讓我們看看別名派上用場的其他幾個案例。
別名即快捷方式
Linux shell 最美妙的事情之一是可以使用數以萬計的選項和把命令連線在一起執行真正複雜的操作。好吧,也許這種美麗是在旁觀者的眼中的,但是我們覺得這個功能很實用。
不利的一面是,你經常需要記得難以記憶或難以打字出來的命令組合。比如說硬碟上的空間非常寶貴,而你想要做一些清潔工作。你的第一步可能是尋找隱藏在你的家目錄裡的東西。你可以用來判斷的一個標準是查詢不再使用的內容。ls
可以幫助你:
ls -lct
上面的命令顯示了每個檔案和目錄的詳細資訊(-l
),並顯示了每一項上次訪問的時間(-c
),然後它按從最近訪問到最少訪問的順序排序這個列表(-t
)。
這難以記住嗎?你可能不會每天都使用 -c
和 -t
選項,所以也許是吧。無論如何,定義一個別名,如:
alias lt='ls -lct'
會更容易一些。
然後,你也可能希望列表首先顯示最舊的檔案:
alias lo='lt -F | tac'
圖 1:使用 lt 和 lo 別名。
這裡有一些有趣的事情。首先,我們使用別名(lt
)來建立另一個別名 —— 這是完全可以的。其次,我們將一個新引數傳遞給 lt
(後者又通過 lt
別名的定義傳遞給了 ls
)。
-F
選項會將特殊符號附加到專案的名稱後,以便更好地區分常規檔案(沒有符號)和可執行檔案(附加了 *
)、目錄檔案(以 /
結尾),以及所有連結檔案、符號連結檔案(以 @
符號結尾)等等。-F
選項是當你迴歸到單色終端的日子裡,沒有其他方法可以輕鬆看到列表項之間的差異時用的。在這裡使用它是因為當你將輸出從 lt
傳遞到 tac
時,你會丟失 ls
的顏色。
第三件我們需要注意的事情是我們使用了管道。管道用於你將一個命令的輸出傳遞給另外一個命令時。第二個命令可以使用這些輸出作為它的輸入。在包括 Bash 在內的許多 shell 裡,你可以使用管道符(|
) 來做傳遞。
在這裡,你將來自 lt -F
的輸出導給 tac
。tac
這個命令有點玩笑的意思,你或許聽說過 cat
命令,它名義上用於將檔案彼此連線(concat
),而在實踐中,它被用於將一個檔案的內容列印到終端。tac
做的事情一樣,但是它是以逆序將接收到的內容輸出出來。明白了嗎?cat
和 tac
,技術人有時候也挺有趣的。
cat
和 tac
都能輸出通過管道傳遞過來的內容,在這裡,也就是一個按時間順序排序的檔案列表。
那麼,在有些離題之後,最終我們得到的就是這個列表將當前目錄中的檔案和目錄以新鮮度的逆序列出(即老的在前)。
最後你需要注意的是,當在當前目錄或任何目錄執行 lt
時:
# 這可以工作:
lt
# 這也可以:
lt /some/other/directory
……而 lo
只能在當前目錄奏效:
# 這可工作:
lo
# 而這不行:
lo /some/other/directory
這是因為 Bash 會展開別名的組分。當你鍵入:
lt /some/other/directory
Bash 實際上執行的是:
ls -lct /some/other/directory
這是一個有效的 Bash 命令。
而當你鍵入:
lo /some/other/directory
Bash 試圖執行:
ls -lct -F | tac /some/other/directory
這不是一個有效的命令,主要是因為 /some/other/directory
是個目錄,而 cat
和 tac
不能用於目錄。
更多的別名快捷方式
alias lll='ls -R'
會列印出目錄的內容,並深入到子目錄裡面列印子目錄的內容,以及子目錄的子目錄,等等。這是一個檢視一個目錄下所有內容的方式。mkdir='mkdir -pv'
可以讓你一次性建立目錄下的目錄。按照mkdir
的基本形式,要建立一個包含子目錄的目錄,你必須這樣:
mkdir newdir
mkdir newdir/subdir
或這樣:
mkdir -p newdir/subdir
而用這個別名你將只需要這樣就行:
mkdir newdir/subdir
你的新 mkdir
也會告訴你建立子目錄時都做了什麼。
別名也是一種保護
別名的另一個好處是它可以作為防止你意外地刪除或覆寫已有的檔案的保護措施。你可能聽說過這個 Linux 新使用者的傳言,當他們以 root 身份執行:
rm -rf /
整個系統就爆了。而決定輸入如下命令的使用者:
rm -rf /some/directory/ *
就很好地幹掉了他們的家目錄的全部內容。這裡不小心鍵入的目錄和 *
之間的那個空格有時候很容易就會被忽視掉。
這兩種情況我們都可以通過 alias rm='rm -i'
別名來避免。-i
選項會使 rm
詢問使用者是否真的要做這個操作,在你對你的檔案系統做出不可彌補的損失之前給你第二次機會。
對於 cp
也是一樣,它能夠覆蓋一個檔案而不會給你任何提示。建立一個類似 alias cp='cp -i'
來保持安全吧。
下一次
我們越來越深入到了指令碼領域,下一次,我們將沿著這個方向,看看如何在命令列組合命令以給你真正的樂趣,並可靠地解決系統管理員每天面臨的問題。
via: https://www.linux.com/blog/learn/2019/1/aliases-protect-and-serve
作者:Paul Brown 選題:lujun9972 譯者:wxy 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 11g dataguard 型別、保護模式、服務型別模式
- TypeScript 型別保護TypeScript型別
- 【科普】等級保護與分級保護的區別和聯絡!
- Hadoop命令別名Hadoop
- 聊聊 TypeScript 中的型別保護TypeScript型別
- 門羅幣隱私保護之環簽名
- 《springcloud 四》服務保護機制SpringGCCloud
- 微服務架構 | 7. 安全保護微服務架構
- 更安全的rm命令,保護重要資料
- ROS話題通訊和服務通訊的區別ROS
- Git定義命令別名Git
- win10命令禁用實時保護怎麼關_win10使用命令關閉實時保護的方法Win10
- Spring Cloud Hystrix 服務容錯保護SpringCloud
- Spring Cloud Hystrix:服務容錯保護SpringCloud
- 使用jwt來保護你的介面服務JWT
- 微服務過載保護原理與實戰微服務
- ls命令+檔案型別+別名(alias)型別
- linux引導和服務Linux
- linux建立命令別名Linux
- linux 命令別名使用-aliasLinux
- CentOS7路由、埠和服務排障常用命令CentOS路由
- 保護模式模式
- 保護期限
- 如何保護平臺即服務 (PaaS) 環境
- 使用 fail2ban 保護 frp 服務AIFRP
- 構建微服務-使用OAuth 2.0保護API介面微服務OAuthAPI
- 5種在TypeScript中使用的型別保護TypeScript型別
- 權利義務框架下的移動網際網路APP個人資訊保護——《個人資訊保護法》對APP個人資訊保護影響分析框架APP
- Linux基礎命令---alias別名Linux
- Git基本命令 -- 別名 + 忽略 + 推送Git
- linux 檢視某個程序和服務記憶體佔用情況命令Linux記憶體
- 【等級保護】等級保護共分為幾級?保護物件是指什麼?物件
- Spring Cloud構建微服務架構服務容錯保護SpringCloud微服務架構
- 2.9.4 事務保護和應用的連續性
- spring cloud微服務架構-Eureka保護機制SpringCloud微服務架構
- 破解EXCLE保護
- 軟體保護
- 微服務之服務註冊和服務發現篇微服務