bash history
command is very useful. It gives you an complete view of what commands you ran. By default bash history
command will give you all your previous commands with Line numbers. It’s the default behavior. However when you’re trying to copy-paste those commands again, you have to manually remove those Line numbers. This becomes rather annoying when you are trying to copy paste a lot of commands at the same time. This is very simple guide on how to view bash history without line numbers.
bash history with line numbers
When you type in history
in your bash terminal, following what you see.
root@kali:~# history -------snip------------ 2002 clear 2003 ls 2004 cd 2005 top 2006 nethogs wlan0 2007 htop 2008 sar -r 2009 free -m 2010 pstree 2011 pgrep gdm3 2012 w 2013 who 2014 last | head -------snip------------
This is very normal behavior.
My target is to remove these line numbers and just view the actual commands so that I can copy paste them easily.
View bash history without line numbers
Extremely simple command. We utilize cut to do this job:
root@kali:~# history | cut -c 8-
cut
= cut removes sections from each line of files
-c
= -c will select only certain characters
8-
= 8- or N- will show output from N’th byte, character or field, to end of line. In this case, bash history
command shows actual command from 8th character. Adjust your command to match your output.
Output for bash history command without line numbers
-------snip------------ clear history history | tail clear history clear last | head w whoami uname -a lsb_release -a clear history | tail history | cut -c 8- -------snip------------
Hope this helps someone out there.
Credit: http://stackoverflow.com/questions/7110119/bash-history-without-line-numbers
Flawless
Thank you.
or you just type “cat ~/.bash_history”
You could. But default bash config (aka .bash_history) doesn’t log correctly when you got multiple terminals open.
Ok, i missed that… Thanks you!
Additionally, if you just want to execute a command again, you can use the line numbers!
For instance (your example):
> 2006 nethogs wlan0
We could run:
!!2006 [enter] # and bash will translate this to ‘nethogs wlan0’
You’re right.
But it would fail if there’s no bash. (i.e sh only or ksh or other shell). Wouldn’t it?
(I’m traveling now, will check when I get back home.)
history -w my_history.txt