私はこれを知っていましたが、各プロンプトの前に1つのコマンドまたは複数のコマンドを実行したいという事実を忘れていました。 PRODボックスにいるときは、各プロンプトの上に次のような大きな通知があります。*製作中です*たぶん1つか2つであるかもしれません。現在はこのようにメールを確認するようですが、どのように設定をしたのか覚えていません。
kshとSolaris 5.10の使用
どんなアイデアがありますか?
ありがとう
答え1
必要なものが大きく固定された警告だけである場合は、プロンプトに次のものを追加してください。
red=$(tput setaf 1; tput smso; tput bold) reset_color=$(tput sgr0)
PS1='
${red}[THIS IS A PRODUCTION SYSTEM!!]${reset_color}
rest of the prompt$ '
ksh(ksh93、mksh)の最新(1995年以降)の実装は、$PS1
コマンド置換とパラメータ拡張の影響を受けるため、次のことができます。
function mywarning {
tput setaf 1; tput bold
date "+it's %T, please remember it's a production system"
tput sgr0
}
PS1='$(mywarning)# '
ksh88(/usr/bin/ksh
Solaris 10でも同じ)では、プロンプトでパラメータとチルダ拡張のみが実行されます。
プロンプトで素晴らしい内容を見るには、スマートトリックに戻る必要があります。これにより、できることは非常に制限されます。
算術拡張は行われませんが、次のような拡張が可能なため、算術式(ここ)を評価${array[expr]}
できます。expr
割り当て(数値のみ)は算術式内で実行できるため、これはいくつかの素晴らしいタスクを実行する機会を提供します。
$SECONDS
、、、、、、$PWD
などの動的変数を後処理$?
するために使用できます。$!
$RANDOM
$_
たとえば、次のようにHH:MM:SS日付を取得できます。
typeset -Z2 _h _m _s
eval "$(date +'SECONDS=$((%H*3600+%M*60+%S))')"
PS1='${z[(_h=SECONDS/3600)+(_m=(SECONDS/60)%60)+(_s=SECONDS%60)]}${_h}:${_m}:${_s} $ '
あなたはあなたを追加することができます肥満警告5回ごとのプロンプト:
set -A warn '' '
[THIS IS A PRODUCTION SYSTEM!!]
' '' '' ''
PS1='${warn[warn_count=(warn_count+1)%5]}# '
各プロンプトの前にコマンドを実行することはできないようですが(メールの確認は内部的に行われますksh
)、DEBUGトラップを使用して各コマンドの後にコマンドを実行できます。
trap 'my-command' DEBUG
すべてのサブシェルのすべての簡単なコマンドの後にこれが実行されることに注意してください。
たとえば、
for f in *; do :; done
my-command
現在ディレクトリにあるファイル数だけ実行されます。
存在する:
: | :
3回も実行しましたが…実際には実用的ではありません。
答え2
/etc/profile
ただ、またはに入れた/etc/issue
。問題ファイルの内容を見せることが時々消えることもありますが、それでも参考には良いようです。
変数の内容を変更するのは$PS1
問題ないようです。そして、まだいくつかの警告を印刷したいかもしれません/etc/profile
。これは本番システムなので、システムで継続的な変更が発生したいので、これらのファイルを編集できます。 (通常、これらのファイルを変更するのではなく、代わりにユーザーファイルを使用することをお勧めします。)
答え3
次のコマンドを使用して、ホスト、時刻、場所、およびgit分岐を表示できます。
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
ホストなどの項目を変更できます。
コマンドを実行するには、バックティック( these
')を使用してください。