Linux shells like bash have a handy means of remembering instructions that you just kind, making it simple to run them once more with out having to retype them. Simply use the historical past command (which is a bash built-in) after which use an exclamation level adopted by the quantity proven in entrance of the command within the historical past command output that you just need to rerun. Alternatively, you may again as much as that command by urgent the up arrow key as many instances as wanted to succeed in that command after which press return. Don’t neglect, although, that you may additionally arrange instructions you’re doubtless to make use of typically as aliases by including a line like this to your ~/.bashrc file so that you just don’t must seek for them in your command historical past. Right here’s an instance:
$ alias customers="who | awk '{print $1}'" $ customers myacct shs shs $ alias uusers="who | awk '{print $1}' | uniq"
The aliases above will show logged in customers. The second removes duplicates. Add the instructions to your ~/.bashrc file to have them arrange every time you log in.
Making use of the historical past command could make it simpler to reuse instructions and keep away from typos. Nevertheless, there are methods to get Linux to disregard a number of the instructions that you just kind in order that your historical past buffer doesn’t replenish with instructions you don’t need it to recollect – particularly if these instructions would take up quite a lot of room in your historical past buffer.
Command historical past may assist with troubleshooting an issue as you may get an inventory of the instructions that had been run earlier than the issue appeared.
Table of Contents
How a lot to recollect
The $HISTSIZE setting controls what number of instructions will probably be remembered. In the event you solely need the newest 100 traces to be remembered in your historical past buffer, you could possibly run a command like this:
$ export HISTSIZE=100
Normally, $HISTSIZE defaults to 1,000 instructions. Verify it by operating a command like this one:
$ echo $HISTSIZE 1000
Change the setting in your ~/.bashrc file if you would like historical past to recollect extra or fewer instructions.
Ignoring particular instructions
You may hold sure instructions from being saved in your historical past buffer by including them to the $HISTIGNORE variable. Within the setting proven under, the pwd, date, historical past and clear instructions will probably be ignored since these instructions are unlikely to be rerun utilizing command historical past.
$ export HISTIGNORE='pwd:date:historical past:clear' $ pwd /dwelling/myacct $ historical past $ historical past | tail -1 86 pwd 87 historical past | tail -1
Word, nevertheless, that the historical past | tail -1 command proven above is captured, however not the historical past command when entered by itself.
Ignoring duplicate instructions
In the event you kind a command some variety of instances in a row and your $HISTCONTROL setting accommodates the string “ignoredups” (i.e., ignore duplicates), you’ll solely see the command as soon as for every repetitive sequence.
$ echo howdy howdy $ pwd /dwelling/myacct $ pwd /dwelling/myacct $ who | wc -l 4 $ pwd $ historical past | tail -5 79 echo howdy 80 pwd <== was run twice, however is proven as soon as 81 who | wc -l 82 pwd 83 historical past | tail -6
Ignoring instructions which can be entered with a previous area
You can too elect to have your historical past buffer put out of your mind any command that you just enter once you run the command after urgent the area key – for instance, for those who kind “ date” as a substitute of “date”. This lets you have your command historical past ignore any command with out having to arrange every command individually in your $HISTIGNORE setting.
In actual fact, if you would like your command historical past to omit each instructions that begin with an area together with duplicate instructions entered sequentially, both of those settings will do the identical factor. Add them to your ~/.bashrc file to make them everlasting.
$ export HISTCONTROL="ignoredups:ignorespace" $ export HISTCONTROL="ignoreboth"
To be clear, the “ignoreboth” setting means to disregard each duplicate instructions when entered sequentially and instructions which can be entered with a previous area.
Your historical past file
The command historical past file is recognized by the $HISTFILE setting, however is never something however .bash_history. Word that instructions you simply entered is not going to but have been added to this file.
$ echo $HISTFILE /dwelling/shs/.bash_history
The command under can be added to my historical past buffer, however word that it doesn’t present up once I ask to see the underside of my .bash_history file.
$ echo byebye for now byebye for now $ tail -1 ~/.bash_history tail -2 ~/.bash_history
However on subsequent login, I’ll see this:
$ tail -1 ~/.bash_history echo byebye for now
Wrap-up
Deciding what instructions you need remembered in your command historical past file and which you need ignored can enhance the usefulness of your command historical past – particularly for those who don’t need to scan by lots of of remembered instructions to search out the handful that you just need to return. I hope that some a part of this submit has left you with some good concepts about making your command historical past extra helpful.
Copyright © 2023 IDG Communications, Inc.
#Hiding #historical past #Linux