4

さて、私の質問のタイトルは少しあいまいです。では、わかりやすく説明しましょう。

bash には「MAILCHECK」があることがわかっています。bash は数分ごとにメールボックスをチェックし、新しいメールがある場合はメッセージを表示します。この通知にはコマンドは必要ないことに注意してください。新しいメールがある場合、Bash はいつでも自動的にメッセージを印刷します。

ここで、いくつか質問があります。

  1. 私のzshにはそのような通知はありません(.zshrcに何か忘れているかもしれません)

  2. bash/zshで「新着メール通知」のフォーマットを変更する方法

  3. a certain commandコマンドのいずれかが bash/zsh で終了した後に実行する方法。たとえば、 and と入力するls<enter>lsが実行され、次にthe certain commandが実行されます。これができれば、自動通知は完了です!

それは明らかですか?なにか提案を?

4

3 に答える 3

4

1. zsh でのメール通知:

bash と同じだと思います。シェルがメールを探す場所を知っていて、MAILCHECKパラメータが負でない整数に設定されている場合、メール通知が行われます。

2. メール通知メッセージの変更。

(からman bash):

MAILPATH
  A colon-separated list of file names to be checked for mail.  The message to be
  printed when mail arrives in a particular file may be specified by separating
  the file name from the message with a '?'.  When used in the text of the
  message, $_ expands to the name of the current mailfile.  Example:
    MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
  Bash  supplies  a default value for this variable, but the location of the user
  mail files that it uses is system dependent (e.g., /var/mail/$USER).

の配列バージョンとしてzshも公開されていることを除けば、ほぼ同じだと思います。mailpathMAILPATH

3. 任意のコマンドの実行:

ではbash、 の値がPS1コマンド プロンプトとして出力されます。promptvarsオプションが設定されていない (デフォルトで設定されている) 場合を除き、文字列は、使用される前にパラメーター展開、コマンド置換、算術展開、および引用符の削除を受けます。2 つ目は、コマンド プロンプトの一部として任意のシェル コマンドを実行できることを意味します。

zshシェルオプションpromptsubst(またはPROMPT_SUBST、マンページにあるように)によって制御される同じ機能があります。とは異なりbash、シェル オプションはデフォルトでは設定されていません。また、プロンプト テーマはすべてのコマンド プロンプトの前にPS1リセットされるため、(ディストリビューションでプロンプト テーマを使用している場合)の値を変更できない場合があります。PS1

zshには、プロンプトが表示される前にシェル関数を実行するための別のメカニズムがあることがわかりました (または他の状況では、この 1 つのケースに焦点を当てます) 。precmd_functions値がすべてのプロンプトの前に実行される関数の名前であるという配列パラメーターがあります。(プロンプト テーマ システムは、このメカニズムを使用して、PS1印刷前にリセットします。)

于 2013-06-22T05:26:03.030 に答える
1

質問12についてはよくわかりませんが、各コマンドが対話型シェル プロンプト (質問3 ) で終了した後に特定のコマンドを実行する方法の 1 つは、プロンプト変数PS1にコードを追加することです。

date コマンドの例を次に示します。

$ PS1="\$(date) $ "
Fri Jun 21 22:49:00 BRT 2013 $ echo how cool is this?
how cool is this?
Fri Jun 21 22:49:02 BRT 2013 $
于 2013-06-22T01:49:18.943 に答える