Kon*_*rak 40 shell command-history
我有很多我经常需要执行的命令,通常有最细微的变化。
现在我将它们全部存储.bash_history
并使用CTRL-R访问它们,但我想知道是否有更好的方法。我在找什么:
不幸的是, bash_history 对第三个需求没有那么强:如果我做几个cd
and ls
,它会很快填满历史文件。我最近了解到HIST_SIZE
您可以配置历史记录以避免重复或某些命令,但在配置所有这些之前,我想确保它是最好的方法。
小智 65
另一个提示:我有时使用注释来为命令添加书签/标记:
my_command #bookmark
Run Code Online (Sandbox Code Playgroud)
然后:
[ctrl-r]#bookmark
Run Code Online (Sandbox Code Playgroud)
enz*_*tib 22
我发现以下 readline 命令非常有用
history-search-backward,
history-search-forward
Run Code Online (Sandbox Code Playgroud)
(请注意,它们与通常的reverse-search-history
,不同forward-search-history
,绑定到Ctrl- R,Ctrl- S)。
我将这些命令关联到Ctrl-Up并且Ctrl-Down将以下行放入~/.inputrc
:
"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward
Run Code Online (Sandbox Code Playgroud)
它们是如何工作的:在命令的开头写几个字符,按Ctrl-Up将显示下一个以该前缀开头的旧命令,再次按下以查看下一个,依此类推。满意后,可能修改命令后,按Enter执行。
alias
是一个很好的工具。
当您使用别名时,就像您键入它一样,因此非常灵活。例如,您可以将它与管道一起使用:
alias findfoo="grep 'foo'"
echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo # Does your custom grep
Run Code Online (Sandbox Code Playgroud)
您应该能够通过传递您尚未指定的任何标志来进行“轻微变化”。
echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo -v # finds non-matches
Run Code Online (Sandbox Code Playgroud)
虽然范围非常有限,但我想指出这两个扩展占位符:
!!
Run Code Online (Sandbox Code Playgroud)
是最后一个命令的占位符扩展。如果您忘记sudo
在命令之前放置,则很有用。
!$
Run Code Online (Sandbox Code Playgroud)
重复最后一个参数。如果您想重复不同的命令,则很有用a/very/long/path/name/you/do/not/want/to/type/again
我在 Git 中维护.bash_history的副本。为了简化这一点,我设置了
# don't put duplicate lines in the history
# don't save commands which start with a space
HISTCONTROL=ignoredups:erasedups:ignorespace
# append to the history file, don't overwrite it
shopt -s histappend
Run Code Online (Sandbox Code Playgroud)
在.bashrc 中,以及清理脚本中的以下命令(针对一般用途进行了修改)
# Ensure a single space at the end of each line to easier add more parameters
sed -i -e 's/ *$/ /' "~/.bash_history"
sort --unique --output="~/.bash_history" "~/.bash_history"
Run Code Online (Sandbox Code Playgroud)
我在git gui
. 由于每个命令都会修改历史文件,因此我还有一个特殊的命令来更新该特定存储库:
git stash && git pull && git stash pop
Run Code Online (Sandbox Code Playgroud)
小智 5
我为我常用的命令创建了最少的 shell 脚本,并给它们起了简短的名字。它们都存储在同一个地方,并添加到PATH
.
这样我就可以通过快捷方式访问非常复杂的命令,与alias
我不同的是,我可以将任务的可变部分转换为快捷方式的命令行参数。
归档时间: |
|
查看次数: |
9854 次 |
最近记录: |