“.” Nedir. ve ".." bir dizinde?


16

: Söz dayanarak nasıl komut istemi az acı kullanarak yapmak , ne .ve ..en olarak yanıtında girişleri? Bir dirkomut yaptığımda görüyorum ama dosya tarafından kullanıcı tarafından görülemiyor.

Ne demek istediğimi bilmiyorsanız, işte size bir örnek:

.
..
Su.exe
Sup.txt
SuperUser.COM

Yanıtlar:


40

. geçerli dizindir, .. ise üst dizini belirtir. Komut satırında işleri daha hızlı hale getirir, böylece tam yollar yazmanıza gerek kalmaz.

misal:

2 dizin yukarı git:

cd ..\..\

veya UNIX tabanlı bir sistemde, geçerli dizinde yürütülebilir ikili dosyalar çalıştırmak için:

./program

Bir çok UNIX betiği de kullanılacaktır. dosyaları taramak için geçerli dizini temsil etmek için (Perl):

#!/usr/bin/perl

opendir ( DIR, "." ) || die "Error opening current directory\n";
while( ($f = readdir(DIR))){
     print("$f\n");
}
closedir(DIR);

Bir dizin adı sabit olarak kodlanmadığından komut dosyasını farklı dizinlere veya sistemlere taşımak istiyorsanız çok daha taşınabilir.


3
Çok az biliniyor, ancak Windows komut satırı bunu daha da genişletiyor. . = bu dizin .. = ebeveyn dizin ... = ebeveynin ebeveyn dizini 3 nokta bazen yararlı, bundan çok daha fazla ve başa çıkmak çok zor.
salmonmoose

4
Vista
Kevin Panko

1
ne de Windows 7 64 bit RTM'de. Bana bir efsane gibi geliyor. neyin var .. \ .. neyse?
AdamV

2
@salmonmoose: XP'de benim için de çalışmıyor.
Simon P Stevens


10

..Dosya sistemi hiyerarşisini yukarı gezinmek için kullanılır. Uzun bir yol yazmak istemediğinizde veya tam olarak nereye yükleneceğini bilmeyen bir komut dosyası / program yazarken yararlıdır, ancak ../media/tüm görüntüleri / videoları / simgeleri vb.

Tek nokta ., Linux'ta geçerli dizinde bir yürütülebilir dosya çalıştırmak istediğiniz yerde kullanışlıdır, böylece ./a.outkomut kabuğu varsayılan olarak geçerli dizinde yürütülebilir dosyalar aramaz (güvenlik nedeniyle).

Tek nokta ., geçerli dizini bir komuta bağımsız değişken olarak iletmek istiyorsanız da kullanılır.


1
PowerShell de içermez. çalıştırılabilir dosyaları aramak için yol listesinde.
Joey

Nasıl geçilir '.' bir komuta argüman olarak?
Matematik

@DeFu noktayı nokta olarak geçirirsiniz, örneğin:ls .
hasen

ls ile aynı fonksiyonlarls .
Matematik

Bunu yaptığında evet de @DeFu ama ls .sen edilir geçen '' 'ls' argümanı olarak; istediğin bu değil mi? Aynı şekilde çalışır çünkü varsayılan lsolarak geçerli dizini listeler .ve geçerli dizindir. Ama edilir , emin komuta geçirmeden.
hasen

5

. geçerli dizindir. Bunu nadiren kullanmanız gerekir; komutların çoğu geçerli dizini alır. .. bir sonraki seviyedir; bu oldukça kullanışlı bir kısayoldur. C: \ foo \ bar'daysanız ve C: \ foo \ bar2'ye gitmek istiyorsanız şunu söyleyebilirsiniz:

cd ..\bar2

ve C: \ foo \ bar2 içinde olacaksınız. Bar2'ye gitmek istemiyor, ancak sadece C: \ foo \ bar.exe'yi çalıştırmak istiyorsanız,

..\bar.exe

veya .. \ bar ile ana dizine geri dönmeden çalıştırın. Elbette, C: \ foo ("C: \ Kullanıcılar \ Daniel \ My Dropbox \" gibi daha uzun bir yolu temsil ettiğinizde bu daha kullanışlıdır.


1
Buldum . özellikle dosyaları geçerli konuma kopyalarken veya taşırken ( copy F:\*.foo .) veya başka bir ifadeye başvururken ( start .örneğin, geçerli dizinde Gezgin'i açar ) zaman zaman oldukça yararlı olabilir .
Joey

3

Bunlar:

.

Şu anki dir

.. 

Üst dizini temsil eder

Yani içinde yürütülebilir "su.exe" varsa:

  • Yol ortam değişkeniniz (diyelim C: \ MyExecutables \ su.exe)
  • Şimdiki dir
  • Ebeveyninizin dir.

Her birini şu şekilde yürütebilirsiniz:

 su.exe  

Yoldaki dosyayı yürütür

.\su.exe 

Geçerli dizinde olanı yürütür

..\su.exe

Üst dizinde olanı yürütür.

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.