Bu joker karakter neden beklediğim gibi çalışmıyor?


11

Kullanıcı klasörümde D ropbox, D ocuments, D ownloads & d ump gibi klasörlerim var .

ls a*adı ile başlayan tüm dosyaları listelemelidir a. Sağ? Ama komut verirken, ls d*sadece görüntülemek yerine dumpbana döküm dizinin ls gösterir. Komutu şu şekilde ls D*verdiğimde, D ile başlayan tüm katların ls değerini görüntüler.

Peki bunu anlamak için hangi kısmı özledim?

Düzenle: Ekran görüntüsü ekleme ls ekran görüntüsü

Yanıtlar:


17

Bash man sayfasına göre:

bash her kelimeyi *,? ve [karakterleri için tarar. Bu karakterlerden biri belirirse, kelime bir desen olarak kabul edilir ve onun yerine desenle eşleşen dosya adlarının alfabetik olarak sıralanmış bir listesiyle değiştirilir

ve ls için bilgi düğümünden

Ls programı dosyalar (dizinler dahil her türlü) hakkında bilgi listeler. Seçenekler ve dosya bağımsız değişkenleri her zamanki gibi isteğe bağlı olarak karıştırılabilir.

Dizin seçeneği olmayan komut satırı bağımsız değişkenleri için, varsayılan olarak 'ls' dizinlerin içeriğini özyinelemeli olarak değil, '.' İle başlayan dosyaları atlar. Diğer seçenek olmayan bağımsız değişkenler için, varsayılan olarak `` ls '' yalnızca dosya adını listeler. Seçenek olmayan bağımsız değişken belirtilmezse, 'ls' geçerli dizinin içeriğini listeler.

böylece yo verdiğinizde ls d*, d * , d ile başlayan tüm dosya / dizin adlarının sıralı listesine genişletilir. Böylece emir olur

ls dump

ve döküm bir dizin adı olduğundan "döküm" dizinindeki tüm dosyaların listesini alırsınız, ancak verdiğinizde ls D*, D * " Masaüstü Belgeleri İndirmeleri Dropbox " a genişletilir , böylece komut

ls Desktop Documents Downloads Dropbox

ve bunların hepsi dizin olduğundan, dosyaların tek tek dizindeki listesini alırsınız. Geçerli dizinde D ile başlayan bir dosya olsaydı ayrı listelenirdi.


2
Küçük bir ekleme: Bağımsız değişken olarak birden fazla dizin verildiğinde, ls, içeriğini listelemeden önce her dizinin adını görüntüler. Tek bir dizin için yapmaz.
Marcel Stimberg

Teşekkürler! Bu şüpheimi giderdi. Bir yaptım ls p*ve var olduğu için bir dosya gösterdi ve P ile başlayan bir dosya olmadığı ls P*için Pictures Public klasörünü gösteriyor . Ve poo adında bir dizin oluşturduğumda ortaya çıktıls p*
Ashfame

7

ls d * ve D * sırasıyla d * ve D * ile eşleşen dosya ve klasörleri listeler, davranış aynıdır, testinizde bir hata olmuş olmalıdır.

"-D" kullanmanız gereken klasör içeriğini değil, yalnızca klasör adlarını listelemek istiyorsanız:

ls -d D*

Bir ekran görüntüsü
ekledim

0

Yukarıda önerildiği gibi, -dseçenek gitmek için bir yoldur. Ekleme

alias ld='ls -d'

benim ~/.bashrcdosyama benim için iyi çalışıyor.


3
Bu takma adla, ld - The GNU linkerOP'nin programları derlemesini ve bağlantılandırmasını engelleyecek kolay erişimi engellersiniz . alias lsd='ls -d'Bunun yerine kullanın . Bir şeyi fooher zaman olduğu gibi diğer type foofoofoo
adlara ayırmadan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.