Робота з файлами та каталогами
Останнє оновлення 2025-08-28 | Редагувати цю сторінку
Огляд
Питання
- Як я можу створювати, копіювати та видаляти файли і каталоги?
- Як я можу редагувати файли?
Цілі
- Створити ієрархію каталогів, яка відповідає заданій схемі.
- Створити файли в цій ієрархії за допомогою редактора або шляхом копіювання та перейменування файлів, що вже існують.
- Видалити, скопіювати та перемістити вказані файли та/або каталоги.
Створення каталогів
Тепер ми знаємо, як досліджувати файли та каталоги, але як їх створювати?
У цьому уроці ми дізнаємося про створення та переміщення файлів і
каталогів на прикладі каталогу exercise-data/writing
.
Крок перший: подивимось, де ми знаходимося і що вже маємо
Ми все ще маємо бути у каталозі shell-lesson-data
на
Робочому столі (англ. Desktop), що ми можемо перевірити за
допомогою:
ВИХІД
/Users/nelle/Desktop/shell-lesson-data
Далі ми перейдемо до каталогу exercise-data/writing
і
подивимося, що у ньому міститься:
ВИХІД
haiku.txt LittleWomen.txt
Створення каталогу
Створимо новий каталог з назвою thesis
за допомогою
команди mkdir thesis
(яка не має виводу):
Як ви можете здогадатися з її назви, команда mkdir
означає ‘створити каталог’ (англ. ‘make directory’). Оскільки
thesis
є відносним шляхом (тобто не має початкової косої
риски, як /what/ever/thesis
), новий каталог буде створено у
поточному робочому каталозі:
ВИХІД
haiku.txt LittleWomen.txt thesis/
Оскільки ми щойно створили каталог thesis
, у ньому ще
нічого немає:
Зауважте, що команда mkdir
не тільки створює окремі
каталоги по одному за раз. Параметр -p
дозволяє команді
mkdir
створювати каталог із вкладеними підкаталогами за
одну операцію:
Параметр -R
з командою ls
покаже усі
вкладені підкаталоги у каталозі. Скористаймось ls -FR
для
рекурсивного зображення нової ієрархії каталогів, яку ми щойно створили
у каталозі project
:
ВИХІД
../project/:
data/ results/
../project/data:
../project/results:
Два способи зробити одне й те саме
Використання терміналу для створення каталогу нічим не відрізняється
від використання файлового провідника. Якщо ви зараз відкриєте поточний
каталог за допомогою графічного провідника файлів вашої операційної
системи, там також з’явиться каталог thesis
. Хоча термінал
і файловий провідник - це два різні способи взаємодії з файлами, самі
файли й каталоги одні й ті ж самі.
Доречні імена для файлів і каталогів
Використання надто складних імен для файлів і каталогів може ускладнити роботу в командному рядку. Ось кілька корисних порад щодо вибору ефективних імен.
- Не використовуйте пробіли.
Пробіли можуть зробити назву більш змістовною, але оскільки вони
використовуються для відокремлення аргументів у командному рядку, краще
уникати їх у назвах файлів і каталогів. Ви можете використовувати
-
або _
(наприклад,
north-pacific-gyre/
замість
north pacific gyre/
). Щоб перевірити це, спробуйте набрати
mkdir north pacific gyre
і подивіться, який каталог (або
каталоги!) буде створено, перевірив це за допомогою
ls -F
.
- Не починайте назву з
-
(тире).
Команди розглядають назви, що починаються з -
, як
опції.
- Використовуйте літери, цифри,
.
(крапку),-
(тире) і_
(підкреслення).
Багато інших символів мають особливе значення у командному рядку. Деякі з них ми розглянемо у цьому уроці. Існують спеціальні символи, які можуть спричинити неправильну роботу команди й навіть призвести до втрати даних.
Якщо вам потрібно звернутися до назв файлів або каталогів, які
містять пробіли чи інші спеціальні символи, вам слід узяти назву в
одинарні лапки
(''
).
Створення текстового файлу
Перейдімо до каталогу thesis
за допомогою
cd
, а потім запустимо текстовий редактор Nano та створимо
файл з назвою draft.txt
:
Який редактор використовувати?
Коли ми говоримо, що ‘nano
- це текстовий редактор’, ми
дійсно маємо на увазі ‘текстовий’. У ньому неможливо переглядати або
редагувати таблиці, зображення чи будь-які інші зручні для сприйняття
людиною дані. Ми використовуємо його у прикладах, оскільки це один із
найпростіших текстових редакторів. Однак, через це він може виявитися
недостатньо потужним або гнучким для складніших завдань, які вам
потрібно буде виконати після завершення цього семінару. У системах Unix
(таких як Linux та macOS), багато програмістів використовують [Emacs]
(https://www.gnu.org/software/emacs/) чи Vim (обидва вимагають більше часу на
вивчення), або графічний редактор, такий як Gedit чи VScode. У Windows, можливо, ви
захочете скористатися Notepad++. Операційна система
Windows також має вбудований редактор з назвою notepad
,
який можна запустити з командного рядка так само, як і nano
для цього семінару.
Незалежно від того, яким редактором ви користуєтеся, вам потрібно знати, де він шукає і зберігає файли. Якщо ви запускаєте його з термінала, він (імовірно) використовуватиме ваш поточний робочий каталог як розташування за замовчуванням. Однак, якщо ви використовуєте меню “Пуск” вашого комп’ютера, файли за замовчуванням можуть зберігатися замість цього на робочому столі або в каталозі “Документи” (Documents). Ви можете змінити це, перейшовши до іншого каталогу під час першого виконання команди “Зберегти як…” (“Save As…”).
Наберемо кілька рядків тексту.
{alt=“Скриншот текстового
редактора nano в дії з текстом”У минулому це було - публікуй чи зникни,
а наразі стало - ділися та процвітай”}
Як тільки ми будемо задоволені нашим текстом, нам треба використати
комбінацію Ctrl+O (утримуючи клавішу
Ctrl or Control, натисніть клавішу O),
щоб зберегти наші дані на диск. Потім нам буде запропоновано вказати
ім’я файлу, у якому зберігатиметься наш текст. Натисніть
Return, щоб прийняти запропоновану за замовчуванням назву
draft.txt
.
Як тільки файл було збережено, скористаємось комбінацією клавіш Ctrl+X, щоб вийти з редактора і повернутися до термінала.
Клавіша Control, Ctrl або ^
Клавіші Control також називається клавішею ‘Ctrl’. Існує декілька способів, якими може бути описане використання клавіші Control. Наприклад, ви можете побачити вказівку натиснути клавішу Control і, утримуючи її натиснутою, потім натиснути клавішу X, описану будь-яким з наступних способів:
Control-X
Control+X
Ctrl-X
Ctrl+X
^X
C-x
У nano, у нижній частині екрана ви побачите
^G Get Help ^O WriteOut
. Це означає, що ви можете
скористатися Control-G
для отримання довідки й
Control-O
для збереження вашого файлу.
Після завершення роботи команда nano
не залишає жодних
даних на екрані, але ls
тепер показує, що ми створили файл
з назвою draft.txt
:
ВИХІД
draft.txt
Створення файлів іншим способом
Ми побачили, як створювати текстові файли за допомогою редактора
nano
. Тепер спробуйте виконати наступну команду:
Що зробила команда
touch
? Якщо ви відкриєте поточний каталог у файловому провіднику, чи видно в ньому цей файл?Скористуйтеся
ls -l
для перегляду файлів. Який розмір має файлmy_file.txt
?У яких випадках доцільно створювати файл саме таким чином?
Команда
touch
створює новий файл з назвоюmy_file.txt
у вашому поточному каталозі. Щоб переконатися, що файл створено, скористайтеся командоюls
. Файлmy_file.txt
також можна переглянути у вашому графічному провіднику файлів.Коли ви перевіряєте файл за допомогою
ls -l
, зверніть увагу, що розмірmy_file.txt
— 0 байт. Це означає, що файл порожній. Якщо відкрити його в редакторі, ви не знайдете в ньому жодного вмісту.Іноді програми не генерують вихідні файли автоматично, а потребують, щоб порожні файли були створені заздалегідь. Потім під час виконання програма шукає наявний файл, щоб заповнити його своїми даними. За допомогою команди
touch
можна ефективно створити порожній текстовий файл для подальшого використання такими програмами.
Що ховається в імені?
Ви, мабуть, помітили, що всі файли Неллі називаються ‘щось крапка
щось’, і у цій частині уроку ми завжди використовували розширення
.txt
. Це лише умовність: ми можемо назвати файл
mythesis
або майже як завгодно. Однак, більшість людей
здебільшого використовують назви, що складаються з двох частин для того,
щоб допомогти їм (і їхнім програмам) розрізняти різні типи файлів. Друга
частина такого імені називається розширенням файлу і вказує тип даних у
файлі: .txt
вказує на простий текстовий файл,
.pdf
вказує на PDF-документ, .cfg
- це
конфігураційний файл з параметрами для тієї чи іншої програми,
.png
- зображення у форматі PNG, і так далі.
Це лише умовність, хоча й важлива. Файли містять лише байти: це ми та наші програми будемо їх відповідно інтерпретувати — як текст, PDF-документи, конфігураційні файли, зображення тощо.
Якщо ви назвете зображення кита у форматі PNG як
whale.mp3
, це не перетворить його якимось чарівним чином на
запис пісні кита, хоча це може змусити операційну систему
спробувати відкрити його за допомогою музичного плеєра. У цьому випадку,
якщо хтось двічі клацне на файлі whale.mp3
у файловому
провіднику, музичний програвач автоматично (і помилково) спробує
відкрити файл whale.mp3
.
Переміщення файлів і каталогів
Повернемося до каталогу
shell-lesson-data/exercise-data/writing
:
У нашому каталозі thesis
є файл draft.txt
,
з не надто інформативною назвою, тому змінімо назву файлу за допомогою
команди mv
, що є скороченням від ‘move’ (з англ. -
‘переміщати’):
Перший аргумент говорить mv
, що ми “переміщаємо”, а
другий - куди саме. У цьому випадку ми переміщуємо
thesis/draft.txt
до thesis/quotes.txt
, що має
той самий ефект, що і перейменування файлу. Після цього ls
підтверджує, що thesis
тепер містить один файл з назвою
quotes.txt
:
ВИХІД
quotes.txt
Слід бути обережним, вказуючи ім’я цільового файлу, оскільки
mv
приховано перезапише будь-який наявний файл з такою
самою назвою, а це може призвести до втрати даних. За замовчуванням
mv
не запитуватиме підтвердження перед перезаписом файлів.
Однак додатковий параметр mv -i
(або
mv --interactive
) змусить mv
запросити таке
підтвердження.
Зверніть увагу, що mv
також працює з каталогами.
Перемістимо quotes.txt
до поточного робочого каталогу.
Знову скористаємося mv
, але цього разу ми використаємо лише
назву каталогу як другий аргумент щоб повідомити mv
, що ми
хочемо зберегти назву файлу, але перемістити файл у нове місце. (Ось
чому команда називається ‘перемістити’.) У цьому випадку ми
використовуємо спеціальну назву .
поточного каталогу, про
яку ми згадували раніше.
Наслідком цього буде переміщення файлу з початкового каталогу до
поточного робочого каталогу. Тепер ls
показує нам, що
каталог thesis` порожній:
ВИХІД
$
Крім того, ми можемо переконатися, що файл quotes.txt
більше не присутній у каталозі thesis
, спробувавши показати
інформацію про нього:
ПОМИЛКА
ls: cannot access 'thesis/quotes.txt': No such file or directory
Команда ls
, якщо вказати ім’я файлу або каталогу як
аргумент, виводить лише список запитуваних файлів або каталогів. Якщо
вказаного файлу не існує, термінал поверне помилку — як ми вже бачили
раніше. Таким чином ми можемо перевірити, що файл
quotes.txt
тепер знаходиться у поточному каталозі:
ВИХІД
quotes.txt
Переміщення файлів до нового каталогу
Після виконання наступних команд Джеймі зрозуміла, що помістила файли
sucrose.dat
та maltose.dat
не до того
каталогу. Файли потрібно було помістити у каталог raw
.
BASH
$ ls -F
analyzed/ raw/
$ ls -F analyzed
fructose.dat glucose.dat maltose.dat sucrose.dat
$ cd analyzed
Заповніть пропуски, щоб перемістити ці файли до каталогу
raw/
(тобто туди, куди вона забула їх помістити)
Копіювання файлів і каталогів
Команда cp
працює майже так само, як і mv
,
але замість переміщення копіює файл. Ми можемо перевірити результат за
допомогою ls
з двома шляхами у ролі параметрів, адже
ls
та більшість команд Unix здатні приймати декілька
аргументів одночасно:
ВИХІД
quotes.txt thesis/quotations.txt
Ми також можемо скопіювати каталог і весь його вміст за допомогою рекурсивної опції
-r
, наприклад, для створення резервної копії каталогу:
Ми можемо перевірити результат, переглянувши вміст каталогів
thesis
та thesis_backup
:
ВИХІД
thesis:
quotations.txt
thesis_backup:
quotations.txt
Важливо додати опцію -r
. Якщо ви хочете скопіювати
каталог і не вкажете цей параметр ви побачите повідомлення про те, що
каталог було пропущено, оскільки -r
не вказано.
Перейменування файлів
Припустімо, що ви створили у поточному каталозі простий текстовий
файл, який містить список статистичних тестів, які вам знадобляться для
аналізу ваших даних, і назвали його statstics.txt
Після створення і збереження цього файлу ви зрозуміли, що неправильно написали назву файлу! Ви хочете виправити помилку. Яку з наведених нижче команд ви можете використати для цього?
cp statstics.txt statistics.txt
mv statstics.txt statistics.txt
mv statstics.txt .
cp statstics.txt .
- Ні. Хоча це створить файл з правильною назвою, неправильно названий файл все одно існуватиме у каталозі, і його потрібно буде видалити.
- Так, це спрацює для перейменування файлу.
- Ні, крапка (.) вказує, куди перемістити файл, але не надає нового імені файлу; файли з однаковими іменами не можуть бути створені.
- Ні, крапка (.) вказує, куди скопіювати файл, але не надає нового імені файлу; файли з однаковими іменами не можуть бути створені.
Переміщення та копіювання
Що виводить остання команда ls
у наведеній нижче
послідовності?
ВИХІД
/Users/jamie/data
ВИХІД
proteins.dat
BASH
$ mkdir recombined
$ mv proteins.dat recombined/
$ cp recombined/proteins.dat ../proteins-saved.dat
$ ls
proteins-saved.dat recombined
recombined
proteins.dat recombined
proteins-saved.dat
Ми розпочинаємо роботу в каталозі /Users/jamie/data
і
створюємо нову папку з назвою recombined
. Другий рядок
переміщує (mv
) файл proteins.dat
до нового
каталогу (recombined
). Третій рядок робить копію файлу,
який ми щойно перемістили. Складність полягає у тому, куди саме було
скопійовано цей файл. Нагадаємо, що ..
означає “піднятися
на рівень вище”, тому скопійований файл тепер знаходиться у
/Users/jamie
. Зверніть увагу, що ..
інтерпретується відносно поточного робочого каталогу, а
не відносно розташування файлу, який копіюється. Отже,
єдине, що буде показано за допомогою команди ls
(у каталозі
/Users/jamie/data
) - це каталог
recombined
.
- Ні, див. пояснення вище. Каталог
proteins-saved.dat
розташовано у каталозі/Users/jamie
- Так
- Ні, див. пояснення вище. Файл
proteins.dat
знаходиться в каталозі/Users/jamie/data/recombined
- Ні, див. пояснення вище. Файл
proteins-saved.dat
знаходиться в каталозі/Users/jamie
Видалення файлів і каталогів
Повертаючись до каталогу
shell-lesson-data/exercise-data/writing
, давайте почистимо
цей каталог, видаливши створений нами файл quotes.txt
. Для
цього ми скористаємося командою Unix rm
(скорочення від
англ. remove
- видаляти):
Ми можемо перевірити видалення файлу за допомогою
ls
:
ПОМИЛКА
ls: cannot access 'quotes.txt': No such file or directory
Видалення - це назавжди
В терміналі Unix немає кошика для відновлення видалених файлів (хоча у більшості графічних інтерфейсів Unix він є). Натомість коли ми видаляємо файли, вони від’єднуються від файлової системи, щоб їх місце на диску можна було використати повторно. Інструменти для пошуку та відновлення видалених файлів існують, але вони не гарантують успішного відновлення, оскільки комп’ютер може відразу перезаписати місце, яке займав файл.
Безпечне використання rm
Що відбувається, коли ми виконуємо
rm -i thesis_backup/quotations.txt
? Навіщо нам може бути
потрібен цей захист при використанні rm
?
ВИХІД
rm: remove regular file 'thesis_backup/quotations.txt'? y
Параметр -i
призведе до окремого запиту перед (кожним)
вилученням (використовуйте Y для підтвердження вилучення або
N, щоб зберегти файл). У командному терміналі Unix немає
кошика, тому видалені файли зникнуть назавжди. Використання опції
-i
дає можливість перевірити, що ми видаляємо лише обрані
файли.
Якщо ми спробуємо видалити каталог thesis
за допомогою
rm thesis
, ми отримаємо повідомлення про помилку:
ПОМИЛКА
rm: cannot remove `thesis': Is a directory
Це відбувається тому, що команда rm
за замовчуванням
працює лише з файлами, а не з каталогами.
Команда rm
може видалити каталог і весь його вміст, якщо
додати рекурсивний параметр -r
, і це станеться без жодних
запитів на підтвердження:
Оскільки файли, видалені за допомогою терміналу не відновлюються,
команду rm -r
слід застосовувати з великою обережністю (ви
можете додати інтерактивну опцію rm -r -i
).
Операції з декількома файлами та каталогами
Час від часу нам знадобиться скопіювати або перемістити кілька файлів одночасно. Для цього треба надати список імен окремих файлів, або вказати шаблон імен за допомогою символів підстановки. Це символи, які можна використовувати для представлення невідомих символів або груп символів під час навігації по файловій системі Unix.
Копіювання кількох файлів водночас
Для цієї вправи ви можете випробувати команди у каталозі
shell-lesson-data/exercise-data
.
Що робить команда cp
у наведеному нижче прикладі, коли
їй надано декілька імен файлів і назву каталогу?
Що робить команда cp
у наведеному нижче прикладі, коли
їй задано три або більше імен файлів?
ВИХІД
basilisk.dat minotaur.dat unicorn.dat
Якщо надано декілька імен файлів та ім’я каталогу (каталог
призначення має бути останнім аргументом), команда cp
копіює файли до вказаного каталогу.
Якщо надано тільки три імені файлів, то cp
видасть
помилку, подібну до наведеної нижче, бо останній аргумент повинен бути
ім’ям каталогу.
ПОМИЛКА
cp: target 'basilisk.dat' is not a directory
Використання символів підстановки для роботи з кількома файлами одночасно
Символи підстановки
Символ *
- це символ підстановки
(wildcard), який відповідає нулю або більшій кількості будь-яких
символів. Розглянемо каталог
shell-lesson-data/exercise-data/proteins
:
*.pdb
відповідає ethane.pdb
,
propane.pdb
і кожному файлу, який закінчується на ‘.pdb’. З
іншого боку, p*.pdb
підходить тільки для файлів
pentane.pdb
і propane.pdb
, оскільки початкова
літера ‘p’ лише збігається з назвами файлів, які починаються з літери
‘p’.
Символ ?
також є символом підстановки, але він
відповідає рівно одному будь-якому символу. Отже,
?ethane.pdb
буде відповідати methane.pdb
, тоді
як *ethane.pdb
відповідає як ethane.pdb
, так і
methane.pdb
.
Символи підстановки можна використовувати разом, комбінуючи їх у
шаблонах. Наприклад, ???ane.pdb
відповідає трьом символам,
за якими слідує ane.pdb
, що дає
cubane.pdb ethane.pdb octane.pdb
.
Коли термінал бачить символ підстановки, він розгортає його для
створення списку відповідних імен файлів до запуску команди,
яку було введено. Як виняток, якщо вираз підстановки не відповідає
жодному файлу, Bash передасть вираз як аргумент до команди, якою вона є.
Наприклад, введення ls *.pdf
у каталозі
proteins
(який містить лише файли з іменами, що
закінчуються на .pdb
) призведе до повідомлення про те, що
не існує файлу з назвою *.pdf
. Втім, зазвичай команди на
кшталт wc
і ls
показують списки імен файлів,
які відповідають цим виразам, але не самим символам підстановки. Саме
термінал, а не інші програми, виконує розкриття символів
підстановки.
Отримання переліку імен файлів, що відповідають шаблону
При виконанні в каталозі alkanes
, яка з команд
ls
видасть наступний результат?
ethane.pdb methane.pdb
ls *t*ane.pdb
ls *t?ne.*
ls *t??ne.pdb
ls ethane.*
Відповіддю є 3.
1.
показує всі файли, назви яких починаюьться з нуля або
більше символів (*
), за якими йде літера t
,
потім нуль або більше символів (*
) і далі
ane.pdb
. Це дасть
ethane.pdb methane.pdb octane.pdb pentane.pdb
.
2.
показує всі файли, назви яких починаються з нуля або
більше символів (*
), за якими йде літера t
,
потім один будь-який символ (?
), потім ne.
і
далі нуль або більше символів (*
). Це дасть нам
octane.pdb
і pentane.pdb
, але не збігається ні
з чим, що закінчується на thane.pdb
.
3.
виправляє проблеми варіанта 2, вимагаючи два символи
(??
) між t
і ne
. Це і є
рішення.
4.
показує лише файли, що починаються з
ethane.
.
Більше про символи підстановки
Саманта має каталог, який містить дані калібрування, набори даних та їх описи:
BASH
.
├── 2015-10-23-calibration.txt
├── 2015-10-23-dataset1.txt
├── 2015-10-23-dataset2.txt
├── 2015-10-23-dataset_overview.txt
├── 2015-10-26-calibration.txt
├── 2015-10-26-dataset1.txt
├── 2015-10-26-dataset2.txt
├── 2015-10-26-dataset_overview.txt
├── 2015-11-23-calibration.txt
├── 2015-11-23-dataset1.txt
├── 2015-11-23-dataset2.txt
├── 2015-11-23-dataset_overview.txt
├── backup
│ ├── calibration
│ └── datasets
└── send_to_bob
├── all_datasets_created_on_a_23rd
└── all_november_files
Перед тим, як вирушити на чергову польову подорож, вона хоче створити резервну копію даних і надіслати деякі набори своєму колезі Бобу. Саманта використовує наступні команди щоб виконати цю роботу:
BASH
$ cp *dataset* backup/datasets
$ cp ____calibration____ backup/calibration
$ cp 2015-____-____ send_to_bob/all_november_files/
$ cp ____ send_to_bob/all_datasets_created_on_a_23rd/
Допоможіть Саманті, заповнивши пропуски.
Отримана структура каталогів повинна виглядати наступним чином:
BASH
.
├── 2015-10-23-calibration.txt
├── 2015-10-23-dataset1.txt
├── 2015-10-23-dataset2.txt
├── 2015-10-23-dataset_overview.txt
├── 2015-10-26-calibration.txt
├── 2015-10-26-dataset1.txt
├── 2015-10-26-dataset2.txt
├── 2015-10-26-dataset_overview.txt
├── 2015-11-23-calibration.txt
├── 2015-11-23-dataset1.txt
├── 2015-11-23-dataset2.txt
├── 2015-11-23-dataset_overview.txt
├── backup
│ ├── calibration
│ │ ├── 2015-10-23-calibration.txt
│ │ ├── 2015-10-26-calibration.txt
│ │ └── 2015-11-23-calibration.txt
│ └── datasets
│ ├── 2015-10-23-dataset1.txt
│ ├── 2015-10-23-dataset2.txt
│ ├── 2015-10-23-dataset_overview.txt
│ ├── 2015-10-26-dataset1.txt
│ ├── 2015-10-26-dataset2.txt
│ ├── 2015-10-26-dataset_overview.txt
│ ├── 2015-11-23-dataset1.txt
│ ├── 2015-11-23-dataset2.txt
│ └── 2015-11-23-dataset_overview.txt
└── send_to_bob
├── all_datasets_created_on_a_23rd
│ ├── 2015-10-23-dataset1.txt
│ ├── 2015-10-23-dataset2.txt
│ ├── 2015-10-23-dataset_overview.txt
│ ├── 2015-11-23-dataset1.txt
│ ├── 2015-11-23-dataset2.txt
│ └── 2015-11-23-dataset_overview.txt
└── all_november_files
├── 2015-11-23-calibration.txt
├── 2015-11-23-dataset1.txt
├── 2015-11-23-dataset2.txt
└── 2015-11-23-dataset_overview.txt
Упорядкування каталогів і файлів
Джеймі працює над проєктом і бачить, що її файли не дуже добре впорядковані:
ВИХІД
analyzed/ fructose.dat raw/ sucrose.dat
Файли fructose.dat
та sucrose.dat
містять
результати її аналізу. Яку (які) команду (команди), розглянуту
(розглянуті) у цьому уроці, їй потрібно виконати, щоб наведені нижче
команди вивели результати наведені нижче?
ВИХІД
analyzed/ raw/
ВИХІД
fructose.dat sucrose.dat
Відтворення структури каталогів
Ви починаєте новий експеримент і бажаєте продублювати структуру каталогів з попереднього експерименту, щоб потім додати нові дані.
Припустимо, що попередній експеримент знаходиться у каталозі з назвою
2016-05-18
, який містить каталог data
, який
аналогічно містить каталоги raw
і processed
у
яких містяться файли даних. Мета полягає у копіюванні структури
2016-05-18
до каталогу 2016-05-20
таким чином,
щоб ваша фінальна структура виглядала наступним чином:
ВИХІД
2016-05-20/
└── data
├── processed
└── raw
Який з наведених нижче наборів команд досягне цієї мети? Що зроблять інші команди?
Перші два набори команд досягають цієї мети. Перший набір використовує відносні шляхи для створення каталогу верхнього рівня перед створенням підкаталогів.
Третій набір команд призведе до помилки, оскільки поведінка
mkdir
за замовчуванням не створює підкаталог в каталозі, що
не існує: спочатку мають бути створені каталоги проміжних рівнів.
Четвертий набір команд теж досягає цієї мети. Пам’ятайте, що опція
-p
, після якої вказується шлях до одного або декількох
каталогів, змусить mkdir
створити будь-які проміжні
підкаталоги за потреби.
Останній набір команд створить каталоги ‘raw’ і ‘processed’ на тому ж рівні, що і каталог ‘data’.
-
cp [old] [new]
копіює файл. -
mkdir [path]
створює новий каталог. -
mv [old] [new]
переміщує (перейменовує) файл або каталог. -
rm [path]
вилучає (видаляє) файл. -
*
відповідає нулю або більшій кількості символів в імені файлу, тому*.txt
відповідає всім файлам, імена яких закінчуються на.txt
. -
?
відповідає будь-якому одному символу у назві файлу, тому?.txt
відповідаєa.txt
, але неany.txt
. - Використання клавіші Control можна описати різними способами,
зокрема
Ctrl-X
,Control-X
та^X
. - В терміналі немає кошика для сміття: як тільки щось видалено - його неможливо відновити.
- Більшість файлів мають назву на кшталт “щось.розширення”. Розширення не є обов’язковим і нічого не гарантує, але зазвичай використовується для позначення типу даних у файлі.
- Залежно від типу вашої роботи вам може знадобитися потужніший ніж Nano текстовий редактор.