对初学者有用的终端命令!
该备忘单最初发布在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 后端开发教程 - Java、Spring Boot 实战 - msg200.com
            后端开发教程 - Java、Spring Boot 实战 - msg200.com