对于开发人员来说,终端是最重要的设备之一。掌握它可以对你的工作流程产生非常积极的影响,因为许多日常工作都被简化为编写一个简单的命令并点击进入。
在本文中,我们为您准备了一系列Unix命令,这些命令将帮助您充分利用终端。
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 GETrequest 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、身份验证等。
Tree
Tree是一个很小的命令行实用程序,它将目录中的文件进行了可视化,它递归地工作,遍历每个层次的嵌套,并绘制所有内容的格式树。这样,您可以快速浏览并找到您正在寻找的文件。
还可以使用简单的regex模式来筛选结果:
Tmux
根据它的Wiki, Tmux是一个终端多路复用器,它翻译成人类语言意味着它是一个将多个终端连接到一个终端会话的工具。
一个带有3个分割屏幕的Tmux终端
它让你在一个终端的程序之间切换,添加分屏面板,并将多个终端连接到同一个会话,使它们保持同步。当在远程服务器上工作时,Tmux尤其有用,因为它允许您创建新的选项卡,而不必再次登录。
Disk usage - du
du命令生成关于文件和目录空间使用情况的报告。它很容易使用,并且可以递归地工作,遍历每个子目录并返回每个不同大小的文件。
du的一个常见用例是当你的一个驱动器耗尽了空间,你也不知道为什么时,使用这个命令,您可以快速查看每个文件夹的存储容量,从而找到最大的内存囤积者。
# 运行此操作将显示当前目录中每个文件夹的空间使用情况
# h选项使报表更容易阅读
# -s防止递归,显示文件夹的总大小
# (*)将在当前目录中的每个文件/文件夹上运行du
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(磁盘自由),它返回关于可用磁盘空间的各种信息(du的反面)。
Git
Git是现代web开发的定义工具之一,是目前最流行的版本控制系统。
比起第三方应用程序和可用工具,大多数人还是更愿意通过终端访问git。git CLI非常强大,它可以处理最复杂的项目历史。
Tar
Tar是用于处理文件存档的默认Unix工具。它允许您快速地将多个文件捆绑到一个包中,从而便于以后存储和移动它们。
tar -cf archive.tar file1 file2 file3
使用-x选项还可以提取现有的选项。
tar -xf archive.tar
注意大多数其他格式,如,zip和rar不能由tar打开,并且需要其他命令实用程序,如解压缩。
许多现代Unix系统都运行一个扩展版本的tar (GNU tar),它还可以执行文件大小压缩:
如果您的操作系统没有这个版本的tar,您可以使用gzip、zcat或压缩来减少文件归档文件的大小。
md5sum
Unix有几个内置的hashing命令,包括md5sum、sha1sum和其他的一些命令。这些命令行工具在编程中有各种应用程序,但最重要的是它们可以用于检查文件的完整性。
例如,如果您从一个不可信的源下载了一个iso文件,那么这个文件就有可能包含有害的脚本。为了确保iso是安全的,您可以从它生成md5或其他hash。
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命令创建的,可以分为两种类型:hard或符号的。每一种都有不同的属性,用于不同的事物。
这里有一个例子,说明您可以使用链接的多种方式之一。假设我们的桌面上有一个名为Scripts的目录。它包含了我们常用的整洁的bash脚本。每次我们想要调用一个脚本时,我们必须这样做:
~/Desktop/Scripts/git-scripts/git-cleanup
显然,这不是很方便,因为我们每次都要写绝对路径。相反,我们可以从我们的脚本文件夹创建一个符号链接到/usr/local/bin,这将使脚本可以从所有目录中执行。
sudo ln -s ~/Desktop/Scripts/git-scripts/git-cleanup /usr/local/bin/
通过创建的symlink,我们现在可以通过在任何打开的终端中简单地写入它的名称来调用我们的脚本。
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做很多事情,比如创建 proxies和tunnels,用私钥保护你的连接,传输文件等等。
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内置命令创建简短的别名:
# 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文件中。
如需转载,烦请按下方注明出处信息,谢谢!
英文链接:http://t.cn/RNMnpP1
作者:Danny Markov
翻译:BoXue
领取专属 10元无门槛券
私享最新 技术干货