Вступление
Мое знакомство с Линуксом началось в 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 дважды — тогда список всех подходящих команд будет выведен в терминале. Аналогично работает автозаполнение аргументов для некоторых команд. Например, в текущей папке есть такой набор директорий:
Если введем:
cd Do
И нажмем TAB дважды — появится такая подсказка:
А если введем:
cd Mus
И нажмем 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
Выходит из терминала.