Bash History Search

29/12/2020
We need to type various commands in the shell for various purposes. Sometimes we need to execute same commands multiple times. It is very time consuming or boring task to type same commands multiple times. Fortunately, bash has a good solution to this problem. By using the bash history mechanism, the previously executed commands can retrieve and execute easily without typing the command again. Linux stores command line history of each user in the home directory. By default, bash history command displays the list of previously typed commands with line numbers. But you can retrieve the history of commands with date and time also. How you can modify the setting of history command and use history command to retrieve the list of previously typed commands in different ways is shown in this tutorial.

History settings:

Many variables are used to control the command history records. Bash stores command history in two ways. It can be stored in a file and in memory. HOSTFILE variable is used to set the location and name of the history file. By default, history information stored in .bash_history file. How many commands can be stored in a file is set by using HISTFILESIZE variable and how many commands of the current session can be stored in the memory is set by HISTSIZE variable. Open the .bashrc file in any editor and find out the default settings of these parameters. Here, text editor is used to edit this file.

$  gedit ~/.bashrc

According to the content of this file, the default value of HISTFILESIZE is 2000 and HISTSIZE is 1000. You can change these values according to your choice.

Enable/Disable History Overwriting Option:

For each new session, the history file is overwritten by the current history commands at the end of the session. If you want to keep the previous history command and want to add the new history records at the end of the file then execute the following command.

$ shopt -s histappend

Run the following command to check the current setting of history overwriting option.

$ shopt histappend

Run the following command to overwrite the history file.

$ shopt -u histappend

Display the list of previously executed bash commands:

To retrieve the list of currently executed commands of the current session run the following basic command.

$ history

You can retrieve the particular number of history by mentioning the number with history command. The following command retrieves 3 lastly executed commands from the history.

$ history 3

The history list of the particular command can be retrieved by using the command with history command. For example, the following command retrieves the history list of all ‘ls’ command.

$ history | grep ls

Executing command from the history:

You can easily execute any command from the history by mentioning the line number with ‘!’ symbol. The following command will execute the command of line number 17 from the history file and clear the screen.

$ !17

You can use negative position value to execute commands from the history. In the following example, three commands are executed and the first executed command is executed from the history by using a negative value.

$!3

You can use ‘!!’ symbol to execute the most recent command from the history. In the following example, ‘ls’ command is executed last. So, when ‘!!’ is executed then it executed the ‘ls’ command again.

$ !!

Display the history list by date and time:

HISTTIMEFORMAT variable is used to retrieve command history information by date and time. ‘%F’ is used retrieving date ‘%T’ is used for retrieving time. Run the following command to retrieve history list by date.

$ export HISTTIMEFORMAT=‘%F’

Remove duplicate commands from the history:

The command history list may contain the entry of many duplicate commands if the user runs the same command multiple times. If you want to omit the duplicate command from the history at the time of retrieving the list then you have to use HISTCONTROL variable with value ‘ignoredrups’.

$ export HISTCONTROL=ignoredups

Filter any command from the history:

You can use HISTIGNORE variable to filter any command from the history when retrieving the executed command list. If you want to omit the ‘date’ command from the list then run the following command.

$ export HISTIGNORE=’date

Unset export command:

You can unset export command for any defined variable types. For example, if you want to unset HISTIGNORE variable which is assigned to ignore ‘date’ command then run the following command.

$ unset export HISTIGNORE

Disable History of command:

When you don’t want to keep the records of the executed commands for any security purpose then you will need to disable the history command. If the value of HISTSIZE variable is set to 0 then no executed command of the current session will be stored in the memory or in the history file. Open .bashrc file and set the value of HISTSIZE to 0.

$ gedit .bashrc

Run the following command to create the effect of the change of the .bashrc file. Run some commands to check history command is disabled or not.

$ source .bashrc

Clear History of commands:

History of commands can be cleared or deleted by using history command with –c option. You can use this option when you want to remove the records of executed command without disabling the history command.

$ history -c

Scrolling History list:

You can move through the previously executed commands easily by using up arrow and down arrow. Without using arrow key you can go backward to the history list by pressing Ctrl+P and can go forward to the history list by pressing Ctrl+n. Enable the history command, run some commands and check these options.

Searching command from history:

You can search command from the history by pressing Ctrl+R. When these keys are pressed then a search option will appear. The command will search from the history based on the keypress by the user.

 

Conclusion

The Linux users can save their times by using history command efficiently. Most commonly used history commands are tried to explain in this tutorial for helping the users to use this command properly.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

How to Debug a Bash Script like a Boss

A lot of things can happen in a bash script that unless you know how to debug like a boss, you might as well be up a creek...
29/12/2020

Bash Scripting Tutorial for Beginners

The default command language of Linux is Bash script. We need to run many commands in Linux on a daily basis for many purposes....
29/12/2020

Tổng hợp 15 lệnh OpenVZ commands thông dụng

1, Command to list the running VPSs in a node # vzlist Example: # vzlist CTID NPROC STATUS IP_ADDR...
20/09/2021
Bài Viết

Bài Viết Mới Cập Nhật

SỰ KHÁC BIỆT GIỮA RESIDENTIAL PROXY VÀ PROXY DATACENTER
17/02/2024

Mua Proxy v6 US Private chạy PRE, Face, Insta, Gmail
07/01/2024

Mua shadowsocks và hướng dẫn sữ dụng trên window
05/01/2024

Tại sao Proxy Socks lại được ưa chuộng hơn Proxy HTTP?
04/01/2024

Mua thuê proxy v4 nuôi zalo chất lượng cao, kinh nghiệm tránh quét tài khoản zalo
02/01/2024