Ранее я разместил ссылки серию статей основы Linux от основателя Gentoo (на хабр). Лично для меня там было очень много полезной информации. Иногда возвращаюсь и некоторые разделы перечитываю. Особенно полезными были команды. В тех статьях было приведено очень много команд, которые мне помогают работать с linux.
В процессе изучения тех статей, я все команды фиксировал в отдельном документе. После этого этот документ периодически открывал и находил нужную команду. Решил опубликовать весь этот список, чтобы он всегда был под рукой. Собственно, все команды из той серии ниже.
Напоминаю, материалу лет пятнадцать, так что кое-что уже устарела. Но основы – они на то и основы. Полезная штука.
Итак, основные команды от основателя Gentoo:
echo $SHELL |
Узнать, какая оболочка используется |
cd / |
Корневая директория |
pwd |
Текущая директория |
cd .. |
Перейти в предыдущую директорию |
./myprog |
Запуск команды myprog в текущей директории |
cd |
Переход к директории пользователя |
cd ~ |
Переход к директории пользователя |
ls -l /usr |
Отобразить инфу о файлах из папки |
ls -dl /usr |
Отобразить инфу о конкретной папке |
ls -Rl /usr |
Отобразить инфу о файлах из папки и из её подпапок |
ls -i /usr |
Посмотреть иноды объектов в папке. Папка/документ — это ссылка на иноду. Объект можно переименовать, но номер иноды останется тот же |
mkdir tic tac toe |
Создать три папки |
mkdir -p won/der/ful |
Создать папку с подпапками (без -p будет ругаться) |
touch copyme |
Создать файл |
echo «firstfile» > copyme |
Записать строку в файл |
cat copyme |
Вывести содержимое файла |
cp copyme copiedme |
Копировать файл в другой файл (создаст автоматом) |
mv copiedme movedme |
Переименовать файл. Инода остается той же. Можно перемещать, но в другой ФС будет другой номер иноды |
ln firstlink secondlink |
Хардлинк. Жесткая ссылка. Инода будет одинаковая |
ln -s secondlink thirdlink |
Симлинк. Символьная ссылка. Иноды будут разные |
rm file1 file2 |
Удалить файлы |
ls -l file1 file2 |
Удалить файлы с запросом подтвержедния по каждому |
rmdir mydir |
Удалить (пустую) папку |
rm -rf mydir |
Удалить папку и всё содержимое |
rm file1 file2 file3 file4 file5 file6 file7 file8 |
Можно удалить кучу однотипных файлов |
rm file[1-8] |
Можно так |
rm file* |
Можно и так |
ls -d /usr/bin/asdf*jkl |
Если ничего не найдено — выполнит команду без подстановки |
myfile[12] |
совпадет с myfile1 и myfile2 |
[Cc]hange[Ll]og |
совпадет с Changelog, ChangeLog, changeLog и changelog |
ls /etc/[0-9]* |
покажет все файлы в /etc, начинающиеся с десятичной цифры |
ls /tmp/[A-Za-z]* |
отобразит все файлы в /tmp, которые начинаются с большой или маленькой латинской буквы. |
rm myfile[!9] |
удалит все файлы с названием myfile плюс один символ, кроме myfile9 |
echo ‘[fo]*’ > /tmp/mynewfile.txt |
новый файл будет содержать [fo]* буквально |
echo \[fo\]\* > /tmp/mynewfile.txt |
Экранирование. \\ — выдаст \ |
Символы +, ., *, [, ] или \ |
И в кавычки обернуть |
. символ точки |
Совпадает с любым единичным символом. Метасимвол |
dev.sda[12] |
Добавить вариации из скобок. Точка внутри скобок — НЕ метасимвол |
dev.sda[^12] |
НЕ БРАТЬ вариации из скобок |
* звездочка |
Повторяет 0 или более раз предыдущий символ. ab*c (abbbbc и подобные) |
b[cq]*e |
bqqcce и подобное |
^# |
Если ^ — то идет привязка к началу строки — искать в начале |
5$ |
Покажет то, что заканчивается на 5 |
echo $PATH |
Переменная окружения PATH |
PATH=$PATH:~/bin |
Дозаполнить PATH |
export PATH |
Видимо, распространить изменения переменной |
which ls |
Проверить, есть ли программа в переменной PATH |
which -a ls |
Показать все экземпляры программы в PATH |
whereis ls |
Более подробная информация о том, где лежит программа |
find /usr/share/doc -name README |
Поиск любых типов файлов |
find /usr/share/doc -name README\* |
Можно использовать шаблоны глоббинга (экранировать символы) |
find /usr/share/doc -iname readme\* |
Игнорирование регистра символов при поиске |
find /etc -iregex ‘.*xt.*’ |
-regex либо -iregex. При поиске учитывать регулярку и игнорить регистр шаблона регулярки. Шаблон прописывается для всего пути. Поэтому, нужно ставить * в начале и в конце |
find /usr/bin -name ‘*vim*’ -type l |
-type поиск по типу. b (блочное устройство), c (символьное устройство), d (директория), p (именованый канал), f (обычный файл), l (символическая ссылка), и s (сокет). |
find . -name \? -mtime -1 |
Файлы, которые были модифицированы за последние 24 часа |
find . -name \? -daystart -mtime +0 -mtime -3 |
daystart: периоды времени будут отсчитываться от начала сегодняшнего дня. Файлы созданные вчера и позавчера |
find /usr/bin -type f -size -50c |
Опция -size позваляет искать файлы по их размеру. По-умолчанию, аргумент -size это количество 512-байтных блоков, но добавляя к опции суффикс, можно сделать вывод более понятным. Доступные суффиксы: b (512-байтные блоки), c (байт), k (килобайт), и w (2-байтные слова). Дополнительно, перед аргументом можно указать плюс («больше чем») или минус («меньше чем»). |
find /usr/bin -type f -size -50c -exec ls -l ‘{}’ ‘;’ |
find может производить любые действия над файлами используя опцию -exec. Эта опция принимает строку команд для выполнения, которая оканчивается на ;, и заменяет все вхождения {} именем файла |
locate bin/ls |
Ищет совпадения любой части пути, а не только самого файла (с использованием updatedb) |
updatedb |
Если locate не работает, возможно, не запущен updatedb. Использует cron |
slocate |
То же, что и locate, но + права доступа |
Ctrl-C |
Убить процесс |
Ctrl-Z |
Остановить процесс |
fg |
От англ. foreground. Вывести процесс из бекграунда |
bg |
От англ. backgroud. Продолжить процесс в фоне |
xeyes -center blue & |
& в конце команды — сразу запустить её в фоне |
jobs -l |
(можно без -l) Список команд, запущенных в фоне |
kill -s SIGSTOP 16224 |
Отправить сигнал стоп процессу с PID 16224 (SIGINT, SIGSTOP, или SIGCONT — убивает, останавливает или продолжает) |
kill 16217 |
По-умолчанию, kill отправляет SIGTERM, отличается от SIGINT отправляемого по Control-C, но обычно имеет тот же эффект. Процесс может игнорировать оба сигнала, SIGTERM и SIGINT (либо так надо, либо завис) |
kill -s SIGKILL 16224 |
Процесс не может игнорировать SIGKILL |
nohup xeyes & |
Некоторые шеллы отправляют сигнал SIGHUP порожденным процессам при своем закрытии. С помощью nohup можно игнорить SIGHUP |
ps |
Вывод списка процессов. Про параметры читать в документации |
top |
Отображает постоянно обновляющийся список процессов |
nice -n 10 top |
Задать приоритет программе top (только во время запуска). По умолчанию, приоритет равен 0 |
renice 10 641 |
Задать новый приоритет во время выполнения процесса |
echo «firstfile» > copyme |
> оператор перенаправления вывода |
echo «hi there» | wc |
| объединение каналов (пайпов). Канал перенаправляет его на вход команде wc, которая показывает количество строк, слов и символов |
bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf — |
Распаковать файл без промежуточного сохранения на диск |
cat myfile.txt | sort | uniq | wc -l |
Длинный пайп |
echo |
Печатает свои аргументы на терминал |
cat |
Напечатает содержимое указанного файла на терминал |
sort |
Выведет содержимое файла, указанного в командной строке, в алфавитном порядке |
uniq |
Принимает уже отсортированный файл или поток данных (через пайп) и удаляет повторяющиеся строки. |
wc |
Выводит количество строк, слов и символов в указанном файле или во входном потоке (из пайпа). |
head |
Выводит первые десять строк файла или потока |
tail |
Печатает последние десять строк файла или потока |
tac |
Похожа на cat, но печатает все строки в обратном порядке |
expand |
Конвертирует входные символы табуляции в пробелы |
unexpand |
Конвертирует входные пробелы в символы табуляции |
cut |
Используется для извлечения из входного файла или потока, полей разделенных указанным символом |
nl |
Добавляет к каждой входной строке ее номер |
pr |
Разбивает файл на страницы и нумерует их; обычно используется для печати |
tr |
Инструмент трансляции (преобразования) символов; используется для отображения определенных символов во входном потоке на заданные символы в выходной поток |
sed |
Мощный потоко-ориентированный текстовый редактор |
awk |
Искуссный язык построчного разбора и обработки входного потока по заданным шаблонам |
od |
Разработан для представления входного потока в восьмеричном, шестнадцатеричном и т.д. формате |
slit |
Эта команда используется для разделения больших файлов на несколько небольших, более управляемых частей |
fmt |
Используется, чтобы выполнить «перенос» длинных строк текста |
paste |
Принимает два или несколько файлов в качестве входных данных, объединяет построчно и выводит результат |
join |
Похожа на paste, эта утилита позволяет объединять два файла по общему полю |
tee |
Печатает входные аргументы в файл и на экран одновременно |
<< |
Перенаправление на вход команды: sort <<END |
> |
Перезаписывает |
>> |
Добавляет |
uname -a |
Вся доступная инфа о системе |
/lib/modules |
Там есть каталог с версией текущего ядра |
Ядро linux |
Это кусок кода, который напрямую взаимодействует с вашим железом и абстрагирует от него обычные программы |
Модули ядра |
Часть ядра, которая сохраняется на диске в специальном формате. По вашей команде, они подгружаются в работающее ядро и добавляют в него новую функциональность. |
lsmod |
Просмотра загруженных модулей на вашей системе |
depmod -a |
Программа просканирует модули из вашей папки /lib/modules и обновит информацию о зависимостях |
insmod /lib/modules/2.4.20-gaming-r1/kernel/fs/fat/fat.o |
Указать ей полный путь к модулю, который вы хотите загрузить |
rmmod fat |
Выгрузить модуль fat |
modprobe fat |
Загрузить модуль fat (будут загружены и зависимости) |
modinfo fat |
Получить инфу по модулю |
/etc/modules.conf |
Файл, куда можно прописать очередность загрузки модулей. В Убунту, возможно, называется по другому |
Страницы руководств — man |
Могут устаревать. Структура: NAME (ИМЯ); SYNOPSIS (ОБЗОР); DESCRIPTION (ОПИСАНИЕ); EXAMPLES (ПРИМЕРЫ); SEE ALSO (СМОТРИ ТАКЖЕ) |
/usr/share/man либо /usr/man |
Секции: man1 Пользовательские программы; man2 Системные вызовы; man3 Библиотечные функции; man4 Специальные файлы; man5 Форматы файлов; man6 Игры; man7 Другое |
whatis printf |
Покажет секции доступных манов по теме |
man 3 printf |
Загрузить ман из определенной секции |
man -k whatis |
Поиск по разделам «ИМЯ» ман-страниц. Ищет подстроку |
apropos |
Аналог man -k |
makewhatis |
Сканирует все страницы в вашей Linux системе и создает базу данных для whatis и apropos |
man man |
man-страница man’a |
/etc/man.conf |
Конфиг. Можем указать, где будут искать man-страницы. Открываем конфиг, дописываем MANPATH /opt/man |
manpath |
Отобразит, где система ищет man-страницы |
info |
Команда для чтения инфо-страниц. В маны нельзя добавлять гиперссылки. Сюда — можно. Навигация стрелками, переход по ссылке Enter. Выход q |
info ls |
info-страница команды ls |
info info |
Инфо инфо |
usr/share/doc или usr/doc |
Дополнительная документация к программам (простые текстовые файлы, PDF, PostScript, HTML) |
Linux Documentation Project |
http://www.tldp.org/ — документация по linux. Собирают добровольцы |
ls -l /bin/bash |
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash |
Первое поле -rwxr-xr-x |
Содержит символическое представление прав на данный файл |
— обычный файл |
|
Три тройки |
Первая тройка представляет права владельца файла, вторая представляет права группы файла и третья права всех остальных пользователей |
«rwx» |
|
r означает, что чтение (просмотр данных содержащихся в файле) разрешено, w означает запись ( изменение, а также удаление данных) разрешено и x означает исполнение (запуск программы разрешен) |
|
whoami |
Из под кого сейчас работаете |
groups |
Группы, в которых состою |
groups root daemon |
В каких группах состоят пользователи |
chown root /etc/passwd |
Изменить владельца |
chgrp wheel /etc/passwd |
Изменить группу |
chown root:wheel /etc/passwd |
Изменить сразу и пользователя и группу |
chown -R drobbins /home/drobbins |
Рекурсивно изменить владельца или группу у всех объектов в данной директории и ниже |
chmod +x scriptfile.sh |
Поменять права на файл. Добавить права на испольнение всем |
chmod -x scriptfile.sh |
Забрать права на исполнение у пользователя, группы пользователя и всем остальным |
chmod go-w scriptfile.sh |
Выдать/забрать у некоторых: со знаком + или — перед ним. Используйте u для пользователя, g для группы и o для остальных пользователей |
chmod =rx scriptfile.sh |
Поставить всем права R и X |
chmod u=rx scriptfile.sh |
Установка значений только для пользователя |
rwx 7 |
Числовые режимы |
suid sgid sticky режим |
Числовые режимы первого знака |
chmod 0755 scriptfile.sh |
Установить права доступа 0755, что равносильно комбинации прав -rwxr-xr-x |
umask |
Посмотреть текущие разрешения на создаваемые файлы |
umask 0077 |
Отключить значение umask — это наложиться на то, что было в umask прежде |
suid |
Когда для запускаемой программы установлен бит suid, она будет работать от имени владельца исполняемого файла, а не от имени того, кто запустил программу |
ls -l /usr/bin/passwd |
-rwsr-xr-x 1 root wheel 17588 Sep 24 00:53 /usr/bin/passwd — видим бит S вместо X |
sgid |
Она позволяет программе наследовать права доступа группы, а не текущего пользователя. |
О suid и sgid |
Биты suid и sgid занимают те же поля в выводе команды ls -l. Если бит x тоже задан, соответствующие биты будут показаны как s (в нижнем регистре). Однако, если бит x не задан то он будет отображаться как S (в верхнем регистре) |
chmod u+s /usr/bin/myapp |
Задать бить suid |
chmod g-s /home/drobbins |
Задать бить sgid |
chmod +t |
sticky бит. Единственные, кто могут удалить или переименовать файлы в /tmp — это либо владельцы этих файлов либо суперпользователь |
less /etc/passwd |
Посмотреть инфу о пользователях. Первое поле отвечает за имя пользователя (drobbins), второе поле содержит «x». На устаревших Linux-системах второе поле содержало зашифрованных пароль для аутентификации, но фактически, сейчас все Linux-системы хранят эту информацию в другом файле. Третье поле отвечает за числовой пользовательский идентификатор, связанный с конкретным пользователем, а четвертое поле ассоциирует этого пользователя с конкретной группой; скоро мы увидим, где определена группа 1000. Пятое поле содержит текстовое описание аккаунта, в нашем случае это имя пользователя. Шестое поле определяет домашний каталог пользователя, седьмое — устанавливает стартовую оболочку пользователя, которая будет автоматически запускаться когда пользователь входит в систему |
/etc/passwd |
Пользовательские аккаунты. Доступен только суперпользователю |
less /etc/shadow |
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0 поле 3 — количество дней с 01.01.1970 до момента, когда пароль был изменен |
less /etc/group |
drobbins:x:1000: |
echo $EDITOR |
Переменная с программой-редактором |
vipw -s и vigr |
Проверить |
passwd testuser |
Задать пароль тестовому пользователю |
newgrp |
По умолчанию, любой файл, который создает пользователь, сразу же присваивается к группе, в которой он состоит, определенной в /etc/passwd. |
chage |
Используется для просмотра и изменения настроек срока действия паролей, сохраненных в /etc/shadow |
gpasswd |
Основная утилита управления группами |
groupadd/groupdel/groupmod |
Используются для добавления/удаления/изменения групп в /etc/group |
useradd/userdel/usermod |
Используются для добавления/удаления/изменения пользователей в /etc/passwd |
pwconv/grpconv |
Используются для преобразования passwd и group файлов старого образца в новые shadow passwords |
fortune |
Вывод приветственного сообщения |
.bash_profile |
При запуске bash проходит файл .bash_profile. Файл в пользовательской директории. Если нет — создать. Добавить туда fortune |
Два способа запуска bash |
Первый используется когда вы впервые входите в систему: bash запускается с именем процесса -bash |
/etc/profile |
Видимо, его выполняют все, кто входят в систему |
/etc/skel |
При использовании команды useradd для создания новой учетной записи, все файлы из /etc/skel копируются в домашний каталог нового пользователя |
export |
Отобразить список всех внешних переменных bash. Доступны из всех сессий |
export BAR |
Сделать переменную внешней |
set -x |
Опция -x заставляет bash вывести на экран каждую команду, которую он собирается выполнить |
set +x |
Выключает эту опцию |
set и unset |
Можно устанавливать и сбрасывать переменные |
/dev/hda |
Первый диск IDE в системе Linux |
/dev/sda |
SCSI-диски |
fdisk |
Используется для создания и редактирования таблиц разделов |
fdisk /dev/sda |
Посмотреть таблицу разделов диска sda |
4-х первичных разделов |
Номера с hda1 по hda4 зарезервированы для первичных или расширенного разделов. |
Расширенный раздел |
Действует как контейнер для разделов hda5 — hda9 |
Id или тип раздела |
83 является верным для разделов ФС Linux, а 82 — для разделов подчкачки |
mount /dev/hda3 /mnt |
Монтировать ФС |
mount |
Просмотреть какие файловые системы сейчас смонтированы |
cat /proc/mounts |
Посмотреть то же самое |
mount /dev/hdc6 /mnt -o ro |
Смонтировать ФС с опцией «только чтение» |
mount /mnt -o remount,ro |
Перемонтировать уже смонтированную ФС с той же опцией |
mount /mnt -o remount,rw |
Перемонтировать ФС с опцией «чтение-запись» |
/etc/fstab |
Доступные для монтирования файловые системы |
umount /mnt или umount /dev/hda3 |
Отмонтировать ФС |
init |
Подсистема инициализации |
systemd |
Демон для запуска других демонов |
getty |
Программа для доступа к физических и виртуальным терминалам |
login |
Запрос пользователя |
dmesg |
Вывод из буфера в стандартный поток вывода |
0: Halt the computer |
Остановить компьютер |
1 or s: Single-user mode |
Однопользовательский режим |
2: Multi-user, no network |
Многопользовательский, без сети |
3: Multi-user, text console |
Многопользовательский с текстовой консолью |
4: Multi-user, graphical console |
Многопользовательский с графической консолью |
5: same as 4 |
То же, что и 4 |
6: Reboot the computer. |
Перезагрузить компьютер |
Leave a Reply