Linux
March 17, 2023

Шпаргалка по Bash

Консоль — удобный и быстрый инструмент управления компьютером. Вводим команду текстом, получаем результат или сообщение об ошибке с указанием в чём ошибка.

Ввод начинается с указания программы (которую вызываем) и может быть дополнен аргументами и ключами, указывающими программе что именно нужно сделать или как нужно работать. Пример с аргументом: ls build/css — вызываем утилиту ls, указываем ключ build/css — будет показано содержимое указанной в аргументе папки. Пример с ключом: git --version — взвываем программу git, передаем ключ --version — будет показана версия программы (если установлена).

Работая с консолью, мы всегда «находимся» в какой-то папке (она указана в приглашении командной строки). Если там написано ~, то мы в папке пользователя (зависит от настроек Windows, чаще всего это C:/Users/ВАШЕИМЯПОЛЬЗОВАТЕЛЯ/), если там /d/projects, мы в папке D:/projects.


Файловая система

Просмотр содержимого папки

ls                      # показать содержимое папки
ls -a                   # то же, но показывать и скрытые файлы и папки
ls -a -1                # то же, но в один столбец
ls -hF -1 --sort=extension # показать содержимое папки «красиво, в один столбец»
ls build/css            # показать содержимое папки ТЕКУЩАЯ_ПАПКА/build/css
ls /d/projects          # показать содержимое папки D:/projects

Переход по папкам

Пользователь всегда находится в какой-то папке, она (или полный путь) всегда показана до области ввода команд.

cd projects             # переход в папку projects, которая есть в текущей папке
cd /d/projects          # windows: переход в папку projects, расположенную по адресу D:/projects 
cd /c/Program\ Files    # windows: переход в C/:Program Files 
cd ..                   # переход к родительской папке 
cd -                    # переход к последней рабочей папке
cd !$                   # переход в новосозданную папку (после mkdir)

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


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

mkdir project                        # создать папку с именем «project»
mkdir project project/css project/js # создать несколько папок
mkdir -p project/{css,js}            # то же, что выше
touch index.html                     # создать файл
touch index.html css/style.css js/script.js # создать файлы (папки css/ и js/ должны уже существовать)

Копирование файлов

cp index.html catalog.html # копирование файла index.html в тот же каталог с переименованием в catalog.html
cp index.html old/         # копирование файла index.html в папку old/ (все произойдет в текущей папке)
cp temp/ temp2/ -r         # дублирование каталога

Переименование или перемещение файлов

mv index.html old              # перемещение файла в папку
mv index.html old/new_name.txt # перемещение файла в папку с переименованием файла
mv order.txt orderNew.txt      # переименовать файл

Удаление папок и файлов

rm ghost.png             # удалить файл
rm -rf old               # удалить папку и всё из нее

Разные мелочи

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

rm -rf node_modules && npm i # выполнение первой части команды (до &&) и, при отсутствии ошибок, второй части (после &&)
pwd                   # «где я?»
cat ~/.bash_profile   # вывести в консоль содержимое файла
ls -a >> file.txt     # записать в file.txt результат вывода команды ls -a
echo 'some text' >> readme.md # дописать строку в конец файла
df -h                 # показать статистику использования пространства на дисках
grep -i -n --color 'carousel' index.html css/style.css # найти слово carousel в двух указанных файлах (с игнором регистра), вывести строки с этим словом и номера строк (искомое слово подсветить)
grep word -r project  # найти слово word во всех файлах в папке project
find . -iname '*ind*' # найти в текущей папке (и подпапках) все файлы, имена которых содержат ind и показать списком

Алиасы

Для команд можно создавать алиасы (короткие синонимы команд). Для этого в папке пользователя (OSX: /Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.bash_profile, Windows: C:/Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.bash_profile) нужно вписать строки, наподобие alias pro='cd /d/projects' (одна строка в файле — один алиас). Если файла .bash_profile нет, его можно создать. Это обычный текстовой файл.

После добавления алиасов нужно перезапустить терминал.