Резюме (TL; DR)
- Скористайтеся,
pwdщоб дізнатись, де ви знаходитесь (або перегляньте між записом :та $у вашому запиті).
- Використовуйте
cdдля зміни каталогу в іншому місці. В відміну від Windows, cdповинні завжди супроводжуватися пропуском; команди як cd/і cd..не будуть працювати, але так cd /і cd ..будуть.
Знаючи, де ти
Спосіб 1: Біжи pwd.
Каталог, який ви зараз перебуваєте, залежить від оболонки (і в загальному випадку для програми). Ви можете запустити одну оболонку, де ви перебуваєте в одному каталозі, та іншу оболонку, де ви перебуваєте в іншому каталозі.
Щоб знати, в якому каталозі ви зараз перебуваєте, запустіть:
pwd
Наприклад (з оболонки, яку я, мабуть, відкрив зараз на своїй машині):
ek@Kip:~$ pwd
/home/ek
Це говорить мені, що я в каталозі /home/ek. /home(Кілька смутно) каталог , який містить людських користувачів домашніх каталогів (це саме по собі не домашній каталог будь-якого користувача). Користувач людини usernameмає домашній каталог ./home/username
У rootкористувача немає домашнього каталогу в /home. Натомість rootдомашній каталог є /root. Це не слід плутати з кореневим каталогом , який є /.
Спосіб 2: Вивчіть своє запит.
Конфігурація за замовчуванням для вашого запиту полягає в тому, що він повідомляє вам, в якому каталозі ви перебуваєте в даний момент. Ваша підказка - це текст, який, як видається, повідомляє про те, що оболонка готова прийняти команду.
У прикладі, який ви показали нам у своєму запитанні, ваш запит:
christy@ubuntu:~$
christyце ваше ім’я користувача. @Характер відрізняє його від ubuntu, імені хоста вашого комп'ютера. (Якщо ви використовуєте живий компакт-диск, його ім'я хоста буде ubuntu, і деякі люди вибирають його як ім'я свого комп'ютера під час встановлення.)
:Характер відокремлює його від імені каталогу ви перебуваєте в даний момент. У цьому випадку, котрий представлений ~. ~це скорочення до вашого домашнього каталогу. Якщо ви не знаходитесь у своєму домашньому каталозі, ви повинні побачити повне ім’я каталогу. Наприклад:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(Щоб закінчити те, що означає кожна частина запиту: Для підказок, які слідують цій конвенції, з'являється $або a, або #символ. $Як і в цьому випадку, це означає, що це звичайна оболонка користувача. #Символ означатиме, що це rootоболонка.)
Зміна того, де ти є
Чому ваша команда "cd" не спрацювала.
Щоб змінити каталог, використовуйте cdкоманду.
Ви бігли cd/. Це не працює, оскільки ви фактично не виконували cdкоманду. В Ubuntu і інших Unix-подібних операційних систем (фактично, в оболонках Unix-стилі , як bash, оболонка ви використовуєте), то ім'я команди вважається кінцевим тільки в просторі або в кінці рядка.
Отже, на відміну від командного рядка в Windows (де cd\інтерпретується те саме, що cd \і cd..інтерпретується як те саме cd ..), в bash(оболонка, яку ви використовуєте в Ubuntu), cd/не є дійсною командою. Ви повинні використовувати cd /.
cd/означає "запис у поточному каталозі, ім'я якого cdі яке також є каталогом". Незалежно від того, існує такий підкаталог чи ні, його не можна запустити як команду, тому в будь-якому випадку ви отримаєте помилку (хоча яка помилка ви буде відрізнятися):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
Перехід до домашнього каталогу
Щоб перейти до домашнього каталогу, запустіть cdсам без жодних аргументів:
cd
Деякі люди вважають за краще чітко називати свій домашній каталог. Ви можете використовувати його повне ім'я, або
cd ~
Але cdсаме по собі достатньо.
Переміщення вгору по одному каталогу
Щоб змінити каталог у батьківському каталозі поточного каталогу (тобто в каталозі, який він містить), використовуйте:
cd ..
..представляє батьківський каталог поточного каталогу. Якщо ви знаходитесь у кореневому каталозі ( /), є виняток: ..просто представляє /. Таким чином, біг cd ..рухається вгору по одній директорії, коли виконується де завгодно, але /; коли забігаєш /, ти залишаєшся /.
Кожен каталог містить ..запис. Усі вони також містять .запис, який стосується поточного каталогу. Але не дуже бігати cd .. Ти завжди залишаєшся там, де ти є.
Абсолютні та відносні шляхи
Якщо ви cdдо чогось, що не починається з a /, він намагається перейти до цього каталогу в поточному каталозі .
Наприклад, якщо ти біг
cd var/log
Тоді вона спробує зайти в varпідкаталог, де ви зараз перебуваєте, і у logпідкаталог цього. Якщо обидва не існують, і в тих місцях ця cdкоманда провалиться (і ти залишишся там, де ти був спочатку).
Якщо ви хочете перейти до logпідкаталогу varпідкаталогу кореневого каталогу , запустіть це замість цього:
cd /var/log
Тільки якщо ви в даний час /є cd var/logеквівалентно cd /var/log.
Шлях, який починається з, /є абсолютним. Спосіб її вирішення не залежить від того, де ви зараз перебуваєте.
Шлях ~теж абсолютний, тому що це (по суті) скорочення $HOME. HOMEє змінною середовища , і вираз $HOMEрозширюється до повного, абсолютного шляху домашнього каталогу поточного користувача.
~позначення може також використовуватися для подання домашнього каталогу іншого користувача. Якщо ви пишете , це представляє домашній каталог.~usernameusername
Повернення туди, де ви були раніше
Каталог, в якому ви зараз перебуваєте, зберігається в PWDзмінній оточення. Останній каталог , який ви були зберігається в OLDPWDзмінної оточення. Ви можете переглядати OLDPWDтак само, як і будь-яку змінну середовища:
echo $OLDPWD
Оскільки ця інформація зберігається, cdможе мати спеціальний, швидкий і простий спосіб повернутися туди, де ви були раніше. Як говорить pst007x , запустіть:
cd -
Якщо ніколи не було жодного попереднього каталогу, в якому ви знаходилися в цій оболонці , OLDPWDзмінна середовища не була б встановлена, а спроба запуску cd -призведе до помилки (і ви залишитесь там, де ви є):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
Зміна того, де ти схожий на боса
pushdі popd: Стек каталогу
Уявіть стек імен каталогів. Під стеком я маю на увазі те, що коли ви додаєте щось, воно йде вгорі, і ви можете видаляти лише одну річ за один раз, а річ, яку ви вилучаєте, завжди є тим, що знаходиться вгорі.
Ви можете натиснути будь-який каталог dirна стек, запустивши:
pushd dir
Якщо ви хочете натиснути поточну директорію до вершини стека, ви можете скористатися .(що, як пояснено вище, завжди представляє поточний каталог):
pushd .
Тоді ви можете займатися своїм бізнесом, змінюючи каталоги скільки завгодно. Коли ви хочете повернутися до останнього каталогу, з яким ви натиснули на стек pushd, запустіть:
popd
Це переходить до цього каталогу, а також вискакує з стека. Тепер стек на один каталог коротший. Якщо це був єдиний каталог у стеці, то стек тепер порожній.
Ви можете мати стек розміром більше 1. Тобто ви можете використовувати окремі pushdкоманди для натискання декількох каталогів на стек. Кожна наступна popdкоманда переходитиме до (та вискакує, тобто видаляється із стека ) останньої висунутої каталоги, яка ще не вискочила.
Ось приклад:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushdі popdвикористовуються набагато рідше , ніж cd. Вони також мають інші, навіть більш досконалі способи використання. Виконати help pushdі help popdдля деталей.
Дізнатися більше та отримати доступ до документації
cdі pwdмати більш розвинене використання. Щоб дізнатися про них, запустіть help cdі man pwd.
helpпризначений для оболонок . manпризначений для автономних команд - команди, які виконуються як окремі процеси і існують як окремі виконувані файли. typeКоманда показує , якщо команда оболонки чи ні вбудованої і, якщо ні, то де програма працює вона розташована. Наприклад, ви могли б працювати type help, type typeабо type man.