Bu komut satırı argümanları arasındaki fark nedir: -d vs *


0

Arasındaki fark nedir

ls /example or ls /example/

vs

ls -d /example/*

Neden hemen hemen aynı çıktıyı veriyorlar?

Yanıtlar:


2

İlk durumda, ls'e bir dizin veriyor ve içeriğini göstermeyi istiyorsun.

İkinci durumda, zaten veriyoruz ls doğrudan (bireysel dosyalar ve alt dizin listesini) içeriğini ve bu öğeleri ama tam olarak göstermek isteyen değil onların ileri içeriği.

Onlar çünkü Yani bu aynı çıktıyı vermek do eski vaka dışında, hemen hemen aynı şeyi ls kendisini ikinci durumda bunu önceden belirlenmiş bir liste veriyoruz ederken, göstermek için gerekenleri içeriği belirler.


Ls iki mod vardır: bir dosya verildiğinde, sadece o dosyayı gösterir; Bir dizin verildiğinde, bu dizinin içeriğini gösterir (bir seviye derinlikte).

Sizin /examplebir dizin, yani kullandığınızda ls /example, ls içeriğini gösterecektir. -dSeçeneği bu davranışı devre dışı bırakır ve yapar ls hep bir dosya var olsun veya olmasın, sadece madde verilmiş göstermektedir.

(Karşılaştır: ls -l /etcve ls -l -d /etc)

Ancak kullandığınızda ls -d /example/*, bir dizini göstermesini istemiyorsunuz - göstermesi için ayrı öğelerin bir listesini veriyorsunuz . Joker karakterler, komut çalıştırılmadan önce kabuğunuz tarafından genişletilir, yani gerçekten çalıştırdığınız şey budur ls -d /example/file1 /example/file2 /example/file3.


1

Bir argüman lsbir dizin olduğunda, dizine lsgirer ve çağrılmadığı sürece dizin içeriğini listeler -d. Dosya adı genişletme işleminin ('file *') ls çağrılmadan önce kabukta yapıldığını unutmayın.

dir
├── file1
└── subdir
    └── file2
  • ls diriçeriğini listeler dir(bir satır için file1, bir satır için subdir)
  • ls -d dirsadece listeler dir(tek bir satırda)
  • ls dir/*için genişletilir ls dir/file1 dir/subdirve bu nedenle subdiriçeriğini listelemek için genişler .
  • ls -d dir/*şekilde genişletilir ls dir/file1 dir/subdir, ancak nedeniyle -d subdirgenişletilmiş ve sadece değil file1ve subdirlistelenmiştir (bu nedenle ilk örneğinde olduğu gibi aynı çıktıyı almak).
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.