Конспект по основам работы в терминале Linux

Вступление

Мое знакомство с Линуксом началось в 2010 году, когда на 2-м курсе техникума у нас появился соответствующий предмет. Тогда я снес Windows 7 со своего ноута и поставил на него Ubuntu. Я шел на красный диплом, а препод по Линуксу был довольно требовательным (и своеобразным), поэтому материал по работе с терминалом, полученный на парах, приходилось повторять дома. Не помню, был ли у нас в конце года экзамен или зачет, но пятерку я в итоге получил.

Ubuntu мне понравилась, я оставил ее на ноутбуке, но т.к. у меня не было необходимости использовать терминал в повседневной жизни — многие вещи я позабыл. Тем не менее, иногда возникает необходимость подключиться к удаленному серверу по SSH и кое-что там сделать. В итоге я решил найти какой-нибудь бесплатный онлайн-курс, чтобы восстановить свои знания, а эта статья — своеобразный конспект. Здорово, если этот материал будет полезен кому-то, кроме меня.

Основы работы в терминале

Команды

С терминалом (командной строкой) взаимодействуем путем ввода в него команд. Команды выглядят следующим образом:

команда [опции] [аргументы]

команда — сама команда
опции — это настройки команды (грубо говоря). Т.е. с их помощью мы можем регулировать поведение команды
аргументы — данные, которые передаем в команду

Пример:

cp -r /home/alex/music/ /home/alex/audio/

здесь:
cp — это команда
-r — опции (в данном случае — одна опция)
/home/alex/music/ /home/alex/audio/ — аргументы

Опции

Опции идут после названия команды, перед опциями ставится символ тире. Опции могут быть указаны через пробел, например:

ls -a -h -l

Или без пробела, например:

ls -ahl

У большинства команд (но не у всех) порядок опций роли не играет. Например:

ls -hal

То же самое, что и:

ls -alh

У некоторых опций может быть не только короткий, но и длинный вариант написания. Например:

ls --all

То же самое, что и:

ls -a

Перед длинными вариантами ставится два символа тире.

Очень полезная команда man

Команда man (сокращение от manual) позволяет получить справку по указанной команде. Например:

man ls

Выведет мануал по команде ls. Чтобы выйти из режима справки — нужно нажать клавишу Q (если не работает — убедитесь, что выбрана английская раскладка клавиатуры).

Команды для перемещения по древу каталогов

pwd

Сокращение от Print Working Directory. Выводит директорию, в которой сейчас находимся.

ls

Сокращение от list. Выводит список файлов/папок директории. Некоторые опции:

-a — отображать скрытые файлы/папки (названия которых начинается с точки)
-h — человекопонятный формат размера файлов/папок (например 4.0К вместо 4096, т.е. показывает размер не в байтах, а в более подходящих единицах)
-l — вывести информацию в формате списка

Примеры:

ls -a 

— выведет список всех файлов/папок текущей директории

ls /home/alex/

— выведет список файлов/папок директории /home/alex/

cd

Сокращение от change directory. Переходит в указанную папку.

Примеры:

cd ..

— перейти в родительскую папку

cd /home/alex/

— перейти в папку /home/alex/

Абсолютные и относительные пути к файлам и папкам

При работе с некоторыми командами нам нужно указывать путь к файлу или папке. Пути бывают двух типов:

Абсолютный путь — путь к файлу/папке от корневой директории, всегда начинается с символа / (слэш). Корневая директория — это основная папка, в которой лежат все остальные папки/файлы. Для сравнения: в Windows роль корневых папок играют диски C / D / E и т.д. (не уверен в 100% корректности данного сравнения, но это должно помочь понять суть корневой директории).

Относительный путь — путь к файлу/папке относительно текущей директории.

В путях можно использовать следующие символы:

. (точка) — текущая директория
.. (две точки) — родительская директория
* (звездочка) — любое количество любых символов
? (вопрос) — один любой символ

Примеры:

Допустим мы находимся в папке /home/alex/music/ и хотим перейти в папку /home/alex/video/

Мы можем сделать это используя абсолютный путь:

cd /home/alex/video/

Или относительный путь:

cd ../video/

Создание и удаление файлов и папок

mkdir

Сокращение от make directory, создает папку.

Примеры:

mkdir music

— создаст папку music внутри текущей папки

mkdir music/metal

— создаст папку metal внутри папки music, но только если папка music существует.

Если нужно создать папку внутри еще не созданной папки — используем опцию -p (сокращение от parent):

mkdir -p music/metal/sepultura

— создаст директорию sepultura. Если папок music и music/metal не существуют — они будут созданы.

touch

Создает файл. Пример:

touch /home/alex/demo.txt

— создаст файл demo.txt в папке /home/alex/

rm

Сокращение от remove. Удаляет файл или папку. Примеры:

rm demo.txt

— удалит файл demo.txt

rm /home/alex/documents/*.txt

— удалит все файлы с расширением .txt из папки /home/alex/documents/

Для удаления папки обязательно указываем опцию -r

rm -r /home/alex/music/filipkirkorov/

— удалит указанную папку и всё её содержимое

rm -rf /home/alex/music/svetlanaloboda/

— удалит папку и все её содержимое, не задавая лишних вопросов

cp

Сокращение от copy. Копирует файл или папку.

cp [откуда] [куда]

Если в «куда» не указали название файла, то будет взято его исходное название. Примеры:

cp /home/alex/kniga.txt /home/alex/books/

— скопирует файл kniga.txt из /home/alex/ в /home/alex/books/

cp /home/alex/kniga.txt  /home/alex/books/book.txt

— скопирует файл kniga.txt из /home/alex/ в /home/alex/books/ , но название файла изменится на book.txt

Для копирования папки обязательно добавляем опцию -r

cp -r /home/alex/history/ /home/alex/books/

— скопирует папку history из /home/alex/ в /home/alex/books/

mv

Сокращение от move. Перемещает файл или папку. Примеры:

mv /home/alex/kniga.txt /home/alex/books/

— переместить файл kniga.txt из /home/alex/ в /home/alex/books/

mv /home/alex/kniga.txt /home/alex/books/knizhka.txt

— переместить файл kniga.txt из /home/alex/ в /home/alex/books/ и переименовать его в knizhka.txt

mv /home/alex/history/ /home/alex/books/

— переместить папку history из /home/alex/ в /home/alex/books/

mv /home/alex/history/ /home/alex/books/newhistory/

— переместить папку history из /home/alex/ в /home/alex/books/ и переименовать её в newhistory

Горячие клавиши в терминале

Команды, введенные ранее

Терминал помнит список последних команд, которые мы вводили. Для перемещения между введенными ранее командами используем клавиши «стрелка вверх» и «стрелка вниз».

Стрелка вверх — предыдущая команда
Стрелка вниз — следующая команда

Перемещение по текущей команде

Для перемещения по текущей команде используем клавиши «стрелка влево» и «стрелка вправо». Для перемещения в начало/конец команды используются такие комбинации:

CTRL+A — переместиться в начало команды
CTRL+E — переместиться в конец команды

Копировать/вставить

Комбинации клавиш для копировать/вставить:

CTRL+SHIFT+C — копировать из терминала
CTRL+SHIFT+V — вставить из терминала

Автодополнение команды

Для автоматического дополнения команды нажимаем клавишу TAB. Если в системе только 1 программа, которая начинается с введенных символов — она будет подставлена в качестве текущей команды. Если таких программ несколько — ничего не произойдет. Но можно нажать TAB дважды — тогда список всех подходящих команд будет выведен в терминале. Аналогично работает автозаполнение аргументов для некоторых команд. Например, в текущей папке есть такой набор директорий:

ls внутри ~
ls внутри ~

Если введем:

cd Do

И нажмем TAB дважды — появится такая подсказка:

Появилась подсказка с Documents/ и Downloads/
Появилась подсказка: Documents/ Downloads/

А если введем:

cd Mus
Ввели cd Mus
Ввели cd Mus

И нажмем TAB один раз — путь автоматически добавится в команду:

Нажали TAB один раз
Нажали TAB один раз

Просмотр и редактирование файлов

cat

Выводит в терминал всё содержимое файла. Подходит для просмотра небольших файлов. Пример:

cat book.txt

— выведет в терминал всё содержимое файла book.txt

less

Просмотр файла с функцией поиска и перемещения по файлу. Более удобен при просмотре больших файлов, нежели cat. Пример:

less book.txt

— выведет в терминал содержимое файла book.txt

Горячие клавиши:
q — выйти из режима просмотра
/ — войти в режим поиска по файлу
g — перейти в начало файла
G (shift+g) — перейти в конец файла
Стрелка вверх — перемещение по файлу вверх
Стралка вниз — перемещение по файлу вниз

nano

Открывает файл для редактирования. Пример:

nano zametka.txt

— откроет для редактирования файл zametka.txt. Если файл не существует, то он будет создан в момент сохранения изменений.

Сочетания клавиш:
CTRL+O — сохранить изменения
CTRL+X — выйти. При этом будет возможность сохранить (Y) или отменить (N) введенные изменения.
CTRL+G — вызов справки.
Другие сочетания клавиш отображаются внизу терминала.

Работа с архивами

zip

Создает zip архив на основе указанных файлов/папок. Пример:

zip files.zip file1.txt file2.txt

— запакует файлы file1.txt и file2.txt в архив files.zip

zip images.zip pictures photos

— запакует папки pictures и photos в архив images.zip

unzip

Распаковывает zip архив. Пример:

unzip files.zip

— распакует архив files.zip в текущую папку

gzip

Сжимает файл в .gz архив и удаляет исходный файл. В отличие от zip эта команда упаковывает только файлы (папки не упаковывает). Несколько разных файлов в 1 .gz архив упаковать нельзя. Каждый файл упаковывается в отдельный .gz архив. После упаковки исходный файл удаляется. Примеры:

gzip book1.txt

— создаст сжатую версию файла с именем book1.txt.gz. При этом исходный файл book1.txt будет удален.

gzip book1.txt book2.txt

— создаст сжатые версии файлов с именами book1.txt.gz и book2.txt.gz. При этом исходные файлы book1.txt и book2.txt будут удалены.

gunzip

Распаковывает файл из .gz архива и удаляет исходный архив. Примеры:

gunzip book1.txt.gz

— распакует файл в book1.txt. При этом сам book1.txt.gz будет удален.

gunzip book1.txt.gz book2.txt.gz

— распакует файлы в book1.txt и book2.txt соответственно. Файлы book1.txt.gz и book2.txt.gz будут удалены.

tar

Команда для работы с .tar архивами. Запаковывает и распаковывает .tar архивы с возможностью .gz или .bz2 сжатия. Работает с файлами и папками.

Некоторые опции:

-c — создать архив
-x — распаковать архив
-v — выводить сообщения о ходе выполнения
-z — указываем, если работаем с .tar.gz архивом
-f — опция для работы с файлами. Указываем её обязательно. Эта опция всегда указывается в самом конце

Примеры:

tar -cvf books.tar books

— запакует папку books в архив books.tar (без сжатия)

tar -xvf books.tar

— распакует архив books.tar в текущую папку

Для того, чтобы не просто упаковать архив, но и сжать его с помощью gz — добавляем флаг -z

tar -cvzf books.tar.gz books

— запакует папку books в архив books.tar.gz со сжатием в формате .gz

tar -xvzf books.tar.gz

— распакует архив books.tar.gz в текущую папку

Другие полезные команды

clear

Очищает терминал.

exit

Выходит из терминала.