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


8

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

> % echo foo

バッシュ 、私は次のようになります

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

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

回答:


8

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

'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

あなたに答えるために リアル 質問:あなたのzshがそこに警告を出さない場合( "fg:現在の仕事がない"など)、仕事はありませんでした。例:

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

% バックグラウンドプロセスを取り戻して実行するだけです。 60秒後、それは見つからなかった次の 'jobid'を取得しました。

このように:あなたが経験した行動は少し奇妙です。完全なzshrcがないと、正確に何が起こっているのかわかりません。 '%'文字がコメントを始めているとzshに伝えたようです。私はチェックします histchars 3番目の値のパラメータ

$> echo $histchars

素晴らしい、ありがとう。私はあなたのテストを再現し、実行中のジョブをフォアグラウンドで実行することができました。 %。によくキャッチ $histchars 私のもハッシュ記号です !^# )私の特定のケースに対する答えは、zshで奇妙に振る舞うバックグラウンドプロセスがいくつかあったことです。シェルのレッスンをありがとう!
Dave
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.