Sebagian besar alat unix dirancang untuk bekerja dengan baik dengan file teks. File teks terdiri dari urutan garis. Baris terdiri dari urutan karakter yang dapat dicetak yang diakhiri dengan karakter baris baru. Secara khusus, karakter terakhir dari file teks yang tidak kosong selalu merupakan karakter baris baru. Jelas, example.txt
hanya berisi some text
tanpa baris akhir, jadi itu bukan file teks.
cat
melakukan pekerjaan sederhana; mengubah file sewenang-wenang menjadi file teks bukan bagian dari pekerjaan itu. Beberapa alat lain selalu mengubah inputnya menjadi file teks; jika Anda tidak yakin file Anda menampilkan berakhir dengan baris baru, coba jalankan awk 1
bukan cat
.
Anda dapat membuat bash menampilkan prompt pada baris berikutnya jika perintah sebelumnya meninggalkan kursor di tempat lain selain margin terakhir. Masukkan ini ke dalam .bashrc
(variasi Anda oleh GetFree dari proposal oleh Dennis Williamson ):
shopt -s promptvars
PS1='$(printf "%$((COLUMNS-1))s\r")'$PS1
Gilles 'SANGAT berhenti menjadi jahat'
sumber
cat
, jadi saya akan menyimpan ini sebagai pilihan terakhir untuk saat masalah ini mulai mengganggu saya lagi.PROMPT_COMMAND
dan, jika bukan 0, gunakan baris baru (\n
) sebagai karakter pertamaPS1
.Saya lebih suka metode berikut ...
Ini tidak mengevaluasi konten
example.txt
atau sesekali menambahkan baris baru. Itu hanya menggemakan baris baru setelah kucing selesai, mudah diingat, dan tidak ada yang memikirkan apakah mereka menggunakan kutipan yang kuat atau lemah dengan benar.Satu-satunya downside, benar-benar, adalah bahwa Anda akan mendapatkan baris baru tambahan jika file tersebut memiliki baris tambahan sendiri.
sumber
Saya mulai menggunakan jawaban @ Gilles, tetapi menemukan bahwa jika terminal mengubah jumlah kolom prompt tidak akan lagi pada awal baris seperti yang diharapkan. Hal ini dapat terjadi karena berbagai alasan, termasuk pemisahan tmux / layar, pengubahan ukuran wadah GUI secara manual, perubahan font, dll.
Yang benar-benar saya inginkan adalah sesuatu yang akan menambah baris baru jika terminal akan mulai mencetak prompt-nya di sesuatu selain kolom pertama. Untuk melakukan ini, saya perlu mencari cara mendapatkan kolom saat ini, yang saya gunakan untuk mendapatkan jawaban ini . Konfigurasi prompt kerja terakhir adalah di bawah ini:
sumber
__get_terminal_column
?PS1="\n"
saya hanya perluecho
dan tidak perlu memodifikasiPS1
.Masalah dengan itu bisa jadi example.txt Anda tidak memiliki baris baru di akhir file Anda.
sumber
cat
pekerjaan jadi mungkin saya sedang mencari solusi.example.txt
tidak memiliki baris baru di akhir file adalah inti dari pertanyaan.Jika Anda bersikeras menggunakan
cat
, ini berfungsi untuk kedua jenis file, dengan dan tanpa baris baru di akhir:Anda dapat mengubahnya menjadi fungsi dengan nama pilihan Anda (datar
cat
) di.bashrc
:sumber
Anda dapat menambahkan ke .bashrc juga
bekerja untukku.
sumber