🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

路径(一):拥抱命令行(Windows:Powershell,Mac:Terminal)

命令行工具是做 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。

QQ20150117-9

终端

打开 Launchpad(F4) ,搜索 Terminal ,点击 终端。或者使用快捷键 ctrl + 空格,在 Spotlight 里面搜索 Terminal 。

QQ20150117-8

区别

命令行工具的用法在不同的操作系统上是有区别的,不过使用的思路是一样的, 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 会比较详细的显示出目录下面的所有的东西,比如文件与目录的权限,最近更新的时间等等。

QQ20150117-4

Mac 上的 终端 只会简单的显示出文件与目录的名称,想得到更详细的信息,可以在 ls 命令的后面加上一个 -l 参数。另外默认 ls 命令不包含目录下面的隐藏的文件或者目录,也就是名字用点(.)开头的文件或目录,你需要加上一个 -a 参数把这些隐藏的文件与目录也显示出来。

ls -la

QQ20150117-5

在 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

QQ20150117-7

移动目录与文件: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 终端

评论

越来越高端,抓紧时间学习了。

"注意在移动文件的时候,文件移动到的位置的结尾一定要加上 / ,不然 mv 命名会把你想要移动的文件重命名成你想移动到的那个位置。" 不加 / ,并没有重命名

嗯,呵呵。在有些系统下面,是会被重命名。

“Mac 上的 终端 只会简单的显示出文件与目录的名称,想得到更详细的信息,可以在 ls 命令的后面加上一个 -a 参数。另外默认 ls 命令不包含目录下面的隐藏的文件或者目录,也就是名字用点(.)开头的文件或目录,你需要加上一个 -l 参数把这些隐藏的文件与目录也显示出来。”
这句说反了,应该是-a是显示隐藏的,-l显示详细的信息

哈,非常感谢:)

为啥叫路径 是一个系列的文章吗?

感谢!

别客气:)

学习了,很有帮助,非常感谢

良心之作,非常详细,真的非常感谢!!!
注册了一个账号,准备跟您好好学!

谢谢啊。

良心文章,受益匪浅!感谢!

别客气 :)

请问博主,win 下有一个命令是把当前目录所有的文件名记录在一个文档里面:dir /b *.ppt > test.txt。然后在mac下怎么实现呢?感谢回答!

用法差不多,可以这样 ls >> list.txt

请问博主,Windows下使用ls命令出现DNS服务器没有权限怎么解决

这个没有遇到过,不过我推荐你用 cmder 作为系统的命令行工具,它有几种模式,比如 cmd,powershell,unix 等等。强烈推荐用 cmder 。

为什么删除时会出现"rm: 文件夹名: is a directory"

添加 -rf 参数。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点