Мені сказали виконати це:
./yiic message ./app/messages/config.php
Але я не розумію ./
сенсу, може хтось уточнить, будь ласка.
Примітка. Повірте, ми не можемо це гугл. Я спробував:
./ значення ./ ubuntu
Це було те саме, що нічого. :(
Мені сказали виконати це:
./yiic message ./app/messages/config.php
Але я не розумію ./
сенсу, може хтось уточнить, будь ласка.
Примітка. Повірте, ми не можемо це гугл. Я спробував:
./ значення ./ ubuntu
Це було те саме, що нічого. :(
Відповіді:
./
або просто .
це скорочення для Unix для поточного каталогу.
Потрібно вказати його, коли поточний каталог не знаходиться у вашій PATH. PATH - це список папок, які шукаються під час запуску програми. (Ви можете визначити це, записавши echo $PATH
.) Якщо виконуваного файлу немає у вашому PATH, для його запуску потрібно вказати папку, в якій він знаходиться. Ви можете зробити це, надавши повний шлях до файлу, але якщо файл знаходиться у поточний каталог, який ви можете використовувати ./
як стенограму.
Аналогічно, ../
або просто ..
це скорочення для каталогу вище поточного.
.
. Це тому, що автоматично за допомогою поточного каталогу є отвір для захисту. Уявіть, що хтось інший робить програму, називає її ls
та ви cd
у своєму каталозі, а потім наберітьls
Кожен каталог у командному рядку має два "спеціальні каталоги", що називаються .
та ..
. Це скорочення відповідно до поточного каталогу та до каталогу, що містить поточний каталог.
Так, наприклад, cd ./more/directory/names
просто означає "почати з поточного каталогу і продовжувати шлях". Аналогічно команда cd ..
означає "змінити один каталог вгору.
Якщо ви хочете назву поточного каталогу, ви можете скористатися pwd
командою. Крім того, якщо ви використовуєте -a
прапор для ls
, ви можете побачити ці два спеціальні каталоги. Тобто ls -a
виведе список, починаючи з .
і ..
.
Інші вже пояснили, що .
і що ..
означає (поточний каталог і батьківський каталог відповідно). Це стосується всіх імен шляхів.
Відкриваючи термінал, ви зазвичай запускаєте у свій домашній каталог: ~
(який розширюється до /home/username
). Нижче наведені шляхи еквівалентні, якщо ваш поточний робочий каталог /home/username
:
/home/username
.
../username
../../home/username
../../../home/username
(батьківський каталог /
досі є /
)./././././.
(поточний каталог у поточному каталозі у ...)./
(кінцеві косої риски дозволені для каталогів)/home////username///
(і так є декілька косої риски)Ви НЕ плутайте ./program
з . program
. ./program
запускає файл у поточному каталозі з набором бітів виконання. . ./program
є баш-річчю і може бути записаний так, source ./program
що читає команди bash з program
файлу в поточному каталозі та виконує їх у поточній оболонці.
Якщо вам цікаво , чому ви можете просто запустити gedit
замість , /usr/bin/gedit
а не program
замість ./program
або /home/username/program
, побачити пов'язаний з цим питання:
Це означає починати з current directory path
.
Припустимо, у вас path
таке:
/usr/ /usr/bin/ /usr/local/bin
а всередині /usr/bin/
є виконаний файл, який називається yiic
.
Якщо ви опублікуєте, yiic
це розпочнеться в /usr/bin/
.
Випускаючи, ./yiic
ви скажете системі заглянути в поточний каталог для цього виконуваного файлу.
/home/mysuser/
і я переходжу туди за допомогою cd /home/myuser
. Потрапивши всередину, я вважав, що робити просто ємік, це має працювати, тому що я зателефонував у той каталог. Але він каже, що команда не подавати. Якщо я роблю те саме, і я використовую ./, він працює належним чином ... Чи можете ви уточнити трохи більше?
.
це спеціальний файл всередині папки, який ви можете бачити під час роботи ls -la
в каталозі;)