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.

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.