Berapa persen tanda prompt di shell?

16

Saat menonton video, saya melihat yang berikut:

% more tinyUF.txt
10
4 3
3 8
6 5

Apa %tanda ini sebelum moreperintah?

Maxim Koretskyi
sumber
2
export PS1=%??
Roman Gräf
@ RomanGräf, apa itu?
Maxim Koretskyi
1
Anda dapat mengubah normal $tanda menggunakan export PS1=...mana ...adalah penggantian.
Roman Gräf
@ RomanGräf, saya mengerti, terima kasih atas sarannya
Maxim Koretskyi
@Roman Gräf: Anda sebenarnya dapat melakukan jauh lebih banyak dengan prompt daripada hanya mengubah karakter. Milik saya menyertakan nama mesin (karena saya sering memiliki windows xterm ke komputer lain) dan beberapa direktori terakhir di jalur saat ini. Dan jika saya root, itu menjadi merah cerah.
jamesqf

Jawaban:

29

Itulah prompt shell, atau lebih tepatnya, prompt utama shell ( ada beberapa ). Ini adalah cara shell untuk mengatakan " Silakan, saya siap untuk input sekarang ".

The %prompt umum di cshkerang -jenis sementara sh-shells (seperti bashdan ksh93) biasanya menggunakan $sebagai prompt.

Prompt biasanya berubah menjadi #untuk pengguna root karena pengguna yang cukup kuat harus diingatkan tentang kekuatan itu dengan memiliki prompt alternatif (seperti yang dikatakan POSIX).

Prompt shshell utama -type ditentukan oleh nilai dari variabel shell PS1.


Ringkasan komentar di bawah ini, dengan tambahan:

The #karakter akar prompt (digunakan oleh kedua shdan cshkerang) terjadi bertepatan dengan shell umum komentar karakter. Menyalin dan menempelkan perintah sebagai root akan membuat perintah yang disisipkan tidak dapat beroperasi, jika prompt shell juga disalin. Catatan yang #diadopsi sebagai prompt root sebelum shell memiliki konvensi komentar (referensi: email dari Doug McIlroy ).

The esdan rckerang dari Plan 9 menggunakan ;karakter sebagai default prompt. Konsekuensi dari ini adalah bahwa menyalin dan menempelkan perintah, termasuk prompt, masih akan berarti bahwa perintah yang ditempelkan adalah valid (dan itu akan dieksekusi).

Sebuah cara untuk memungkinkan seseorang untuk memiliki custom, tetapi masih copy-pastable, prompt shell, akan digunakan : something ;, di mana somethingbisa menjadi direktori saat ini, nama host atau waktu, misalnya.

Kusalananda
sumber
2
Juga di zsh(shell Bourne-style, tetapi dengan banyak fitur dari tcsh). Perhatikan bahwa cangkang Bourne-like dan csh-like biasanya digunakan #untuk pengguna uid 0.
Stéphane Chazelas
1
Perhatikan juga bahwa rc-seperti shell yang digunakan di ;sana (orang dapat menyalin-menempelkan baris penuh dan itu kode shell yang valid, ide yang sama dengan #prompt root menjadi komentar).
Stéphane Chazelas
2
pilihan # untuk root yang sangat penting adalah jika Anda menyalin perintah termasuk # Anda tidak akan menyebabkan kerusakan (karena # memulai komentar, maka akan mengomentari perintah Anda (yah, baris pertama)). Beberapa orang menggunakan ">" dan jika Anda menyalinnya juga, ia dapat mengalahkan (kosongkan sepenuhnya) binari jika perintah memiliki jalur penuh atau relatif atau jika Anda berada di direktori yang benar (dan memiliki hak yang memadai, misalnya jika Anda akar). Saya telah melihat ini terjadi.
Olivier Dulac
1
@ StéphaneChazelas: Bukankah konvensi #-untuk-root berasal dari waktu yang lama sebelum terminal di mana memotong dan menempelkan seluruh baris dengan mudah menjadi hal biasa?
hmakholm tersisa Monica
@HenningMakholm, ya. Itu berasal bahkan sebelum csh memperkenalkan # sebagai pemimpin komentar. Namun, memang benar bahwa #...baris adalah komentar ketika disalin bahkan jika itu bukan niat. Saya tidak tahu apakah itu niat ;di balik rckeduanya, meskipun saya amati itu konsekuensi yang nyaman.
Stéphane Chazelas