命令行(command line),也称为 CLI, Terminal, bash, shell……咱们中有不少人很怕使用它,但其实只要你知道一些基本的命令和概念,就没什么好怕的了。(文中接下来的内容,命令行统一用 CLI 称呼)git
80 年代那种只能用命令行来控制电脑运行的时代早已成为历史,如今的操做系统基本都已图形界面化,虽然有些地方仍是不可避免的要用到它。那咱们今天就来看一下,有哪些地方须要用到命令行呢?shell
这些是最经常使用到的。不过今天的重点是初步学习。编程
Mac 下可使用 Terminal.app
segmentfault
Windows 下能够按 win + R,输入 cmd 打开命令行工具,或者使用 Git Bash浏览器
CLI 无非几个步骤:bash
大多数命令只对你当前的目录(location)有效,所以,第一个要知道的命令就是帮助咱们找到“如今在哪里”:app
pwd
表明 __p__rint __w__orking __d__irectory
:返回结果为“显示当前正在进行工做的目录”。框架
cd
表明 __c__hange __d__irectory
:返回结果为“改变当前工做目录”。下图是进入当前目录下的一个子目录:less
..
:返回上一级目录(当前目录的父目录)编辑器
~
是一种特殊的路径符号,表明着当前用户的“home”文件夹,故此有两种方法能够到你的 home 文件夹:
提供完整的路径:
$ cd /Users/<your-username>/projects/
或用:
$ cd ~/projects/
另外一个重要的命令 ls
,用于列出当前目录或指定目录的内容:
$ ls path/to/folder
这个命令的两个重要的可选参数:
-l
:输出一个附加信息的列表。-a
标志:把隐藏的文件(夹)也显示出来,这个在如使用版本控制等不少状况下都颇有用。 结合一下,你能够在当前目录下这样使用:
或者在别的路径下调用:
$ ls -la path/to/folder
删除文件:
$ rm path/to/file.ext
删除文件夹要加上-r
(recursive),这样就会把目录里的全部内容都删除:
$ rm -r path/to/folder
例子:
$ mv path/to/file.ext different/path/file.ext
这个命令也能用来给文件重命名:
$ mv old-filename.ext new-filename.ext
使用 cp
命令,用法同 mv
使用 mkdir
(make directory):
$ mkdir new-folder
命令行还能够用来显示文件的内容。虽然使用编辑器来执行这一任务会更优雅,但有在有些状况下使用命令行反倒会方便一些。好比,当你只是想快速浏览一下,或由于是远程服务(这样图形界面操做的方式行不通),使用命令行就会变得很便捷:
使用 cat
命令会输出一个完整的文件内容
head
和 tail
命令很是类似,分别是只显示前 10 行、后 10 行内容。
须要注意的是,less
命令有所不一样:它虽然也用于显示输出,但它能够控制页面流程自己,也就是它只显示一个页面的内容,而后只能等待下一步指示。屏幕的最后一行显示的是当前文件名或只是一个等待接收命令的冒号 :
,这时候按空格键将向前翻一页,按 b 键将后退一页,按 q 将退出 less
命令。
输入文件名和路径的时候很容易出错,这时候就须要 TAB 键来帮你自动完成所写的内容。
例如当你想切换到一个别的目录,你能够手动输入每个部分的路径:
$ cd ~/design/favorite-customer/mockups/
或者使用 TAB 键快速完成:
你输入的字符不是每次都是明确的——由于“de”也能够是文件夹中“development”或“dentist”,在这种状况下 TAB 键不能自动补充你的输入,但它会有一个可能选项的列表,而后自动补全一些文字让你输入地更明确些。
CLI 会像浏览器同样记录你最近的命令历史,因此:
如今有不少图形界面工具可让你脱离 CLI,如 FTP 的客户端 Transmit ,版本控制器客户端 Tower。但不能否认,CLI 在某些状况下仍然是最好的选择。