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

服务器

浏览数:215

2019-10-16

Tips
原文作者:Danny Markov
原文地址:12 Terminal Commands Every Web Developer Should Know About

12_Terminal_Commands_Every_Web_Developer_Should_Know_About

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

在本文中,我们为你准备了一系列Unix命令,可帮助你充分利用终端。 其中一些是内置的,其他的是免费的工具,经过时间测试,有些命令可以在不到一分钟内安装完成。

Tips
下文介绍的这些命令在Unix环境上是完全可用的,但是在Mac os或Ubuntu等其他系统上,个别命令可能会不可用。

Curl

curl是一个命令行工具,用于通过HTTP,HTTPs,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命令可以比这更复杂。 有许多选项用于控制header,Cookie,身份验证等。 你可以阅读Everything curl来获取更多的使用信息。

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

Tmux

根据它的Wiki解释,tmux是终端复用器,用人类语言翻译来解释,它是将多个终端连接到单个终端会话的工具。

在一个tmux终端分割三个屏幕

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

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正好相反)。

Git

git是迄今为止最流行的版本控制系统。 它是现代Web开发的定义工具之一,我们根本无法将其从我们的列表中删除。

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

如果想了解更多有关git的信息,我们建议查看我们的教程Learn Git in 30 Minutes

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来减小文件归档的大小。

md5sum

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

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

md5sum ubuntu-16.04.3-desktop-amd64.iso 

0d9fe8e1ea408a5895cbbe3431989295  ubuntu-16.04.3-desktop-amd64.iso

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

Htop

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

htop

虽然它在终端中运行,但是htop对鼠标控件有非常好的支持。 这使得更容易浏览菜单,选择进程,并组织排序和过滤的任务。

Ln

Unix中的链接与Windows中的快捷方式类似,可快速访问某些文件。 链接是通过ln命令创建的,可以是两种类型:hardsymbolic。 每种都有不同的属性,用于不同的东西。

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

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

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

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

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

git-cleanup

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来创建代理和通道,保护你的私钥连接,传输文件等等。 可以在本指南中阅读更多内容。

Grep

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

使用需要过滤的大文件时,此命令将派上用场。 下面我们使用grep结合date命令来搜索大日志文件,并生成一个仅包含今天错误信息的新文件。

// 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更强大,同时也更复杂,可以执行几乎任何字符串相关的任务,包括添加,删除或替换字符串等。

Alias

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

# 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 ...

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

Tips
“本译文仅供个人研习、欣赏语言之用,谢绝任何转载及用于任何商业用途。本译文所涉法律后果均由本人承担。本人同意简书平台在接获有关著作权人的通知后,删除文章。”

作者:码匠安徒生