• 探索終端 (Terminal): .profile 文件和命令替身


    不知道您是否聽說過 “.profile” “.bash_profile” ,這些神秘的文件到底是用來干什么的?許多應用程序都要求您加點東西到 PATH 里面,但是從來也不解釋為啥要你這么做? 什么是命令替身,他們如何能幫助您改進工作流程。 本節就會把這些內容都告訴你,甚至更多,讓您能更深入的把控 Mac OS X操作系統。


    學會使用 .profile  文件來設置替身


    如果您在Mac 上不僅僅只是瀏覽下社交網絡或是看看電影,那你一定會知道在這操作系統的蓋子下面還藏著很多神秘的東西。或許您也曾經試著安裝過了象 Homebrew 這樣的應用程序包,安裝時,該程序還讓一頭霧水的你把如下的信息加入到 PATH 中去 “ Add /usr/local/sbin”; 再或者您已經聽說過了 “命令替身”,并且有些應用程序讓您把某些信息加入到 profile中去。

    本文就是幫你把上面的疑惑都解除掉,以便您能深刻了解到命令的替身這些概念。 特別是對于軟件開發者來說,為應用程序設立替身實在很有價值,一般用戶也能發現對自己特別有用的幫助。

    什么是替身?


    替身就是命令的快捷方式。 例如 (超級簡單的一個例子), 如果您在使用終端做操作,比方說想進入這個路徑: /User/[username]/Sites/folder. 一般都是這么做的:

    1 | $ cd /Users/[username]/Sites

    或者:

     1 |  $ cd ~/Sites

    一旦到了這里,您也許要進入的就是一個特別指定的項目中,(比方,“myProject”),那就使用下面的命令

    1 | $ cd myProject

    用一條命令表示出來就是:

    1 | $ cd ~/Sites/myProject

    這并不是很浪費時間,但卻挺枯燥的, 特別是當您工作在藏的比較深的文件夾內,且需要不斷切換的時候。

    用了命令替身,您就可以提高操作速度了。

    替身命令就是幫您縮短命令,或者是命令鏈的長度。

    到應用程序-實用工具-終端處找開您的命令行工具,并且輸入如下命令。

    1 | $ alia goto_web=”cd ~/Sites”

    首先得確認您的用戶根目錄下確實存在這個目錄,同時在該目錄下創建一個文件夾名字為: myProject.  然后就到終端里面執行如下的命令:

    1 | $ alia goto_myP= “goto_web; cd myProject”

    現在就在終端命令行內敲入 “goto_myP” 命令然后敲回車去見證奇跡的發生吧。 終端命令會自動把我們帶到 ~/Sites/myProject 目錄下,無論您在什么地方執行這命令都可以。該功能有兩個好處。

    1. 您可以通過輸入 goto_ 然后再點按 tab 鍵,就可以得到所有的您已經定義好的命令替身列表了。
    2. 如果您的網頁項目的根目錄發生了變化(比方目錄名從Sites 變成了 MySites), 您所需要的做就是找到這個 goto_web 的替身定義地方做個改變即可,其它的相關命令都會逐級變化,不會產生影響。


    天堂里的小煩惱


    這里還是有個小問題。 一旦我們注銷后,前面定義好的替身命令就消失了。 他們并沒有存在什么地方,所以當我們再次登陸進系統后,操作系統并沒有被告知要把這些替身再設置好。 誰來解決這個問題? .profile 文件!

    讓我們從最基本開始吧。

    什么是 .profile文件


    如果 OS X操作系統內的任何文件如果是以點號 “.” 開始的,那這個文件就是隱藏文件了。

    “.” 號在文件名之前就意味著該文件為隱藏文件。 這種記號一般表明這些文件都是系統文件,一般用戶不需要看到他。如果平常顯示出來,那一大堆文件給用戶能造成很大的困擾,同時還有可能被誤刪把系統給整崩潰了。

    例如: .DS_Store 文件就屬于這個很讓令人討厭的分類文件中的。您找開的每個文件夾時, 應用程序 Finder 都會在那里建一個這樣的文件。 但如果您是通過終端的命令行使用命令 “cd 文件夾名字” 這種方式去訪問目錄,就不會建立這個文件。 Finder 建立這個文件主要是用來存儲一些相應的信息,以使該文件夾易于訪問且能被搜索了。

    我們前面所提到的 .profile 文件是一個隱藏文件。 該文件是一個可選文件,當用戶登陸時,他對應的profile 文件就會開始執行,并告訴系統要開始運行哪些命令了。 例如,假如我的用戶名是 bruno, 并且這里有一個Profile 文件是存儲在 /Users/bruno, 那在我登陸的時候,該文件里的所有命令都會被執行。

    您現在能明白我們要用這個文件來做什么吧?我們用這個 .profile文件來存儲我們上面所定義的那些替身命令,以便于以后每次登陸系統這些替身命令都可以執行,變成持久的。

    那么 .bash_profile 又是什么文件?其實是完全一樣的文件,只不過是用了不同的名字。您正在登陸的系統其實是 unix shell, 在我們這里現在是OS X, 首先去找文件 etc/profile. 如果這個文件存在就先加載他。然后開始按順序尋找 ~/.bash_profile, ~/.bash_login, 最后尋找 ~/.profile, 并加載第一個被找到的文件。

    我習慣用的文件是 .profile. 但如果您習慣用其它的幾個文件都沒關系,大膽的去名字把相關的命令溶合進去即可。他們的語法都是統一的,您唯一要記住的就是只有一個文件能被加載,并且操作系統是按照上面所提到的順序來找他們的。您也可以在這里找到更多的相關知識

    找到 .profile 文件


    但如果他是隱藏文件,我們怎么找到他?如果這文件都看不到,更不要談如何編輯修改了。就如同偉大的漢尼拔指揮官曾經說過-要么我們就找到他,(.profile) ,要不我們就創造他。 當然,他指明的是方向,但其實實現的方法也都是一樣了。 這里就有兩個非常常用的方法來顯示隱藏文件:

    第一個就是讓他們對你來說可見,但他們的屬性其實仍然是隱藏的。 該用法并不推薦給一般的用戶。 將下列的命令輸入到終端的命令行中:

    1 |  defaults write com.apple.finder AppleShowAllFiles TURE

    然后再使用下面的命令重啟整個 Finder 應用:

    1 |  $ killall Finder

    這條命令是用來告訴 Finder 的,當他在打開文件夾的時候,要忽視掉文件的隱藏屬性, 并且強制該應用重新啟動以讓該應用獲得了新的設置。 現在在 Finder 里面打開任何文件夾,您應該都可以看到 .DS_Store 文件了,同時應該也包括其它一些隱藏的文件就如同下圖所顯示。



    用了方法一,您應該可以直接在 Finder 下面就看到那些隱藏的文件了。 現在我們來了解下第二個方法,這個方法通過終端命令行實現,只需要尋找那些您需要的文件。 啟動終端,然后在您的用戶根目錄下輸入以下命令:

    1 |  $ cd ~/

    小竅門: 您也可以直接輸入 cd 加空格回車后,系統會直接帶您回到用戶根目錄下。

    到了根目錄,輸入這條命令:
    1 |  $ ls –a

    這條命令把文件夾下面的文件都展示出來,參數 –a 是告訴終端為我們顯示所有的文件,也包括隱藏的文件。



    用第二個方法,那些隱藏的文件和文件夾就會在您的終端里面顯出原形了。 用上面的任何一種方法來查看一下在您用戶的根目錄下到底存在著哪些隱藏的文件, 也確定一下 .profile 或者 .bash_profile 文件也都存在。如果這兩個任何一個存在,就省事了;如果沒有,那就使用該命令在終端里面的當前路徑下建立該文件:

    1 |  $ touch ~/.profile

    任何方法都成,只要現在您能確定用戶根目錄下面已經存在了  .profile  文件。現在就可以加入一些命令來實現我們的想法了。

    構建 .profile 文件


    首先需要打開文件進行編輯。 對于編輯文本文件來說,還是使用圖形界面化的文本編輯器更為方便,所以我們這里就用 文檔編輯器來做,而不在終端里編輯文件了。

    1 |  $ open –e  ~/.profile

    或者在 Finder里面,用您最習慣的方式直接雙擊那個已經顯示出來的隱藏文件,然后選擇文本編輯器應用程序來打開他。 “open” 命令如果可以識別出該文件的類型,就應該用該類型指定的應用程序打開文件。 參數 –e  為指定當前操作系統的默認的文本編輯器來打開文件, 最后一部分就是我們要打開的文件的路徑和名字。

    在打開的文件里面,加入下面的內容:

    1 |  alias goto_web= “cd ~/Sites”
    2 |  alias goto_myP= “goto_web; cd myProject”
    3 |  
    4 |  alias reload_profile= “. ~/.profile”


    保存文件并退出。 前面兩條命令我們已經在前面解釋過了。 對于第三條,如果您是在登陸的中途修改 .profile  文件,就象我們現在這樣做的,那都需要重新加載文件以使其生效。

    如果要手動來執行重新加載,一般用這條命令:


    1 |  $ source ~/.profile

    或者:


    1 |  $ .  ~/.profile

    其實如果想讓我們的生活更加美好,不如我們給這個操作也定義一個命令替身了。 然而我們現在還不能使用他是因為.profile 文件沒有被重新加載,所以為了擺脫這種讓我們混亂的困境,就手動執行一次上面的兩條命令之一(手動加載一下)。

    完成了這些工作,就趕快來試試吧。 鍵入 “goto_web” 看看該命令是否工作。 再試試重新啟動系統,注銷用戶再重新登陸,這些命令替身應該一直有效并能正常工作。 現在這個 “reload_profile” 的命令替身應該也能正常的工作了。

    是不是非常簡單,您已經可以自己填加您想要的命令替身了。 也別就限制自己在創建 變換路徑的命令之上了(而且,這些變換路徑的命令也不一定非要就用 goto_來開頭了, 我只所以這樣叫他們只是為了分組目的了)。多試試您喜歡用的那些終端命令行的命令。 下面是我自己的正在運行的 .profile 文件,給您做下參考吧。

    1 |  # 歡迎學習 優聯實達 為您準備的這個終端命令行教程。

    2 |  alias  sudo= ‘sudo ’

    3 |

    4 | # This helps me edit files that my user isn’t the ower of

    5 | alias edit= ‘SUDO_EDITOR="open -FWne" sudo -e’

    6 |

    7 | # The alias that takes me here - to editing these very aliases

    8 | alias edit_profile='open -e ~/.profile'

    9 |

    10 | # I do a lot of web development, so I need to edit these non-owned files fairly often

    11 | alias edit_hosts='edit /etc/hosts'


    12 | alias edit_httpd='edit /etc/apache2/httpd.conf'



    13 | alias edit_php='edit /etc/php.ini'


    14 | alias edit_vhosts='edit /etc/apache2/extra/httpd-vhosts.conf'

    15 |

    16 | # Some of my goto commands, including one to open the php extension folder for when I need to install custom extensions
    17 | alias goto_mw='goto_web; cd mindworks'

    18 | alias goto_web='cd ~/Sites'

    19 | alias goto_phpext='sudo open /usr/lib/php/extensions/no-debug-non-zts-20100525'

    20 |

    21 | # This alias recursively destroys all .DS_Store files in the folder I am currently in

    22 | alias killDS='find . -name *.DS_Store -type f -delete'

    23 |

    24 | # An alias to start my custom MySQL installation instead of the default one

    25 | alias mysql='/usr/local/mysql-5.5.25-osx10.6-x86_64/bin/mysql -u root'

    26 |

    27 | # This alias reloads this file

    28 | alias reload_profile='. ~/.profile'

    26 |

    27 | # This alias reloads this file

    28 | alias reload_profile='. ~/.profile'

    29 |

    30 | # Mac get stuck very often and are extremely slow and unstable on shutdowns. This forces a shutdown.

    31 | alias poweroff='sudo /sbin/shutdown -h now'

    32 |

    33 | # Setting for the new UTF-8 terminal support in Lion / Mountain Lion

    34 | export LC_CTYPE=en_US.UTF-8

    35 | export LC_ALL=en_US.UTF-8

    36 |

    37 | # Adds all these paths to the PATH variable. The colon (:) is the path separator.

    38 | # When you need to "add something to path" you're supposed to add the path to its executable file to this list of paths, separated by a colon.

    39 | export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin"


    結語:


    無論您是不是需要經常使用終端命令行, .profile 文件都會讓您的生活更輕松。 把常用的命令放在一個地方保存起來,不僅僅只是讓您忘了時候找到這個文件來看看,更重要的是讓系統在每次登陸時都能自動加載以節約您的工作時間。

    更棒的是,大部分的命令都適合于 *匹配的兼容性,所以其實這些配置文件您完全可以拷貝到別的 linux 上繼續使用。 只要一個.profile 文件就讓您的命令可以放在不同的工作流程上使用了。

    多試試,然后多創造出更多的適合您使用的命令替身(比方用一個單命令來處理顯示和隱藏文件 – 這個我就留給您自己試試吧),多使用這些命令提高您的工作效率。






    不深思則不能造于道。不深思而得者,其得易失。

    名人名言- 曾國藩
    • By 優聯實達
    • 2015-10-24
    • 2214
    • 公司新聞,網站開發,網站設計,UI
  • 少妇高潮久久久久7777