成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

UNIX 技巧: UNIX 高手的另外 10 個習慣

瀏覽:208日期:2024-06-21 17:11:41

讓我們面對現實吧:壞習慣很難改變。但是您已經熟悉的習慣可能更難克服。有時,重新審視某些事情可能讓您遇到“啊哈,我沒想到它能做到這一點!的時刻。在 Michael Stutz 的優秀文章“Unix 高手的 10 個習慣的基礎上,本文將提供另外 10 個 UNIX 命令行命令、工具和技術,可以使您成為更高效的 UNIX 命令行高手。

您應當采納的其他 10 個好習慣包括:

使用文件名自動完成功能 (file name completion)。

使用歷史擴展。

重用以前的參數。

使用 pushd 和 popd 管理目錄導航。

查找大型文件。

不使用編輯器創建臨時文件。

使用 curl 命令行實用工具。

最有效地利用正則表達式。

確定當前用戶。

使用 awk 處理數據。

使用文件名完成

如果不需要在命令提示符處鍵入長的、令人費解的文件名,這是不是很棒呢?的確,您不需要這樣做。相反,您可以配置最流行的 UNIX Shell 以使用文件名完成。該功能在各個 Shell 中的工作方式略有不同,因此我將向您展示如何在最流行的 Shell 中使用文件名完成。文件名完成使您可以更快地輸入并避免錯誤。懶惰?也許吧。效率更高?當然!

我正在運行哪種 Shell?

如果您不知道目前使用的是哪一種 Shell,會怎么樣?雖然這個訣竅不是另外 10 個好習慣的正式組成部分,但它仍然很有用。如清單 1 所示,您可以使用 echo $0 或 ps -p $$ 命令顯示您正在使用的 Shell。對于我來說,運行的是 Bash Shell。

清單 1. 確定您的 Shell

$ echo $0-bash$ ps –p $$PID TTY  TIME CMD6344 ttys0000:00.02 –bash

C Shell

C Shell 支持最直接文件名完成功能。設置 filec 變量可啟用該功能。(您可以使用命令 set filec。)在您開始鍵入文件名后,可以按 Esc 鍵,Shell 將完成文件名,或完成盡可能多的部分。例如,假設您擁有名為 file1、file2 和 file3 的文件。如果您鍵入 f,然后按 Esc 鍵,將填充 file,而您必須鍵入 1、2 或 3 來完成相應的文件名。

Bash

Bash Shell 也提供了文件名完成,但使用 Tab 鍵代替 Esc 鍵。您在 Bash Shell 中不需要設置任何選項即可啟用文件名完成,該選項是缺省設置的。Bash 還實現了其他功能。鍵入文件名的一部分后,按 Tab 鍵,如果有多個文件滿足您的請求,并且您需要添加文本以選擇其中一個文件,那么您可以多按 Tab 鍵兩次,以顯示與您目前鍵入的內容相匹配的文件的列表。使用之前名為 file1、file2 和 file3 的文件示例,首先鍵入 f。當您按一次 Tab 鍵時,Bash 完成 file;再按一次 Tab 鍵時,將展開列表 file1 file2 file3。

Korn Shell

對于 Korn Shell 用戶,文件名完成取決于 EDITOR 變量的值。如果 EDITOR 設置為 vi,那么您鍵入部分名稱,然后按 Esc 鍵,后跟反斜杠 () 字符。如果 EDITOR 設置為 eMacs,那么您鍵入部分名稱,然后按兩次 Esc 鍵以完成文件名。

使用歷史擴展

如果您為一系列命令使用相同的文件名,會發生什么情況?當然,有一種快捷方式可以快速獲得您上次使用的文件名。如清單 2 所示,!$ 命令返回前一個命令使用的文件名。從文件 this-is-a-long-lunch-menu-file.txt 中搜索單詞 pickles 的出現位置。搜索結束后,使用 vi 命令來編輯 this-is-a-long-lunch-menu-file.txt 文件,而不需要重新鍵入文件名。您使用感嘆號 (!) 來訪問歷史,然后使用美元符號 ($) 返回前一命令的最后字段。如果您反復用到長文件名,那么這是一個非常好的工具。

清單 2. 使用 !$ 獲得前一個命令使用的文件名

$ grep pickles this-is-a-long-lunch-menu-file.txtpastrami on rye with pickles and onions$ vi !$

重用以前的參數

!$ 命令返回某個命令使用的上一個文件名參數。但如果某個命令使用多個文件名,而您只希望重用其中一個文件名,該如何做?!:1 操作符返回某個命令使用的第一個文件名。清單 3 中的示例顯示可以如何將此操作符與 !$ 運算符組合使用。在第一個命令中,將一個文件重新命名為更有意義的名稱,但為了保持原始文件名可用,創建了一個符號鏈接。重新命名文件 kxp12.c 以提高可讀性,然后使用 link 命令來創建到原始文件名的符號鏈接,以防在其他位置使用該文件名。!$ 操作符返回 file_system_access.c 文件名,而 !:1 操作符返回 kxp12.c 文件名,該文件名是上個命令的第一個文件名。

清單 3. 組合使用 !$ 和 !:1

$ mv kxp12.c file_system_access.c$ ln –s !$ !:1

使用 pushd 和 popd 管理目錄導航

UNIX 支持各種目錄導航工具。我最喜歡的兩款提高工作效率的工具是 pushd 和 popd。您當然了解 cd 命令用于更改您的當前目錄。如果您要在多個目錄中導航,但希望能夠快速返回某個位置,該如何做?pushd 和 popd 命令創建一個虛擬目錄堆棧,pushd 命令用來更改您的當前目錄并將其存儲在堆棧中,而 popd 命令用來從堆棧的頂部移除目錄并使您返回該位置。您可以使用 dirs 命令來顯示當前目錄堆棧,而不會壓入或彈出新目錄。清單 4 顯示如何使用 pushd 和 popd 命令在目錄樹中快速導航。

清單 4. 使用 pushd 和 popd 在目錄樹中導航

$ pushd .~ ~$ pushd /etc/etc ~ ~$ pushd /var/var /etc ~ ~$ pushd /usr/local/bin/usr/local/bin /var /etc ~ ~$ dirs/usr/local/bin /var /etc ~ ~$ popd/var /etc ~ ~$ popd/etc ~ ~$ popd~ ~$ popd

pushd 和 popd 命令還支持使用參數處理目錄堆棧。使用 +n 或 -n 參數,其中 n 是一個數字,您可以向左或向右移動堆棧,如清單 5 所示。

清單 5. 旋轉目錄堆棧

$ dirs/usr/local/bin /var /etc ~ ~$ pushd +1/var /etc ~ ~ /usr/local/bin$ pushd -1~ /usr/local/bin /var /etc ~

查找大型文件

是否需要找出您的所有空閑磁盤空間被什么占用了?您可以使用以下幾個工具來管理您的存儲設備。如清單 6 所示,df 命令為您顯示每個可用卷上已使用的塊的總數,以及空閑空間的百分比。

清單 6. 確定卷的使用情況

$ dfFilesystem512-blocks Used Available Capacity Mounted on/dev/disk0s2  311909984 267275264  4412272086%/devfs224  224 0  100%/devfdesc 2 2 0  100%/devmap -hosts 0 0 0  100%/netmap auto_home 0 0 0  100%/home

是否希望查找大型文件?使用 find 命令時附帶 -size 參數。清單 7 顯示了如何使用 find 命令來查找大于 10MB 的文件。請注意,-size 參數以 KB 為單位計量大小。

清單 7. 查找大于 10MB 的所有文件

$ find / -size +10000k –xdev –exec ls –lh {};

不使用編輯器創建臨時文件

以下是一個簡單示例:您需要快速創建一個簡單臨時文件,但不希望啟動您的編輯器。使用帶有 > 文件重定向操作符的 cat 命令。如清單 8 所示,使用不帶文件名的 cat 命令只回顯向標準輸入鍵入的任何內容;> 重定向將該輸入捕獲到指定的文件中。請注意,您在結束鍵入時必須提供文件結束字符,通常為 Ctrl-D。

清單 8. 快速創建臨時文件

$ cat > my_temp_file.txtThis is my temp file text^D$ cat my_temp_file.txtThis is my temp file text

需要執行相同操作,但是附加到現有文件而不是創建新文件。如清單 9 所示,改用 >> 操作符。>> 文件重定向操作符向現有文件附加內容。

清單 9.快速向文件附加內容

$ cat >> my_temp_file.txtMore text^D$ cat my_temp_file.txtThis is my temp file textMore text

使用 curl 命令行實用工具

我是否可以從命令行訪問 Web?你瘋了嗎?沒有,這就是 curl 的用途!curl 命令使您可以使用 HTTP、HTTPS、FTP、FTPS、Gopher、DICT、TELNET、LDAP 或 FILE 協議從服務器檢索數據。如清單 10 所示,我可以使用 curl 命令從美國國家氣象局了解我所在位置(紐約州布法羅市)的當前天氣狀況。當與 grep 命令組合使用時,我可以檢索布法羅市的天氣狀況。使用 -s 命令行選項來禁止 curl 處理輸出。

清單 10. 使用 curl 檢索當前天氣狀況

$ curl –s http://www.srh.noaa.gov/data/ALY/RWRALY | grep BUFFALOBUFFALOMOSUNNY  43 22 43 NE13 30.10R

如清單 11 所示,您也可以使用 curl 命令來下載 HTTP 托管的文件。使用 -o 參數來指定保存輸出的位置。

清單 11. 使用 curl 下載 HTTP 承載的文件

$ curl -o archive.tar http://www.somesite.com/archive.tar

這實際上只是您使用 curl 命令可以完成的操作的提示。您只需在命令提示符處鍵入 man curl 顯示 curl 命令的完整使用信息,就可以開始了解更多內容。

最有效地利用正則表達式

大量 UNIX 命令使用正則表達式作為參數。從技術角度而言,正則表達式 是表示某種模式的字符串(也就是說,由字母、數字和符號組成的字符序列),用于定義零或更長的字符串。正則表達式使用元字符(例如,星號 [*] 和問號 [?])來匹配其他字符串的部分或全部內容。正則表達式不一定包含通配符,但通配符可以使正則表達式在搜索模式和處理文件時發揮更大的作用。表 1 顯示了一些基本正則表達式序列。

表 1. 正則表達式序列

序列說明脫字符 (^)匹配出現在行首的表達式,例如 ^A 美元符號 ($)匹配出現在行末的表達式,例如 A$ 反斜杠 ()取消下一個字符的特殊含義,例如 ^ 方括號 ([])匹配括起來的任一字符,例如 [aeiou](使用連字符 [-] 表示范圍,例如 [0-9])。[^ ] 匹配除括起來字符以外的任一字符,例如 [^0-9] 句點 (.)匹配除行尾之外的任意單個字符星號 (*)匹配零個或多個前驅字符或表達式{x,y} 匹配出現過 x 到 y 個和前面相同的內容{x} 精確匹配出現過 x 個和前面相同的內容{x,} 匹配出現過 x 個或更多和前面相同的內容

清單 12 顯示了與 grep 命令一起使用的一些基本正則表達式。

清單 12. 使用正則表達式和 grep

$ # Lists your mail$ grep '^From: ' /usr/mail/$USER $ # Any line with at least one letter $ grep '[a-zA-Z]' search-file.txt$ # Anything not a letter or number$ grep '[^a-zA-Z0-9] search-file.txt$ # Find phone numbers in the form 999-9999$ grep '[0-9]{3}-[0-9]{4}' search-file.txt$ # Find lines with exactly one character$ grep '^.$' search-file.txt$ # Find any line that starts with a period "." $ grep '^.' search-file.txt$ # Find lines that start with a "." and 2 lowercase letters$ grep '^.[a-z][a-z]' search-file.txt

有大量書籍專門講述正則表達式。有關命令行正則表達式的深入描述,建議您閱讀 developerWorks 文章“對話 UNIX,第 9 部分:正則表達式。

確定當前用戶

有時,您可能希望確定某個特定用戶是否運行過您的管理腳本。為找出答案,您可以使用 whoami 命令來返回當前用戶的名稱。清單 13 顯示了獨自運行的 whoami 命令;清單 14 顯示了使用 whoami 確保當前用戶不是根用戶的 Bash 腳本的摘錄。

清單 13. 從命令行使用 whoami

$ whoamiJohn

清單 14. 在腳本中使用 whoami

if [ $(whoami) = "root" ]then  echo "You cannot run this script as root."  exit 1fi

使用 awk 處理數據

awk 命令似乎始終處在 Perl 的陰影下,但它對于簡單、基于命令行的數據處理來說是一個快速、實用的工具。清單 15 顯示了如何開始使用 awk 命令。若要獲取文件中每行文本的長度,請使用 length() 函數。若要查看字符串 ing 是否出現在文件文本中,請使用 index() 函數,該函數返回 ing 首次出現的位置,這樣您就可以使用它來進行進一步的字符串處理。若要 tokenize(也就是說,將一行拆分為單詞長度的片段)某個字符串,請使用 split() 函數。

清單 15. 基本 awk 處理

$ cat texttesting the awk command$ awk '{ i = length($0); print i }' text23$ awk '{ i = index($0,ing); print i}' text5$ awk 'BEGIN { i = 1 } { n = split($0,a," "); while (i <= n) {print a[i]; i++;} }' texttestingtheawkcommand

打印文本文件中的指定字段是一項簡單的 awk 任務。在清單 16 中,sales 文件包含每個銷售人員的姓名,后跟每月銷售數字。您可以使用 awk 命令來快速獲得每個月的銷售總額。缺省情況下,awk 將每個以逗號分隔的值視為不同的字段。您使用 $n 操作符來訪問每個字段。

清單 16. 使用 awk 對數據進行匯總

$cat salesGene,12,23,7Dawn,10,25,15Renee,15,13,18David,8,21,17$ awk -F, '{print $1,$2+$3+$4}' salesGene 42Dawn 50Renee 46David 46

awk 命令可以很復雜并應用于廣泛的情景中。若要更完整地學習 awk 命令,請從命令 man awk 開始,并參閱參考資料部分提供的資源。

結束語

成為命令行高手需要進行一些實踐。按照相同的方式處理問題很簡單,因為您已經習慣了。擴展您的命令行資源可以顯著提高您的工作效率,并促使您朝著 UNIX 命令行高手的方向前進!

標簽: Unix系統
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美一区二区三区在线观看视频| 国产一区二区三区在线观看精品| 亚洲综合另类小说| 国产精品啊v在线| 久久精品夜色噜噜亚洲a∨| 国产一区999| 欧美无乱码久久久免费午夜一区| 亚洲成人动漫在线观看| 99精品国产高清一区二区| 日本一二三不卡| 国产在线成人| 亚洲欧洲精品天堂一级| 欧美日本三区| 国产精品区一区二区三区| 欧美日韩一卡| 国产午夜精品久久久久久久 | 综合久久国产九一剧情麻豆| 国色天香一区二区| 亚洲欧洲成人自拍| 国产亚洲精品v| 亚洲国产精品欧美一二99| 亚洲制服少妇| 日韩精品一二三区| 欧美做爰猛烈大尺度电影无法无天| 免费成人在线观看视频| 欧美亚洲综合网| 国产精品99久久久久久宅男| 欧美一激情一区二区三区| 成人毛片老司机大片| 国产亚洲综合在线| 一色屋精品视频在线看| 亚洲午夜日本在线观看| 91极品美女在线| 国产精品亚洲专一区二区三区| 欧美成人女星排行榜| 91麻豆免费观看| 亚洲素人一区二区| 国产精品制服诱惑| 老司机精品视频线观看86 | 欧美一个色资源| 91麻豆国产香蕉久久精品| 国产婷婷色一区二区三区| 国产一在线精品一区在线观看| 一区二区高清免费观看影视大全| 玖玖精品视频| 国产精品一区三区| 日韩欧美一级二级三级久久久| 91丨九色porny丨蝌蚪| 欧美日韩中文字幕一区| 高清beeg欧美| 国产色产综合产在线视频| 亚洲福利av| 美国十次综合导航| 欧美精品在线观看播放| 91在线国产福利| 亚洲精品国产精品乱码不99| 亚洲综合一区二区三区| 欧美日韩一二三区| 99久久综合99久久综合网站| 国产精品久久久久久久久免费樱桃 | 国产 欧美在线| 国产亚洲va综合人人澡精品| 一区二区三区福利| 麻豆精品精品国产自在97香蕉| 日韩欧美高清一区| 精品999网站| 蜜臀av一区二区在线观看| 精品国产伦一区二区三区观看方式 | 欧美α欧美αv大片| 欧美精品入口| 日韩高清在线不卡| 日韩欧美成人激情| 亚洲黄色视屏| 欧美日本韩国在线| 奇米精品一区二区三区在线观看一| 日韩午夜电影av| 最新国产乱人伦偷精品免费网站| 免费在线看一区| 国产亚洲精品bt天堂精选| 国产精品久久波多野结衣| 极品尤物av久久免费看| 国产精品免费看片| 欧美性一级生活| 黄色日韩在线| 狠狠色狠狠色综合| ...av二区三区久久精品| 欧美色男人天堂| 国产精品综合二区| 亚洲免费在线看| 欧美一区二区三区成人| 国产欧美欧美| 99久久精品国产导航| 无码av中文一区二区三区桃花岛| 欧美精品一区二区三区高清aⅴ | 久久一区二区三区四区| 亚洲一区二区三区高清| 成人av免费在线播放| 一区二区三区在线视频免费观看 | 午夜成人在线视频| 2021久久国产精品不只是精品| 国产精品一区毛片| 99精品视频一区二区| 喷白浆一区二区| 国产精品视频九色porn| 在线电影欧美成精品| 亚洲一区二区三区四区中文| 97精品久久久午夜一区二区三区| 麻豆91精品91久久久的内涵| 亚洲人精品一区| 精品国产污污免费网站入口| 色婷婷亚洲综合| 亚洲狼人精品一区二区三区| 成人性生交大合| 首页国产欧美久久| 国产精品麻豆欧美日韩ww| 欧美精品精品一区| 麻豆成人在线| 黄色在线成人| av中文字幕不卡| 久久 天天综合| 亚洲国产wwwccc36天堂| 国产精品日产欧美久久久久| 欧美一区二区免费视频| 久久精品亚洲一区二区| 在线观看成人av电影| av在线免费不卡| 国内精品免费在线观看| 亚洲成在人线免费| 国产精品不卡在线观看| 日韩你懂的在线观看| 欧美三区免费完整视频在线观看| 亚洲一区国产| 在线精品亚洲一区二区| 91免费国产视频网站| 国产91精品在线观看| 麻豆91精品视频| 亚洲成人午夜电影| 亚洲人xxxx| 日本一区二区在线不卡| 制服丝袜日韩国产| 在线观看亚洲一区| 亚洲免费影视| 中国成人亚色综合网站| 在线成人h网| 欧美视频福利| 色综合天天综合| 成人高清av在线| 大胆亚洲人体视频| 国产91丝袜在线播放| 国产精品一区二区三区99| 麻豆国产精品一区二区三区| 亚洲成在人线免费| 亚洲一区在线观看免费观看电影高清 | 欧美一区二区播放| 欧美日韩第一区日日骚| 在线看一区二区| 久久久久国产精品一区三寸| 亚洲欧洲视频| 激情丁香综合| 亚洲午夜黄色| 黄色成人在线网址| 韩日视频一区| 精品动漫av| 一区视频在线| 亚洲精品国产日韩| 9国产精品视频| 亚洲精品欧美| 亚洲免费大片| 亚洲乱亚洲高清| 亚洲区一区二| 亚洲福利一区| 在线国产精品一区| 18成人免费观看视频| 伊人狠狠色j香婷婷综合| 国产尤物精品| 亚洲国产综合在线看不卡| 欧美午夜视频| 精品电影一区| 国产日韩欧美一区在线| 亚洲一区二区在| 久久香蕉精品| 欧美无人高清视频在线观看| 在线亚洲一区观看| 一本大道av伊人久久综合| 在线一区二区三区| 欧美美女一区二区三区| 这里是久久伊人| 精品国产91乱码一区二区三区 | 欧美v亚洲v综合ⅴ国产v| 日韩精品中文字幕一区二区三区 | 日韩一区二区三区四区五区六区 | 欧美视频完全免费看| 欧美色图激情小说| 337p亚洲精品色噜噜狠狠| 精品久久一区二区| 国产精品丝袜91| 亚洲国产成人高清精品| 美腿丝袜在线亚洲一区| 国产激情偷乱视频一区二区三区| av在线播放一区二区三区|