web-dev-qa-db-ja.com

シェルコマンドの前のパーセント記号(%)

シェルに大量のコードを貼り付けましたが、コマンドを実行する前に先頭の%を削除するのを忘れていました。何もしなかったようです。なぜこれは私のシェル(zsh)で何もしないのですか?

> % echo foo

bashでは、次のようになります

> % echo foo
bash: fg: %: no such job

コマンドを実行しても副作用がないことを確認したいだけです。

9
Dave

%は、zshの「ジョブ制御とプロセス制御」機能の一部として使用される「ジョブID」を指します。ユーザーガイドから引用するには:

'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.

例:

$> man zshall &
[1]  + 31392 suspended (tty output)  man zshall
$> jobs
[1]  + suspended (tty output)  man zshall
$> %
<manpage-opens-for-zshall>

詳細については、こちらをご覧ください: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

realの質問に答えるには:zshがそこに警告を表示しない場合(「fg:現在のジョブがありません」など)、そこにIS /は仕事でした。例:

$> sleep 60 &
$> % echo foo
[1]  + 411 running    sleep 60
fg: job not found: echo

%バックグラウンドプロセスを取り戻し、実行します。 60秒後、次の「jobid」が見つかりませんでした。

したがって、あなたが経験した行動は少し奇妙です。完全なzshrcがないと、何が起こっているのか正確に判断するのは困難です。 '%'文字がコメントを開始していることをzshに伝えたようです。 histcharsパラメーターの3番目の値を確認します。

$> echo $histchars
9
akira