Image placeholder

每个Web开发人员都应该知道的12个终端命令

Image placeholder
F2EX 2017-09-05

终端是开发人员武器库中最重要的生产力工具之一。掌握它可以对你的工作流程产生非常积极的影响,因为许多日常任务可以减少到只需编写简单的命令并按Enter。

下面为你准备了一系列 Unix 命令,可帮助你充分利用终端。其中一些是内置的,其他的是免费的工具,经过测试,可以在不到一分钟内安装好它们。

1.Curl

Curl 是一种用于通过 HTTP(s),FTP 和你可能尚未听到的数十种其他协议提出请求的命令行工具。它可以下载文件,检查响应标题和自由访问远程数据。

在 Web 开发中, curl 经常用于测试连接和使用 RESTful API 。

# Fetch the headers of a URL.
curl -I http://google.com
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: http://www.google.com/?gfe_rd=cr&ei=0fCKWe6HCZTd8AfCoIWYBQ
Content-Length: 258
Date: Wed, 09 Aug 2017 11:24:01 GMT

# Make a GET request to a remote API.
curl http://numbersapi.com/random/trivia
29 is the number of days it takes Saturn to orbit the Sun.

Curl 命令可以比这更复杂。有许多选项用于控制标题,Cookie,身份验证等。你可以阅读更多关于 curl 的信息


2.Tree

Tree 是一个很小的命令行实用程序,它将目录中的文件可视化表示。它递归地运行,遍历每个级别的嵌套和绘制所有内容的格式树。这样,你可以快速浏览并查找你需要的文件。

tree
.
├── css
│   ├── bootstrap.css
│   ├── bootstrap.min.css
├── fonts
│   ├── glyphicons-halflings-regular.eot
│   ├── glyphicons-halflings-regular.svg
│   ├── glyphicons-halflings-regular.ttf
│   ├── glyphicons-halflings-regular.woff
│   └── glyphicons-halflings-regular.woff2
└── js
    ├── bootstrap.js
    └── bootstrap.min.js

还可以使用简单的正则表达式来过滤结果:

tree -P '*.min.*'
.
├── css
│   ├── bootstrap.min.css
├── fonts
└── js
    └── bootstrap.min.js

3.Tmux

Tmux 是一个终端复用器,它是将多个终端连接到单个终端会话的工具。

你可以在一个终端中进行程序之间的切换,添加分屏幕窗格,并将多个终端连接到同一个会话,使其保持同步。在远程服务器上工作时,Tmux 特别有用,因为它可以让你在当前终端创建新的选项卡,而无需再次登录。


4.Disk usage – du

du 命令生成有关文件和目录的空间使用情况的报告。它很容易使用,可以递归地运行,遍历每个子目录并返回每个文件的大小。

du 的常见用例是当你的某个驱动器的空间不足时,使用此命令可以快速查看每个文件夹所占用的存储空间,从而找到最大的那个文件。

# Running this will show the space usage of each folder in the current directory.
# The -h option makes the report easier to read.
# -s prevents recursiveness and shows the total size of a folder.
# The star wildcard (*) will run du on each file/folder in current directory.

du -sh *

1.2G    Desktop
4.0K    Documents
40G     Downloads
4.0K    Music
4.9M    Pictures
844K    Public
4.0K    Templates
6.9M    Videos

还有一个类似的命令 df(Disk Free),它返回有关可用磁盘空间的各种信息(与 du 相反)。


5.Git

Git 是迄今为止最流行的版本控制系统。它是现代 Web 开发的必备工具之一。

虽然有很多第三方应用和工具可用,但大多数人喜欢通过终端访问 git 。 git CLI 真的很强大,可以处理让人纠结的项目历史。

如果你想了解更多关于 git 的信息,搜索引擎中实在是太多啦,这里不再详细说明。(推荐和谐使用 google )


6.Tar

tar 是用于文件存档的默认 Unix 工具。它可以将多个文件快速捆绑到一个包中,从而使之更容易存储和移动。

tar -cf archive.tar file1 file2 file3

使用 -x 选项也可以提取现有的 .tar 档案。

tar -xf archive.tar

请注意,大多数其他格式,如 .zip 和 .rar 无法由 tar 打开,需要使用其他命令实用程序,如 unzip

许多现代 Unix 系统运行扩展版本的 tar(GNU tar),还可以执行文件大小压缩:

# Create compressed gzip archive.
tar -czf file.tar.gz inputfile1 inputfile2

# Extract .gz archive.
tar -xzf file.tar.gz

如果你的操作系统没有该版本的 tar ,则可以使用 gzipzcatcompress 来减小归档文件的大小。


7.md5sum

Unix 有几个内置的哈希命令,包括 md5sum,sha1sum 等。这些命令行工具在编程中有各种应用,但最重要的是它们可用于检查文件的完整性。

例如,如果从不受信任的源下载了某个 .iso 文件,那么该文件有可能包含有害的脚本。为了确保 .iso 是安全的,你可以从中生成 md5 或其他哈希。

md5sum ubuntu-16.04.3-desktop-amd64.iso 

0d9fe8e1ea408a5895cbbe3431989295  ubuntu-16.04.3-desktop-amd64.iso

然后,你可以将生成的字符串与原始作者提供的字符串(例如 UbuntuHashes )进行比较。


8.Htop

Htop 是内置顶级任务管理器的更强大的替代方案。它提供了一个高级界面,具有用于监视和控制系统进程的许多选项。

虽然它在终端中运行,但是 htop 对鼠标控件有非常好的支持。这样可以轻松导航菜单,选择进程,并组织排序和过滤的任务。


9.Ln

Unix 中的链接与 Windows 中的快捷方式类似,可让你快速访问某些文件。链接是通过 ln 命令创建的,可以是两种类型:hard 或 symbolic 。每种都有不同的属性,用于不同的东西(阅读更多)。

以下是使用链接的许多方法中的其中一个示例。假设我们的桌面上有一个名为 Scripts 的目录。它包含我们通常使用的 bash 脚本。每次我们想要调用我们的脚本之一,我们必须这样做:

~/Desktop/Scripts/git-scripts/git-cleanup

显然,这不是很方便,因为我们每次都要写绝对路径。相反,我们可以从我们的 Scripts 文件夹创建一个符号链接到 /usr/local/bin ,这将使脚本可以从所有目录执行。

sudo ln -s ~/Desktop/Scripts/git-scripts/git-cleanup /usr/local/bin/

使用创建的符号链接,我们现在可以通过在任何打开的终端中简单地写入其名称来调用我们的脚本。

git-cleanup

10.SSH

使用 ssh 命令,用户可以快速连接到远程主机并登录到其 Unix shell 。这使得可以从本地机器的终端直接在服务器上方便地发出命令。

要建立连接,只需要指定正确的 IP 地址或 URL 。第一次连接到新服务器时,会有某种形式的身份验证。

ssh username@remote_host

如果要在服务器上快速执行命令而不登录,则可以在 URL 之后添加一个命令。该命令将在服务器上运行,并返回该结果。

ssh username@remote_host ls /var/www

some-website.com
some-other-website.com

你可以使用 SSH 来创建代理和隧道,保护与私钥的连接,传输文件等功能。你可以在本指南中阅读更多内容。


11.Grep

Grep 是用于在文本中查找字符串的标准 Unix 实用程序。它以文件或文件流的形式输入,通过正则表达式运行其内容,并返回所有匹配的行。

// Search for today's date (in format yyyy-mm-dd) and write the results to a new file. 
grep "$(date +"%Y-%m-%d")" all-errors-ever.log > today-errors.log

使用字符串的另一个伟大的命令是 sed 。它比 grep 更强大(更复杂),可以执行几乎任何与字符串相关的任务,包括添加,删除或替换字符串。


12.Alias

许多 Unix 命令,包括本文中的一些功能,在你添加所有选项后,往往会显得很长。为了使它们更容易记住,你可以使用别名 bash 内置命令创建简短的别名:

# Create an alias for starting a local web server.
alias server="python -m SimpleHTTPServer 9000"

# Instead of typing the whole command simply use the alias.
server 

Serving HTTP on 0.0.0.0 port 9000 ...

只要你将该终端打开,该别名将可用。为了使其永久化,你可以将别名命令添加到 .bashrc 文件中。

原文:https://tutorialzine.com/2017/08/12-terminal-commands-every-web-developer-should-know


2017-09-21