Masukkan baris kosong di antara perintah baris perintah

8

Saat menggunakan baris perintah, seringkali itu menjadi sangat berantakan. Membuatnya tidak nyaman untuk memeriksa perintah masa lalu dan outputnya misalnya.

Saya ingin memiliki baris baru ditambahkan setiap kali sebelum command prompt ditampilkan. Seperti itu:

<clutter>
<blank line>
name@machine:~$

Saya menggunakan bash shell. Bagaimana ini bisa dicapai?

Slothworks
sumber
1
Saya lebih suka ini: lifehacker.com/5840450/...
Maerlyn

Jawaban:

21

Salah satu cara untuk mencapai ini adalah dengan memodifikasi .bashrcfile. Cukup letakkan yang berikut di akhir .bashrcfile.

PS1="\n$PS1"

Untuk menjelaskan cara kerjanya, PS1adalah variabel yang berisi apa yang harus ditampilkan sebagai prompt. Semua ini dikatakan "diatur PS1ke konten sebelumnya PS1, dengan karakter baris baru yang diawali". Meletakkannya di .bashrcsebagian besar distro hanya membuat bash menjalankannya setiap kali Anda membuka shell interaktif (tetapi bukan shell login - lihat Perbedaan antara Shell Login dan Shell Non-Login? ).

Slothworks
sumber
2
Untuk menjelaskan cara kerjanya, PS1 adalah variabel yang berisi apa yang harus ditampilkan sebagai prompt. Semua ini mengatakan "atur PS1 ke konten PS1 sebelumnya, dengan karakter baris baru yang didahului".
Muzer
@Muzer Mungkin komentar Anda bisa diedit
rpax
@rpax ide bagus, dikirimkan. Menambahkan sedikit tentang .bashrc sendiri.
Muzer
Memuaskan, mengeksekusi PS1="\n$PS1"di terminal memiliki efek instan :)
mwfearnley
Bekerja dengan sangat baik, selain setelah memasukkan clear(atau menekan Ctrl+l), baris pertama yang ditampilkan adalah baris kosong. Untuk beberapa itu mungkin detail kecil, tapi saya lebih suka baris pertama menjadi prompt.
Robert Kusznier
6

Anda dapat menggunakan PROMPT_COMMAND :

PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"

atau:

PROMPT_COMMAND="echo;$PROMPT_COMMAND"
cuonglm
sumber
2
Haruskah yang pertama PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"? Dalam bentuknya yang sekarang sepertinya tidak melakukan apa-apa ketika saya meletakkannya di .bashrcfile.
Slothworks
@ Slothworks: Ya, tentu saja, salah ketik saya, memperbaikinya.
cuonglm
Lebih dari satu cara untuk melakukannya :) Terima kasih atas jawaban Anda.
Slothworks
2
Alternatif Slothworks lebih baik, karena Anda menjalankan perintah tambahan setelah setiap perintah yang dijalankan di baris perintah. printfdan echosangat ringan, tentu saja, tetapi masih tidak masuk akal untuk digunakan PROMPT_COMMANDsaat PS1akan melakukan pekerjaan.
Mikkel
Catatan, jika Anda ingin memasukkan sesuatu dalam perintah yang berubah setiap kali Anda menjalankan prompt, maka Anda ingin PROMPT_COMMAND dan bukan PS1. Ini biasanya digunakan dengan git untuk menampilkan cabang repo mana yang aktif. Google untuk PROMPT_COMMAND saran untuk melihat apa yang bisa dilakukan.
Walter
4

Alternatif: tinggalkan baris di PS1=prompt Anda .bashrc. Inilah cara saya mengatur .bashrcdi setiap mesin linux yang saya miliki:

PS1=' 
serg@ubuntu [$(pwd)]
================================
$ '

Seperti yang Anda lihat dalam contoh saya di atas, nama pengguna di-hardcode ke prompt. Anda tentu saja dapat menggunakan urutan melarikan diri yang disediakan oleh bash atau shell lain (misalnya ksh ), tetapi opsi yang sedikit lebih netral adalah menggunakan subtitusi parameter dengan perintah seperti whoami(laporkan nama pengguna Anda) dan hostname(jelas, laporkan nama host). Contohnya:

PS1='
$(whoami)@$(hostname):$(pwd)
$ '

Untuk hal-hal menyenangkan lainnya dengan prompt .bashrc,, dan ekspansi parameter, lihat jawaban saya di sini:

Bagaimana cara memeriksa status baterai menggunakan terminal?

Bagaimana saya bisa mendapatkan terminal / kerang saya untuk memiliki desain khusus di dalamnya? dan

Bagaimana cara menunjukkan jam kerja di terminal sebelum command prompt?

Sergiy Kolodyazhnyy
sumber
Mengapa nama pengguna dan nama mesin dikodekan dengan keras? Akan lebih baik jika mereka parametrized
rpax
@ rpax nama pengguna saya yang sebenarnya berbeda. Itu nama saya yang Anda lihat di prompt. Nama mesin juga berbeda.
Sergiy Kolodyazhnyy
Maksud saya semacam $(whoami)bukannyausernamehardcoded
rpax
@ rpax oh, itu bisa dilakukan juga. Saya akan memasukkan itu ke dalam jawaban saya
Sergiy Kolodyazhnyy
4
Catatan, Anda masing-masing dapat menggunakan \udan \huntuk nama pengguna dan nama host. Anda dapat melihat lebih banyak karakter khusus (misalnya waktu saat ini dalam berbagai format) di sini
Yossarian