Шпаргалка по основным командам Bash

Elman Mamedov
NOP::Nuances of Programming
8 min readJan 7, 2021

Неважно кто вы, разработчик ПО, специалист по данным, менеджер ИТ-инфраструктуры или просто любитель компьютеров — вам нужно знать, как пользоваться терминалом в Linux и macOS. Но сложность в том, что необходимо запомнить слишком много команд. И если у вас нет чудо-памяти, время от времени приходится искать в Интернете ту или иную команду.

Сегодня я поделюсь с вами самыми популярным и полезными командными интерпретаторами.

Основные

Помощь

Забыли аргументы для cp? Какая опция у команды mkdir? Вот вам подсказка:

help nano # кратко о команде “nano”man nano # подробная информация о “nano”

Конвейер

Зачастую с его помощью перенаправляют вывод одной команды на ввод другой или приписывают команду к файлу:

a | b # конвейер: передать вывод команды a на ввод ba > file.txt # сохранить вывод команды a в file.txt (перезаписать)a >> file.txt # сохранить вывод команды a в file.txt (добавить)echo “Hello!” | xargs echo # направить вывод первой команды, как аргумент второй

Фильтрация вывода

Бывает, что команда выводится слишком долго. В этом случае вы либо разделите страницу с помощью команды more или less, либо выведите строки, которые содержат специальное слово или предложение с grep:

cat verylongfile.txt | more # постранично показывает содержимое verylongfile.txtcat verylongfile.txt | постранично показывает содержимое verylongfile.txt, и позволяет перемещаться по файлуcat verylongfile.txt | grep “I love you” # показывает строчку, где расположена строка “I love you”

Очистка экрана

Слишком много текста в терминале? Просто напишите clear и продолжайте работать.

clear # очистка терминала

Система

Информация о системе

С этими командами вы с легкостью получите все подробности о компьютере:

uname -a # показывает информацию о системе (kernel, architecture…)sudo lshw # (только для Linux) предоставляет информацию об аппаратном обеспеченииsudo lshw -short # (только для Linux) краткая информацию об аппаратном обеспеченииlscpu # (только для Linux) Показывает информацию о ЦПlsusb # (только для Linux) вывод информации о подключенном USB устройствеdate # выводит дату и время

Работам с процессами

Следующие команды предоставляют общие сведения о всех процессах, происходящих в системе. В macOS и некоторых дистрибутивах Linux htop не установлен, поэтому перед использованием нужно установить его с помощью стандартного менеджера пакетов (для macOS — Homebrew):

ps # показывает текущие процессы, происходящие в терминальном сеансеps aux # показывает все процессы, происходящие на компьютереhtop # отображает в терминале монитор активности
Команда htop в Linux

Смена пользователей

При открытии терминального окна все вводимые команды выполняются под текущим пользователем. Однако зачастую приходится выполнять команды от привилегированного пользователя, поэтому важно знать, как их сменять внутри оболочки.

su # смена текущего пользователя на администратора(root)su - # смена текущего пользователя на администратора(root), со сменой локальных переменныхsu maria # смена текущего пользователя на "maria"sudo nano # выполнить команду "nano" от имени администратора (root)

Копирование и вставка в буфер обмена

Вы можете скопировать и вставить текст из/в терминал, выделив их и нажав Ctrl + C или Ctrl + V. Но иногда хочется напрямую получить доступ к буферу обмена. И как вы видите ниже, это не так уж и просто, что на Linux, что на macOS.

# Linuxecho "Hello my friend!" | xclip # копировать "Hello my friend!" в буфер обменаxclip -o >> pasted_text.txt # вставить содержимое буфера в текст файла# macOSecho "Hello my friend!" | pbcopy # копировать "Hello my friend!" в буфер обменаpbpaste >> pasted_text.txt # вставить содержимое буфера в текст файла

Переменные и путь

Можно двумя способами определить переменные внутри оболочки: в реальном времени, написав в терминале соответствующую команду, или же определить их в файле .bashrc в домашний каталог, где они будут храниться вечно.

echo "hello" # вывод hello на консольecho $USER # вывод значение переменной USER на консольenv # вывод список всех переменных окруженияset # вывод список всех локальных переменныхMY_FRIENDS=William # создать локальную переменную MY_FRIENDSMY_FRIENDS=$MY_FRIENDS:John:Anna # объединение значения 'John' и 'Anna' в MY_FRIENDSexport MY_FRIENDS # сделать локальную переменную MY_FRIENDS переменной окруженияunset MY_FRIENDS # удалить переменную MY_FRIENDS

Ещё один интересный инструмент — alias (псевдоним), сокращение для длинных команд. Посмотрим, как он строится:

alias clone_my_repo = "git clone http://verylongurl.com" # создать псевдоним

Для тех, кто не знает, путь (Path) – это каталоги, в которых ОС ищет файлы для исполнения. С его помощью можно запустить файл, написав лишь название, даже не нужно знать его расположение. Кроме того, в путь можно добавить папку, а также найти каталог, где находится исполняемый файл, с помощью команд:

export PATH=$PATH:/home/john/myprogram # добавление каталога к пути /home/john/myprogramwhich nano # отобразить расположение исполняемого файла "nano"whereis nano # отобразить расположение исполняемого файла, справочных страниц, исходного кода и т.д. "nano"

Файлы и каталоги

Смена текущего каталога

Для перехода между каталогами файловой системы вам лишь нужно знать, как применять команду cd.

pwd # перейти к текущему каталогуcd # сменить текущий каталог на домашнийcd /bin # перейти в каталог /bincd .. # перейти в родительский каталог

Содержимое каталога

Чтобы вывести в каталоге файлы, папки, а также их свойства, не обойтись без команды ls.

ls # вывести список файлов и каталогов в текущем каталогеls /bin # вывести список файлов и каталогов в /binls -l # вывести подробную информацию (размер, дата...)ls -a # показать скрытые файлы и каталогиls -ld # вывести информацию о текущем каталоге (не файлов)ls my* # вывести файлы с именем, начинающимся на my...tree # показать дерево текущего каталога

Скачать файл из Интернета

Самый простой способ скачать файл с веб-серверов — это команда wget.

wget https://somewebpage.com/somefile.zip # скачать файл с указанного URL в текущий каталог
Скачивание файла с помощью wget

Создать каталог

Если вы хотите создать папку, используйте команду mkdir.

mkdir movies # создать папку с названием "movies" в текущем каталогеmkdir -p movies/genres/scifi # создать папку с названием "movies", вложенный в "genres", и "scifi"

Копирование, перемещение и удаление

Как правило, функции копирования, перемещения и удаления выполняют через файловый менеджер, но можно делать это и через терминал.

rmdir movies # удалить пустой каталог moviesrm -rf movies # удалить каталог movies и его файлыrm file1.txt # удалить файл file1.txtmv /home/michael/myfile.txt /home/john/important.txt # переместить файл из /home/michael в /home/johncp /home/michael/myfile.txt /home/john/important.txt # скопировать файл из /home/michael в /home/johncp -R letters/ memories/ # скопировать содержимое папки "letters" в папку "memories"cp -R letters ~/Desktop # скопировать папку "letters" вставить на рабочий стол

Права доступа и владельцы

Права доступа и владельца файла или каталога можно изменить с помощью команды chmod и chown.

chmod 777 script.sh # изменить права  файла script.shchmod +x script.sh # сделать файл script.sh выполняющимchown guille script.sh # сменить владельца файла "script.sh" на пользователя "guille"./script.sh # запустить script.sh

Поиск файлов

Забыли где файл contacts.json? Хотите вывести все PDF файлы, находящиеся в папке? С помощью команды find вы можете сделать это и многое другое.

find . -name hello.txt # найти файл с названием "hello.txt" в текущем каталогеfind /home/joe/Downloads -name *.pdf # найти PDF файлы в папке Downloadsfind / -executable -atime -10 # найти исполняемые файлы в каталоге root, доступ к котором был 10 минут назадfind ~ -newer reference.txt # найти в домашнем каталоге файл, который редактировался после файла "reference.txt"

Вычисление контрольной суммы SHA256 файла

При скачивании любой программы из Интернета, рекомендуется проверить контрольную сумму SHA, чтобы убедиться, всё ли верно скачалось. И сделать это гораздо легче через терминал:

# Linuxsha256sum file.txt # вычисление контрольной суммы SHA 256 файлаecho -n “foobar” | sha256sum # вычисление контрольной суммы SHA 256 слова “foobar”# macOSshasum -a 256 file.txt # вычисление контрольной суммы SHA 256 файлаecho -n “foobar” | shasum -a 256 # вычисление контрольной суммы SHA 256 слова “foobar”

Сжатие и распаковка TAR/ZIP файлов

Неважно, что у вас TAR или ZIP файл, вы можете распаковать его через терминал или же создать из существующих папок:

# Tar / untartar -cvzf myfile.tar myfolder # сжатие папки "my_folder" в архив "myfile.tar"tar -xvzf myfile.tar # распаковка файла myfile.tar в текущий каталогtar -C /opt/abc -xvzf myfile.tar # распаковка файла myfile.tar в /opt/abc# Zip / unzipzip -r myfile.zip myfolder # сжатие папки "my_folder" в архив "myfile.zip"unzip myfile.zip # распаковка файла myfile.zip в текущий каталог

Свободное место на диске

Хотите узнать доступное место на жестком диске? Или на внешнем? Или в текущем каталоге? В этих вопросах помогает команда df.

df -k . # свободное место в текущем каталогеdf -k # доступное пространство во смонтированных файловых системах
свободное место на моём компьютере

Просмотр содержимого файла

Через терминал можно не только просматривать содержимое текстового файла, но и проводить анализы, например сортировать и менять порядок строк по содержанию, подсчитывать количество строк, слов, символов, и выделить столбцы, если это табличный файл. Рассмотрим их в действии:

# grep: фильтрация по строкамgrep 455 sales.txt # вывести строку, где есть 455# cut: отображение столбцовcut -f 3 sales.txt # вывести только третий столбецcut -f 2-3 sales.txt # вывести 2-ой и 3-ий столбецcut -c 9-19 sales.txt # вывести от 9-ти до 19-ти символов каждой строкиcut -f 1 -d ';' clients.txt # в файле clients.txt использовать ';' в качестве разделителя вместо tab# awk: то же, что и cut, но имеет ещё больше разделителей, фильтров и он более сложный в вычисленииawk '{print $3}' sales.txt # вывести 3-ий столбецawk '{print $2 ", " $3}' sales.txt # вывести 2-ой и 3-ий столбец, и разделить запятойawk '{print $2 + $3}' sales.txt # вывести сумму 2-го и 3-го столбцаawk 'length($0) > 20' sales.txt # вывести все строки длиннее 20 символовawk '$2 > 100' sales.txt # вывести строки, в которых значение второго столбца больше 100# wcwc sales.txt # вывести количество строк, слов и символов в текстовом файлеls -1 | wc # вывести количество строк, слов и символов каждого файла в текущем каталоге# sort: сортировка строк по алфавитуsort sales.txt # сортировка строк файлаsort -r sales.txt # сортировка в обратном порядкеsort -R sales.txt # сортировка в случайном порядкеsort -t $'\t' -k 3n,3 sales.txt # сортировать строки по числовому значению третьего столбца# uniq: отображает неповторяющиеся и повторяющиеся строки файлаuniq hello.txt # опускает повторяющиеся строкиuniq -d hello.txt # выводит только повторяющиеся строкиuniq -u hello.txt # выводит только те строки, у которых нет повторовuniq -c hello.txt # выводит количество повторов для каждой строки

Надеюсь вам понравится эта шпаргалка!

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен

--

--