是否想在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