Знайомство з терміналом


  • Термінал - це програма, основним призначенням якої є читання команд і запуск інших програм.
  • У цьому уроці використовується Bash. Це термінал за замовчуванням у багатьох реалізаціях Unix.
  • Програми можна запускати у Bash шляхом введення команд у вікні командного рядка.
  • Основними перевагами терміналу є високе співвідношення кількості дій до кількості натискань клавіш, підтримка автоматизації повторюваних завдань, а також можливість доступу до віддалених машин.
  • Дуже важлива навичка при використанні оболонки - це вміння доречно використовувати текстові команди.

Навігація по файловій системі


  • Файлова система відповідає за керування інформацією на диску.
  • Інформація зберігається у файлах, які зберігаються в каталогах (теках).
  • Каталоги також можуть зберігати інші підкаталоги, які таким чином створюють дерево каталогів.
  • Команда pwd виводить поточний робочий каталог користувача.
  • Команда ls [path] виводить список з певного файлу або каталогу; команда ls сама по собі виводить список поточного робочого каталогу.
  • Команда cd [path] змінює поточний робочий каталог.
  • Більшість команд приймають параметри, які починаються з одного символу -.
  • Назви каталогів в шляху розділяються символами / в Unix, але \ в Windows.
  • Символ / сам по собі зазначає кореневий каталог усієї файлової системи.
  • Абсолютний шлях вказує на розташування відносно кореня файлової системи.
  • Відносний шлях вказує на розташування, починаючи з поточного каталогу.
  • Символ . сам по собі означає ‘поточний каталог’; .. означає ‘батьківський каталог’ (той, що знаходиться над поточним каталогом).

Робота з файлами та каталогами


  • cp [old] [new] копіює файл.
  • mkdir [path] створює новий каталог.
  • mv [old] [new] переміщує (перейменовує) файл або каталог.
  • rm [path] вилучає (видаляє) файл.
  • * відповідає нулю або більшій кількості символів в імені файлу, тому *.txt відповідає всім файлам, імена яких закінчуються на .txt.
  • ? відповідає будь-якому одному символу у назві файлу, тому ?.txt відповідає a.txt, але не any.txt.
  • Використання клавіші Control можна описати різними способами, зокрема Ctrl-X, Control-X та ^X.
  • В терміналі немає кошика для сміття: як тільки щось видалено - його неможливо відновити.
  • Більшість файлів мають назву на кшталт “щось.розширення”. Розширення не є обов’язковим і нічого не гарантує, але зазвичай використовується для позначення типу даних у файлі.
  • Залежно від типу вашої роботи вам може знадобитися потужніший ніж Nano текстовий редактор.

Канали та фільтри


  • wc підраховує рядки, слова та символи у своїх вхідних даних.
  • cat виводить вміст своїх вхідних даних.
  • sort сортує вхідні дані.
  • head за замовчуванням (тобто без додаткових аргументів) виводить перші 10 рядків вхідних даних.
  • tail за замовчуванням (тобто без додаткових аргументів) виводить останні 10 рядків вхідних даних.
  • command > [file] перенаправляє вивід команди у файл (перезаписуючи будь-який наявний вміст цього файлу, якщо файл вже існує).
  • command >> [file] додає вивід команди до файлу.
  • [first] | [second] є конвеєром: вихід першої команди використовується як вхідні дані для другої.
  • Найкращий спосіб використання терміналу - це комбінування простих однозадачних програм (фільтрів) за допомогою каналів.

Цикли


  • Цикл for повторює команди один раз для кожного елемента списку.
  • Every for loop needs a variable to refer to the thing it is currently operating on.
  • Use $name to expand a variable (i.e., get its value). Також можна використовувати ${name}.
  • Do not use spaces, quotes, or wildcard characters such as ‘*’ or ‘?’ in filenames, as it complicates variable expansion.
  • Give files consistent names that are easy to match with wildcard patterns to make it easy to select them for looping.
  • Use the up-arrow key to scroll up through previous commands to edit and repeat them.
  • Використовуйте Ctrl+R для пошуку попередньо введених команд.
  • Use history to display recent commands, and ![number] to repeat a command by number.

Shell Scripts


  • Save commands in files (usually called shell scripts) for re-use.
  • bash [filename] runs the commands saved in a file.
  • $@ refers to all of a shell script’s command-line arguments.
  • $1, $2, etc., refer to the first command-line argument, the second command-line argument, etc.
  • Place variables in quotes if the values might have spaces in them.
  • Letting users decide what files to process is more flexible and more consistent with built-in Unix commands.

Finding Things


  • find finds files with specific properties that match patterns.
  • grep selects lines in files that match patterns.
  • --help is an option supported by many bash commands, and programs that can be run from within Bash, to display more information on how to use these commands or programs.
  • man [command] displays the manual page for a given command.
  • $([command]) inserts a command’s output in place.