GNU/Linux >> Belajar Linux >  >> Linux

Pengaturan Di Bash Untuk Globbing, Untuk Mengontrol Apakah * Cocok dengan File Dot?

Saya terkejut baru-baru ini ketika saya melakukan sesuatu seperti
mv ./* ../somedirectory
dan menemukan file seperti .gitignore tidak dipindahkan.

Saya melakukan sebagian besar pekerjaan saya di zsh di OS X, dan kejutan ini menggigit saya di bash di CentOS. Saya mencoba bash di OS X dan menemukan perilaku yang sama:* tidak cocok dengan file titik. Ini tampaknya sangat tidak diinginkan bagi saya, tetapi ternyata ini adalah bash default. (Ini mungkin default zsh juga untuk semua yang saya ingat, tetapi saya mungkin telah mengubahnya bertahun-tahun yang lalu di .zshrc saya dan lupa bahwa itu pernah bekerja secara berbeda.)

Bagaimana saya bisa mengonfigurasi bash untuk berperilaku seperti yang saya harapkan:untuk * agar cocok dengan semua file, dan tidak mengabaikan file titik.

Jika ini sama sekali tidak jelas, berikut cara mereproduksinya

cd /tmp
mkdir {t,d}est
touch test/{.,}{1,2,3,4,5,6,7}
ls -hal test
mv test/* dest
ls -hal test     # notice dot files are still there
ls -hal dest     # notice only some files were mv'ed

Jawaban yang Diterima:

Bash

Seperti yang sudah Anda perhatikan bash tidak akan cocok dengan . di awal nama atau garis miring. Untuk mengubah pencocokan mengenai titik, Anda harus mengatur dotglob opsi – man bash:

dotglob If set, bash includes filenames beginning with a `.'  in
    the results of pathname expansion.

Untuk mengaktifkan/mengaturnya dengan bash gunakan shopt , misalnya:

shopt -s dotglob

Untuk zsh Anda juga dapat menggunakan dotglob opsi tetapi tetapi Anda harus menggunakan setopt untuk mengaktifkannya, mis:

setopt dotglob

Linux
  1. Kiat bash untuk sehari-hari di baris perintah

  2. Dua kegunaan hebat untuk perintah cp:pintasan Bash

  3. Cara memeriksa file besar di konsol

  1. Dapatkan Halaman Man Individu Untuk Perintah Bash Builtin??

  2. Apakah Mungkin Penyelesaian Bash Untuk Berputar Melalui Alternatif?

  3. Dapatkan Semua File Tapi File Dalam Array – Bash?

  1. Linux – Mendapatkan File Untuk Tanggal Saat Ini Di Linux?

  2. Menjaga Anda di Loop – Contoh Bash Untuk, Sementara, Sampai Loop

  3. Bagaimana BASH Shell memuat file konfigurasinya di Linux