Bagaimana untuk menyesuaikan prompt arahan dalam bash

Dalam bash shell, command prompt adalah teks yang ditunjukkan apabila anda diminta untuk input. Pada kebanyakan sistem, ia kelihatan seperti ini:

Dalam masa yang singkat, anda boleh mendapatkan maklumat sebelum anda menjalankan sebarang arahan. Contohnya, petikan di atas menunjukkan anda yang berikut.

  1. siapa anda (pengguna bernama pengguna )
  2. di mana anda berada (komputer bernama myhost )
  3. apa direktori kerja anda ( ~, yang merupakan singkatan untuk direktori rumah anda)

Mungkin yang paling penting adalah tanda dolar (" $ "), yang merupakan watak istimewa yang menunjukkan anda log masuk sebagai pengguna bukan root. Sekiranya anda dilog masuk sebagai root, watak ini akan menjadi tanda paun (" # ") sebaliknya.

Rentetan yang mewakili petikan disimpan dalam pembolehubah persekitaran khas yang dinamakan PS1 . Untuk perbualan di atas, nilainya kelihatan seperti berikut.

 "\ [email dilindungi] \ h: \ W \ $" 

Terdapat empat aksara khas dalam rentetan ini: \ u, \ h, \ W, \ $ . Ini adalah melepaskan urutan aksara yang digantikan dengan nilai sebenar setiap kali prompt dipaparkan.

Watak Khas

Urutan aksara khas yang disenaraikan dalam jadual di bawah boleh digunakan dalam prompt shell bash.

Urutan watakMenterjemahkan kepada
\ aWatak "penggera". Mencetuskan bip atau kilat skrin
\ dTarikh semasa, dipaparkan dalam format Tarikh Hari Bulan Hari (misalnya, Rabu 13 Mei ).
\ D { format }Tarikh dan masa semasa dipaparkan mengikut format yang ditafsirkan oleh strftime . Jika format diabaikan, \ D {} memaparkan masa semasa AM / PM 12 jam (mis., 07:23:01 PM ).
\ eWatak melarikan diri (ASCII 27)
\ e [ nombor mMenandakan permulaan urutan untuk memaparkan warna, di mana nombor adalah nombor, atau sepasang nombor, yang menentukan warna dan gaya yang hendak digunakan. Lihat di bawah untuk senarai warna dan pasangan nombor mereka.
\ e [mMenandakan hujung urutan untuk memaparkan warna.
\ hNama tuan rumah mesin, sehingga yang pertama " . " Sebagai contoh, jika nama tuan rumah sistem adalah myhost.mydomain, \ h memaparkan myhost
\ HNama penuh mesin itu.
\ jBilangan pekerjaan dikendalikan oleh shell.
\ lPengecam peranti terminal shell, biasanya nombor satu digit.
\ nGaris baru
\ rPulangan kereta
\ sNama shell (nama dasar proses yang memulakan sesi bash semasa).
\ tMasa semasa dipaparkan dalam format 24 jam HH: MM: SS (contoh, 19:23:01 ).
\ TMasa semasa dipaparkan dalam 12 jam HH: MM: format SS (mis. 07:23:01 ).
\ @Masa semasa dipaparkan dalam 12 jam HH: MM: format SS AM / PM (mis., 07:23:01 PM ).
\ AMasa semasa dalam format HH: MM 24 jam, (contohnya 19:23 ).
\ uNama pengguna pengguna semasa.
\ vNombor versi Bash (contoh, 4.3 ).
\ VVersi Bash dan nombor patch (contohnya, 4.3.30 ).
\ wDirektori semasa. Direktori rumah pengguna disingkat sebagai tilde (" ~ "). Sebagai contoh, / usr / bin, ~, atau ~ / dokumen
\ WNama lapangan direktori kerja semasa (contohnya, bin, ~, atau dokumen ).
\!Nombor sejarah arahan semasa.
\ #Nombor arahan arahan semasa (nombor arahan adalah seperti nombor sejarah, tetapi mereka menetapkan semula kepada sifar apabila anda memulakan sesi bash baru).
\ nnnAksara ASCII yang nilai oklalnya nnn.
\\Backslash
\ [Menandakan permulaan mana-mana urutan aksara bukan percetakan, seperti kod kawalan terminal.
\]Menandakan penghujung urutan tidak cetak.
\ $Mencetak # jika UID adalah sifar (superuser), atau $ jika lebih daripada sifar (orang lain).

Mengubah gesaan sesi semasa

Anda boleh menetapkan pembolehubah persekitaran PS1 seperti yang anda lakukan pemboleh ubah lain dalam bash, dengan bentuk pernyataan NAME = VALUE . Oleh itu untuk menetapkan piawai standard, anda boleh menaip yang berikut di baris arahan.

 PS1 = "\ [email dilindungi] \ h: \ W \ $" 

... Dan gesaan anda akan segera berubah. Perhatikan ruang akhir selepas tanda dolar dalam rentetan untuk ruang tambahan selepas perbaruan anda, yang memudahkan untuk membezakan arahan yang anda taip dari prompt. Ruang tambahan tidak diperlukan, tetapi disyorkan.

Perhatikan bahawa dalam arahan itu, tidak ada ruang antara PS1, =, dan rentetan.

Mengubah hasrat untuk semua sesi masa depan

Sekiranya anda ingin menukar gesaan untuk setiap sesi baru, anda perlu mengedit fail permulaan bash anda. Setiap kali anda memulakan sesi terminal, fail berikut, jika ada, dibaca dan dilaksanakan sebagai skrip:

/ etc / profile ~ / .bash_profile ~ / .bash_login

~ / .profile

Fail pertama, / etc / profile, adalah skrip permulaan untuk mana-mana pengguna pada sistem yang memulakan sesi bash. Untuk menukar permintaan untuk setiap pengguna, anda perlu mengedit fail ini, dan anda memerlukan keistimewaan superuser untuk melakukannya.

 sudo vi / etc / profile 

Sebagai contoh, arahan di atas akan meminta anda untuk kata laluan anda, dan jika anda berada di senarai sudoers, buka fail permulaan bash sejagat sebagai superuser, menggunakan editor vi .

Tiga fail yang lain dicari dalam susunan yang disenaraikan di atas dan dilaksanakan selepas / etc / profile . Ketiga fail ini tinggal di direktori rumah anda, jadi ia hanya dilaksanakan untuk anda. Mereka boleh menentukan PS1 di lebih daripada satu tempat, jadi anda perlu membaca fail dengan teliti untuk melihat bagaimana ia dikonfigurasikan pada sistem anda. Sebagai contoh, banyak sistem akan menggunakan nilai PS1 yang berbeza bergantung kepada sama ada atau tidak terminal menyokong warna.

Mana-mana tiga fail itu mungkin wujud dan digunakan untuk sesi bash anda, tetapi jika terdapat lebih daripada satu, ia akan dilaksanakan dalam perintah yang disenaraikan.

Sekiranya anda tidak mahu memadam atau menukar garisan dalam fail permulaan anda, anda juga boleh menambah pernyataan PS1 = baru pada akhir salah satu fail anda untuk memohon petua khusus.

Menambah Warna Kepada Prompt Anda

Jika anda menggunakan terminal yang menyokong warna (dan anda mungkin), anda boleh menambah warna pada petikan anda. Warna ditambah dengan urutan aksara khas yang mengikuti format ini:

\ e [ nombor mBermula bahagian berwarna. Nilai nombor adalah nombor khas, atau sepasang nombor, yang menentukan warna.
\ e [mmenandakan berakhirnya bahagian berwarna; semula ke warna lalai

Sebagai contoh, rentetan segera:

 PS1 = "\ e [1; 35mIni adalah ungu terang. \ E [0; 35m ... dan ini ungu gelap. \ E [m" 

Akan menghasilkan prompt yang kelihatan seperti ini:

Berikut ialah senarai warna yang boleh anda gunakan, dan nombor yang menyatakannya:

Nombor (s)Warna / GayaNombor (s)Warna / Gaya
0; 30Hitam1; 30Kelabu gelap
0; 31Merah1; 31Merah terang
0; 32Hijau1; 32Hijau terang
0; 33Coklat1; 33Kuning
0; 34Biru1; 34Biru terang
0; 35Ungu1; 35Terang ungu
0; 36Cyan1; 36Cyan terang
0; 37Kelabu1; 37Putih
4; 30Hitam, digariskan40latar belakang: Grey Gelap
4; 31Merah, digariskan41latar belakang: Merah
4; 32Hijau, digariskan42latar belakang: Hijau
4; 33Brown, digariskan43latar belakang: Kuning
4; 34Biru, digariskan44latar belakang: Biru
4; 35Ungu, digariskan45latar belakang: Ungu
4; 36Cyan, digariskan46latar belakang: Cyan
4; 37Kelabu, digariskan47Latar Belakang: Kelabu

Berikut adalah beberapa contoh, dan apa yang mereka kelihatan seperti:

 E [0; 34mBlue \ e [0; 35mPurple \ e [0; 36mCyan \ e [0; 37mGray \ e [m " 

 PS1 = "Dilampirkan: \ e [4; 31mRed \ e [4; 32mGreen \ e [4; 33mBrown \ e [4; 34mBlue \ e [4; 35mPurple \ m " 

 PS1 = "\ e [44m \ e [1; 35mBright ungu pada latar belakang biru \ e [m"