Команды Linux от основателя Gentoo

Основы Linux от основателя GentooРанее я разместил ссылки серию статей основы Linux от основателя Gentoo (на хабр). Лично для меня там было очень много полезной информации. Иногда возвращаюсь и некоторые разделы перечитываю. Особенно полезными были команды. В тех статьях было приведено очень много команд, которые мне помогают работать с linux.

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

Напоминаю, материалу лет пятнадцать, так что кое-что уже устарела. Но основы – они на то и основы. Полезная штука.

Итак, основные команды от основателя Gentoo:

Введение в bash

echo $SHELL

Узнать, какая оболочка используется

cd /

Корневая директория

pwd

Текущая директория

cd ..

Перейти в предыдущую директорию

./myprog

Запуск команды myprog в текущей директории

cd

Переход к директории пользователя

cd ~

Переход к директории пользователя

[свернуть]
Использование команд Linux

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

Удалить папку и всё содержимое

[свернуть]
ДЖОКЕРЫ (globbing)

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

Экранирование. \\ — выдаст \

[свернуть]
РЕГУЛЯРКИ (regexp)

Символы +, ., *, [, ] или \

И в кавычки обернуть

. символ точки

Совпадает с любым единичным символом.

Метасимвол

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
apple
cranberry
banana
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. Собирают добровольцы

[свернуть]
Модель прав доступа в Linux

ls -l /bin/bash

-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash

Первое поле -rwxr-xr-x

Содержит символическое представление прав на данный файл

 

— обычный файл
‘d’ директория
‘l’ символическая ссылка
‘c’ устройство символьного ввода-вывода
‘b’ устройство блочного ввода-вывода
‘p’ FIFO
‘s’ сокет

Три тройки

Первая тройка представляет права владельца файла, вторая представляет права группы файла и третья права всех остальных пользователей

 

«rwx»
«r-x»
«r-x»

 

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
rw- 6
r-x 5
r— 4
-wx 3
-w- 2
—x 1
— 0

Числовые режимы

suid sgid sticky режим
on on on 7
on on off 6
on off on 5
on off off 4
off on on 3
off on off 2
off off on 1
off off off 0

Числовые режимы первого знака

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 — это либо владельцы этих файлов либо суперпользователь

[свернуть]
Управление аккаунтами в Linux

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 до момента, когда пароль был изменен
поле 4 — количество дней до того, как будет разрешено сменить пароль («0» — «менять в любое время»)
поле 5 — количество дней до того, как система заставит пользователя сменить пароль («-1» — «никогда»)
поле 6 — количество дней до истечения срока действия пароля, когда пользователь получит предупреждение об этом («-1» — «не предупреждать»)
поле 7 — количество дней после истечения срока действия пароля, по прошествии которых аккаунт будет автоматически отключен системой («-1» — «не отключать»)
поле 8 — количество дней, прошедшее с момента отключения этого аккаунта («-1» — «этот аккаунт включен»)
поле 9 — зарезервировано для будущего использования

less /etc/group

drobbins:x:1000:
первое поле определяет имя группы, второе поле — это поле остаточного пароля, которое сейчас просто зарезервировано x, и третье поле определяет числовой идентификатор для конкретной группы. Четвертое поле (которое пусто в примере выше) определяет всех членов группы.

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
Второй способ запустить bash как оболочку входа — при помощи опции —login

/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

Вывод из буфера в стандартный поток вывода

[свернуть]
Уровни ядра (в init)

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.

Перезагрузить компьютер

[свернуть]


Be the first to comment

Leave a Reply

Ваш Mail не будет опубликован.


*