Apa itu "." Dan ".." dalam direktori?

15

Berdasarkan pertanyaan: Bagaimana cara membuat command prompt tidak terlalu menyakitkan , apa saja .dan ..entri dalam jawaban yang paling banyak dipilih? Saya melihatnya ketika saya melakukan dirperintah tetapi itu tidak terlihat oleh pengguna dalam bentuk file.

Jika Anda tidak tahu apa yang saya maksud, inilah contohnya:

.
..
Su.exe
Sup.txt
SuperUser.COM
Komunitas
sumber

Jawaban:

40

. adalah direktori saat ini, sementara .. menandakan direktori induk. Itu membuat segalanya lebih cepat di baris perintah juga sehingga Anda tidak perlu mengetikkan path lengkap.

contoh:

naik 2 direktori:

cd ..\..\

atau pada sistem berbasis UNIX, untuk menjalankan binari yang dapat dieksekusi di direktori saat ini:

./program

Banyak skrip UNIX juga akan digunakan. untuk mewakili direktori saat ini, untuk memindai file misalnya (Perl):

#!/usr/bin/perl

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

Ini jauh lebih portabel jika Anda ingin memindahkan skrip ke direktori atau sistem yang berbeda karena nama direktori tidak dikodekan dengan keras.

John T
sumber
3
Ini sedikit diketahui, tetapi baris perintah Windows memperluas ini lebih lanjut. . = direktori ini .. = direktori induk ... = direktori induk orangtua 3 titik kadang-kadang berguna, lebih dari itu dan itu terlalu sulit untuk ditangani.
Salmonmoose
4
3 titik tidak berfungsi untuk saya, menggunakan Vista
Kevin Panko
1
atau saya di Windows 7 64 bit RTM. Kedengarannya seperti mitos bagi saya. ada apa dengan .. \ .. pokoknya?
AdamV
2
@salmonmoose: Tidak berfungsi untuk saya di XP juga.
Simon P Stevens
10

Ini ..digunakan untuk menavigasi hierarki sistem file. Ini berguna ketika Anda tidak ingin mengetikkan jalur yang panjang, atau ketika menulis skrip / program yang tidak tahu di mana tepatnya itu akan diinstal tetapi ia tahu bahwa ../media/harus menyimpan semua gambar / video / ikon dll.

Single dot .berguna di linux di mana Anda ingin menjalankan executable di direktori saat ini sehingga Anda mengetik ./a.outkarena shell perintah secara default tidak mencari direktori saat ini untuk file yang dapat dieksekusi (untuk alasan keamanan).

Titik tunggal .juga digunakan jika Anda ingin meneruskan direktori saat ini sebagai argumen ke perintah.

Hasen
sumber
1
PowerShell juga tidak termasuk. dalam daftar jalur untuk mencari yang dapat dieksekusi.
Joey
Bagaimana cara lulus '.' sebagai argumen untuk suatu perintah?
Kalkulus
@DeFu Anda melewatkan titik sebagai titik, misalnya:ls .
hasen
ls fungsinya sama sepertils .
Kalkulus
@DeFu baik ya tapi ketika Anda melakukannya ls .Anda sedang melewati '' sebagai argumen untuk 'ls'; bukankah itu yang kau tanyakan? Fungsinya sama karena secara default lsdaftar direktori saat ini, dan .direktori saat ini. Tapi Anda sedang lewat itu untuk perintah, pasti.
hasen
5

. adalah direktori saat ini. Anda jarang perlu menggunakan ini; sebagian besar perintah akan mengambil direktori saat ini. The .. adalah level selanjutnya; ini adalah jalan pintas yang agak berguna. Jika Anda berada di C: \ foo \ bar dan Anda ingin pergi ke C: \ foo \ bar2 bisa Anda katakan

cd ..\bar2

dan Anda akan berada di C: \ foo \ bar2. Jika Anda tidak ingin pergi ke bar2 tetapi hanya ingin menjalankan C: \ foo \ bar.exe, maka Anda dapat mengatakan

..\bar.exe

atau .. \ bar untuk menjalankannya tanpa kembali ke direktori induk. Tentu saja, ini lebih berguna ketika Anda merepresentasikan jalur yang lebih panjang dari C: \ foo (seperti "C: \ Users \ Daniel \ My Dropbox \".

Daniel H
sumber
1
Saya menemukan . kadang-kadang cukup berguna, terutama saat menyalin atau memindahkan file ke lokasi saat ini ( copy F:\*.foo .) atau merujuknya sebaliknya ( start .membuka Explorer di direktori saat ini, misalnya).
Joey
3

Mereka berdiri untuk:

.

Dir saat ini

.. 

Merupakan dir induk

Jadi, jika Anda memiliki "su.exe" yang dapat dieksekusi di:

  • Variabel lingkungan Path Anda (katakanlah C: \ MyExecutables \ su.exe)
  • Dir Anda saat ini
  • Dir orang tua Anda.

Anda dapat menjalankan masing-masing seperti ini:

 su.exe  

Laksanakan yang di Path

.\su.exe 

Laksanakan yang ada di dir saat ini

..\su.exe

Laksanakan yang ada di dir induk.

OscarRyz
sumber