Bash: history 設定小技巧



前言

  • 在用 Bash 時,常用方向鍵來取得先前下過的指令。但如果重複使用指令,只希望被記錄一次、或是輸入 token 或密碼時不想留存在歷史紀錄中該怎麼辦呢?



說明

設定 HISTCONTROL

  • 可以用 HISTCONTROL 來控制紀錄歷史指令的條件:
1
2
3
4
5
HISTCONTROL=ignorespace  # 如果以空白開頭不要紀錄

HISTCONTROL=ignoredups   # 不要紀錄重複的指令

HISTCONTROL=ignoreboth   # 以上皆不紀錄 (通常預設值)

例如指令下了以下的順序:

1
2
3
4
5
ls 
ls
cat ./*
cat ./*
echo ${MYPASSWORD}
  • 如果是 ignorespace
1
history

結果

ls
ls
cat ./*
cat ./*
  • 如果是 ignoredups
1
history

結果

ls
cat ./*
echo ${MYPASSWORD}
  • 如果是 ignoreboth
1
history

結果

ls
cat ./*

忽略指定指令 HISTIGNORE

1
HISTIGNORE="&:ls:[bf]g:exit:pwd:clear:history:[ \t]*"

上面的例子用冒號隔開指定的指令不記錄,因此會忽略以下:

  • ls

  • bg

  • fg

  • exit

  • pwd

  • clear

  • history

  • 空白開頭的指令

其中

  • 最前面的 & 代表重複的指令 (不被記錄)

  • 最後面的 * 代表後面是任意字串


別忘了 .bashrc

當你挑好喜歡的設定後,記得把它加進 .bashrc

1
2
3
4
5
vim ~/.bashrc

# 放上以下
HISTCONTROL=ignoreboth
HISTIGNORE="&:ls:[bf]g:exit:pwd:clear:history:[ \t]*"



REF

Licensed under CC BY-NC-SA 4.0
最後更新 2024-05-08 10:47

主題 StackJimmy 設計