由于输入长而精确的命令很乏味,因此许多人远离 macOS 的终端。但是,您可以通过使用终端 shell 中内置的命令历史记录功能来节省大量时间并减少输入。外壳会记录您运行的命令,您可以通过几个简单的击键访问此历史记录以再次运行命令或编辑它们,因此您不必重新键入它们。
终端以后进先出的顺序保存命令历史记录,这意味着历史列表中的第一条命令是最后发出的命令。如果你想运行你已经输入的命令——比如你想重新运行你刚刚输入的最后一个命令——你所要做的就是按向上箭头键,shell 会在提示符下显示上次运行的命令.
如果要运行之前运行的命令,请按几次向上箭头键。当您执行此操作时,shell 会循环执行您的最后一条命令,并在提示符处显示每条命令。如果您决定不想使用历史列表中的命令,只需按向下箭头键直到返回空提示,然后输入一个新命令。
改写历史
使用命令历史记录,您可以重新运行以前的命令,但您也可以修改命令并使用不同的参数运行它们。最简单的方法之一是使用!!
命令运行上一个命令,向其附加新信息。假设您想列出目录的内容,如下所示:
ls ~/Library/Preferences/ByHost
阅读列表后,您决定将此列表保存到文件中。您可以运行以下命令:
!! > list.txt
终端取代了!!您运行的最后一个命令的快捷方式,所以!! > list.txt
与键入此命令相同:
ls ~/Library/Preferences/ByHost > list.txt
编辑命令
除了通过按向上和向下箭头键上下移动命令历史记录,在终端提示符处显示每个命令,您还可以编辑出现的命令或向它们添加参数。当您需要运行非常相似但不完全相同的命令时,这可以节省时间。
假设你想复制一个文件;你输入这样的命令:
cp /Users/kirk/Pictures/P101068.jpg /Users/Shared
终端显示该文件不存在,但您确定它存在。当您转到该目录并检查时,您会发现确实有一个名称相似的文件,但您漏掉了一个零。使用命令历史记录,您可以按向上箭头再次显示命令。使用向左箭头将光标移动到需要添加零的位置,键入0
,然后按回车键。(您不需要将光标移回行尾。)
您可以使用命令编辑来更改命令并在不同的文件上运行它们。例如,如果您的 Pictures 目录中有多个文件,您可以使用向上箭头重新显示上一个命令,更改文件名,然后在不同的文件上再次运行该命令。
更改参数和选项
使用相同的技巧来更改命令的参数或选项。在前面的示例中,我将图片复制到我的 Users/Shared 目录中。我可以轻松地按向上箭头重新显示命令,然后更改命令以将其中一个文件复制到不同的位置。无需重新键入整行。
出于同样的原因,假设您列出了一个目录中的文件,然后决定要使用-l
选项来显示一个长列表。按向上箭头重新显示命令,然后将光标向左移动以添加-l
。例如,ls -l /etc/periodic
。
糟糕,我忘记了 sudo
如果没有 root 用户权限,您无法访问计算机的许多命令和区域。如果您拥有计算机的管理员权限,则可以使用sudo
命令提示您输入密码。
但是,键入一个长命令却让终端沉闷地回答“权限被拒绝”是很烦人的。如果您忘记在命令前加上sudo
前缀,只需键入sudo !!
.此命令告诉 shell 再次执行之前的命令,这次以sudo
开头。在提示符下输入您的密码,然后按回车键,命令将运行。无需重新输入。
编者注:本文摘自 The Mac OS X Command Line: Unix Under the Hood,作者 Kirk McElhearn(2004 年;经 Sybex 许可转载)。它已更新以反映 macOS Big Sur 终端中的变化。
发表评论