Bagaimana menghapus .DS_Store dari pelengkapan otomatis baris perintah menggunakan cd?

15

Saya mengerti bahwa .DS_storefile memiliki tujuan. Yang mengatakan, mereka merepotkan ketika secara otomatis melengkapi dengan cdperintah. Ketika saya mengetik cdTerminal dan tekan tab dua kali itu mencantumkan semua direktori di direktori kerja.

Apakah ada cara untuk menghapus .DS_storedari daftar direktori lengkapi-otomatis ini di terminal?

Jeromy Anglim
sumber
Ketika saya mengetik cddi Terminal lalu tombol Tab dua kali: ada prompt sebelum semua kemungkinan (tidak hanya direktori) terdaftar.
Graham Perrin
Itu sepertinya perilaku yang lebih baik; Apakah Anda tahu cara mencegah daftar file saat melakukan double tabbing setelah cd?
Jeromy Anglim
cd */diikuti oleh dua tab berisi daftar semua subdirektori dari direktori saat ini. Tetapi Anda harus mundur mundur untuk memilih satu ...
lhf
@ lhf Terima kasih. Ada baiknya memiliki opsi itu. Akan lebih baik jika cdcukup pintar untuk hanya mendaftar direktori secara default.
Jeromy Anglim

Jawaban:

13

export FIGNORE=DS_Store bekerja untukku.

The pengguna GNU Bash menyediakan informasi lengkap tentang penyelesaian diprogram .

Secara khusus, dari dokumentasi tentang variabel bash

FIGNORE [adalah] daftar sufiks yang dipisahkan titik dua untuk diabaikan ketika melakukan penyelesaian nama file. Nama file yang sufiksnya cocok dengan salah satu entri di FIGNORE dikecualikan dari daftar nama file yang cocok. Nilai sampel adalah '.o: ~'

Jika Anda khawatir sufiks yang ada mungkin ada FIGNORE, maka Anda dapat menggunakan:

export FIGNORE=$FIGNORE:DS_Store
lhf
sumber
Tidak yakin tentang Anda, tetapi itu harus $FIGNORE:.DS_Storedi mac untuk saya. Tidak berfungsi tanpa tanda "."
typeoneerror
@ typeoneerror, sama untuk saya. Mungkin di masa lalu itu berfungsi seperti yang diposting. Terima kasih telah memberi tahu saya.
Jika
1
Di macOS Sierra 10.12.5, itu berfungsi hanya untuk saya jika saya menghilangkan.
2

Saya pikir apa yang sebenarnya Anda cari adalah penyelesaian tab sadar konteks untuk perintah Bash. Misalnya, .DS_Storeadalah file biasa, bukan direktori, jadi seharusnya tidak muncul sebagai penyelesaian yang mungkin dilakukan cd.

Paket yang memecahkan masalah ini disebut bash-completion. Saya menggunakan versi Fink ( fink install bash-completion), dan juga tersedia dari MacPorts ( port install bash-completion) dan Homebrew ( brew install bash-completion).

Setelah paket diinstal dan dikonfigurasikan di .bashrc atau .bash_profile Anda, file biasa tidak akan lagi muncul sebagai pelengkap untuk cd, dan banyak perintah bash umum lainnya juga menjadi konteks sadar (mis. gunzip).

putar
sumber
1

Meskipun Anda hanya bertanya tentang .DS_Store, saya pikir menghapus semua file tersembunyi dari autocomplete akan lebih baik secara umum. Ini bisa dilakukan dengan perintah:

ikat 'setel file yang cocok-sembunyikan'

Anda dapat menambahkannya ~ / .bash_profile agar ia dipanggil setiap waktu untuk Anda. Ini tidak akan menonaktifkan pelengkapan otomatis untuk file tersembunyi sepenuhnya, Anda masih bisa mengetikkan '.' (titik) dan tekan tab untuk itu.

okutane
sumber
-1

Saya akan menggunakan perintah ini:

zip -r foo.zip foo -x "*.DS_Store"

Ditemukan di sini: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store

ling
sumber
Bagaimana cara mengatasi masalah menghapus .DS_Store dari autocomplete?
GRG
Sebenarnya tidak. Tapi saya menemukan halaman itu sambil mencari "mac zip tanpa .DS_STORE". Jadi saya pikir mungkin itu bisa membantu orang lain. Mungkin itu ide yang buruk.
ling