Tanda persen (%) di depan perintah shell

9

Saya baru saja menempelkan banyak kode ke shell saya, tetapi lupa untuk menghapus yang memimpin %sebelum menjalankan perintah. Tampaknya tidak melakukan apa-apa. Mengapa ini tidak melakukan apa pun di shell saya ( zsh )?

> % echo foo

Dalam bash , saya mendapatkan yang berikut ini

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

Saya hanya ingin memastikan bahwa menjalankan perintah saya tidak memiliki efek samping.

Dave
sumber

Jawaban:

9

%mengacu pada 'jobid' yang digunakan sebagai bagian dari fitur "kontrol pekerjaan dan kontrol proses" dari zsh. Mengutip dari panduan pengguna:

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

Contoh:

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

Baca lebih lanjut di sini: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Untuk menjawab pertanyaan Anda yang sebenarnya : Jika zsh Anda tidak memberikan peringatan di sana ("fg: tidak ada pekerjaan saat ini" atau sejenisnya) maka ada IS / ADA pekerjaan. Contoh:

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

Yang %baru saja kembali proses latar belakang dan menjalankannya. Setelah 60 detik mendapat 'jobid' berikutnya yang tidak ditemukan.

Jadi: Perilaku yang Anda alami agak aneh. Tanpa zshrc penuh Anda, sulit untuk mengatakan apa yang sebenarnya terjadi. Sepertinya Anda telah berhasil memberi tahu zsh Anda bahwa karakter '%' memulai komentar. Saya akan memeriksa histcharsparameter untuk nilai ke-3:

$> echo $histchars
akira
sumber
Cemerlang, terima kasih. Saya dapat mereplikasi tes Anda dan latar depan pekerjaan yang sedang berjalan dengan %. Tangkapan bagus $histcharsjuga, tapi milikku adalah tanda pagar ( !^#). Saya menduga jawaban untuk kasus khusus saya kemudian adalah bahwa ada beberapa proses latar belakang berperilaku aneh di zsh. Terima kasih lagi untuk pelajaran shell!
Dave