Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

マスター Linux コマンド ラインの歴史:15 の強力なヒントと例

マスター Linux コマンド ラインの歴史:15 の強力なヒントと例 Linux コマンド ラインを頻繁に使用する場合、履歴を効果的に使用すると生産性が大幅に向上します。実際、ここで紹介した 15 個の例をマスターすると、コマンド ラインの使用がさらに楽しくなることがわかります。

1. HISTTIMEFORMAT を使用してタイムスタンプを表示

通常、コマンド ラインから履歴を入力すると、コマンド# とコマンドが表示されます。監査の目的では、以下に示すようにコマンドとともにタイムスタンプを表示すると有益な場合があります。

# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release

2. Ctrl+R を使用して履歴を検索

これはおそらく歴史上最も頻繁に使用される機能であると私は強く信じています。非常に長いコマンドをすでに実行している場合は、キーワードを使用して履歴を検索するだけで、完全に入力しなくても同じコマンドを再実行できます。 Ctrl+R を押してキーワードを入力します 。次の例では、を検索しました。 、前のコマンド「cat /etc/redhat-release」が表示されました。 」という単語が含まれていた履歴にあります。

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red': cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur)

コマンドを実行する前に、履歴からコマンドを編集したい場合があります。たとえば、 httpd を検索できます。 をクリックすると、サービス httpd の停止が表示されます。 コマンド履歴からこのコマンドを選択し、停止を開始に変更します。 以下に示すように、再度実行してください。

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3. 4 つの異なる方法を使用して、前のコマンドをすばやく繰り返します

場合によっては、さまざまな理由で前のコマンドを繰り返すことになる場合があります。以下に、最後に実行したコマンドを繰り返す 4 つの異なる方法を示します。

<オル>
  • 上矢印を使用します。 前のコマンドを表示し、Enter キーを押して実行します。
  • !!」と入力します。 コマンドラインから Enter キーを押します
  • !-1」と入力します。 コマンドラインから Enter キーを押します。
  • Ctrl+P を押します。 前のコマンドが表示されます。Enter キーを押して実行します。
  • 4.履歴から特定のコマンドを実行します

    次の例では、コマンド 4 を繰り返したい場合は、 !4 を実行できます。 以下に示すように。

    # history | more
    1 service network restart
    2 exit
    3 id
    4 cat /etc/redhat-release
    # !4
    cat /etc/redhat-release
    Fedora release 9 (Sulphur)

    5.特定の単語で始まる前のコマンドを実行します

    ! と入力してください。その後に、再実行するコマンドの先頭の数文字を続けます。次の例では、!ps と Enter を入力すると、ps で始まる前のコマンド (「ps aux | 」) が実行されます。 grep yp」。

    # !ps
    ps aux | grep yp
    root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
    root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

    6. HISTSIZE

    を使用して履歴の総行数を制御します。

    次の 2 行を .bash_profile に追加し、bash シェルに再度ログインして変更を確認します。この例では、450 コマンドのみが bash 履歴に保存されます。

    # vi ~/.bash_profile
    HISTSIZE=450
    HISTFILESIZE=450

    7. HISTFILE

    を使用して履歴ファイル名を変更します。

    デフォルトでは、履歴は ~/.bash_history に保存されます。 ファイル。次の行を .bash_profile に追加し、bash シェルに再ログインして、履歴コマンドを .bash_history ファイルではなく .commandline_warrior ファイルに保存します。これの実用的な用途はまだわかりません。これは、異なる履歴ファイル名を使用して異なる端末から実行されたコマンドを追跡したい場合に使用されていることがわかります。

    # vi ~/.bash_profile
    HISTFILE=/root/.commandline_warrior

    履歴ファイルの名前を変更する正当な理由がある場合は、それを私と共有してください。この機能をどのように使用しているか知りたいと思っています。

    8. HISTCONTROL を使用して履歴から連続して繰り返されるエントリを削除します

    次の例では、pwd が 3 回入力されました。履歴を実行すると、その 3 回の連続出現をすべて確認できます。重複を排除するには、以下に示すように、HISTCONTROL をignoredups に設定します。

    # pwd
    # pwd
    # pwd
    # history | tail -4
    44 pwd
    45 pwd
    46 pwd [Note that there are three pwd commands in history, after
    executing pwd 3 times as shown above]
    47 history | tail -4
    # export HISTCONTROL=ignoredups
    # pwd
    # pwd
    # pwd
    # history | tail -3
    56 export HISTCONTROL=ignoredups
    57 pwd [Note that there is only one pwd command in the history, even after
    executing pwd 3 times as shown above]
    58 history | tail -4

    9. HISTCONTROL を使用して履歴全体の重複を消去

    上記の無視されたコマンドは、連続したコマンドである場合にのみ重複を削除します。履歴全体から重複を削除するには、以下に示すように HISTCONTROL を Eradups に設定します。

    # export HISTCONTROL=erasedups
    # pwd
    # service httpd stop
    # history | tail -3
    38 pwd
    39 service httpd stop
    40 history | tail -3
    # ls -ltr
    # service httpd stop
    # history | tail -6
    35 export HISTCONTROL=erasedups
    36 pwd
    37 history | tail -3
    38 ls -ltr
    39 service httpd stop
    [Note that the previous service httpd stop after pwd got erased]
    40 history | tail -6

    10. HISTCONTROL を使用して履歴に特定のコマンドを記憶させないようにする

    コマンドを実行するとき、以下に示すように、HISTCONTROL をignorespace に設定し、コマンドの前にスペースを入力することで、コマンドを無視するように履歴に指示できます。コマンドを履歴から隠すことができるため、多くの若手システム管理者がこれに興奮しているのがわかります。 ignorespace がどのように機能するかを理解することは良いことです。ただし、ベスト プラクティスとして、意図的に履歴から何かを隠さないでください。

    # export HISTCONTROL=ignorespace
    # ls -ltr
    # pwd
    #  service httpd stop [Note that there is a space at the beginning of service,
    to ignore this command from history]
    # history | tail -3
    67 ls -ltr
    68 pwd
    69 history | tail -3

    11.オプション -c を使用して以前の履歴をすべてクリアします

    場合によっては、以前の履歴をすべてクリアしたいが、履歴は前進したままにしておきたい場合があります。

    # history -c

    12.履歴コマンドの単語を置換する

    履歴を検索しているときに、別のコマンドを実行したい場合がありますが、検索したばかりのコマンドと同じパラメータを使用します。

    以下の例では、!!:$ vi コマンドの隣にあるは、前のコマンドから現在のコマンドまでの引数を取得します。

    # ls anaconda-ks.cfg
    anaconda-ks.cfg
    # vi !!:$
    vi anaconda-ks.cfg

    以下の例では、!^ vi コマンドの隣にあるコマンドは、前のコマンド (つまり cp コマンド) から現在のコマンド (つまり vi コマンド) までの最初の引数を取得します。

    # cp anaconda-ks.cfg anaconda-ks.cfg.bak
    anaconda-ks.cfg
    # vi !^
    vi anaconda-ks.cfg

    13.特定のコマンドを特定の引数に置き換えます。

    以下の例では、!cp:2 cp で始まる履歴内の前のコマンドを検索し、cp の 2 番目の引数を取得して、以下に示すように ls -l コマンドに置き換えます。

    # cp ~/longname.txt /really/a/very/long/path/long-filename.txt
    # ls -l !cp:2
    ls -l /really/a/very/long/path/long-filename.txt

    以下の例では、!cp:$ cp で始まる履歴内の前のコマンドを検索し、cp の最後の引数 (この場合、上記の 2 番目の引数でもあります) を取得し、以下に示すように ls -l コマンドの代わりに使用します。

    # ls -l !cp:$
    ls -l /really/a/very/long/path/long-filename.txt

    14. HISTSIZE を使用して履歴の使用を無効にします

    履歴をすべて無効にし、入力したコマンドを bash シェルに記憶させたくない場合は、以下に示すように HISTSIZE を 0 に設定します。

    # export HISTSIZE=0
    # history
    # [Note that history did not display anything]

    15. HISTIGNORE

    を使用して履歴から特定のコマンドを無視します。

    pwd や ls などの基本的なコマンドで履歴を乱雑にしたくない場合もあります。 HISTIGNORE を使用して、履歴から無視するすべてのコマンドを指定します。 HISTIGNORE に ls を追加すると、ls のみが無視され、ls -l は無視されないことに注意してください。したがって、履歴から無視したい正確なコマンドを指定する必要があります。

    # export HISTIGNORE="pwd:ls:ls -ltr:"
    # pwd
    # ls
    # ls -ltr
    # service httpd stop
    # history | tail -3
    79 export HISTIGNORE="pwd:ls:ls -ltr:"
    80 service httpd stop
    81 history
    [Note that history did not record pwd, ls and ls -ltr]

    推奨書籍

    マスター Linux コマンド ラインの歴史:15 の強力なヒントと例 Bash 101 Hacks、Ramesh Natarajan 著 。私はほとんどの時間を Linux 環境に費やしています。したがって、当然のことながら、私は Bash コマンド ラインとシェル スクリプトの大ファンです。 15 年前、*nix のさまざまなフレーバーに取り組んでいたとき、私は C シェルと Korn シェルで多くのコードを書いていました。後年、システム管理者として Linux に取り組み始めたとき、Bash シェル スクリプトを使用して、考えられるすべてのタスクをほぼ自動化しました。私の Bash の経験に基づいて、Bash コマンド ラインとシェル スクリプトの両方に関する 101 の実践的な例を含む Bash 101 Hacks eBook を書きました。 Bash をマスターしたいと考えている場合は、ぜひこの本を読んでください。Bash コマンド ラインとシェル スクリプトを制御するのに役立ちます。

    素晴らしい Linux 記事

    以下に、15 個の素晴らしい例をいくつか示します。 役に立つかもしれない記事。

    • Unix LS コマンド:15 の実践例
    • Grep をしっかり理解しましょう! – 15 の実用的な Grep コマンドの例
    • Linux Crontab:15 の素晴らしい Cron ジョブの例
    • ママ、見つけたよ! — 15 の実用的な Linux Find コマンドの例

    1. Bashrcカスタマイズガイド–エイリアスの追加方法、関数の使用方法など

      .bashrcファイルをカスタマイズすると、ワークフローが大幅に改善され、生産性が向上します。 .bashrcは、Linuxのホームディレクトリにある標準ファイルです。この記事では、便利な.bashrcオプション、エイリアス、関数などを紹介します。 .bashrcファイルを構成する主な利点は次のとおりです。 エイリアスを追加すると、コマンドをすばやく入力できるため、時間を節約できます。 関数を追加すると、複雑なコードを保存して再実行できます。 有用なシステム情報を表示します。 Bashプロンプトをカスタマイズします。 .bashrcの編集を開始する方法 テキストエディタを使用して.

    2. シェルスクリプト言語の学習:初心者からシステム管理者までのガイド

      Linux Windowsでは使用できない特定の強力なツールを使用して構築されています 。そのような重要なツールの1つは、シェルスクリプトです。 。 ウィンドウ ただし、このようなツールは付属していますが、通常どおり、Linuxカウンターパートと比較すると非常に脆弱です。 。シェルスクリプト/プログラミングにより、コマンドを実行し、パイプを使用して目的の出力を取得し、日常の使用を自動化することができます。実際、サーバー上でこれらの日常的なタスクを自動化することは重要なタスクであり、システム管理者は実行する必要があり、ほとんどの管理者は必要に応じて実行されるスクリプトを作成することでこれを実