Bisakah saya menjaga. dan .. keluar dari. * ekspansi?

10

Saya sering merasa terganggu (atau lebih buruk) ketika saya mengetik

command .*

di bash dan perintah ini berlaku untuk direktori induk dan direktori saat ini. Apakah ada beberapa opsi shell atau konfigurasi lain yang dapat saya atur untuk membuat bash mengecualikan .dan ..dari perluasan .*?

David Z
sumber

Jawaban:

13

Dalam bash, dalam urutan ini:

GLOBIGNORE=.
shopt -u dotglob

Ketika GLOBIGNORE diatur,. dan .. secara otomatis diabaikan, jadi Anda sebenarnya tidak perlu mengaturnya di GLOBIGNORE, tetapi jika Anda tidak memiliki hal lain untuk diabaikan, Anda tidak akan memiliki apa pun untuk mengaturnya.

Setiap kali Anda mengatur GLOBIGNORE ke nilai non-null, bash menyalakan opsi dotglob, jadi Anda harus mematikannya setelah itu; jika tidak, bash akan diperluas *untuk menyertakan file yang dimulai dengan titik.

camh
sumber
Keren Terimakasih! Saya sebenarnya lebih suka dotglobdihidupkan, jadi pengaturan GLOBIGNOREterdengar sempurna.
David Z
Ketika GLOBIGNORE diatur, Bash mengabaikan .dan ..tetapi tidak foo/.dan foo/... Anda mungkin ingin menggunakan GLOBIGNORE=.:*/.:*/..untuk membuat ini berfungsi dengan nama jalur juga.
user123444555621
3

Pada sistem asing di mana saya memiliki sedikit waktu untuk memeriksa pengaturan yang digunakan (seperti GLOBIGNORE) saya menggunakan pola sangat mudah berikut:

command .??*
  • Cepat mengetik dan dijamin untuk mengecualikan .dan ..terlepas dari lingkungan.
Alexander Shcheblikin
sumber
1
Saya selalu menyukai pendekatan ini, tetapi perlu diingat bahwa ini gagal mencocokkan file 1-char.a
MestreLion