Що таке "." Та ".." в каталозі?


15

Виходячи з питання: Як зробити командний рядок менш болісним , які є .та ..записи у найбільш голосованій відповіді? Я бачу це, коли я виконую dirкоманду, але користувачеві це не видно у вигляді файлу.

Якщо ви не знаєте, що я маю на увазі, ось приклад:

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

Відповіді:


40

The. є поточним каталогом, а .. означає батьківський каталог. Це також робить швидше все в командному рядку, тому вам не потрібно вводити цілі шляхи.

приклад:

перейти до 2 каталогів:

cd ..\..\

або на базі системи UNIX для запуску виконуваних бінарних файлів у поточному каталозі:

./program

Багато UNIX-скриптів також використовуватиме. представляти поточний каталог, щоб сканувати файли, наприклад (Perl):

#!/usr/bin/perl

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

Це набагато портативніше, якщо ви хочете перемістити скрипт у різні каталоги чи системи, оскільки ім'я каталогів не жорстко закодовано.


3
Мало відомо, але командний рядок Windows розширює це далі. . = цей каталог .. = батьківський каталог ... = батьківський каталог батьків 3 крапки іноді корисний, набагато більше, ніж з цим просто важко мати справу.
лосось

4
3 крапки для мене не працюють, використовуючи Vista
Кевін Панько

1
ні мені на Windows 7 64-бітний RTM. Звучить як міф. що з цим .. \ .. все одно?
АдамВ

2
@salmonmoose: Не працює для мене і на XP.
Саймон П Стівенс


10

..Використовуються для переміщення вгору по ієрархії файлової системи. Це корисно, коли ви не хочете вводити довгий шлях або коли пишете сценарій / програму, яка не знає, де саме він буде встановлений, але знає, що ../media/має містити всі зображення / відео / піктограми тощо.

Одинарна точка .корисна в Linux, де ви хочете запустити виконуваний файл у поточному каталозі, тому ви вводите, ./a.outоскільки командна оболонка за замовчуванням не здійснює пошук у поточному каталозі виконуваних файлів (з міркувань безпеки).

Одинарна точка .також використовується, якщо ви хочете передати поточний каталог як аргумент команді.


1
PowerShell також не включає. у списку шляхів пошуку виконуваних файлів.
Joey

Як пройти "." як аргумент команди?
Обчислення

@DeFu ви передаєте крапку як крапку, наприклад:ls .
hasen

ls функції такі самі, якls .
Обчислення

@DeFu добре да , але коли ви робите ls .ви які проходить ". як аргумент до 'ls'; це не те, про що ви запитали? Він функціонує так само, оскільки за замовчуванням lsперераховує поточний каталог, і .це поточний каталог. Але будуть передавати його команду, звичайно.
hasen

5

The. - поточний каталог. Вам рідко потрібно користуватися цим; більшість команд візьме на себе поточний каталог. .. - наступний рівень вгору; це досить корисний ярлик. Якщо ви перебуваєте в C: \ foo \ bar і хочете перейти до C: \ foo \ bar2, ви можете сказати

cd ..\bar2

і ви будете в C: \ foo \ bar2. Якщо ви не хочете переходити до bar2, а хочете лише запустити C: \ foo \ bar.exe, тоді ви можете сказати

..\bar.exe

або .. \ bar, щоб запустити його, не повертаючись до батьківського каталогу. Звичайно, це корисніше, коли ви являєте собою довший шлях, що C: \ foo (наприклад, "C: \ Users \ Daniel \ My Dropbox \").


1
Я знайшов . може бути дуже корисним часом, особливо при копіюванні чи переміщенні файлів до поточного місця розташування ( copy F:\*.foo .) або посиланням на нього інакше ( start .відкриває Провідник, наприклад, у поточному каталозі).
Joey

3

Вони виступають за:

.

Нинішній реж

.. 

Представляє батьківський реж

Тож якщо у вас є виконуваний файл "su.exe" у:

  • Ваша змінна середовище Path (скажімо, C: \ MyExecutables \ su.exe)
  • Ваш теперішній реж
  • Ваш батьківський реж.

Ви можете виконати кожного з них так:

 su.exe  

Виконує той у Шлях

.\su.exe 

Виконує той у поточному реж

..\su.exe

Виконує той у батьківському реєстрі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.