命令行工具是做 Web 设计与开发的必备工具。通过输入一些命令,去做你要做的事情。不同的命令可以做不同的事情,比如基本的文件与目录的操作,去安装,更新,删除软件,控制与管理服务器等等。
很多 Web 项目都自带了命令行工具,会提供一些跟项目相关的命令,可以用到平时的开发流程里面。比如 Drupal 的 drush ,WordPress 的 WP-CLI,Laravel 的 artisan 等等,基本上一个现代的 Web 项目都会附带一个命令行工具。
准备
在哪里输入要执行的命令?不同的操作系统提供了不同的软件,Windows 上可以使用 系统自带的 命令提示符(cmd) 或者 Powershell(win7 以上的版本,推荐使用) ,在 Mac 上用的是系统自带的 终端(Terminal)。
2017.10.24:Windows 用户强烈推荐使用完整版的 cmder,它支持多种模式,比如 cmd,powershell 或者 bash。建议平时使用 bash 类型的命令行,里面包含了大部分 UNIX 类型的工具,比如 ssh 。命令的使用方法也跟 Linux 或 macOS 上兼容。
命令提示符
Windows 7:打开 开始 菜单,在搜索框里输入 cmd,点击结果里的 cmd 。
Windows 8+:win + Q,搜索 cmd 。
Powershell
Windows 7:打开 开始 菜单,在搜索框里输入 powershell,点击结果里的 Windows Powershell。
Windows 8+:win + Q,搜索 powershell。
终端
打开 Launchpad(F4) ,搜索 Terminal ,点击 终端。或者使用快捷键 ctrl + 空格,在 Spotlight 里面搜索 Terminal 。
区别
命令行工具的用法在不同的操作系统上是有区别的,不过使用的思路是一样的, Mac 与 Linux 的用法基本一样,因为它们有血源关系。Windows 相比来说是比较特别的,它有一些独有的可以执行的命令,不过如果你用的是 Windows 7 以上的版本,可以在 Powershell 这个工具上执行命令,因为它的用法跟 Mac 与 Linux 很像。
目录与文件的基本操作
你可以通过一些命令浏览系统里的目录,创建,移动,删除目录还有文件。目录与文件的操作是使用命令行工具的基础。Windows 用户打开 Powershell ,Mac 用户打开 终端。然后试一下接下来的这些命令。
查看你当前的位置:pwd
Powershell,还有 终端,在光标的左边默认会显示你当前所在的目录。你也可以使用 pwd ( print working directory )这个命令,查看自己当前所在的位置。
pwd
Powershell 返回:
Path ____ C:\Users\wanghao
C:\Users\wanghao ,就是我当前所在的位置,这是默认打开 Powershell 的时候进入到的工作目录,C:\ 是系统的盘符,这是 Windows 特有的,在 Mac 与 Linux 上面没有盘符,Users 是存储系统里的所有用户文档的地方。wanghao 是当前登录到系统上的用户的名字。这个 C:\Users\wanghao,就是 wanghao 这个用户的主目录(Home)。
终端 返回:
/Users/xiaoxue
上面这个路径的最前面是一个 / ,表示系统的根目录。整个路径就是当前登录到系统上的用户的主目录。这个目录是在系统根目录下面的 Users 目录里面的 xiaoxue 这个目录。
显示当前目录下在的东西:ls
想查看某个目录下面的都有什么东西,用的是 ls 命令,在命令的后面可以指定一个目录的路径 ,这样会显示这个指定路径里的东西,如果直接使用 ls ,会显示当前你所在的位置里面的东西。
ls
Windows 的 Powershell 会比较详细的显示出目录下面的所有的东西,比如文件与目录的权限,最近更新的时间等等。
Mac 上的 终端 只会简单的显示出文件与目录的名称,想得到更详细的信息,可以在 ls 命令的后面加上一个 -l 参数。另外默认 ls 命令不包含目录下面的隐藏的文件或者目录,也就是名字用点(.)开头的文件或目录,你需要加上一个 -a 参数把这些隐藏的文件与目录也显示出来。
ls -la
在 ls 命令后面可以加上一个路径 ,这样会显示出这个路径下面的东西,这个路径可以是一个绝对的路径 ,也可以是一个路径的路径。比如要看一下用户主目录下面的所有的东西:
ls desktop
上面用了一个相对的路径 ,也就是 ls 命令会在当前所在的目录下面去查看 desktop 这个目录下的东西。如果用绝对的路径,是这样的:
Windows Powershell
ls C:\Users\wanghao\desktop
Mac 终端
ls /Users/xiaoxue/desktop
注意 Windows 路径里面用的是反斜线(\),不过在 Powershell 里面,你也可以使用斜线(/)。Mac 上的路径里用的是斜线(/)。上面的 wanghao 与 xiaoxue 是登录到系统上的用户名,你需要换成你自己的用户名。
清空命令行上面的显示:clear
在屏幕上显示的东西太多了,清空一下,可以使用 clear 这个命令。Windows 上也可以使用 cls ,Mac 上可以用快捷键 command + K 。
路径中的符号
在命令行里浏览或者操作目录的时候,会用到一些符号。
用户主目录
~
操作系统会为每个登录到系统上的用户分配一个特定的目录,这个目录的名字一般跟用户的名称是一样的,在这个目录的下面,会存放属于这个用户的文档。这个目录就是用户的主目录,这个目录在命令行里面,用 ~ 来表示。
根目录
/
一个斜线(/),表示系统的根目录,Windows 上表示的是在某个盘符下的根目录,比如 ls / 这条命令会显示出 C 盘根目录下面的所有的东西。Mac 与 Linux 上都表示的是系统的根目录。
当前目录
./
./ 或者 . ,表示当前目录,比如你要处理当前目录下面的东西,可以在路径的前面加上 ./ ,比如上面介绍的 ls 命令,你想列出当前目录下面的东西,可以用 ls ./ ,不过一般可以省略掉它,直接用 ls 命令就表示要显示当前目录下面的东西。
上一级目录
../
你想处理你所在位置的上一级别的目录里的东西,可以在路径的一开始用一个 ../,比如想要显示当前目录的上一个级别里的东西,可以输入 ls ../ 。一个 ../ 就表示前一个级别的目录,前两个级别就是 ../../ 。
进入到某个目录下面:cd
在图形界面上,你想进入到某个目录里面,可以双击打开这个目录,然后在这个目录下面去做一些事情。在命令行下面,你需要使用 cd ( change directory )这个命令,后面加上你想要进入到的地方。
cd 进入到的路径
比如我打算进入到桌面上,如果我当前的位置是在用户主目录的根目录下面,这样就可以使用相对的路径,像这样:
cd desktop
如果我是在别的位置上,可以在路径里面用一个 ~ 表示用户的主目录:
cd ~/desktop
创建目录:mkdir
在指定的地方创建一个新的目录,可以使用 mkdir (make directory),后面加上要创建的目录的名字。
mkdir 目录名
我现在的位置是在桌面上,打算在桌面上创建一个叫 projects 的目录:
mkdir projects
如果需要创建一个目录结构,就是你可能想要在某个目录下面,再创建一个子目录。Windows 上,可以直接在 mkdir 命令的后面加上要创建的目录的路径,这个路径上面的所有的目录,如果还不存在 ,就会去创建一个。但是在 Mac 与 Linux 上面,需要用一个 -p 的参数。比如我还想在 projects 目录下面创建一个叫 ninghao.net 的目录,在这个目录的下面,还需要一个 www 目录:
mkdir -p projects/ninghao.net/www
Windows Powershell 可以不用 -p 参数:
mkdir projects/ninghao.net/www
移动目录与文件:mv
把目录或者文件移动到一个新的地方,用的是 mv (move)命令,这个命令也可以用来重命名目录或者文件。命令的后面先是要移动的东西,再用一个空格,然后接着是移动到的新的位置。
mv 源 目标
比如我要把桌面上的 projects 里面的 ninghao.net 这个目录移动到桌面上,先确定你当前的位置是在桌面上,你 pwd 可以查看当前的位置,如果不是,可以用 cd ~/desktop 进入到桌面。
mv projects/ninghao.net ./
上面的命令里的 ./ 表示的是当前的目录,也就是你所在的位置,这条命令的意思就是把当前目录下面的 projects 里的 ninghao.net 这个目录移动到当前目录的下面。用 ls 可以查看当前目录下面的东西。
下面,可以再把这个 ninghao.net 重新放到 projects 这个目录的下面。
mv ninghao.net projects/
如果 projects 这个目录已经存在,表示要把 ninghao.net 这个目录移动到 projects 这个目录里面,如果 projects 这个目录不存在,就会把 ninghao.net 这个目录重命名成 projects 。
注意在移动文件的时候,文件移动到的位置的结尾一定要加上 / ,不然 mv 命名会把你想要移动的文件重命名成你想移动到的那个位置。
复制目录与文件:cp
cp (copy)命名可以复制指定的文件或者目录,先指定一下要复制的东西,空格分隔一下,接着是要复制到的位置。
cp 源 目标
你可以在桌面上新建一个空白的文件,比如 README.md ,然后再把它复制一份到 projects/ninghao.net/www 这个目录的下面。
cp README.md projects/ninghao.net/www/
要复制目录,需要加上一个 -R 参数,比如把桌面上的 projects 复制一份,放到桌面上,命名为 projects_bak 。
cp -R projects projects_bak
删除目录与文件:rm
要把指定的目录或者文件删除掉,用的是 rm (remove)命令,在它后面加上要删除掉的东西就行了,在删除目录的时候,需要用一个 -r 参数,另外,可以再加上一个 -f 参数,这样在删除目录里的文件的时候不会出现提示。注意在 Windows Powershell 上面用 rm 命令,不需要使用参数。
比如我的位置是在桌面上,有一个之前创建的文件叫 README.md 这个文件,删除掉这个文件可以这样:
rm README.md
再把桌面上的 projects_bak 这个目录也删除掉:
rm -rf projects_bak
Windows Powershell 不需要使用参数:
rm projects_bak路径 Powershell 终端
评论
越来越高端,抓紧时间学习了。
9 年 10 个月 以前
"注意在移动文件的时候,文件移动到的位置的结尾一定要加上 / ,不然 mv 命名会把你想要移动的文件重命名成你想移动到的那个位置。" 不加 / ,并没有重命名
9 年 10 个月 以前
嗯,呵呵。在有些系统下面,是会被重命名。
9 年 10 个月 以前
“Mac 上的 终端 只会简单的显示出文件与目录的名称,想得到更详细的信息,可以在 ls 命令的后面加上一个 -a 参数。另外默认 ls 命令不包含目录下面的隐藏的文件或者目录,也就是名字用点(.)开头的文件或目录,你需要加上一个 -l 参数把这些隐藏的文件与目录也显示出来。”
这句说反了,应该是-a是显示隐藏的,-l显示详细的信息
9 年 8 个月 以前
哈,非常感谢:)
9 年 8 个月 以前
9 年 7 个月 以前
为啥叫路径 是一个系列的文章吗?
9 年 4 个月 以前
感谢!
8 年 3 个月 以前
别客气:)
8 年 3 个月 以前
学习了,很有帮助,非常感谢
8 年 3 个月 以前
良心之作,非常详细,真的非常感谢!!!
注册了一个账号,准备跟您好好学!
8 年 2 个月 以前
谢谢啊。
8 年 2 个月 以前
良心文章,受益匪浅!感谢!
7 年 7 个月 以前
别客气 :)
7 年 7 个月 以前
请问博主,win 下有一个命令是把当前目录所有的文件名记录在一个文档里面:dir /b *.ppt > test.txt。然后在mac下怎么实现呢?感谢回答!
7 年 4 个月 以前
用法差不多,可以这样 ls >> list.txt
7 年 3 个月 以前
请问博主,Windows下使用ls命令出现DNS服务器没有权限怎么解决
7 年 3 个月 以前
这个没有遇到过,不过我推荐你用 cmder 作为系统的命令行工具,它有几种模式,比如 cmd,powershell,unix 等等。强烈推荐用 cmder 。
7 年 3 个月 以前
为什么删除时会出现"rm: 文件夹名: is a directory"
7 年 3 周 以前
添加 -rf 参数。
7 年 3 周 以前