Nama file dengan spasi ditampilkan sebagai 'nama file' setelah ditingkatkan ke 18,04

23

Setelah upgrade ke 18,04, dari 16,04, semua nama file dengan spasi menunjukkan sebagai 'file name'. Sebelumnya itu sederhana file name. Nama file tanpa spasi muncul secara normal:

$ ls
 bar  'foo bar'

Meskipun tidak mempengaruhi fungsionalitas dengan cara apa pun, saya menemukan ini berantakan secara visual.

Saya gunakan bashsebagai shell.

Bagaimana cara menghapus ''tampilan di sekitar nama file dengan spasi?

vidarlo
sumber
4
Mengapa Anda ingin menghapusnya, mereka bukan bagian dari nama file dan mungkin membantu Anda mengelola nama file dengan spasi pada baris perintah atau dalam skrip.
Soren A
2
Saya sadar mereka bukan bagian dari nama file. Tapi mereka kekacauan visual, dan saya tidak membutuhkannya .
vidarlo
4
@SorenA Jika Anda menggunakan lsuntuk mengelola file dalam skrip Anda, Anda salah melakukannya. Mengapa Anda tidak perlu menguraikan outputls dan Mengapa tidak menguraikan ls(dan apa yang harus dilakukan)?
hidangan penutup
2
@ WinEunuuchs2Unix Itu membuat menempel lebih mudah, tetapi seperti jawaban Anda menyebutkan, itu tidak mengubah perilaku ketika tidak menghasilkan ke terminal ...
vidarlo
2
@vidarlo lsPenulis setidaknya menangani beberapa masalah. Mengetahui penulis terlibat aktif dalam Stack Exchange (tautan dalam jawaban saya) orang bisa lebih mudah menyarankan perbaikan di masa depan. Kemudian komentar upvotes dari pengguna lain akan mendorong penulis untuk mengimplementasikan saran.
WinEunuuchs2Unix

Jawaban:

33

Ini lsperubahan perilaku adalah dari tahun 2016 tapi akhirnya membuat jalan itu ke dalam Ubuntu.

Untuk mendapatkan kembali, gunakan perilaku lama ls -N.

Secara opsional, Anda dapat menggunakan variabel lingkungan:

QUOTING_STYLE=literal ls

Jadikan sebagai alias, atau atur agar export QUOTING_STYLE=literalAnda ~/.bashrcmencapai perilaku lama.

Anda dapat membaca tautan di atas untuk perincian lebih lanjut termasuk sejarah kapan, di mana, mengapa dan bagaimana semua ini terjadi. Ada beberapa komentar di bawah penulis perubahan ls di mana ia membenarkan perilaku baru:

Beberapa poin tentang perubahan.

  • Itu diperkenalkan di coreutils v8.25, dan keselarasan ditingkatkan di v8.26
  • Ini hanya terjadi ketika keluaran ke terminal sehingga tidak merusak skrip
  • Ini merusak output untuk pengguna untuk file yang mengandung spasi
  • Ini membersihkan output sehingga aman untuk menyalin dan menempel
  • Output sekarang selalu valid untuk menyalin dan menempel kembali ke shell
  • Pengguna dapat kembali ke format lama dengan menambahkan alias -Nmerekals
WinEunuuchs2Unix
sumber
12

Itu lsyang mengutip output, jalankan:

ls -N

untuk mendapatkan output tanpa mengutip.

man ls

-N, --literal

cetak nama entri tanpa mengutip


Alias ​​jika Anda mau:

echo "alias ls='ls -N'" >> .bashrc
Ravexina
sumber