Unix’de bash komutunun “ls -lad” DOS-meslektaşı nedir?


3

Unix'teki bash komutunun DOS-karşılığı nedir ls -lad?

Windows'ta Komut İstemi'ndeki "cm" komutunun (cmd.exe) genellikle Unix / Linux'ta bash'ın "ls" komutuna eşdeğer olduğu kabul edilir. Ancak, "dir", "ls" seçeneğinin "-d" seçeneğinin özelliğinden yoksundur. "-D" seçeneği düz dosyalar gibi dizinleri ele alır ve alt dosyalarının ve alt dizinlerinin görüntülenmesini önler.

ls -lad ITEM
  1. Temelde, ihtiyacım olan şey verilen ITEM'in varlığı ve türü.
  2. Tipe göre, bunun bir dizin mi, normal bir dosya mı yoksa link mi olduğunu bilmem gerekiyor.
  3. Bir dizin ise, alt dosyalarının ve alt dizinlerinin görüntülenmesini istemiyorum.
  4. Eğer bir link ise, hedefi bilmem gerekiyor.

Bu özelliklerde (1) ila (4) arasında herhangi bir DOS komutu (veya hatta PowerShell komutu) var mı?

dir ITEM /a
attrib ITEM

DOS'taki "attrib" komutu ayrıca verilen ITEM'in varlığını da söyler; ve, bir dizin ise, "attrib" alt dosyalarını ve alt dizinlerini görüntülemekten kaçınır. Ancak, "attrib" bir dizin mi, normal bir dosya mı yoksa bir bağlantı mı olduğunu söyleyemiyor.

Yanıtlar:


3

Bash komutunun DOS-karşılığı nedir ls -lad?

Doğrudan bir eşdeğer yoktur. Tabii ki, Linux için Cygwin veya Windows Subsystem'i yükleyebilir ve ls -laddoğrudan çalıştırabilirsiniz .

İstediğiniz şeylerin çoğunu yapacak bir toplu iş dosyası da oluşturabilirsiniz. Aşağıda bazı ipuçları verilmiştir.

Bir dosyanın varlığını kontrol etmek için:

if exist filename (
  echo filename exists
  )

Bir dosyanın bir dizin olup olmadığını kontrol etmek için:

if exists filename\nul (
  echo directory
) else (
  echo file
)

Bir dosyanın bir bağlantı olup olmadığını kontrol etmek için:

dir /a:l filename | find "<SYMLINK>" >nul && echo file symbolic link

Bir dizinin bir bağlantı olup olmadığını kontrol etmek için:

dir /a:l filename | find "<SYMLINKD>" >nul && echo directory symbolic link

Bir dosya bağlantısının hedefine ulaşmak için:

for /f "usebackq delims=[] tokens=2" %i in (`dir /a:l filename ^| find "<SYMLINK">`) do @echo %i

Bir dizin linkinin hedefini almak için:

for /f "usebackq delims=[] tokens=2" %i in (`dir /a:l filename* ^| find "<SYMLINKD>"`) do @echo %i

Daha fazla okuma

  • Windows CMD komut satırının AZ Dizini - Windows cmd satırının ilgili olduğu her şey için mükemmel bir referans.
  • dir - Bir dosya ve alt klasör listesini görüntüler.
  • Bul - Dosyadaki bir metin dizesini arayın ve bulunduğu tüm satırları görüntüleyin.
  • for / f - Döngü komutu: bir dizi dosyaya karşı - koşullu olarak her öğeye karşı bir komut gerçekleştirin.
  • if - Koşullu olarak bir komut gerçekleştirin.
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.