8つの便利で興味深いBashプロンプト
多くの人は、コマンドラインプロンプトを便利な要素とは考えていません。あるいは、あまり注意を払っていません。ただし、便利なプロンプトによって、コマンドライン、ひいてはシステムの使用方法が変わる可能性があります。この記事では、いくつかの便利で興味深いBashプロンプトを例とともに示します。プロンプト自体から始めて、プロンプトの操作方法についてさらに説明することに注意してください。
ここでは、いくつかのBashプロンプトを提供していますが、すべてが深刻なわけではありません。たとえば、リストの最初のエントリは、コマンドラインを使用するときに少し喜びをもたらす可能性があります!
1。実行に成功したら「顔文字」を表示する
このプロンプトは面白いですが便利です!アイデアは、成功したコマンドを実行する限り、プロンプトに幸せな顔文字が表示されるということです。
対照的に、コマンドが失敗すると、悲しい顔文字が表示されます。
これを適用するには、次のコードを使用します:
PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\<strong>\$</strong> "
これは紛らわしいように見えるかもしれませんが、コマンドが良いか悪いかを判断するためにifステートメントを使用しています。そこから、顔文字の周りをエスケープして、正しく表示されるようにします。
2。端末が不正なコマンドを発行したときにBashプロンプトの色を変更する
間違いなく、このプロンプトはリストで最も便利です。上記のように、最後のコマンドの実行に失敗した場合、プロンプトの色が変わりますが、長いパスも短縮され、簡単に取得できるように各コマンドのBash履歴番号が含まれます。
PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'
繰り返しになりますが、これを実装するのは困難に見えるかもしれませんが、簡単です。さまざまなメッセージを強調するために、色コードとともにifステートメントを再度使用します。
これらの色は好きなように作成できますが、変更を加えるためだけに変更するのではなく、変更した色が役立つと論理的に考えています。
3。 Bashプロンプトを複数の行にまたがる
Bashプロンプトに多くの情報を含めたい場合があります。これがあなたを説明している場合、このBashプロンプトはあなたの興味を引くかもしれません。日付、時刻、完全なディレクトリパス、ユーザー名とホスト名、アクティブな端末、さらにはファイル数とスペース使用量も表示されます。
PS1="<strong>\n</strong>\[\033[35m\]<strong>\$</strong>(/bin/date)<strong>\n</strong>\[\033[32m\]\w<strong>\n</strong>\[\033[1;31m\]\u@\h: \[\033[1;34m\]<strong>\$</strong>(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]<strong>\$</strong>(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]<strong>\$</strong>(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"
ここでは、プロンプト自体が静的なレイアウトでありながら動的なコンテンツを持っているため、ifステートメントは必要ありません。また、この要素のさまざまな要素を解析するのが難しい場合もあります。私たちのアドバイスは、それを適用してから、プロンプトを1つずつ実行することです。少し相互参照することで、プロンプトがどのように組み合わされるかを理解し始めます。
4。色を使用してBashプロンプトを読みやすくする
さまざまな情報を区別するために色をうまく使用する以外に、このプロンプトについては何も派手なことはありません。ご覧のとおり、時刻、ユーザー名とホスト名、および現在のディレクトリが表示されます。
PS1="\[\033[35m\]<strong>\t</strong>\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]<strong>\$</strong> "
これは最も便利なBashプロンプトの1つであり、プロンプトをカスタマイズするために最初に確認する領域です。カスタムプロンプトがどのように機能するかを学ぶための良い基礎を与えることができます。
5。フルディレクトリパスを表示する
色を使用するのと同じように、このプロンプトはクリーンで最小限の2行のプロンプトです(ただし、上部に空白行があります)。
最初の行に完全な作業ディレクトリパスが表示され、その後にユーザーが表示されます。
PS1="[\[\033[32m\]\w]\[\033[0m\]<strong>\n</strong>\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"
プロンプト内で空白行を使用したくない場合は、最初の\n
を取り出すことができます 。ただし、各ターミナルエクスペリエンスはコンピューターとコマンドライン設定によって異なるため、レイアウトとフォーマットを試してみてください。
6。バックグラウンドジョブカウントを表示する
この2つのライナーには、Bashプロンプトでまだ使用していない情報が表示されます。バックグラウンドジョブの実行中の集計を提供します。これは、マルチタスクを実行しているが、アクティビティを監視する必要がある場合に役立ちます。
最初の行は、ユーザー名とホスト名、および作業ディレクトリのパスです。 2行目には、履歴番号とバックグラウンドで実行されているジョブの数が表示されます。
PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '
これには何もありませんが、システムアクティビティに関する非常に必要な情報を提供できます。これをより複雑なプロンプトに変換し、ifステートメントと色分けを追加して、ジョブが特定のレベルに達したときに通知することもできます。
7。作業ディレクトリの情報を表示する
これを使用して、ユーザー名とホスト名、ジョブ数、および日付と時刻を一番上の行に表示します。その下には、現在のディレクトリ、ディレクトリ内のファイル数、およびディスク使用量に関する情報が表示されます。
PS1="<strong>\n</strong>\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]<strong>\n</strong>\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]<strong>\$</strong>(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, <strong>\$</strong>(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"
これらすべてのプロンプトの最大の問題は、フォーマットとエスケープの周りで何が起こっているのかを理解することです。ただし、複数行のプロンプトと同様に、全体的な構造を理解するまで、これに1つずつ取り組む必要があります。
一度に一部を入力して、それが表示されるかどうか、またはエラーがあるかどうかを確認し、完全なスニペットまで処理することもできます。
8。独自のBashプロンプトを作成する
上記のすべてを組み合わせて、独自のカスタムBashプロンプトを作成できます。たとえば、これはこのリストの7番目の変更ですが、占有するスペースが少なく、特定の関連情報が含まれるように変更されています。
使用するコマンドのスペースを減らすことなくフルパスを確認できるため、2行スタイルは常にコンパクトです。
PS1="<strong>\n</strong>\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])<strong>\n</strong>(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"
これで、このプロンプトの機能を理解できるようになりますが、これを貼り付けるのではなく、独自のプロンプトを作成することをお勧めします。こうすることで、さまざまな要素がどのように連携するかを学び始め、思いつくことさえあります。独自のカスタムBashプロンプト。
よくある質問
1。別のBashプロンプトを使用したいのはなぜですか?
これには多くの理由がありますが、生産性が重要な考慮事項です。コマンドラインを頻繁に使用する場合は、数秒ごとにプロンプトが表示されます。そのため、最も重要な情報を入力すれば、いつでも手元に置いておくことができます。
多くの場合、カスタムBashプロンプトを使用する方が、多数のウィンドウを開くよりも効率的です。
2。これらのBashプロンプトをターミナル出力に追加するにはどうすればよいですか?
これらのプロンプトのいずれかを使用するには、コードをコピーしてターミナルアプリに貼り付けることができます。ただし、これは現在のセッションにのみ適用されるため、理論的には、ターミナルを起動するたびにこれを行う必要があります。
変更を永続的にしたい場合は、スニペットを〜/ .bashrcファイルの最後に貼り付けて、ターミナルを再起動できます。
3。これらのBashプロンプトは、他のシェルを使用しても機能しますか?
多くの場合、他のタイプのシェルとの相互互換性があります。ただし、変更によって100%の同等性が提供されるという保証はありません。
Macターミナルのカスタマイズに関する投稿を見ると、これはzshを使用しています。小さな違いはありますが、多くの類似点があることに気付くでしょう。
4。 Bashプロンプトに追加できる情報と要素を確認するにはどうすればよいですか?
システムのほとんどすべての要素がBashプロンプトに表示されます。これらのさまざまな要素を「ロック解除」する方法であるため、Bash変数を調べる必要があります。
何を変更できるかを理解するための優れたリソースは、Linux.com Webサイトにあります。カスタマイズセッションの間、そのドキュメントを手元に置いておくことをお勧めします。
5。ターミナルでカスタムBashプロンプトを使用したくない場合はどうなりますか?
ここでの簡単な答えは、構成ファイルを開いて、関連する行を削除することです。これ以上コマンドを実行する必要はありませんが、期待する変更が表示されない場合は、ターミナルを再起動する価値があるかもしれません。
コマンドラインを定期的に使用する場合、またはターミナルアプリを起動するときに特定のニーズがある場合は、プロンプトをカスタマイズすることをお勧めします。多くの知識は必要ありません。多くの場合、別の開発者から必要なプロンプトを見つけることができます。
-
LinuxターミナルプロンプトでBashの色とコンテンツをカスタマイズする方法
現在、Bashは、ほとんどの(すべてではないにしても)最新のLinuxディストリビューションのデフォルトのシェルです。ただし、ターミナルのテキストの色とプロンプトの内容がディストリビューションごとに異なる場合があることに気付いたかもしれません。 推奨される読み物: Linuxで最も頻繁に使用される5つのオープンソースシェル アクセシビリティを向上させるため、または単なる気まぐれのためにこれをカスタマイズする方法を知りたい場合は、読み続けてください。この記事では、その方法について説明します。 PS1Bash環境変数 コマンドプロンプトと端末の外観は、PS1と呼ばれる環境変数によって制御
-
Powerline –強力なステータスラインとプロンプトをVimエディターとBashターミナルに追加します
電力線 は、 Pythonで開発されたVimエディター用の優れたステータスラインプラグインです。 また、bash、zsh、tmuxなどの他の多くのアプリケーションのステータスラインとプロンプトを提供します。 機能 Pythonで記述されているため、拡張性と機能が豊富です。 Python2.6以降およびPython3で適切に機能する安定したテスト可能なコードベース。 また、いくつかのLinuxユーティリティとツールのプロンプトとステータスラインもサポートしています。 JSONを使用して開発された構成とデコレータの色があります。 高速かつ軽量で、デーモンがサポートされているため、パフォーマ