如果你想成为一个高效的开发者,无论你使用什么技术,都离不开命令行。下面是我多年来学到的最喜欢和最常用的shell命令和技巧的列表。我确定您知道其中一些命令或技巧,所以请跳过,但其他命令或技巧可能会提高您的工作效率。免责声明:我在Ubuntu20.04上使用默认终端使用这些命令。只要您在类Unix操作系统上运行类bash的shell,这些命令也应该适用于您。但如果您在Windows上运行Powershell,祝您好运!cd-你可能知道你可以cd进入一个目录。但是您知道您可以使用破折号(-)作为返回到上一个目录的参数吗?linuxmi@linuxmi:~/www.linuxmi.com$cdlinuxmi@linuxmi:~$cd-/home/linuxmi/www.linuxmi.comlinuxmi@linuxmi:~/www.linuxmi.com$cd-/home/linuxmi如下图:额外提示:破折号参数也适用于gitcheckout,因此您可以使用它在主分支和工作分支之间快速切换。Shell历史这可能是我最常用的Shell技巧之一:(连续)按下向上箭头以选择我的Shell历史中的最后一个命令。您也可以按ctrl+r(依次)以LRU顺序按关键字反向搜索shell历史记录。或者只需键入history即可在终端中查看整个shell历史记录。然后你可以写![number]来选择历史中位置编号的命令。linuxmi@linuxmi:~/www.linuxmi.com$historylinuxmi@linuxmi:~/www.linuxmi.com$!849你甚至可以使用负数作为索引来选择最后的第n条命令,像这样:linuxmi@linuxmi:~/www.linuxmi.com$!-2!^!$前面命令的第一个(!^)和最后一个(!$)参数也有快捷方式:linuxmi@linuxmi:~/www.linuxmi.com$echolinuxmilinuxubuntujavapythonlinuxmilinuxubuntujavapythonlinuxmi@linuxmi:~/www.linuxmi.com$echo!^!$echolinuxmipythonlinuxmipython如下图:!!如果你只需要最后一个命令,你可以添加!!在您当前的命令中,它将被最后一个命令替换并执行:linuxmi@linuxmi:~/www.linuxmi.com$uname-r5.12.0-051200-genericlinuxmi@linuxmi:~/www.linuxmi.com$!!uname-r5.12.0-051200-generic如下所示:[index]或者,您可以通过在命令中包含!:[index]来选择您想要的命令部分,然后将参数插入索引[index]的上一个命令。linuxmi@linuxmi:~/www.linuxmi.com$echolinuxmilinuxubuntujavapythonlinuxmilinuxubuntujavapythonlinuxmi@linuxmi:~/www.linuxmi.com$echo!:1echolinuxmilinuxmi你甚至可以使用[index]-[index]来选择范围:linuxmi@linuxmi:~/www.linuxmi.com$echolinuxmilinuxubuntujavapythonlinuxmilinuxubuntujavapythonlinuxmi@linuxmi:~/www.linuxmi.com$echo!:2-3echolinuxubuntulinuxubuntuEditCurrentLine当您刚刚从历史记录中选择了一个需要稍微更改的命令时,这尤其有用。您可以按ctrl+a将光标移动到行首,按ctrl+e将光标移动到行尾(记住:e表示结尾,a表示字母开头)。另外:ctrl+k剪切光标及其后面的内容;ctrl+u剪切光标前的内容;ctrl+y将最后两条命令粘贴到光标处,粘贴方法同剪切方法;ctrl+c结束正在运行的程序或命令;ctrl+d结束当前命令窗口;ctrl+r输入关键字弹出已经使用过的命令;ctrl+l清除屏幕;(和clear一样的效果)ctrl+x+e如果你有意识直到你现在需要做一个更大的编辑或写一个很长的命令,可能有一些循环或一些复杂的解析逻辑,需要更多的编辑功能,你也可以切换到您的编辑器,按ctrl+e+xVim(或Nano或VI等)立即打开您已经在缓冲区中键入的命令。如下图所示:使用一个命令处理多个文件你应该使用过cp或mv等命令来处理文件。但现在我们谈论的是{}参数扩展。通过使用{},您可以指示shell扩展大括号中的每个值:linuxmi@linuxmi:~/www.linuxmi.com$mvlinuxmi.{py,sh}linux此命令将移动linuxmi.py文件和linuxmi.java文件而不是输入linuxmi两次。如下图:此外,还可以使用如下命令将5个文件(linuxmi1.png、linuxmi2.png、linuxmi3.png和linuxmi4.png)复制到linux/目录下:linuxmi@linuxmi:~/www.linuxmi.com$cplinuxmi{1..4}.pnglinuxmi/Pastemodifiedcommandfromhistory你也可以一步完成,而不是检索最后一个命令,然后分两步修改它。^x^y是用y替换x的命令:linuxmi@linuxmi:~/www.linuxmi.com$unaem-rCommand'unaem'notfound,didyoumean:command'uname'fromdebcoreutils(8.30-3ubuntu2)Try:sudoaptinstall
