Навіщо потрібна команда pwd і що таке поточна робоча директорія
З цієї статті ви дізнаєтесь, як визначити поточну робочу директорію (current working directory) за допомогою команди pwd.
Що таке поточна робоча директорія
Поточна робоча директорія - директорія, в якій користувач працює зараз. При взаємодії з командним рядком ви завжди знаходитесь усередині директорії.
За промовчанням, коли ви запускаєте операційну систему Linux, поточним робочим каталогом є домашня директорія. Змінити робочу директорію можна за допомогою команди cd.
Наприклад, щоб змінити поточну робочу директорію /tmp, використовуйте таку команду:
Шлях до поточної робочої директорії може відображатись в оболонці командного рядка.
Команда pwd виводить поточну робочу директорію. Це одна з базових та найпопулярніших команд у Linux. При виклику pwd виводиться повний шлях до поточної робочої директорії.
Команда pwd вбудована у більшість сучасних командних оболонок, у тому числі в Bash. Її поведінка відрізняється від виконання /bin/pwd. За допомогою команди type можна отримати всі місця, де є pwd:
pwd is a shell builtin pwd is /bin/pwd
Як свідчить висновок, вбудована команда pwd має більш високий пріоритет у порівнянні з /bin/pwd. Тому вона використовується щоразу, коли ви вводите в командний рядок pwd. Якщо ви хочете використовувати файл /bin/pwdпотрібно вказати в командному рядку повний шлях до нього.
Як знайти поточну робочу директорію
Щоб зрозуміти, в якій директорії ви працюєте зараз, введіть у терміналі pwd. Висновок може виглядати так (назва директорії може відрізнятися):
Все, що робить команда pwd - Виводить значення змінної оточення PWD. Такий самий висновок вийде, якщо ввести в терміналі:
Команда pwd приймає лише два аргументи:
- -L (--logical) - не дозволяти симлінки.
- -P (--physical) - відображати фізичну директорію без симлінків.
За замовчуванням pwd веде себе так, ніби застосована опція -L.
Щоб зрозуміти, як працює аргумент -P, створимо директорію та симлінк, що вказує на цю директорію.
mkdir /tmp/directory ln
-s /tmp/directory /tmp/symlink
Коли ви зайдете до директорії /tmp/symlink та введете команду pwd, Висновок буде таким:
Тобто поточною робочою директорією стає /tmp/symlink. Якщо ввести команду pwd -P, Висновок буде таким:
Симлінк (англ. Symlink, symbolic link) - символічне посилання. Цим терміном позначають файл, у якому міститься абсолютний чи відносний шлях до іншого файлу чи директорії.
Тобто отримуємо директорію, яку вказує симлинк.
Висновок
Поточна робоча директорія - директорія, з якої Ви викликаєте команди в терміналі. Щоб відобразити поточну робочу директорію, потрібно використати команду pwd. Якщо у вас залишилися питання, ласкаво просимо в коментарі.
Адаптований переклад статті Pwd Command in Linux (Current Working Directory) by Linuxize.
- Освойте ази сучасних мов програмування
- Вивчіть роботу з Git та командним рядком
- Виберіть собі професію або покращіть навички
Фундаментальні засади Linux. Частина II: Перші кроки у вивченні інтерфейсу командного рядка
Оригінал: Linux Fundamentals
Автор: Paul Cobbaut
Дата публікації: 16 жовтня 2014 р.
Переклад: А.Панін
Дата перекладу: 11 грудня 2014 р.
Глава 6. Робота з директоріями
У цьому розділі наводиться короткий огляд більшості стандартних команд, що використовуються при роботі з директоріями: pwd, cd, ls, mkdir і rmdir. Ці команди доступні під час роботи з будь-якою системою Linux (або Unix).
Крім того, в цьому розділі обговорюються поняття абсолютних та відносних шляхів, а також описується методика використання механізму завершення шляхів командної оболонки bash.
Команда pwd
За допомогою команди pwd (розшифровується як Print Working Directory – вивести інформацію про робочу директорію) може бути отримана інформація про ваше поточне місцезнаходження в рамках файлової системи. Спробуйте виконати цю команду: отримайте доступ до інтерфейсу командного рядка системи (скориставшись однією з програм з наступними назвами: terminal, console або xterm) і введіть pwd . Командна оболонка виведе шлях до вашої поточної директорії.
paul@debian8:~$ pwd /home/paul
Команда cd
Ви можете змінити вашу поточну директорію за допомогою cd (розшифровується як Change Directory - змінити директорію).
paul@debian8$ cd / etc paul@debian8$ pwd /etc paul@debian8$ cd /bin paul@debian8$ pwd /bin paul@debian8$ cd /home/paul/ paul@debian8$ pwd /home/paul
Команда cd також може використовуватися для швидкого переходу назад до вашої домашньої директорії. Просте виконання команди cd без завдання шляху до цільової директорії призведе до переміщення до домашньої директорії. Виконання команди cd ~ призведе до аналогічного ефекту.
paul@debian8$ cd / etc paul@debian8$ pwd /etc paul@debian8$ cd paul@debian8$ pwd /home/paul paul@debian8$ cd ~ paul@debian8$ pwd /home/paul
Для переходу в батьківську директорію (ту директорію, яка знаходиться над вашою поточною директорією в дереві директорій), слід використовувати команду cd .. .
paul@debian8$ pwd /usr/share/games paul@debian8$ cd .. paul@debian8$ pwd /usr/share
Для того, щоб залишитися в поточній директорії, просто введіть cd . ;-) Пізніше ми все ж таки познайомимося з практичним прикладом використання символу. , що представляє поточну директорію
Інший корисний варіант використання команди cd полягає у виконанні простої команди cd – для переходу до попередньої директорії.
paul@debian8$ pwd /home/paul paul@debian8$ cd / etc paul@debian8$ pwd /etc paul@debian8$ cd - /home/paul paul@debian8$ cd - / etc
Абсолютні та відносні шляхи
Ви повинні мати уявлення про абсолютні та відносні шляхи в рамках дерева директорій файлової системи. Якщо ви вводите шлях, що починається із символу слеша (/) , мається на увазі, що шлях буде вказано щодо кореневої директорії файлової системи. Якщо ви не починаєте введення шляху з символу слеша, мається на увазі, що точкою відліку буде поточна директорія.
У наведеному нижче прикладі показано, що поточною директорією є директорія /home/paul . Для переходу з цієї директорії до директорії /home вам доведеться ввести команду cd /home замість команди cd home.
paul@debian8$ pwd /home/paul paul@debian8$ cd home bash: cd: home: Немає такого файлу чи каталогу paul@debian8$ cd /home paul@debian8$ pwd /home
При знаходженні директорії /home вам доведеться ввести команду cd paul замість команди cd /paul для переходу в піддиректорію paul поточної директорії /home .
paul@debian8$ pwd /home paul@debian8$ cd /paul bash: cd: /paul: Немає такого файлу чи каталогу paul@debian8$ cd paul paul@debian8$ pwd /home/paul
У тому ж випадку, якщо вашою поточною директорією є коренева директорія / , то і команда cd /home і команда cd home дозволять вам переміститися в директорію /home .
paul@debian8$ pwd / paul@debian8$ cd home paul@debian8$ pwd /home paul@debian8$ cd / paul@debian8$ cd /home paul@debian8$ pwd /home
Цей приклад був останнім прикладом, у якому використовуються команди pwd. З цього моменту інформація про поточну директорію завжди виводитиметься в рамках запрошення командної оболонки. Далі в даній книзі будуть дані пояснення щодо того, як слід використовувати змінну командної оболонки $PS1 для виведення описаної інформації.
Завершення шляхів
Клавіша TAB допоможе уникнути помилок при введенні шляхів.Після введення частини команди cd /et натискання клавіші TAB призведе до завершення команди до вигляду cd /etc/ . При цьому натискання клавіші TAB після введення команди cd /Et не призведе ні до чого, оскільки була допущена помилка при введенні частини шляху (використовується буква E у верхньому регістрі).
Вам доведеться натискати менше клавіш у разі використання клавіші TAB, до того ж, при використанні цієї клавіші ви можете бути впевнені, що введений шлях є коректним!
Утиліта ls
paul@debian8:~$ ls allfiles.txt dmesg.txt services stuff summer.txt paul@debian8:~$
Часто використовуваним параметром утиліти ls є -a , який призначений для виведення інформації про всі файли. Під виведенням інформації про всі файли мається на увазі виведення інформації у тому числі і про приховані файли. Якщо ім'я файлу в рамках файлової системи Linux починається з символу точки, він вважається прихованим файлом і не включається до звичайних списків вмісту директорій.
paul@debian8:~$ ls allfiles.txt dmesg.txt services stuff summer.txt paul@debian8:~$ ls -a . allfiles.txt .bash_profile dmesg.txt .lesshst stuff .. .bash_history .bashrc services .ssh summer.txt paul@debian8:~$
Вам доведеться багато разів використовувати параметри утиліти ls для виведення інформації про вміст директорії у різних форматах або для виведення інформації про різні файли з директорії. Команда ls без параметрів дозволяє отримати список файлів, які розміщені в директорії. Команда ls -l (як параметр використана рядкова літера L, а не число 1) дозволяє отримати більш докладний список файлів.
paul@debian8:~$ ls -l всього 17296 -rw-r--r-- 1 paul paul 17584442 вер 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 96650 вер 17 00:03 dmesg.txt -rw-r--r-- 1 paul paul 19558 вер 17 00:04 services drwxr-xr-x 2 paul paul 4096 вер 17 00:04 stuff -rw-r--r-- 1 paul paul 0 вер 17 00:04 summer.txt
Іншим параметром утиліти ls, що періодично використовується, є параметр -h . Він дозволяє виводити числові значення (відповідні розмірам файлів) у форматі, що краще читається людиною. Також у прикладі нижче показані варіанти передачі параметрів утиліті ls. Пізніше в цій книзі будуть подані докладні пояснення щодо виведених даних.
Зверніть увагу на те, що ми використовуємо малу літеру L, а не число 1 як параметр утиліти в даному прикладі.
paul@debian8:~$ ls -l -h разом 17M -rw-r--r-- 1 paul paul 17M вер 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K вер 17 00:03 dmesg.txt -rw-r-- r-- 1 paul paul 20K вер 17 00:04 services drwxr-xr-x 2 paul paul 4.0K Вер 17 00:04 stuff -rw-r--r-- 1 paul paul 0 Вер 17 00:04 summer.txt paul@debian8:~$ ls -lh разом 17M -rw-r--r-- 1 paul paul 17M вер 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K вер 17 00:03 dmesg.txt -rw-r-- r-- 1 paul paul 20K вер 17 00:04 services drwxr-xr-x 2 paul paul 4.0K Вер 17 00:04 stuff -rw-r--r-- 1 paul paul 0 Вер 17 00:04 summer.txt paul@debian8:~$ ls -hl разом 17M -rw-r--r-- 1 paul paul 17M вер 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K вер 17 00:03 dmesg.txt -rw-r-- r-- 1 paul paul 20K вер 17 00:04 services drwxr-xr-x 2 paul paul 4.0K Вер 17 00:04 stuff -rw-r--r-- 1 paul paul 0 Вер 17 00:04 summer.txt paul@debian8:~$ ls -h -l разом 17M -rw-r--r-- 1 paul paul 17M вер 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K вер 17 00:03 dmesg.txt -rw-r-- r-- 1 paul paul 20K вер 17 00:04 services drwxr-xr-x 2 paul paul 4.0K Вер 17 00:04 stuff -rw-r--r-- 1 paul paul 0 Sep 17 00:04 summer.txt paul@debian8:~$
Утиліта mkdir
Обхід дерева директорій файлової системи Unix є цікавим заняттям, але ще більший інтерес представляє створення ваших власних директорій за допомогою утиліти mkdir. Вам доведеться передавати як мінімум один параметр утиліті mkdir , а саме ім'я нової директорії, яка повинна бути створена.При цьому слід серйозно замислюватись перед використанням початкового символу / в іменах директорій.
paul@debian8:~$ mkdir mydir paul@debian8:~$ cd mydir paul@debian8:~/mydir$ ls -al разом 8 drwxr-xr-x 2 paul paul 4096 вер 17 00:07 . drwxr-xr-x 48 paul paul 4096 вер 17 00:07 .. paul@debian8:~/mydir$ mkdir stuff paul@debian8:~/mydir$ mkdir otherstuff paul@debian8:~/mydir$ ls -l разом 8 drwxr-xr-x 2 paul paul 4096 вер 17 00:08 otherstuff drwxr-xr-x 2 paul paul 4096 вер 17 00:08 stuff paul@debian8:~/mydir$
Команда mkdir -p
Виконання наступної команди закінчиться невдачею, тому що батьківської директорії для директорії трьохдисків не існує.
paul@debian8:~$ mkdir mydir2/mysubdir2/threedirsdeep mkdir: неможливо створити каталог "mydir2/mysubdir2/threedirsdeep": Немає такого файлу чи каталогу
У разі використання параметра -p утиліти mkdir у разі потреби будуть створюватися батьківські директорії.
paul@debian8:~$ mkdir -p mydir2/mysubdir2/threedirsdeep paul@debian8:~$ cd mydir2 paul@debian8:~/mydir2$ ls -l разом 4 drwxr-xr-x 3 paul paul 4096 вер 17 00:11 mysubdir2 paul@debian8:~/mydir2$ cd mysubdir2 paul@debian8:~/mydir2/mysubdir2$ ls -l разом 4 drwxr-xr-x 2 paul paul 4096 вер 17 00:11 threedirsdeep paul@debian8:~/mydir2/mysubdir2$ cd threedirsdeep/ paul@debian8:~/mydir2/mysubdir2/threedirsdeep$ pwd /home/paul/mydir2/mysubdir2/threedirsdeep
Утиліта rmdir
Якщо директорія порожня, ви можете використовувати утиліту rmdir для видалення цієї директорії.
paul@debian8:~/mydir$ ls -l разом 8 drwxr-xr-x 2 paul paul 4096 вер 17 00:08 otherstuff drwxr-xr-x 2 paul paul 4096 вер 17 00:08 stuff paul@debian8:~/mydir$ rmdir otherstuff paul@debian8:~/mydir$ cd .. paul@debian8:~$ rmdir mydir rmdir: не вдалося видалити "mydir": Каталог не порожній paul@debian8:~$ rmdir mydir/stuff paul@debian8:~$ rmdir mydir paul@debian8:~$
Команда rmdir -p
І за аналогією з параметром mkdir -p ви також можете використовувати утиліту rmdir для рекурсивного видалення директорій.
paul@debian8:~$ mkdir -p test42/subdir paul@debian8:~$ rmdir -p test42/subdir paul@debian8:~$
Практичне завдання: робота з директоріями
1. Виведіть шлях до вашої поточної директорії.
2. Перейдіть до директорії / etc.
3. А тепер перейдіть у вашу домашню директорію за допомогою трьох натискань клавіш.
4. Перейдіть до директорії /boot/grub за допомогою рівно одинадцяти натискань клавіш.
5. Перейдіть до батьківської директорії для поточної директорії.
6. Перейдіть до кореневої директорії.
7. Виведіть список вмісту кореневої директорії.
8. Виведіть докладний список вмісту кореневої директорії.
9. Залишаючись у поточній робочій директорії, виведіть список вмісту директорії /etc.
10. Залишаючись у поточній директорії, виведіть список вмісту директорій /bin та /sbin.
11. Залишаючись у поточній директорії, виведіть список вмісту директорії ~.
12. Виведіть список усіх файлів (включаючи приховані файли), що знаходяться у вашій домашній директорії.
13. Виведіть список файлів, що знаходяться в директорії /boot, за допомогою формату величин для полегшення читання людиною.
14. Створіть директорію testdir у вашій домашній директорії.
15. Перейдіть до директорії /etc і, залишаючись у ній, створіть директорію newdir у вашій домашній директорії.
16. Створіть за допомогою однієї команди директорії ~/dir1/dir1/dir2/dir3 (директорія dir3 є піддиректорією директорії dir2, а директорія dir2 - піддиректорією директорії dir1).
17. Видаліть директорію testdir.
18.Якщо дозволяє час (або ви чекаєте моменту, коли решта студентів закінчить виконання цього практичного завдання), спробуйте скористатися командами pushd та popd та зрозуміти принцип їхньої роботи. Зверніться до сторінки посібника man для командної оболонки bash, щоб знайти інформацію про ці команди.
Коректна процедура виконання практичного завдання: робота з директоріями
1. Виведіть шлях до вашої поточної директорії.
2. Перейдіть до директорії / etc.
3. А тепер перейдіть у вашу домашню директорію за допомогою трьох натискань клавіш.
cd (і натискання клавіші Enter)
4. Перейдіть до директорії /boot/grub за допомогою одинадцяти натискань клавіш.
cd /boot/grub (Використовуйте клавішу Tab)
5. Перейдіть до батьківської директорії для поточної директорії.
cd .. (Між cd і .. має бути пробіл)
6. Перейдіть до кореневої директорії.
7. Виведіть список вмісту кореневої директорії.
8. Виведіть докладний список вмісту кореневої директорії.
9. Залишаючись у поточній робочій директорії, виведіть список вмісту директорії /etc.
10. Залишаючись у поточній директорії, виведіть список вмісту директорій /bin та /sbin.
11. Залишаючись у поточній директорії, виведіть список вмісту директорії ~.
12. Виведіть список усіх файлів (включаючи приховані файли), що знаходяться у вашій домашній директорії.
13. Виведіть список файлів, що знаходяться в директорії /boot, за допомогою формату величин для полегшення читання людиною.
14. Створіть директорію testdir у вашій домашній директорії.
15. Перейдіть до директорії /etc і, залишаючись у ній, створіть директорію newdir у вашій домашній директорії.
cd / etc; mkdir ~/newdir
16.Створіть за допомогою однієї команди директорії ~/dir1/dir1/dir2/dir3 (директорія dir3 є піддиректорією директорії dir2, а директорія dir2 - піддиректорією директорії dir1).
mkdir -p ~/dir1/dir2/dir3
17. Видаліть директорію testdir.
18. Якщо дозволяє час (чи ви чекаєте моменту, коли решта студентів закінчить виконання даного практичного завдання), спробуйте скористатися командами pushd і popd та зрозуміти принцип їхньої роботи. Зверніться до сторінки посібника man для командної оболонки bash, щоб знайти інформацію про ці команди.
man bash # відкриття сторінки посібника /pushd # пошук розділу з описом команди pushd n # перехід до наступного розділу (повторіть цю дію два/три рази)
Командна оболонка Bash підтримує дві вбудовані команди з іменами pushd та popd. Обидві команди призначені до роботи зі стандартним стеком відвіданих раніше директорій. Команда pushd дозволяє помістити директорію в стек і переміститися в нову директорію, команда popd видаляє директорію зі стека і встановлює попередню директорію.
paul@debian7:/etc$ cd /bin paul@debian7:/bin$ pushd /lib /lib /bin paul@debian7:/lib$ pushd /proc /proc /lib /bin paul@debian7:/proc$ popd /lib /bin paul@debian7:/lib$ popd /bin