Linux –如何在命令行上更快

是否想在Linux命令行界面上更快?由于大多数Linux发行版都将Bash作为默认的CLI提供,因此这里有一些Bash技巧,将有助于减少执行命令所需的键入量。随时发表评论并分享自己的速度技巧。

 
Control-R通过您的历史记录

这是我最常用的快捷方式。点击Control-R并开始输入字符串。您立即使用该字符串获得Bash历史记录中的最后一个命令。再次按Control-R,可在历史记录中进一步循环。

例如,键入以下内容,然后按Enter。

grep root /etc/passwd

然后按Control-R并开始输入'grep'。

Control-R
(reverse-i-search)`gre':grep根目录/ etc / passwd

当您看到列出的原始命令时,请按Enter以执行它。或者,您也可以在运行命令之前按向右箭头以编辑命令。

使用历史记录扩展

Bash的命令历史记录可以使用感叹号进行引用。例如,键入两个感叹号(!!)将重新执行最后一条命令。下一个示例执行两次date:

date
!!

如果您不仅对最后执行的命令感兴趣,请输入history以查看Bash历史记录的编号列表。

history
 39 grep root /etc/passwd
 40 date
 41 date
 42 history

由于grep root / etc / passwd是命令号39,因此您可以像这样重新执行它:

!39

您还可以使用搜索字符串来引用Bash的历史记录。例如,以下将运行以'grep'开头的最后一个命令。

!grep

注意,您可以通过设置HISTSIZE来设置历史记录中存储的命令数。

export HISTSIZE=1000

您也可以使用-c开关清除历史记录。

history -c

使用历史记录快速替换

可以通过快速替换来编辑和重复使用历史命令。假设您在/ etc / passwd中使用grep表示“ root”:

grep root /etc/passwd

现在,您需要在/ etc / group中为'root'使用grep。使用插入号(^)在最后一个命令中用“ passwd”替换“ group”。

^passwd^group

上面的命令将运行:

grep root /etc/group

使用Vi或Emacs编辑模式

您可以使用Vi或Emacs击键来进一步增强编辑以前的命令的能力。例如,以下设置了Vi样式的命令行编辑:

set -o vi

设置Vi模式后,通过键入命令并按Enter进行尝试。

grep root /etc/passwd

然后,向上箭头一次到同一命令:

向上
grep根目录/ etc / passwd

现在,将光标移到“ passwd”中的“ p”并按Esc。

grep root / etc / passwd
^
现在,使用Vi cw命令将单词“ passwd”更改为“ group”。

grep root /etc/group



For more Vi mode options, see this list of commands available in Vi mode. Alternatively, If you prefer Emacs, use Bash's Emacs mode:



set -o emacs

Emacs模式提供了可通过Control和Alt键使用的快捷方式。例如,Control-A会将您带到行的开始,而Control-E会将您带到行的结束。这是Bash的Emacs模式下可用的命令列表。

使用别名和功能

Bash允许将命令或命令集别名为一条指令。您的交互式Bash Shell应该已经从/etc/profile.d/中加载了一些有用的别名。首先,您可能将ll别名为ls -l。

如果要查看所有已加载的别名,请运行内置的别名Bash。

别名

要创建别名,请使用alias命令:

alias ll='ls -l'

以下是一些其他常见别名:

alias ls='ls --color=tty'
alias l.='ls -d .* --color=auto'
alias cp='cp -i'
alias mv='mv -i'

请注意,您也可以将命令串在一起。以下命令会将gohome别名为cd,然后运行ls。请注意,不带任何参数运行cd会将目录更改为$HOME目录。

alias gohome='cd; ls'

更好的是,只有在cd成功的情况下才运行ls:

alias gohome='cd && ls || echo "error($?) with cd to $HOME"'

可以将更复杂的命令写入Bash函数。函数将允许您提供代码块的输入参数。例如,假设您要创建一个备份功能,将用户输入的文件放入〜/ backups中。

backup() {
 file=${1:?"error: I need a file to backup"}

 timestamp=$(date '+%m%d%y')
 backupdir=~/backups

 [ -d ${backupdir} ] || mkdir -p ${backupdir}
 cp -a ${file} ${backupdir}/$(basename ${file}).${timestamp}
 return $?
}

像上面的例子一样,使用函数来自动化日常的小任务。这是我用来设置xterm标题的一个。

xtitle() {
 unset PROMPT_COMMAND
 echo -ne "\033]0;${@}\007"
}

当然,您可以将函数与别名一起使用。这是我用来将xterm标题设置为“ MAIL”然后运行Mutt的一个。

alias mutt='xtitle "MAIL" && /usr/bin/mutt'

最后,为了确保您的自定义别名和函数在每次登录时都可用,请将它们添加到您的.bashrc中。

vim ~/.bashrc