Bird
Raised Fist0
Linux CLIscripting~10 mins

History command and search in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - History command and search
User runs commands
↓
Commands saved in history list
↓
User types 'history'
↓
Display all past commands
↓
User types 'history | grep keyword'
↓
Filter and show matching commands
↓
User types '!number' or '!keyword'
↓
Execute command from history
Commands run are saved in history. 'history' shows all. You can search with grep or run past commands by number or keyword.
Execution Sample
Linux CLI
history
history | grep ls
!3
!ls
Shows all commands, filters commands with 'ls', runs command number 3, runs last command starting with 'ls'.
Execution Table
StepInput CommandActionOutput/Result
1historyShow all saved commands1 ls -l 2 pwd 3 echo Hello 4 ls -a
2history | grep lsFilter commands containing 'ls'1 ls -l 4 ls -a
3!3Run command number 3 from historyHello
4!lsRun last command starting with 'ls'List of files including hidden ones
5exitExit shell
💡 User exits shell, stopping history command usage
Variable Tracker
VariableStartAfter 1After 2After 3After 4Final
history_listempty['ls -l']['ls -l', 'pwd']['ls -l', 'pwd', 'echo Hello']['ls -l', 'pwd', 'echo Hello', 'ls -a']['ls -l', 'pwd', 'echo Hello', 'ls -a']
last_command_executednonels -lpwdecho Hellols -als -a
Key Moments - 3 Insights
Why does '!3' run 'echo Hello' and not 'ls -a'?
Because '!3' runs the command with history number 3, which is 'echo Hello' as shown in execution_table step 3.
What happens if I type '!ls' but no command starts with 'ls'?
The shell will show an error saying no such command in history, because '!ls' runs the last command starting with 'ls' only if it exists.
Does 'history | grep ls' change the history list?
No, it only filters and shows commands containing 'ls' but does not modify the saved history list, as seen in execution_table step 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what command does '!3' run?
Aecho Hello
Bls -a
Cpwd
Dls -l
💡 Hint
Check step 3 in the execution_table where '!3' is run.
At which step does the history command filter commands containing 'ls'?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Input Command' column for 'history | grep ls'.
If a new command 'ls -R' is run after step 4, what will '!ls' run next?
Als -a
Bls -R
Cecho Hello
Dpwd
💡 Hint
Consider that '!ls' runs the last command starting with 'ls' from the updated history_list.
Concept Snapshot
history: shows all past commands with numbers
history | grep keyword: filters commands containing keyword
!number: runs command by its history number
!keyword: runs last command starting with keyword
Commands are saved in order as you run them
Full Transcript
The history command in Linux saves all commands you run. Typing 'history' shows the list with numbers. You can search this list using 'history | grep keyword' to find commands containing that word. To run a past command, type '!number' to run the command with that number, or '!keyword' to run the last command starting with that keyword. This helps you quickly repeat or find commands without retyping them. The execution table shows how commands are saved, searched, and run step-by-step.

Practice

(1/5)
1. What does the history command do in a Linux terminal?
easy
A. Deletes all saved commands
B. Lists all previously executed commands
C. Shows current running processes
D. Clears the terminal screen

Solution

  1. Step 1: Understand the purpose of history

    The history command shows a list of commands you typed before in the terminal.
  2. Step 2: Compare options with command behavior

    Only Lists all previously executed commands correctly describes this behavior; others describe different commands.
  3. Final Answer:

    Lists all previously executed commands -> Option B
  4. Quick Check:

    history lists past commands [OK]
Hint: Remember: history shows past commands typed [OK]
Common Mistakes:
  • Confusing history with clearing screen
  • Thinking history deletes commands
  • Mixing history with process listing
2. Which of the following is the correct syntax to rerun the last command starting with git?
easy
A. !!git
B. !$git
C. !git
D. !^git

Solution

  1. Step 1: Recall syntax for rerunning commands by prefix

    Using !string reruns the last command starting with string.
  2. Step 2: Analyze options

    !git reruns last command starting with 'git'. Others are invalid or incorrect syntax.
  3. Final Answer:

    !git -> Option C
  4. Quick Check:

    Use !string to rerun commands [OK]
Hint: Use ! plus command start to rerun quickly [OK]
Common Mistakes:
  • Using !!git which is invalid
  • Confusing !$ with rerun syntax
  • Trying !^git which is not correct
3. Given the following history output:
  100  ls -l
101 git status
102 cd projects
103 git commit -m 'fix'

What command will run if you type !git?
medium
A. git commit -m 'fix'
B. git status
C. ls -l
D. cd projects

Solution

  1. Step 1: Identify last command starting with 'git'

    From history, commands 101 and 103 start with 'git'. The last one is 103: git commit -m 'fix'.
  2. Step 2: Understand !git runs last matching command

    !git reruns the most recent command starting with 'git', which is command 103.
  3. Final Answer:

    git commit -m 'fix' -> Option A
  4. Quick Check:

    !string runs last command starting with string [OK]
Hint: !string runs last command starting with string [OK]
Common Mistakes:
  • Choosing first matching command instead of last
  • Confusing command numbers with commands
  • Selecting unrelated commands
4. You tried to rerun a command with !cd but got an error: bash: !cd: event not found. What is the likely cause?
medium
A. The shell does not support history
B. You typed the command incorrectly
C. You need to use !! instead
D. No previous command starts with 'cd' in history

Solution

  1. Step 1: Understand error meaning

    event not found means no matching command found in history for the given prefix.
  2. Step 2: Analyze cause

    If no previous command starts with 'cd', !cd fails with this error.
  3. Final Answer:

    No previous command starts with 'cd' in history -> Option D
  4. Quick Check:

    !string fails if no matching command [OK]
Hint: Check history for matching commands before using !string [OK]
Common Mistakes:
  • Assuming syntax error instead of missing history
  • Thinking shell lacks history support
  • Using !! instead of !string incorrectly
5. You want to find and rerun a command that contains the word backup anywhere in it, but you don't remember the exact command start. Which is the best way to do this?
hard
A. Press Ctrl + r and type 'backup' to search interactively
B. Use !backup to rerun the command
C. Run history | grep backup and then rerun manually
D. Use !! backup to rerun last backup command

Solution

  1. Step 1: Understand searching commands with unknown start

    !string only matches commands starting with string, so !backup won't find commands containing 'backup' elsewhere.
  2. Step 2: Identify interactive search method

    Ctrl + r lets you search history interactively for any substring, including 'backup'.
  3. Final Answer:

    Press Ctrl + r and type 'backup' to search interactively -> Option A
  4. Quick Check:

    Use Ctrl + r for substring history search [OK]
Hint: Use Ctrl + r to search history by any word quickly [OK]
Common Mistakes:
  • Assuming !backup matches anywhere in command
  • Trying !! backup which is invalid syntax
  • Relying only on grep without rerun shortcut
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard