4.3《想成爲黑客,不知道這些命令行可不行》(Learn Enough Command Line to Be Dangerous)—連接到目錄

在4.2章中咱們已經會用cd進入到指定的目錄中。這是導航最多見的用途之一,可是它還有幾個值得關注的用途。第一個是使用cd ..(讀做'see-dee 點點')返回當前目錄級別的上一級:linux

$ pwd
/Users/mhartl/text_files
$ cd ..
$ pwd
/Users/mhartl

在這種狀況下,因爲/Users/mhartl是個人home目錄,能夠直接使用cd直接回到home目錄:正則表達式

$ cd text_files/
$ pwd
/Users/mhartl/text_files
$ cd
$ pwd
/Users/mhartl

直接使用cd本事就能成的緣由是它將目錄改變至用戶home目錄。這意味着:ruby

$ cd

工具

$ cd ~

是相等的。ui

當改變目錄時,有時指定home目錄頗有用。例如,假設咱們建立了第二個目錄並進入到這個目錄中:google

$ pwd
/Users/mhartl
$ mkdir second_directory
$ cd second_directory/

如今若是咱們想要到text_files目錄中,可使用經過home目錄~結合text_files用cd進入:命令行

$ pwd
/Users/mhartl/second_directory
$ cd ~/text_files
$ pwd
/Users/mhartl/text_files

另外,咱們學到這裏能夠理解在插圖6中的提示:我將個人提示配置成顯示當前的目錄,可能顯示成[~], [ruby], [projects]。(咱們將在Learn Enough Text Editor to Be Dangerous中討論如何自定義提示。對於特別有求知慾望(或是等不及)的讀者能夠自行google怎麼鍛鍊他們的技術精湛度(Box5)).code

和返回上一級(..)類似地是 . (讀做點)指的是當前目錄。對'.'最經常使用的場景是移動或複製當前目錄的文件:部署

$ pwd
/Users/mhartl/text_files
$ cd ~/second_directory
$ ls
$ cp ~/text_files/sonnets.txt .
$ ls
sonnets.txt

注意第一次使用ls時什麼都沒返回, 由於最初的second_directory是空的。get

另外一個經常使用'.'的場景是與find命令結合使用,這就像grep很是很是有用,但在我本身的使用場景中99%都是像下面這樣使用:

$ cd
$ find . -name '*.txt'
./text_files/sonnet_1.txt
./text_files/sonnet_1_reversed.txt
./text_files/sonnets.txt

用文字描述就是, 這些命令會找到名字匹配正則表達式'*.txt'的文件,從當前目錄.開始而後是它的子目錄。‘find’工具集對於在命令行中尋找一個隨意放置的文件特別有用。

也許我最喜歡使用.的場景是'open 點', 這隻在macOS系統上能使用:

$ cd ~/ruby/projects
$ open .

這個非凡的open命令將打開它的參數使用打開指定的文件或目錄的默認程序。(xdg-open與這個命令類似,在一些linux系統上能正常使用)。例如open foo.pdf會用默認預覽器打開pdf文件(在大多數的Macs上是Preview).在使用目錄的場景如'.'時,默認程序是Finder,因此調用open .的結果就像插圖20所展現的那樣。

一個最後導航相關的命令,是我我的十分喜好的命令是cd -,這會進入到以前的目錄:

$ pwd
/Users/mhartl/second_directory
$ cd ~/text_files
$ pwd
/Users/mhartl/text_files
$ cd -
/Users/mhartl/second_directory

我發現'cd -'當結合一些命令時十分有用,正如Box12 中所描述的那樣。

Box 12. 結合命令

在命令行中結合命令一般很是方便,正如使用Unix程序 configure和make時安裝軟件,這一般會像下面這樣顯示:
$ ./configure ; make ; make install
這行命令在當前目錄'.'運行configure程序,而後同時運行make和make install。(你並不須要理解這些程序是作什麼的,並且實際上它們不會再你的系統上工做,除非你剛好在這樣安裝的程序目錄中。)因爲他們是被分號分隔,三個命令會同時一塊兒運行。

結合命令更好的方式是使用雙&符號 &&:
$ ./configure && make && make install

兩個命令間的卻別在於用&&符號分隔開的命令只有在前一個命令執行成功後纔會執行。相反,使用';'全部命令不管如何都會一塊兒執行,在像下步命令會依賴於前個命令的場景中會報錯。
我特別喜歡將cd -和&&結合使用,這能夠幫我作下面的事情:
$ build_article && cd ~/tau && deploy && cd -
再說一次,你不須要理解這些命令,可是這一般是在一個目錄中建立一篇文章的好主意, cd進入一個不一樣的目錄,再部署(也許是個網址)到生產環境,而後再cd 返回(cd -)到原始的目錄,繼續咱們的工做。固然,若是須要,咱們可使用上箭頭(在Box9中的有用方法)找到整個命令,並再作一遍。

練習

  1. cd 和cd ~的區別是什麼?(或是他們有區別嗎)
    2.進入到text_files,而後到使用返回上一個目錄等級(雙點操做符..)到second_directory目錄。
    3.在你當前的目錄位置中,建立一個叫作nil的空文件在text_files目錄中,可使用任何方法。
    4.使用與以前不一樣路徑移除在以前的練習中建立的nil文件.(換句話說,若是你以前使用路徑~/text_files, 那就使用../text_files或者/Users/ /text_files).
相關文章
相關標籤/搜索