BashシェルのLinux「HistoryCommand」の力


history コマンドは、コマンドの履歴を確認したり、ユーザーが実行したコマンドに関する情報を取得したりするために、日常業務で頻繁に使用されます。この投稿では、historyコマンドを効果的に使用して、Bashシェルでユーザーが実行したコマンドを抽出する方法を説明します。これは、監査目的や、どのコマンドがどの日時に実行されたかを調べるのに役立つ場合があります。

デフォルトでは、historyコマンドの実行中に日付とタイムスタンプは表示されません。ただし、bashシェルには、ユーザーのコマンド履歴を編集するためのCLIツールが用意されています。 歴史コマンドの便利なヒントとコツと力を見てみましょう。

1.Linuxで最後に実行された/すべての実行されたコマンドを一覧表示する

ターミナルから単純な history コマンドを実行すると、最後に実行されたコマンドの完全なリストと行番号が表示されます。

[[email protected] ~]$ history

    1  PS1='\e[1;35m[\[email protected]\h \w]$ \e[m '
    2  PS1="\e[0;32m[\[email protected]\h \W]$ \e[m "
    3  PS1="\[email protected]\h:\w [\j]$ "
    4  ping google.com
    5  echo $PS1
    6   tail -f /var/log/messages
    7  tail -f /var/log/messages
    8  exit
    9  clear
   10  history
   11  clear
   12  history

2.日付とタイムスタンプを使用してすべてのコマンドを一覧表示します

コマンドに対して日付タイムスタンプを見つける方法は?変数を指定した「export」コマンドを使用すると、コマンドの実行時に対応するタイムスタンプとともに履歴コマンドが表示されます。

[[email protected] ~]$ export HISTTIMEFORMAT='%F %T  '

      1  2013-06-09 10:40:12   cat /etc/issue
      2  2013-06-09 10:40:12   clear
      3  2013-06-09 10:40:12   find /etc -name *.conf
      4  2013-06-09 10:40:12   clear
      5  2013-06-09 10:40:12   history
      6  2013-06-09 10:40:12   PS1='\e[1;35m[\[email protected]\h \w]$ \e[m '
      7  2013-06-09 10:40:12   PS1="\e[0;32m[\[email protected]\h \W]$ \e[m "
      8  2013-06-09 10:40:12   PS1="\[email protected]\h:\w [\j]$ "
      9  2013-06-09 10:40:12   ping google.com
     10  2013-06-09 10:40:12   echo $PS1
%F Equivalent to %Y - %m - %d
%T Replaced by the time ( %H : %M : %S )

3.履歴内のフィルターコマンド

ご覧のとおり、上記の出力では同じコマンドが何度も繰り返されています。履歴内の単純なコマンドまたは非破壊コマンドをフィルタリングする方法は? HISTIGNORE u003d ’ls -l:pwd:date:’でコマンドを指定して、次の「export」コマンドを使用します。システムによって保存されず、historyコマンドに表示されません。

[[email protected] ~]$ export HISTIGNORE='ls -l:pwd:date:'

4.履歴内の重複コマンドを無視する

以下のコマンドを使用すると、ユーザーが行った重複コマンド入力を無視するのに役立ちます。ユーザーがBashプロンプトで同じコマンドを複数回実行した場合、履歴には1つのエントリのみが表示されます。

[[email protected] ~]$ export HISTCONTROL=ignoredups

5.エクスポートコマンドの設定を解除します

その場でエクスポートコマンドの設定を解除します。 export コマンドでエクスポートされたコマンドに関係なく、変数を使用して unset export コマンドを1つずつ実行します。

[[email protected] ~]$ unset export HISTCONTROL

6.エクスポートコマンドを永続的に保存します

.bash_profile に次のように入力して、 export コマンドを永続的に保存します。

[[email protected] ~]$ vi .bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

export HISTCONTROL=ignoredups

PATH=$PATH:$HOME/bin
export PATH

7.特定のユーザーの実行コマンドを一覧表示します

特定のユーザーによって実行されたコマンド履歴を表示する方法。 Bashは、履歴の記録を ‘〜/ .bash_history’ ファイルに保持します。ファイルを表示または開くと、コマンド履歴を確認できます。

[[email protected] ~]$ vi .bash_history

cd /tmp/
cd logstalgia-1.0.3/
./configure
sudo passwd root
apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc
./configure
make
apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc++
apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev make gcc
apt-get install make
mysql -u root -p
apt-get install grsync
apt-get install unison
unison

8.コマンドの履歴の保存を無効にする

一部の組織は、組織のセキュリティポリシーのために、コマンドの履歴を保持していません。この場合、ユーザーの .bash_profile ファイル(隠しファイル)を編集して、以下のように入力できます。

[[email protected] ~]$ vi .bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
HISTSIZE=0
export PATH
.bash_profile (END)

以下のコマンドでファイルを保存し、変更をロードします。

[[email protected] ~]$ source .bash_profile

注:入力したコマンドをシステムに記憶させたくない場合は、以下のコマンドを実行するだけで、その場で履歴の記録を無効または停止できます。

[[email protected] ~]$ export HISTSIZE=0

ヒント:「HISTSIZE」を検索し、スーパーユーザーで「/ etc/profile」ファイルを編集します。ファイルの変更はグローバルに影響します。

9.コマンドの履歴を削除またはクリアする

上下の矢印を使用すると、以前に使用したコマンドが表示されます。これは、役立つ場合やイライラする場合があります。 「-c」オプションを使用して、bash履歴リストからすべてのエントリを削除またはクリアします。

[[email protected] ~]$ history -c

10.Grepコマンドを使用した履歴内のコマンドの検索

以下のように、履歴ファイルを「grep」にパイプして、「。bash_history」からコマンドを検索します。たとえば、以下のコマンドは、履歴リストから「pwd」コマンドを検索して検索します。

[[email protected] ~]$ history | grep pwd

  113  2013-06-09 10:40:12     pwd
  141  2013-06-09 10:40:12     pwd
  198  2013-06-09 15:46:23     history | grep pwd
  202  2013-06-09 15:47:39     history | grep pwd

11.最後に実行されたコマンドを検索する

「Ctrl + r」コマンドを使用して、以前に実行したコマンドを検索します。探しているコマンドが見つかったら、「Enter」を押して同じコマンドを実行します。それ以外の場合は、「esc」を押してキャンセルします。

(reverse-i-search)`source ': source .bash_profile

12.最後に実行されたコマンドを呼び出す

以前に使用した特定のコマンドを思い出してください。 Bangコマンドと8(!8)コマンドを組み合わせると、実行した8番のコマンドが呼び出されます。

[[email protected] ~]$ !8

13.最後に実行された特定のコマンドを呼び出す

以前に使用したコマンド(netstat -np | grep 22)を「!」で呼び出し、その後にその特定のコマンドのいくつかの文字を続けます。

[[email protected] ~]$ !net
netstat -np | grep 22
(No info could be read for "-p": geteuid()=501 but you should be root.)
tcp        0     68 192.168.50.2:22             192.168.50.1:1857           ESTABLISHED -
tcp        0      0 192.168.50.2:22             192.168.50.1:2516           ESTABLISHED -
unix  2      [ ]         DGRAM                    12284  -                   @/org/freedesktop/hal/udev_event
unix  3      [ ]         STREAM     CONNECTED     14522  -
unix  2      [ ]         DGRAM                    13622  -
unix  3      [ ]         STREAM     CONNECTED     12250  -                   @/var/run/hald/dbus-ujAjOMNa0g
unix  3      [ ]         STREAM     CONNECTED     12249  -
unix  3      [ ]         STREAM     CONNECTED     12228  -                   /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     12227  -

ヒストリーコマンドの力を強調しようとしました。しかし、これで終わりではありません。下のコメントボックスから、履歴コマンドの経験を共有してください。

全著作権所有。 © Linux-Console.net • 2019-2022