对初学者有用的终端命令!
该备忘单最初发布在malikbrowne.com上。
我喜欢学习新的命令和工具来优化我的 Mac 工作流程。自从我开始使用更多面向终端的应用程序以来,我有一些常用的命令想与初学者和终端爱好者分享。
注意:本文假设您使用某种类型的UNIX shell,并优先考虑 Mac。其中一些命令可能无法在 Windows CMD/Powershell 上运行。
基本命令
Shell 中的命令有多种使用方式 - 但我认为需要学习的重要命令主要分为三大类:
- 导航和使用文件和目录
- 操作输入的输出
- 寻找事物
导航和使用文件和目录
在计算机上,文件和目录(也称为文件夹)负责管理信息。以下是一些命令,可帮助您更轻松地处理文件:
cd
- 导航到不同的目录pwd
- 查看当前目录的名称ls
- 列出当前目录中的所有文件mkdir
- 创建新目录touch
- 创建新文件cp
- 复制文件mv
- 移动文件或目录rm
- 删除文件或目录zip
- 将文件压缩为 zip 档案unzip
从 zip 档案中提取文件chmod
- 允许您使文件可执行并更改您的机器授予它的权限。- 为了使文件可执行,您可以输入
chmod +x [name of file]
- 为了使文件可执行,您可以输入
tar
- 允许你在 Linux 命令行中使用 tarball。它有很多用途,包括系统包管理。tar -cvf
允许您创建.tar档案tar -xvf
允许您“解压” .tar档案tar -tvf
列出.tar档案的内容
荣誉提名:sudo
sudo
是 bash 界面中非常广泛使用的命令,允许您以管理员或 root 权限运行命令。
/
例如,如果您在没有权限的情况下编辑机器根目录(也称为路径)中的任何文件sudo
,您将被拒绝编辑该文件的权限。
为了您的安全,您的计算机不允许您使用sudo
'd 命令执行一些操作,即运行 bash 脚本。
操作输入的输出
通常,编写脚本时您要实现的目标是通过文本运行过滤器、检查服务器的输出日志或对多个文件运行批处理命令。
以下是一些有助于操作文件输出的命令:
cat
- 显示文件的内容head
- 显示文件的前几行tail
- 显示文件的最后几行- 使用
-f
标志tail
将允许您查看文件的更新。这对于跟踪服务器的日志输出非常有帮助。
- 使用
|
- 管道符接受一个命令的输出并将其用作另一个命令的输入*
- 匹配文件名中的零个或多个字符- 实际上,有一整套通过 glob 匹配多个文件和名称的方法!
?
- 匹配文件名中的任何单个字符>
- 将命令的输出存储到文件中,如果文件不存在则创建新文件- 警告:这将覆盖并替换原始文件中的所有内容。
>>
- 将命令的输出连接到文件,如果未找到则创建新文件
寻找东西
echo
- 显示文本或其他命令的编译文本。非常适合测试命令。grep
- 允许您使用某种模式或正则表达式逐行查找结果。ack
- 类似于 grep,但具有更好的代码搜索功能,因为它知道在您期望搜索的地方进行搜索。(忽略版本控制目录等)
我发现的其他有用命令
pbcopy
- 将选定的文本复制到剪贴板缓冲区history
- 打印会话的命令历史记录- 这对于 grep 和管道符号非常有用,它允许您搜索历史记录:
history | grep [part of command]
- 这对于 grep 和管道符号非常有用,它允许您搜索历史记录:
pbpaste
- 将剪贴板缓冲区中选定的文本粘贴到终端中curl
- 允许您通过 RESTful 端点进行 HTTP 调用kill
- 根据进程 ID(pid)终止正在运行的进程killall
- 终止特定类型的所有正在运行的进程lsof -i tcp:[port number here]
- 列出特定端口上所有正在运行的进程- 当你遇到如下错误时,这个特别有用:
Error: listen EADDRINUSE :::3005
at Object.exports._errnoException (util.js:1023:11)
at exports._exceptionWithHostPort (util.js:1046:20)
at Server._listen2 (net.js:1261:14)
at listen (net.js:1297:10)
at Server.listen (net.js:1375:9)
at Object.<anonymous> (/path/to/node/server/server.js:15:34)
at Module._compile (module.js:571:32)
at loader (/path/to/node/modules/node_modules/babel-register/lib/node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (/var/www/html/gcsbpo/rocc/node_modules/babel-register/lib/node.js:154:7)
at Module.load (module.js:488:32)
它提供了一种简单的方法来找出 pid 以终止正在运行的进程。
快捷方式/提示和技巧
!$
扩展前一个命令的最后一个参数。用于在同一文件上链接命令!!
- 重复执行最后一条命令- 这些都归功于托马斯
- ![number]:重复历史记录中的命令(您可以使用 fc -l 查看可用的命令历史记录(或使用 fc -l 1 查看历史记录的所有内容)
- !! [额外内容]:重新执行上一个命令,并在命令末尾添加内容。
- [额外内容]!!:重新执行上一条命令,并在命令开头添加 [额外内容]。这对于以普通用户身份执行需要运行的操作非常方便。
sudo
- !!:s/[SEARCH]/[REPLACE]:重新执行上一个命令,将第一个子字符串 [SEARCH] 替换为 [REPLACE]
- !!:s/[SEARCH]/[REPLACE]:重新执行上一个命令,将所有子字符串 [SEARCH] 替换为 [REPLACE]
clear
- 清除终端的所有输出,旧输出仍然可以通过向上滚动访问CMD + k
- 清除会话中的所有输出,仅保留以前调用的命令CTRL + c
- 中止当前正在运行的进程并关闭它。CTRL + z
- 暂停(SIGSTP
)任何当前正在运行的进程- 注意:
CTRL + C
中止该过程,但CTRL + z
使其在内存中处于空闲状态。
- 注意:
CTRL + a
- 带你到 bash 输入的开头CTRL + e
- 带你到 bash 输入的末尾CTRL + u
- 清除光标前的所有输入CTRL + r
- 打开一个提示,搜索会话中的先前命令
结论
学习如何导航终端一开始肯定是令人生畏的,但花一些时间编写脚本后,您会发现这些命令可以为您节省大量日常任务的时间。
就我个人而言,我开始达到通过终端导航比使用 Finder 更快的程度。
如果您有任何命令、快捷键或技巧可以添加到这篇文章中,请给我留言!我很乐意添加更多。
文章来源:https://dev.to/milkstarz/helpful-terminal-commands-for-beginners-5cjh