GNU/Linux всё что нужно знать про bash. Часть 1

Январь 10, 2018

Данный цикл статей это мой конспект по командам и их функционалу. Команды, ключи и трюки, необходимые для повседневного использования, то что реально пригодится в работе и для успешной сдачи LPIC-1. Здесь не будет дотошного описания команд и их ключей, для этого есть man, только то что необходимо уметь и прорабатывать время от времени, для владения командной строкой на высоком уровне. К слову, такой порядок команд был выбран для лучшего запоминания и сравнения некоторых их похожих свойств.

Цикл статей:
wc sort uniq cut tee split tr sed rename export alias
man pwd ls du cd touch mkdir ln rm rmdir history
cp scp mv dd diff diff3 md5sum
echo cat tac head tail more less ed nano vim
tar gzip gunzip bzip2 bunzip2 zip unzip
grep find locate which whereis file

Существует множество командных оболочек(shell) для терминала — sh, bash, csh, dash, tsch.
bash — одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде GNU/Linux, где она часто используется в качестве предустановленной командной оболочки.
echo $SHELL — Узнать какая оболочка используется вами в текущий момент

wc sort uniq cut ln tee tr split sed rename export alias

Перенаправление

< file — Использовать файл как источник данных для стандартного потока ввода.
>testfile — Направить стандартный поток вывода в файл. Если файл не существует, он будет создан, если существует — перезаписан.
cat >testfile — Перенаправляем поток вывода в файл (Ctrl+d — завершить выполнение cat).
cat >>testfile — Допишем поток вывода в файл.
&> — Записать оба потока в один файл.
2>&1 — Поток ошибок направить на стандартный вывод (перенаправление одного потока в другой).
1>&2 — Стандартный вывод направить на поток ошибок (перенаправление одного потока в другой).
2>errfile ls /bin/err — Перенаправление ошибок в файл errfile.
2>errfile >testfile ls /bin/err — Ошибки в файл errfile, положительный результат в testfile.
2>errfile ls /bin /err >testfile — Аналогично.
ls -l /bin /err >testfile 2>&1 — Перенаправить поток ошибок в стандартный поток вывода и всё в файл.
cat /dev/null > file.txt — Обнуление файла (/dev/null перенаправление в никуда).
sort < file > file2 — Отсортирует file и сохранит в file2.

f1 | f2 | f3 — Конвеер, программа фильтр.
ls -l /home/user | wc -l — Конвейер перенаправит вывод на wc, а та в свою очередь посчитает количество файлов пользователя user.

Фильтры

wc — Показывает число строк, слов и символов в файле, если не задавать ключи.
-l Количество строк
-w Слов
-m Символов
-c Байт

sort file1 file2 | uniq -u — Отсортировать содержимое двух файлов, отображая только уникальные строки.
sort — Сортирует данные в соответствии с какими-либо критериями (пробел — разделитель по умолчанию).
-t Задать разделитель
-u Скрывает одинаковые объекты
-r Сортировать в обратном порядке
-n Сортировать числа, в порядке возрастания
-k Сортировать по столбцу или колонке (-k2 или -k2.5 — по второму столбцу и пятому символу)
-M Сортировать по порядку месяцев
-d Сортировать только буквы, цифры и пробелы и сортирует как в словаре
-f Все равны, при обычной сортировке заглавные символы идут первыми

uniq — Удаляет повторяющиеся строки. Учитываются только подряд идущие одинаковые строки, часто используют в паре с sort.
cat file1 | sort | uniq — Смотреть уникальные строки file1
-u Выводить только те строки, которые не повторяются
-d Выводить только те строки, которые повторяются
-с Сообщит, сколько было одинаковых строк до их урезания
-i Сравнивать строки без учёта регистра

cut — Извлекает поля из текстовых файлов, к примеру когда нужно вывести только пользователей из файла /etc/passwd.
-f Когда объектом выбора являются колонки, столбцы (file)
-с Когда объектом выбора являются символы (character)
-b Когда объектом выбора являются байты (byte)
-d Задать символ разделения, по умолчания TAB (но можно к примеру : или » «)
cut -c 1,5 /etc/skript — Из файла skript выберет 1 и 5 символы (1-5 — выберет с 1 по 5).
cut -c 6- /etc/skript — Из файла skript выберет символы с 6 и до конца строки.
cut -f 1,2 skript — Из файла skript выберет 1 и 2 колонки.

tee — Разделяет выводимые программой данные, для вывода на дисплей и сохранения в файл.
ping google.com | tee pingresult.txt — Увидим пингование на экране и парралельно запишем в файл.
wc file1 | tee file2 — Посчитать содержимое файла file1 и сохранить результат в файл file2.

split -b 1M file — Разбить файл на части размером 1 Мб.
split -n 3 file — Разбить файл на 3 части.
split -n 3 file part — Разбить файл на 3 части с началом названия part.
cat part* > file — Собрать все части обратно.

tr a b — Каждая буква a будет заменена буквой b.
-s Заменить ряд символов на один символ или несколько
-d Для удаления из текста перечисленных символов
-c Работать с символами, которые не перечислены
tr a b < file1.txt > file2.txt — Заменить все a на b в файле file1.txt и сохранить в file2.txt.
cat file1.txt | tr a b > file2.txt — Аналогично.

sed ‘s/bob/Bob/g’ file1 > file2 — В файле filq1 всех bob заменить на Bob и сохранить в файл file2 (s — substitution, в качестве разделителя можно исп. другие символы такие как :,_).
/g — Земенить во всём файле (без него заменит только первое совпадение)
/2g — Заменить со второго слова
/2 — Заменить только второе слово,
/w — Записывать результаты обработки текста в указанный файл
/e — Заменить на команду шелла
/i — Замены нечувствительны к регистру символов
-e Выполнения нескольких команд
-f Если команды брать из файла
-n Ничего не выводить на stdin
echo день | sed s/день/ночь/ — Пример замены только уже с конвейером.
sed s/вася/Вася/ file.txt — Пример замены в файле.
sed ‘3 s/b/В/’ file.txt — Выбор 3 строки для замены b на B.
sed ‘3,4 s/b/В/’ file.txt — Выбор 3 и 4 строки для замены.
sed ‘/billy/ s/b/В/’ file.txt — Выбор для замены строк, содержащих некое выражение в нашем случае billy.
sed ‘2 d’ file.txt — Удаляет из стандартного вывода указанные строки (! — инвертирует выбор).
sed ‘2 q’ file.txt — Прекратить работу после указанной строки.
sed -n ‘3,$ w file.txt’ file2.txt — Записать вывод программы в файл file2.
sed -e ‘/^$/d’ имя_файла — Удалить пустые(^$) строки в файле (home$ — удалить home).
sed -e ‘#*/d; /^$/d’ имя_файла — Удалить комментарии и пустые(^$) строки в выводе.
sed -e » имя_файла > filename — Сохранить результат выполнения шаблона в файл.

rename — Инструмент для переименования нескольких файлов.
модификатор s обозначает операцию замены (switch)
модификатор g сообщает о необходимости осуществления глобальной замены (global)
модификатор i обозначает не учитывать регистр
-v Показать, имена успешно переименованных файлов
-n Показать, какие файлы были бы переименованы, позволяет посмотреть результат без его выполнения
-f Принудительно перезаписать существующие файлы
rename ‘s/TXT/text/’ * — Переименование всех фрагментов TXT в text для текущего каталога, важно заметить замена происходит не только в расширениях.
rename ‘s/.text/.txt/i’ * — Методика замены строки на другую строку без учета регистра.
rename ‘s/.php$/.TXT/’ *.php — Для изменения только php расширений файлов.
rename ‘y/A-Z/a-z/’ *.HTML — Преобразовать символы верхнего регистра в нижний регистр, касательно расширений HTML.

Переменные

export — Выводит список всех имен, экспортированных в текущей оболочке (аналогично просто export -p).
export var=3 — Переменная var будет равна 3 только для текущей терминальной сессии.
export -n var — Удаляет var из списка экспорта.
export -f var.file — Экспортирует var.file как функцию.
unset var — Удаляет переменную var до конца текущей сессии.
env –i bash — Запустит оболочку без переменных окружения.
env –i [Var=Значение] команда — Удалить все переменные оболочки и выполнить команду без переменных.
Для того чтобы каждый раз не добавлять постоянно используемые переменные добавьте их в файл ~/.profile

Псевдонимы

alias — Просмотр текущих псевдонимов в системе (аналогично alias -p).
unalias — Удаляет созданные пользователем псевдонимы.
alias la=»ls -la» — Для создания нового имени la для команды ls -la.
type la — Смотреть чему равен псевдоним la.
Созданные алиасы будут существовать пока существует сессия пользователя. Стоит выйти из системы или перегрузить Linux все алиасы будут потеряны. Для создания постоянных алиасов необходимо создать или внести изменения в файл .bash_aliases в домашней директории. Так каждый пользователь может создать свои собственные псевдонимы, либо конкретному пользователю можно задать нужные псевдонимы. Также можно прописать псевдонимы в файл .bashrc во всё той же домашней директории, но калякать в этом системном файле не будет хорошим тоном.

 

 

Теги статьи:
· ·
Категории статьи
Linux

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *