探索终端 (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
  • 2461
  • 公司新闻,网站开发,网站设计,UI