探索終端 (Terminal): .profile 文件和命令替身
不知道您是否聽說過 “.profile” “.bash_profile” ,這些神秘的文件到底是用來干什么的?許多應用程序都要求您加點東西到 PATH 里面,但是從來也不解釋為啥要你這么做? 什么是命令替身,他們如何能幫助您改進工作流程。 本節就會把這些內容都告訴你,甚至更多,讓您能更深入的把控 Mac OS X操作系統。
學會使用 .profile 文件來設置替身
如果您在Mac 上不僅僅只是瀏覽下社交網絡或是看看電影,那你一定會知道在這操作系統的蓋子下面還藏著很多神秘的東西。或許您也曾經試著安裝過了象 Homebrew 這樣的應用程序包,安裝時,該程序還讓一頭霧水的你把如下的信息加入到 PATH 中去 “ Add /usr/local/sbin”; 再或者您已經聽說過了 “命令替身”,并且有些應用程序讓您把某些信息加入到 profile中去。
本文就是幫你把上面的疑惑都解除掉,以便您能深刻了解到命令的替身這些概念。 特別是對于軟件開發者來說,為應用程序設立替身實在很有價值,一般用戶也能發現對自己特別有用的幫助。
什么是替身?
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 文件了,同時應該也包括其它一些隱藏的文件就如同下圖所顯示。
1 | $ cd ~/
小竅門: 您也可以直接輸入 cd 加空格回車后,系統會直接帶您回到用戶根目錄下。
到了根目錄,輸入這條命令:
1 | $ ls –a
這條命令把文件夾下面的文件都展示出來,參數 –a 是告訴終端為我們顯示所有的文件,也包括隱藏的文件。
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
或者:
其實如果想讓我們的生活更加美好,不如我們給這個操作也定義一個命令替身了。 然而我們現在還不能使用他是因為.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"
結語:
更棒的是,大部分的命令都適合于 *匹配的兼容性,所以其實這些配置文件您完全可以拷貝到別的 linux 上繼續使用。 只要一個.profile 文件就讓您的命令可以放在不同的工作流程上使用了。
多試試,然后多創造出更多的適合您使用的命令替身(比方用一個單命令來處理顯示和隱藏文件 – 這個我就留給您自己試試吧),多使用這些命令提高您的工作效率。
不深思則不能造于道。不深思而得者,其得易失。
名人名言- 曾國藩
- By 優聯實達
- 2015-10-24
- 2214
- 公司新聞,網站開發,網站設計,UI