Часть 5. Выполнение базовых команд
Шпаргалка наиболее частых команд
cd(change directory) - сменить рабочий каталогmv(move) - переместить объект фсcp(copy) - скопировать объект фсmkdir(make directory) - создать каталогecho- вывод аргументов на экранcat- вывод объекта (например, файла) на экранless- утилита для удобного просмотра больших текстовых файловsort- утилита для сортировкиgrep- фильтрация строк по подстрокам
Статья о циклах в командной оболочке тут.
Разберем несколько:
-
ls— покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. Типы файлов. Система прав. Полезные аргументы:-Rв выводе команды появятся файлы из поддиректорий-lотобразить списком с метаданными (права доступа и прочая информация из inode)-aотобразить скрытые (начинающиеся с точки) объекты
-
cd— change directory, сменить директорию. Из названия понятно, что с помощью этой команды можно перемещаться между каталогами. Вписываем её, а потом путь, например:cd /path/to/dir.Есть сокращенные варианты:
cd -для перемещения в предыдущую директориюcd(без аргументов) для прыжка в домашнюю папку
-
cp- copy - скопировать объект. Из полезных опций-rпозволяет делать рекурсивно (для всех подкаталогов) и-pпозволяет сохранить все права на файл как у исходного. -
pwd— укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd~/Desktop/, тоpwdпокажет что-то вроде/home/mak/Desktop. -
rm— команда для удаления файлов, каталогов и их содержимого. Удаляет жесткие ссылки,фактически данные остаются на диске, просто мы теряем на них указатели и эти блоки данных теперь считаются пустыми. На форумах часто ходит злая шутка для новичков, которым советуют починить что-нибудь в их систему с помощьюrm -rf /, что потенциально стирает все данные.Полезные аргументы:
-rудалить каталог и все вложенные объекты-fудалить без подтверждения
-
grep— это полнотекстовый поиск в файле. Очень полезная команда, когда вам нужно что-то найти. Например,grepзначение/путь/до/файлапокажет строки в которых есть "значение". А командаgrep -rilзначение/путь/до/каталога/*покажет все файлы, в которых есть искомое значение.Полезные аргументы:
-rрекурсивный поиск-iигнорировать регистр (case insensetive)-lвывести результат списком-vинвертировать работу - пропускать только строки, в которых НЕТ значения-Eиспользовать регулярные выражения в "значении"
-
df— disk free - показывает данные по ФС, в т.ч. сколько еще свободно места на каких ФС.-hhuman-friendly, переводит байты в читаемое-iinode, показывает информацию по айнодам на ФС
-
du— disk usage - показывает данные по всем неудаленным файлам на ФС.-hhuman-friendly, переводит байты в читаемое
-
chown пользователь:группапуть — команда позволяет изменить владельца файла или каталога.-Rдля рекурсивного. -
chmod права путь— изменяет права на файл или каталог. Подробнее в разделе "Система прав в GNU/Linux". -
find— с помощью этой утилиты можно искать (и даже удалять) файлы по определённым параметрам. Например:find /mnt/data/backup/ -mtime +3 -type f -iname "*.sql.gz"- выведет все файлы (-type f) в директории/mnt/data/backup3-х дневной давности (дата измененияmodify time +3 - -mtime +3) с именем попадающим в маску*sql.gz. При добавлении опции-deleteудаляет найденные файлы. Часто используется в таком виде в скриптах для очистки старых логов или резервных копий. -
awk— си-подобный сценарный язык построчного разбора и обработки входного потока по задан ным шаблонам. Ключей много. Примеры и статья на хабре:echo word1 word2 word3 word4 | awk '{ print $2,$4 }'выведетword2 word4для каждой строки (тут всего одна).echo word1:word2:word3:word4 | awk -F: '{ print $1,$3 }'выведетword1 word3. -
tail— позволяет вывести только конец файла/потока.+2- выкинуть первую строку-n X- оставить толькоХпоследних строк
-
head— аналогичноtail, только для начала файла/потока. -
ps— посмотреть список процессов, с аргументом aux показывает все процессы в системе.
Pipeline
Для выполнения работы вам непременно потребуется знание о том, что такое конвейер (pipeline). Небольшое напоминание о работе конвейера:
cat file.txt | grep bmstu | sort -u
cat file.txt- вывести содержимое файла, передаем это утилитеgrepgrep bmstu- оставить только строки, содержащиеbmstu, передать вывод утилитеsortsort -u- отсортировать в алфавитном порядке и оставить только уникальные значения
Shell/Bash
Пример скрипта, который создает файл с содержимым первого и второго аргументов:
#!/bin/sh
echo "$1" > test.txt
echo "$2" >> test.txt
Пример того, как сделать файл "исполняемым":
chmod +x file.sh
Пример того, как запустить "исполняемый" файл c аргументами из текущей директории:
./file.sh 10 15
А почему исполняемый файл нельзя запустить просто написав file.sh как в windows?
Все дело в безопасности. Это очень плохая идея позволять подменять стандартные утилиты файлами из текущей директории, есть риск исполнить не то, что подразумевал пользователь, а то, что подложил ему в каталог злоумышленник. Поэтому текущая директория не добавляется к переменной PATH, списку директорий в которых производится поиск исполняемых файлов.
Man
Продемонстрировать у мение пользоваться утилитой man. Вывести страницу мануала для утилиты apt.
Демонстрация проделанной работы происходит через вывод утилиты history.