簡書不維護了僻焚,歡迎關注我的知乎:波羅學的個人主頁
一篇非常注重實踐的技術文湿弦,主要關于如何在linux下實現(xiàn)高效快速的命令行操作, 希望大家能從中真正體悟出命令行與圖形化操作的效率差異! 關于命令行與圖形化的話題,網(wǎng)上也有很多的討論,各執(zhí)一詞勿璃,不論誰對說錯,主要還是場景不同, 而且有些快捷鍵也是特定歷史時期下的產(chǎn)物推汽。
下面先梳理一下大綱补疑,看看涉及到的內(nèi)容,命令行快捷鍵能為我們做到什么?
快捷移動, 包括單字符移動, 單詞移動, 行首行尾移動等;
- 快捷刪除, 包括字符刪除, 單詞刪除, 行刪除等;
- 快捷輸入, 包括快捷粘貼, 歷史查詢, 大小寫切換等;
- 還有其他一些快捷操作, 如清屏, shell凍結, 解凍;
- 還有更強大的功能, 類vi模式的操作;
為了更好的體驗命令快捷鍵帶來的便捷快感, 實踐是第一位的.
所以, 首先需要新建一些用于測試的文件:
cd test
mkdir exam_fast_input afile bfile
一 快捷移動
快捷移動, 包括單字符移動, 單詞移動, 行首行尾移動等.
單字符移動
ctrl+b 向左移動一個字符, back
ctrl+f 向右移動一個字符, front
字符移動快捷鍵, 對比方向鍵, 可能大家認為多此一舉. 但是, 在特定歷史時期, 鍵盤是不存在專門的方向鍵的, 如果大家熟悉vi, 其中的移動方向鍵就是由HJKL替代的;
實例: 無單詞移動
alt+b 提示符向左移動一個單詞, back
alt+f 提示符向右移動一個單詞, front
注: mac下面使用esc替代alt;
單詞移動, 這個功能比較實用, 對于命令較長的情況下, 可以實現(xiàn)快速的定位; 實例:
查看a_fast_operation下的文件夾相關信息, 命令ls -ld a_fast_operation
$ ls b_fast_opertion
此時發(fā)現(xiàn), a_fast_operation錯寫成了b_fast_operation, 使用快捷鍵alt+b三次, 快速跳轉到b位置, alt+d向后移動一個字符刪除進行修改;
alt+f 同理;行首行尾移動
ctrl+a 快速移動到行首, ahead
ctrl+e 快速移動到行尾, end
行首行尾跳轉功能我個人最常用, 快速定位行首行尾, 容易使用;
實例:
非root用戶修改/etc/hosts文件
sudo vim /etc/hosts
ctrl+e 同理;行首移動與還原
ctrl+x+x 快速移動到行首, 在此執(zhí)行此快鍵鍵, 還原到之前位置;
實例:
非root用戶修改/etc/hosts
$ vim /etc/ho
當輸入到如上情況時, 發(fā)現(xiàn)修改hosts文件需要使用sudo權限, 此時ctrl+x+x 到行首添加sudo, 然后ctrl+x+x位置還原繼續(xù)執(zhí)行, 對于也可以使用ctr+a和ctrl+e的組合來實現(xiàn);
二 快捷刪除
快捷刪除, 包括字符刪除, 單詞刪除, 行刪除等;
字符刪除
ctrl+h 提示符向前刪除單個字符
ctrl+d 提示符向后刪除單個字符
總的來說, ctrl+h與backspace基本相同, ctrl+d與delete基本相同;
實例: 無單詞刪除
ctrl+w 刪除提示符之前的單詞內(nèi)容;
alt+d 刪除提示符之后的單詞內(nèi)容;
個人覺得這個功能挺好, 就是快捷鍵太過別扭;
實例:
查找目錄c_fast_operation目錄下面的內(nèi)容
$ ls exam_fast_operation
可以發(fā)現(xiàn)上面內(nèi)容輸入有誤, 此時兩次執(zhí)行alt+b, 再執(zhí)行ctrl+w, 輸入a_可以實現(xiàn)快速內(nèi)容修改;行內(nèi)刪除
ctrl+u 刪除提示符之前的行內(nèi)所有內(nèi)容;
ctrl+k 刪除提示符之后的行內(nèi)所有內(nèi)容;
快捷鍵好用, 操作方便;
實例:
查看exam_fast_input下面的文件夾詳情信息
$ ls exam_fast_operation
錯誤輸入, 此時執(zhí)行alt+b, 然后執(zhí)行ctrl+k, 快速刪除operation, 輸入input;
ctrl+u 同理;撤銷當前行編輯
ctrl+c 撤銷當前行編輯, 類似于整行刪除
實例:
$ ls exam_fast_operation
比如此時正在查詢ls exam_fast_operation, 但是發(fā)現(xiàn)自己走神了, 原來我要執(zhí)行的壓根是另外一個命令, 執(zhí)行ctrl+c, 另起一行, 開始新的命令編輯; 如果此時提示符是在命令結尾處, 可以使用ctrl+u實現(xiàn)整行快速刪除, 而不是不斷的backspace;撤銷上一次操作
ctrl+? 撤銷上一次操作, 可類比office word中的ctrl+z操作, 撤銷的最長生命周期是一行命令, 切換到下一行撤銷無效, 如ctrl+c取消, enter執(zhí)行等操作;
實例:
$ mv a_fast_operation d_fast_operation
此時你發(fā)現(xiàn)你的原意是將b_fast_operation重命名為e_fast_operation, 執(zhí)行兩次ctrl+w刪除兩個詞, 但是其實a_fast_operation也是需要執(zhí)行的操作, 此時輸入兩次ctrl+?就可以把前兩次的刪除d_fast_operation和a_fast_operation兩個單詞的操作, 然后執(zhí)行命令;
三, 快捷輸入
快捷輸入, 包括快捷粘貼, 歷史查詢, 大小寫切換等;
快捷粘貼
ctrl+y 快速粘貼之前刪除的內(nèi)容(通過ctrl+w, ctrl+u, ctrl+k刪除可用)
實例:
拷貝文件exam_fast_operation為command
$ cp -rf comand exam_fast_operation
上述命令輸入錯誤, 源文件和目標文件位置顛倒, 三次alt+b向左移動, 執(zhí)行ctrl+w刪除command, ctrl+e移到尾部, 執(zhí)行ctrl+y粘貼command;命令歷史查詢
ctrl+r 查詢命令歷史, 最近包含該字符的命令;
實例:
剛剛執(zhí)行過cp -rf exam_fast_operation command操作, 此時ctrl+r, 然后輸入需要查詢的命令歷史, 如exam_fast, 此時就會把最近的包含exam_fast的命令查詢出來;
關于更多歷史命令的內(nèi)容, 之后的文章中,有更多系統(tǒng)的介紹;大小寫切換
alt+u 提示符之后的單詞切換為大寫;
alt+l 提示符之后的單詞切換為小寫;
alt+c 提示符之后的單詞首字母大寫;
實例: 無單詞快速交換
alt+t 提示符所在位置單詞與前一個單詞位置互換;
實例:
$ mv cfile afile
命令原意為afile重名為cfile, 發(fā)現(xiàn)兩者位置錯誤, 執(zhí)行alt+t, 實現(xiàn)位置快速互換;快速粘貼上次命令參數(shù)
esc+. 快速上次命令的最后一個參數(shù)
實例:
mv esc+. fast_operation
如上所示, 首先執(zhí)行l(wèi)s command, 下一行命令在需要引用command的時候, 輸入esc+. ;
其實不至于引用最后一個參數(shù), 上次命令中的任意參數(shù)都可以應用, 可以自己查詢資料;添加特殊字符
ctrl+v 輸入此快捷鍵之后, 可以輸入特殊字符, 如tab, 默認tab為自動補全, 非tab字符;滾動歷史命令
ctrl+p 向上滾動歷史命令;
ctrl+n 向下滾動歷史命令;
四, 其他
其他一些快捷操作, 如清屏, shell凍結, 解凍等
- ctrl+l 快速清屏, 與clear命令效果基本相同;
- ctrl+s 鎖屏, 效果是輸入任何內(nèi)容都不會修改, 不能進行任何的操作, 有些人第一次遇到命令行被鎖會以為是電腦死機等情況;
- ctrl+q 退出鎖屏, 重新開始輸入;
- ctrl+o 執(zhí)行命令, 相等于enter;
- ctrl+i 類似tab功能, 自動補全;
五, vi模式
最后簡要提一下vi模式, 執(zhí)行命令set -o vi可進入vi模式, 執(zhí)行esc便可以使用vi的常用操作. vi模式主要面向的是對vi對比較熟悉的人使用的, 個人感覺自己對vi相對熟悉, 但是在命令行使用vi進行操作, 確會感覺不太靈活. 可能是先入為主, 亦或是命令行本身內(nèi)容簡單的特性不需要vi這樣高級的文本編輯特性, 有點殺雞使用宰牛刀的感覺;
此篇僅僅是關于linux操作系統(tǒng)通常的一些快捷鍵的使用. 關于linux的高效操作還有很多技巧, 如vim的使用, 命令歷史記錄, 環(huán)境變量, 管理的常用命令, sh腳本等等一些列技巧. 希望有機會可以一一總結出來, 與大家分享;
如發(fā)現(xiàn)此篇文章有些快捷命令不兼容, 請幫忙指正, 謝謝!