当前位置: 首页 > 科技观察

这些技巧使Bash命令历史变得更加有用

时间:2023-03-22 10:40:49 科技观察

告诉Bash你想让它记住什么,甚至通过删除不需要的记录来重写历史。运行Bash的Linux终端有一个内置的历史记录,您可以使用它来跟踪最近的操作。要查看Bash会话的历史记录,请使用内置命令history:$echo"foo"foo$echo"bar"bar$history1echo"foo"2echo"bar"3history与大多数命令不同,history命令不是文件系统上的可执行文件,而是Bash的一个特性。您可以使用type命令验证这一点:$typehistoryhistoryisashellbuiltinhistorycontrolshell历史行数的上限由HISTSIZE变量定义。您可以在.bashrc文件中设置此变量。下面将您的历史设置为3,000行,之后删除最旧的行以为位于列表底部的最新命令腾出空间:exportHISTSIZE=3000还有其他与历史相关的变量。HISTCONTROL变量控制记录哪些历史记录。您可以通过在.bashrc中写入以下行来强制Bash忽略以空格开头的命令:exportHISTCONTROL=$HISTCONTROL:ignorespace现在,如果您输入以空格开头的命令,它将不会记录在历史记录中:$echo"hello"$mysql-ubogus-hbadpassword123mydatabase$echo"world"$history1echo"hello"2echo"world"3history你也可以避免重复输入:exportHISTCONTROL=$HISTCONTROL:ignoredups现在如果你一个接一个地输入两个命令,只有一个将显示在历史记录中:$ls$ls$ls$history1ls2history如果你喜欢这两个忽略功能,那么你可以使用ignoreboth:exportHISTCONTROL=$HISTCONTROL:ignorebothremovecommandsfromhistory键入到shell中,或者您可能只是想清理历史记录,以便它更准确地表示您为使某项工作所采取的步骤。如果你想从Bash的历史记录中删除一个命令,在你想删除的项目的行号上使用-d选项:$echo"foo"foo$echo"bar"bar$history|tail535echo"foo"536echo"bar"537history|tail$history-d536$history|tail535echo"foo"536history|tail537history-d536538history|tail要停止添加历史条目,只需在命令前加一个空格即可,只要HISTCONTROL环境变量中有ignorespace即可:$history|tail535echo“foo”536echo“bar”$history-d536$history|tail535echo"foo"您可以使用-c选项清除所有会话历史记录:$history-c$history$history经验教训操纵历史记录通常没有听起来那么危险,尤其是当您有目的地管理它时。例如,如果您正在记录一个复杂的问题,通常最好使用会话历史记录命令,因为通过将命令插入历史记录,您可以运行它们,从而测试过程。很多时候,不执行历史命令会导致忽略小步骤或写错小细节。按需使用历史会话并明智地控制历史。享受历史修改!