Синоним файла linux

Синонимы команд alias

В Linux можно создавать синонимы для других команд. Рассмотрим, как это сделать.

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

Создание синонимов (команда alias)

В командной оболочке Bash для создания синонимов используется команда alias.

Синтаксис команды alias

Чтобы создать синоним нужно указать команду-синоним и в кавычках указать команду, которая должна выполняться:

alias синонимкоманда«

синоним — короткая команда (алиас), которая будет использоваться для запуска команды.
команда — команда, которая будет запускаться при вызове синонима. Записывается в двойных или одинарных кавычках.

Примеры создания синонимов

Вывод списка файлов:

alias ll="ls -la"

То есть, вместо выполнения ls -la теперь достаточно выполнить команду ll:

> ll Documents/
итого 16480
drwxr-xr-x 3 yuriy yuriy 4096 дек 7 17:46 .
drwxr-xr-x 45 yuriy yuriy 4096 янв 4 13:23 ..
-rw-rw-r-- 1 yuriy yuriy 155 июл 25 16:12 code.md
drwxrwxr-x 2 yuriy yuriy 4096 июл 27 14:48 data
..
-rw-r--r-- 1 yuriy yuriy 11116 июл 24 22:01 Pingvinus.docx
-rw-rw-r-- 1 yuriy yuriy 251 июл 25 16:31 pingvinus.md

Создадим команду для быстрого перехода в заданную директорию:

alias cdwork=”cd /home/pingvinus/Documents/data”

Пример выполнения:

yuriy@pingvinus:~$ cdwork
yuriy@pingvinus:~/Documents/data$ 

Подключение по ssh к определенному серверу:

alias serv="ssh -p 1234 pingvinus@192.168.0.123"

Сохранение синонимов

Когда вы создаете синоним с помощью команды alias, то он функционирует только в текущей сессии, пока открыто окно терминала. Чтобы сохранить синонимы на постоянной основе, нужно прописать выполнение команд alias в файл .bashrc.

Запустите терминал и откройте файл .bashrc для редактирования, выполнив команду:

nano ~/.bashrc

Перейдите в конец файла и введите команды для создания синонимов, по одному на каждой строчке, например:

alias ll="ls -la"
alias cdwork="cd /home/pingvinus/Documents/data"
alias serv="ssh -P 1234 pingvinus@192.168.0.123"

Сохраните изменения и закройте файл. Для этого нажмите Ctrl+X, откроется запрос на сохранение изменений в файле — нажмите y и затем Enter.

Чтобы изменения вступили в силу, можно выйти и снова войти в систему или выполните команду:

source ~/.bashrc

Просмотр списка синонимов

Чтобы просмотреть список всех активных в данный момент синонимов используется команда:

alias -p

Во многих дистрибутивах несколько синонимов уже может быть создано в системе. Например у меня результат следующий:

> alias -p
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s*[0-9]+s*//;s/[;&|]s*alert$//''')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

Удаление синонимов

Чтобы удалить синоним используется команда unalias. Удаление происходит только в текущей сессии терминала.

Удаление синонима по заданному имени:

unalias имя_синонима

Удаление всех синонимов:

unalias -a

Несколько примеров синонимов

Очистка окна терминала:

alias c="clear"

Вывод подробного списка файлов:

alias ll="ls -la"

Вывод списка скрытых файлов:

alias l.="ls -d .* --color=auto"

Поиск по истории команд (запускается, например, так hs ssh):

alias hs="history | grep"

Показать список открытых портов:

alias ports="netstat -tulanp"

Выполнять ping только 5 раз, а не бесконечно:

alias ping5="ping -c 5"

Узнать свой внешний IP-адрес:

alias ipe="curl ipinfo.io/ip"

Создание синонимов, используя Bash-функции (синонимы с аргументами)

Командная оболочка Bash позволяет создавать функции, которые могут выполнять одну или несколько команд. Они относятся к программированию в Bash, но их иногда можно использовать и для создания синонимов. Такие функции могут принимать аргументы в командой строке, в отличии от синонимов, создаваемых командой alias.

Синтаксис функций в Bash

имя_функции () {
    команда1 
    команда2 
    …
}

Или:

function имя_функции {
    команда1 
    команда2 
    …
}

Данный код создает функцию, которая выполняет команды. Команда может быть одна или несколько. Чтобы выполнить функцию достаточно ввести в командной строке ее название. Через пробел можно передавать аргументы.

имя_функции аргумент1 аргумент2

Чтобы внутри функции обратиться к аргументам, используются сокращения $1, $2 и т.д. $1 соответсвует первому аргументу, $2 второму и т.д. $0 соответсвует имени функции.

Примеры создания функций

Функции можно создавать прямо в текущей сессии терминала, но лучше прописать их в файле .bashrc.

Создадим функцию которая принимает имя директории, создает данную директорию и переходит в нее:

mkcd ()
{
	mkdir -p -- "$1" && cd -P -- "$1"
}

Теперь, вместо того, чтобы выполнять mkdir для создания директории, а затем cd, чтобы перейти в нее, достаточно выполнить:

mkcd mynewdir

У вас может возникнуть вопрос, что означают символы  и && внутри нашей функции?

  •  — используется, чтобы указать, конец опций команды. То есть все, что будет записываться после  это уже аргументы и они не будут интерпретироваться, как опции для данной команды. В нашем примере мы можем попробовать создать директорию имя которой начинается с символа , и если бы мы не использовали , то команда mkdir подумала бы, что мы пытаемся передать ей не имя директории а опцию.
  • && — логическое И — сначала выполняется команда, стоящая слева от && и только если она выполнена успешно, запускается команда, стоящая справа от &&.

Заключение

Синонимы команд в Linux очень удобный инструмент, упрощающий работу с системой. В данной статье мы рассмотрели создание синонимов командой alias, а также использование функций Bash для создания синонимов.

Не смотря на удобство использования синонимов, сильно увлекаться ими не стоит. Не нужно создавать тонну алиасов на все случаи жизни. Это может привести к путанице и банальному незнанию полных команд, когда пересаживаешься за другой компьютер.

Также нужно быть крайне аккуратным при создании синонимов, которые имеют такое же имя, как и сама команда, которую они выполняют. Переписывая таким образом поведение команды, выполнение синонима, вместо команды, иногда может приводить к неочевидным результатам.

Необходимо написать скрипт на BASH, задание:
Создание синонима всех файлов с указанным суффиксом и числом связей, большим 1, путём перестановки суффиксов в именах исходных файлов в начало и удаления точки.
Входные данные:

  • директория в которой ищем файлы
    -суффикс файла

Пока что получается вот так:

#!/bin/bash
dir=$1
suff=$2
el="?"
#Проверка параметров
if [[ -z $dir ]]
then
echo "Для работы программы требуется ввести директорию и суффикс файла!"
exit
elif [[ -z $suff ]]
then
echo "Для работы программы требуется ввести суффикс файла"
exit
fi
if [[ $dir = $el ]]
then
echo "Правильный порядок ввода: ./myscript директория суффикс"
exit
fi

cd $dir

find() {
array=$(ls $PWD/*)
for file in $array
do
#Если встретили директорию
if [ -d $file ]
then
cd $file
find
else
#Если встретили файл
if [ -f $file ] && [ $(stat --format=%h $file) -gt 1 ] && [[ "${file##*.}" == "$suff" ]]
then
echo $file
fi
fi
cd ..
done
}
find
# a=$(stat --format=%h $dir)
#echo $(stat --format=%h $dir)

В этом коде не работает проверка на совпадение введённого суффикса с суффиксом файла + нужно дописать создание файла-синонима, как я понимаю, нужно будет просто скопировать нужный нам файл с изменённым названием в формате <суффикс_название.суффикс>
Помогите разобраться, почему не работает проверка суффикса и как создать файл — синоним?

Время на прочтение
8 мин

Количество просмотров 26K

Статья рассчитана на тех, кто не имеет или имеет мало опыта работы с командной строкой Unix/Linux, но желает научиться с ней эффективно взаимодействовать и разрабатывать скрипты для выполнения своих задач. Приведенные примеры справедливы для выполнения в командной оболочке bash операционной системы Ubuntu/Debian, но могут быть использованы и в других оболочках и ОС с учетом их специфики.

1. Командные оболочки

Существует множество дистрибутивов(форков) операционных систем(ОС) семейства Linux, наиболее известные среди них: Ubuntu, Debian, CentOS, Red Hat, Fedora, SuSE, FreeBSD, Mint.

Здесь есть большая схема со всеми форками Linux.

В каждой ОС существуют различные командные оболочки (shell), их назначение одинаково (администрирование, автоматизация, вычисления, мониторинг и т.д.), как и большинство основных команд, но реализация может отличаться. В таблице ниже приведено сравнение, в котором видно, что некоторые возможности поддерживаются не всеми оболочками.

Feature

Bourne

C

TC

Korn

Bash

Псевдонимы (синонимы)

Нет

Да

Да

Да

Да

Редактор командной строки

Нет

Нет

Да

Да

Да

Расширенные шаблоны файлов

Нет

Нет

Нет

Да

Да

Автозавершение имени файла

Нет

Да

Да

Да

Да

Стеки директорий (pushd and popd)

Нет

Да

Да

Нет

Да

История

Нет

Да

Да

Да

Да

Функции

Да

Нет

Нет

Да

Да

Горячие клавиши

Нет

Нет

Да

Нет

Да

Управление заданиями

Нет

Да

Да

Да

Да

Исправление ошибок в командах

Нет

Нет

Да

Нет

Да

Формат приглашения командной строки

Нет

Нет

Да

Нет

Да

Список доступных командных оболочек можно получить командой

cat /etc/shells

При необходимости можно установить нужную командную оболочку командой sudo apt install <имя_оболочки>. Например, для установки ksh нужно выполнить

sudo apt install ksh

2. Настройка тестовой среды

Если у вас уже есть виртуальная/реальная машина с установленным Linux, или вы знаете, как её настроить, то можно пропустить информацию из спойлера ниже. Если есть доступ по ssh к какому-либо серверу, то Вы также можете использовать его shell для тренировок. Используйте имеющийся доступ с осторожностью, не тренируйтесь на продуктовых(промышленных) серверах и других критичных окружениях. Если вы не хотите развертывать виртуальную машину(ВМ), то для тестов можно воспользоваться онлайн-терминалами, но нужно знать и учитывать их особенности и ограничения. Примеры онлайн-терминалов:
https://cocalc.com/app?anonymous=terminal
https://www.tutorialspoint.com/execute_bash_online.php
https://rextester.com/l/bash_online_compiler

Развертывание виртуальной машины

VirtualBox – ПО для виртуализации, позволяющее запускать одну ОС «внутри» другой. Разумеется, существуют и другие способы развертывания ВМ, здесь мы рассмотрим лишь один из них. В данном случае, предполагается, что у вас ПК под управлением Windows или Mac. Для начала нужно скачать VirtualBox отсюда и установить его.

Также нужно скачать образ ВМ с установленной ОС Ubuntu отсюда. Качайте самую новую версию, убедитесь, что скачиваемый образ имеет формат VirtualBox (VDI).

Создадим виртуальную машину. Сначала создаем на локальном диске папку для размещения в ней ВМ и их файлов (у меня C:vmachines). Распакуем скачанный образ диска ВМ в созданную папку:

Для распаковки потребуется архиватор 7zip или другой, поддерживающий формат .7z. Далее запускаем VirtualBox и выбираем меню «Машина -> Создать…»:

В открывшемся окне указываем имя ВМ (тип и версия в большинстве случаев подтягиваются автоматически, если это понятно из имени), а также созданную нами папку. Объем оперативной памяти устанавливается автоматически, 1Гб достаточно для выполнения тестов. Выбираем «Использовать существующий виртуальный жесткий диск», нажимаем значок выбора образа жесткого диска, в открывшемся окне нажимаем «Добавить», выбираем распакованный ранее файл образом ВМ и нажимаем «Открыть»:

Нажимаем «Выбрать»:

И нажимаем «Создать»:

Выбираем в списке созданную ВМ и нажимаем «Запустить»:

После запуска ВМ появится окно для входа в ОС:

Выбираем учетную запись osboxes.org и вводим пароль osboxes.org. После входа в систему нажимаем Ctrl+Alt+T, у нас откроется окно терминала, в котором можно выполнять тесты:

Для удобства можно развернуть окно виртуальной машины на весь экран, окно терминала также будет развернуто. Для того, чтобы можно было вставлять данные из буфера в терминал ВМ и копировать их, можно включить в настройках ВМ общий буфер обмена в меню «Устройства -> Общий буфер обмена -> Двунаправленный»:

Создадим тестового пользователя.

Для создания пользователя нам понадобятся права суперпользователя (root). Для их получения выполним команду sudo su -, указав пароль текущего пользователя (osboxes.org). Далее создадим пользователя test командой adduser test. Также выдадим пользователю test права на повышение привилегий при необходимости, выполнив команду usermod -aG sudo test:

osboxes@osboxes:~$ sudo su -
[sudo] password for osboxes:
root@osboxes:~# adduser test
Adding user `test' ...
Adding new group `test' (1001) ...
Adding new user `test' (1001) with group `test' ...
The home directory `/home/test' already exists.  Not copying from `/etc/skel'.
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]
root@osboxes:~# usermod -aG sudo test
root@osboxes:~#

На данном этапе уже можно использовать тестовую среду, выполняя команды в терминале (Ctrl+Alt+T). Дополнительно можно настроить подключение по ssh клиентом (например, PuTTY), мы рассмотрим это отдельно.

3. Первые команды

Итак, мы подключились к терминалу и находимся в shell. Давайте сориентируемся в пространстве.
Чтобы узнать имя машины(сервера), на которой мы находимся, введем hostname и нажмем Enter:

test@osboxes:~$ hostname
osboxes

Имя пользователя, под которым мы подключены, как правило отображается в приглашении командной строки (test@osboxes:~$). Если имя текущего пользователя не отображается (например, если задан другой формат приглашения), то его можно получить командой whoami, или id (также отображает группы пользователя):

test@osboxes:~$ whoami
test
test@osboxes:~$ id
uid=1001(test) gid=1001(test) groups=1001(test),27(sudo)

Чтобы узнать, в какой оболочке мы находимся, нужно выполнить команду echo $SHELL:

test@osboxes:~$ echo $SHELL
/bin/bash

Разберем, что произошло. Команда echo выводит значение параметра, переданного ей, в нашем случае мы передали $SHELL. Знак $ означает, что мы обращаемся к переменной, т.е. $SHELL возвращает значение переменной SHELL, заданной в окружении. Список значений всех переменных можно получить командой env. Таким образом, отобразив значение переменной, мы видим, что мы находимся в оболочке bash. Оболочка конкретного пользователя указана в файле /etc/passwd, содержимое которого можно получить так:

test@osboxes:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
test:x:1001:1001:,,,:/home/test:/bin/dash

Команда cat выводит содержимое файла (часть строк в приведенном выводе пропущена и заменена на …). Из файла видим, что для пользователя test указана оболочка /bin/dash. Изменить оболочку текущего пользователя, которая будет загружаться по умолчанию, можно следующей командой(chsh – сокращенное от change shell):

test@osboxes:~$ chsh -s /bin/bash
Password:

Теперь давайте проверим, в каком каталоге мы находимся, для этого выполним команду pwd:

test@osboxes:~$ pwd
/home/test

Для получения списка файлов текущей директории используем команду ls. По соглашению, скрытые файлы начинаются с точки. Для отображения их с помощью команды ls нужно добавить ключ –a. Чтобы отобразить список в расширенном формате, добавим ключ –l. Таким образом команда и её вывод будут выглядеть так:

test@osboxes:~$ ls -al
total 36
drwxr-xr-x 5 test test 4096 Nov  9 01:05 .
drwxr-xr-x 5 root root 4096 Nov  8 11:39 ..
-rw------- 1 test test    9 Nov  8 12:28 .bash_history
-rw-r--r-- 1 test test  220 Nov  8 11:39 .bash_logout
-rw-r--r-- 1 test test 3771 Nov  8 11:39 .bashrc
drwxr-xr-x 4 test test 4096 Nov  8 11:40 .cache
drwxr-xr-x 4 test test 4096 Nov  8 11:40 .config
drwxr-xr-x 3 test test 4096 Nov  8 11:40 .local
-rw-r--r-- 1 test test  807 Nov  8 11:39 .profile
-rw-r--r-- 1 test test    0 Nov  9 01:05 .sudo_as_admin_successful
test@osboxes:~$

Для команды ls с параметрами может быть задан синоним (alias), что упрощает её ввод. Список уже заданных синонимов можно получить командой alias:

test@osboxes:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s*[0-9]+s*//;s/[;&|]s*alert$//''')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

Видим, что команда ll является синонимом команды ls -alF. Синонимы могут ссылаться на другие синонимы. Так, в приведенном выше примере команда ll выполняет команду ls -alF, в которой ls в свою очередь также является синонимом команды ls --color=auto. Для любой команды с целью упрощения её ввода при частом использовании можно задать синоним. В синонимах также можно использовать переменные среды. Например, чтобы иметь возможность из любой директории получить список файлов домашней директории, можно задать синоним командой alias lshome='ls -alF $HOME', таким образом, можно выполнить:

test@osboxes:~$ cd /tmp
test@osboxes:/tmp$ lshome
total 40
drwxr-xr-x 5 test test 4096 Nov  9 02:29 ./
drwxr-xr-x 5 root root 4096 Nov  8 11:39 ../
-rw------- 1 test test   47 Nov  9 02:36 .bash_history
-rw-r--r-- 1 test test  220 Nov  8 11:39 .bash_logout
-rw-r--r-- 1 test test 3771 Nov  8 11:39 .bashrc
drwxr-xr-x 5 test test 4096 Nov  9 02:29 .cache/
drwxr-xr-x 5 test test 4096 Nov  9 02:29 .config/
drwxr-xr-x 3 test test 4096 Nov  8 11:40 .local/
-rw-r--r-- 1 test test  807 Nov  8 11:39 .profile
-rw-rw-r-- 1 test test   72 Nov  9 02:29 .selected_editor
-rw-r--r-- 1 test test    0 Nov  9 01:05 .sudo_as_admin_successful

Здесь командой cd /tmp мы перешли в директорию /tmp, и, находясь в ней, выполнили команду lshome, которая вывела список файлов директории /home/test. При этом в синониме мы ссылаемся на переменную $HOME, в которой содержится путь к домашней директории текущего пользователя.

Алиасы задаются в файле ~/.bash_aliases. Тильда (~) означает домашнюю директорию пользователя. В нашем случае /home/test. Также можно задать их в файле ~/.bashrc. Здесь нужно сказать пару слов об этих файлах.

При запуске bash в качестве оболочки, сначала выполняется файлы (в случае их наличия), в которых могут быть заданы различные настройки профиля и выполнены различные действия в процессе входа до появления командной строки: сначала выполняется файл /etc/profile, далее bash последовательно ищет и выполняет первый из найденных файлов в следующем порядке: ~/.bash_profile, ~/.bash_login, ~/.profile. Из указанных файлов могут вызываться и другие.

Так, например, из файла ~./profile вызывается файл ~/.bashrc, из которого, в свою очередь, в числе прочих, вызывается файл .bash_aliases при его наличии. А файл /etc/profile выполняет также все файлы .sh, находящиеся в директории etc/profile.d.

В bash существуют внутренние команды, их список можно получить командой help. Помощь по конкретной внутренней команде можно получить с помощью команды help <имя_команды>, например:

test@osboxes:~$ help pwd
pwd: pwd [-LP]
    Print the name of the current working directory.

    Options:
      -L        print the value of $PWD if it names the current working
                directory
      -P        print the physical directory, without any symbolic links

    By default, `pwd' behaves as if `-L' were specified.

    Exit Status:
    Returns 0 unless an invalid option is given or the current directory
    cannot be read.

Некоторые внутренние команды bash дублированы в виде исполняемых файлов. Это сделано, чтобы скрипты можно было корректно выполнять в оболочках, в которых не реализованы эти команды. Например, существует исполняемый файл /usr/bin/echo, который реализует функционал внутренней команды echo. Команда help echo выведет справку по внутренней команде, а команда /usr/bin/echo –help выведет справку для соответствующего исполняемого файла. Вывод справки для этих команд отличается, но в целом они реализуют идентичный функционал.

Таким образом, если в оболочке не реализована внутренняя команда echo, скрипт, содержащий вызов echo, сможет успешно выполниться, т.к. для обработки вызова будет использован исполняемый файл /usr/bin/echo. Для поиска выполненных ранее команд можно использовать клавиши «Вверх» и «Вниз», команды из истории можно редактировать и повторно выполнять. В конце статьи приведен список полезных команд.

Если данный материал интересен, то в продолжении статьи я расскажу про скрипты и их параметры, права доступа к файлам, операторы условного выполнения, выбора и циклы, функции и планировщик заданий.

software-logo Где найти и скачать программу-словарь синонимов для Linux? Программу словарь синонимов для Linux, иногда называемую как «Тезаурус» (ака thesaurus или синонимайзер), найти в сети довольно проблематично, но нам ли быть в печали — мы пойдём другим путём.

Как там говорится: Наши умные науки, в наши мускульные руки, штуки разные вложили … :) В ОС Linux по-умолчанию заложено довольно широкий перечень различных полезных программ, с помощью которых мы можем «склепать» себе своего рода программу-синонимайзер (программу-словарь синонимов) для Linux.

Всё что нам потребуется — это текстовый файл с синонимами, которых в сети великое множество, и, входящая в стандартную комплектацию Linux утилита egrep (aka grep -E). Справедливости ради отмечу, что нужно соблюдать несколько условий:

  1. слово и синонимы для него должны идти в одну строку
  2. файлы словарей русского языка должны быть в кодировке UTF-8

Для начала создадим каталог mkdir ~/dict и закинем туда наши файлы словарей. Теперь предположим, нам нужно найти синонимы для слов «Абсолютный«, «Абсолютное«, «Абсолютная«, — тогда набираем: grep -Ehin --color=always -0 абсолют ~/dict/*

Пояснения по параметрам grep:

  • —color[=КОГДА] — использовать маркеры для различия совпадающих строк; КОГДА может быть «always» (всегда), «never» (никогда) или «auto» (автоматически);
  • -h — не начинать вывод с имени файла;
  • -i — игнорировать различие заглавных и строчных букв;
  • -n — печатать номер строки вместе с выходными строками;
  • абсолют — понятно, да? искомое слово;
  • ~/dict/* — это путь с названием словаря, по которому ведется поиск, «*» означает все файлы в каталоге.

Но, чтобы наша программа-словарь синонимов (ака thesaurus, синонимайзер) для Linux работала более элегантнее, то напишем небольшую функцию с кратким именем fsyn (от «find synonyms») и поместим её в ~/.bash_aliases или ~/.bashrc, что расположен в домашнем каталоге ~/:

function fsyn()
{
    # do things with parameters like $1 such as
    grep -Ehin --color=always $1 ~/dict/*
}

Ключевое слово function можно опустить. Теперь же нам достаточно обновить окружение . ~/.bash_aliases или . ~/.bashrc и в качестве параметра передать функции искомое слово, например: fsyn абсолют.

Вот ещё вариант: fsyn абсолют > 1; mcview 1; rm -rf 1 — вывод сохраняется во временный файл 1, открывается в mcview и после удаляется.

Вот собственно и всё. Наша программа-словарь синонимов для Linux готова, — все найденные совпадения в выводе grep отмечаются красным цветом, номера строк отмечены зелёным. Функцию можно допилить как будет угодно, справку по команде получаем grep --help.

Программа-словарь синонимов для Linux на Python

Вниманию любителей GUI интерфакеса представляется программа-словарь синонимов для Linux, которая написана на Python и для работы требует Python 2.6 и PyQt4. Загрузить GUI программу-словарь синонимов на Python для Linux можно поссыле: https://dfiles.ru/files/qu9tfzd2j

А если ссылка умерла, то пробуем по этой вот:

После загрузки нужно просто распаковать содержимое synonimizer.tar.bz2 в нужный каталог в котором будут файлы face.py, main.py, sinonim, и, выполнить python main.py, а если нужно подправить или добавить синоним, тогда правим sinonim.

python-synonimizer

Если получили ошибку:

$ python main.py
Traceback (most recent call last):
  File "main.py", line 6, in 
    from PyQt4.QtCore import *
ImportError: No module named PyQt4.QtCore

Значит нужно выполнить apt-get install python-qt4.

Программа-словарь синонимов для ОС Windows

Ну, и, чтобы не обидеть вниманием виндо-юзеров дадим пару ссылей на программы-словарей синонимов для ОС Windows:

  • Большой словарь-справочник синонимов русского языка системы ASIS — http://www.trishin.ru/left/dictionary/
  • Rhymes — http://rifmovnik.ru/

#Руководства

  • 24 мар 2023

  • 0

Поставить будильник одной строкой или стереть важные файлы — решать вам, но эти команды нужно знать.

Иллюстрация: Оля Ежак для Skillbox Media

Рустам Сабиров

Востоковед, интересующийся IT. В прошлом редактор раздела «Системный блок» журнала «Fакел», автор журналов Computer Gaming World RE, Upgrade Special, руководитель веб-ресурсов компании 1С-Softclub.

Какой смысл пользоваться терминалом, если дистрибутивы Linux и большинство современных приложений имеют графический интерфейс? На первый взгляд, это удобнее: не надо читать документацию и вбивать команды от руки. Но в Linux только официальных сред рабочего стола более десяти, а неофициальных ещё больше. Они сильно отличаются друг от друга и часто работают по-разному, тогда как команды почти одни и те же.

Затем, если вы программист, вам наверняка придётся удалённо подключаться к серверу под управлением Linux, а там вообще не будет графической оболочки.

Кроме того, даже самая продуманная графическая оболочка никогда не даст вам той гибкости и функциональности, которую предлагает командная строка. Например, возможность составлять и запускать сложные цепочки из нескольких разных команд, писать отложенные сценарии и тому подобное. Открыть терминал и написать команду будет всегда быстрее, чем кликать по меню, выбирая нужную опцию.

Наконец, стоит вспомнить, что Linux — это лишь одна из множества Unix-подобных ОС. Изучив терминал Linux, вы сможете ориентироваться в Unix, BSD-системах и macOS. Другими словами, получите универсальный, быстрый и мощный инструмент для работы.

Прежде чем идти дальше, нужно понять следующие правила:

  • Не запускайте команды, которых вы не знаете. Копировать команды из интернета и вводить их в терминал, не понимая, что они делают, — плохая практика.
  • Если терминал пишет, что команда не найдена, её можно найти в репозиториях и установить с помощью пакетного менеджера. Как именно — смотрите ниже.
  • Читайте руководство. Терминал хорош ещё и тем, что содержит встроенную подробную справку по всем командам — её можно вызвать командами man или help. В общем, старый добрый принцип RTFM (read the fucking manual).

Ctrl + Alt + T — запуск терминала.

Ctrl + Shift + T — открыть новую вкладку.

Ctrl + Shift + W или Ctrl + D — закрыть текущую вкладку (или весь терминал, если вкладка одна).

Ctrl + Shift + N — открыть новое окно терминала.

Ctrl + C — отмена выполнения ранее введённой команды.

clear — очищение окна терминала.

history — история ввода.

Чтобы посмотреть определённое количество введённых ранее команд, нужно добавить к команде history число:

$ history 5
 1010  ip -h monitor
 1011  whatis ls
 1012  nethogs
 1013  clear
 1014  history 5
$ 

«Листать» введённые ранее команды можно с помощью клавиш со стрелками «вверх» и «вниз».

sleep [number] — отложить выполнение следующей команды. Полезно, когда выполнение следующей команды зависит от успешного завершения предыдущей.

Чтобы указать время, на которое нужно перенести выполнение команды, используют специальные символы:

  • s — секунды;
  • m — минуты;
  • h — часы;
  • d — дни.

Следующий пример запустит файл song в программе mplayer через 2 часа 20 мин:

$ sleep 2h 20m && mplayer song.mp3 

С помощью командной строки можно быстро получить информацию о программах, состоянии системы и настройках.

man [имя_пакета] — главное руководство по командам Linux.

Даёт подробную информацию по команде и её использованию. У каждой команды есть множество опций, запомнить их все сложно, поэтому стоит научиться пользоваться руководством. Поначалу вывод man кажется запутанным, но стоит с ним разобраться — и необходимость гуглить сведётся к минимуму.

Например, man ls выведет следующую информацию:

LS(1)                                      User Commands                                     LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information about the FILEs (the current directory by default). Sort entries alpha‐
       betically if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file
...

Вывод man включает следующие поля:

  • Name — имя команды, которую описывает man-страница.
  • Synopsis — краткое описание команды и её синтаксиса.
  • Description — объяснение того, что делает программа.
  • Options — описание опций командной строки, которые принимает команда, и дополнительная информация.

Самое полезное тут — опции. Например, вы хотите вывести список не только файлов, а ещё и их авторов. Выбираете в man нужную опцию и пишете:

ls --author -l
total 225824
-rw-r--r--.  1 tam tam tam   5615374 Nov 29  2021  1default.png
-rw-r--r--.  1 tam tam tam   5517455 Nov 29  2021  2default.png
-rw-r--r--.  1 tam tam tam   5807674 Nov 29  2021  3default.png
-rw-r--r--.  1 tam tam tam   6155385 Nov 29  2021  4default.png
-rw-r--r--.  1 tam tam tam   6039516 Nov 29  2021  5default.png
-rw-r--r--.  1 tam tam tam   5464565 Nov 29  2021  6default.png

LS (1) в выводе man означает первую страницу. Перемещаться по тексту можно с помощью колеса мыши, стрелок вверх/вниз, клавиши пробел или PgUp/PgDn. Перейти в начало/конец руководства можно с помощью клавиш Home и End.

Если ввести заглавную Н, то появится более детальная подсказка с альтернативными способами передвижения по тексту.

Для поиска конкретного слова в man введите ? [искомое_слово] и жмите Enter.

help — справка.

Если в мануале нет информации по команде или утилите или требуется краткая справка, то help — то, что нужно.

ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                             e.g., '--block-size=M'; see SIZE format below

whatis [имя_пакета] — краткое описание утилиты.

$ whatis whatis
whatis (1)           - display one-line manual page descriptions

whoami — информация о текущем пользователе системы.

$ whoami
tam

whereis — путь к программе.

Показывает полный путь к исполняемому файлу.

$ whereis firefox
firefox: /usr/bin/firefox /usr/lib64/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

lsblk — информация о дисках.

Выводит данные о дисках, разделах и их названия (sda1, sda2 и тому подобное).

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 931.5G  0 disk 
├─sda1        8:1    0   128G  0 part /run/media/tam/25881-1
└─sda2        8:2    0 803.5G  0 part 
zram0       252:0    0     8G  0 disk [SWAP]
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   200M  0 part /boot/efi
├─nvme0n1p2 259:2    0     1G  0 part /boot
├─nvme0n1p3 259:3    0 439.1G  0 part /home
└─nvme0n1p4 259:4    0  36.7G  0 part /

df — объём занятого пространства.

Показывает общий объём диска/раздела и свободный.

По умолчанию выводит данные в килобайтах.

Для отображения в мегабайтах добавьте параметр -m.

$ df -m
Filesystem     1M-blocks   Used Available Use% Mounted on
devtmpfs               4      0         4   0% /dev
tmpfs               7896    195      7701   3% /dev/shm
tmpfs               3159      2      3157   1% /run
/dev/nvme0n1p4     36674  20796     13984  60% /
tmpfs               7896     46      7851   1% /tmp
/dev/nvme0n1p2       974    271       636  30% /boot
/dev/nvme0n1p3    441436 349935     69006  84% /home
/dev/nvme0n1p1       200     18       183   9% /boot/efi
tmpfs               1580     12      1568   1% /run/user/1000

du — размер файла или папки.

Показывает, сколько места занимает файл или директория.

Лучше вызывать с параметром -h, чтобы получить информацию в МБ, КБ.

du -h ~/Desktop 

15G	/home/tam/Desktop

free — объём ОЗУ.

Показывает объём доступной и занятой оперативной памяти. Для отображения в МБ, вызывайте с параметром -h.

$ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi        10Gi       536Mi       1.4Gi       4.3Gi       3.2Gi
Swap:          8.0Gi       6.9Gi       1.1Gi

uname — сведения о системе.

Показывает данные о системе. Для более подробной информации лучше вводить uname -a. Будут выведены имя компьютера и версия ядра.

$ uname -a
Linux fedora 6.1.14-200.fc37.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Feb 26 00:13:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

uptime — время работы системы.

Показывает время непрерывной работы ОС и количество пользователей.

$ uptime
 22:18:30 up 14 days, 21:50,  1 user,  load average: 0.48, 0.53, 0.54

date — вывод даты и времени.

Показания можно форматировать, например установить 12-/ 24-часовой формат, получить наносекунды и тому подобное.

$ date
Tue 21 Mar 22:18:58 

cat /etc/*-release — информация о дистрибутиве.

$ cat /etc/*-release
Fedora release 37 (Thirty Seven)
NAME="Fedora Linux"
VERSION="37 (Workstation Edition)"

pwd — «где я?».

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

$ pwd
/home/tam

file — определение типа файла.

Покажет, с чем вы имеете дело (текстовый документ, картинка, папка).

$ file Dropbox/
Dropbox/: directory

mount/umount — подключение/отключение дисков.

Используется для монтирования дисков, устройств, файловых систем, ISO-образов. Требуются права суперпользователя.

У команд много опций. Смотрите их описание в руководстве, чтобы выбрать ту, которая подходит под вашу задачу.

$ mount /dev/sdb1 /mnt — эта команда примонтирует флешку.
$ sudo umount /dev/sdb1 — а эта, наоборот, демонтирует её.

ls — просмотр содержимого директории.

По умолчанию показывает текущую папку. Чтобы посмотреть, что внутри другой папки, нужно прописать путь к ней.

ls [адрес_конкретной_папки] — покажет, что в этой папке с аргументом -R выдаст, что лежит в подпапках.

$ ls Desktop 


 2014.pdf
 50689841.pdf
 959f945cb24b3d3f7b68306e5ce1b301.jpg
 98551794.pdf
 archive
 dir00
 dir01
 dir02
 dir03
 dir04
 dir05

Полезные опции:

ls -l выводит список содержимого с подробной информацией.

ls -a показывает скрытые файлы.

du — информация о размере файла или папки.

Полезные опции:

-h — выдаёт размеры в лёгком для чтения формате.

-s — выводит минимум данных.

-d — устанавливает глубину рекурсии по папкам.

$ du -h -s Desktop/
15G	Desktop/

df — анализ дискового пространства.

Выдаёт информацию о файловых системах, их размере, использованном и свободном месте.

Полезная опция:

-h — вывод в удобном для чтения формате.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           7.8G  212M  7.6G   3% /dev/shm
tmpfs           3.1G  1.9M  3.1G   1% /run
/dev/nvme0n1p4   36G   21G   14G  60% /
tmpfs           7.8G   54M  7.7G   1% /tmp
/dev/nvme0n1p2  974M  271M  636M  30% /boot
/dev/nvme0n1p3  432G  342G   68G  84% /home
/dev/nvme0n1p1  200M   18M  183M   9% /boot/efi
tmpfs           1.6G   12M  1.6G   1% /run/user/1000

cd — навигация по папкам.

cd [адрес_папки] — перемещение в нужную папку.

Вызов без параметров возвращает в домашнюю директорию.

cd .. — выход на уровень вверх.

cd — — возврат в предыдущую папку.

$ cd Desktop/
[tam@fedora Desktop]$

Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + два раза нажмите Tab.

$ cd + 
archive/                             iscan-gt-s600-bundle-2.30.4.x64.rpm/
dir00/                               pics/
dir01/                               OneDrive/
dir02/                               OneDrive-2021/
dir03/                               Photos/
dir04/                               Photos_c/
dir05/                               REACT/

Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.

cd + D
dir00/ dir01/ dir02/ dir03/ dir04/ dir05/ 

diff — разница между файлами.

Показывает отличия двух текстовых документов.

$ diff textfile-1.txt textfile-2.txt

1,2c1,2
< Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + двойной Tab.
< Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.
---
> diff — разница между файлами.
> Показывает разницу между двумя текстовыми файлами.

mkdir — создание новой папки.

Чтобы создать всю структуру папки с подпапками добавьте параметр -p.

$ mkdir Desktop/myfolder

Команда mkdir -p /home/MyNewFolder/OldFolder создаст папку MyNewFolder в домашней директории и переместит в эту новую папку OldFolder, которая была создана ранее.

Чтобы создать сразу 33 папки, достаточно написать:

$ mkdir dir{00..33}
$ ls
dir00  dir04  dir08  dir12  dir16  dir20  dir24  dir28  dir32
dir01  dir05  dir09  dir13  dir17  dir21  dir25  dir29  dir33
dir02  dir06  dir10  dir14  dir18  dir22  dir26  dir30
dir03  dir07  dir11  dir15  dir19  dir23  dir27  dir31

touch — создание файла.

Изначально команда предназначалась для изменения времени последнего открытия файла или папки, но на практике её чаще используют для создания новых файлов.

$ touch /home/Ivan /myfile.txt

cp — копирование файлов и папок.

Для копирования вложенных папок и файлов нужно добавить параметр -r (Recursive).

$ cp myfile.txt /home/Ivan/Desktop

mv — перемещение/переименование файлов и папок.

В Linux переименование — это как бы перемещение файла в ту же самую папку, но уже под другим именем.

$ mv oldname.txt newname.txt

С помощью этой команды можно переименовать сразу несколько файлов.

$ for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done

Код выше поменяет расширение всех файлов в папке с .html на .php.

Здесь используется цикл for, который проходится по всем файлам с расширением .html. Код во второй строке перемещает каждый элемент списка в новое место (= переименовывает), заменяя .html на .php. Фрагмент ${file%.html} удаляет части имени файла .html. Done в третьей строке означает конец цикла for.

rename — переименование файлов.

Более продвинутая, чем mv, команда. Но она требует знания регулярных выражений. С rename превращение .html в .php будет выглядеть так:

$ rename 's/.html/.php/' *.html

Здесь s/ (оператор подстановки) отвечает за поиск строки (.html) и её замену на .php. Квантификатор * означает ноль или более повторений.

rm — удаление файлов и папок.

Чтобы удалить вложенные папки и файлы добавьте параметр -r. Важно: rm удаляет файл или папку без возможности восстановления обычными способами.

rm -rf/ — была когда-то одной из самых опасных команд, потому что удаляла всё и навсегда. Вот её расшифровка:

rm — удалить файлы;

-rf — удалить рекурсивно, то есть пройти по вложенным папкам;

/ — начать с корневой директории.

Поскольку были пользователи, которые не читали мануал и страдали из-за шутников, советовавших чинить свою систему с помощью такой команды, в более поздних версиях Linux её разрушительные возможности ограничили. Ну и да — даже когда она работала как часы, её надо было запускать с правами суперпользователя.

ln — создание жёсткой или символической ссылки на файл.

Символическая ссылка — это примерный аналог ярлыка в Windows. Она просто указывает на файл, а жёсткая — ведёт на физический адрес на диске и фактически создаёт копию файла.

Создание жёсткой ссылки:

$ ln /home/ivan/videos/video.mp4 /home/ivan/Desktop/hard_link_to_video_file

Создание символической ссылки:

$ ln -s /home/ivan/video.mp4 soft_link_to_video_file

find — поиск по файловой системе.

Очень полезная команда. Позволяет не только искать файлы и папки по заданным критериям, но и совершать дополнительные действия с ними.

find ./myfolder -name file.txt

поиск файла с определённым именем (file.txt) в папке ./myfolder

find ./myfolder -name *.txt

поиск всех файлов с расширением .txt в конкретной папке

find ./myfolder -name somefile.txt -exec rm -i {} 

поиск и удаление файла с подтверждением (то есть вам надо будет подтвердить, что вы действительно хотите удалить файл)

Здесь мы говорим: найди (find) в папке ./myfolder файл с именем (-name) somefile.txt и выполни (-exec) команду удаления (rm) всех файлов {}, спрашивая при этом каждый раз подтверждение (-i).

Опций гораздо больше, см. man.

dd — копирование и преобразование файлов и разделов.

Позволяет копировать и перемещать целые разделы и отдельные файлы.

Нужно указать исходный файл, место, куда копировать и необходимые дополнительные опции.

Часто используется для создания Live USB. Создать образ диска:

$ sudo dd if=/dev/sda of=/tmp/sdadisk.img

wc — статистика по файлу.

Выдаёт количество строк, слов, знаков и байтов.

$ wc ~/Desktop/textfile-1.txt 
  2  32 312 /home/tam/Desktop/textfile-1.txt

wget — загрузка файлов из Сети.

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

$ wget https://www.somesite.ru/some.jpg

$ wget ya.ru
--2023-03-22 00:42:47--  http://ya.ru/
Resolving ya.ru (ya.ru)... 2a02:6b8::2:242, 77.88.55.242, 5.255.255.242
Connecting to ya.ru (ya.ru)|2a02:6b8::2:242|:80... connected.
[...]
Length: 1727 (1.7K) [text/html]
Saving to: 'index.html'

index.html          100%[===================>]   1.69K  --.-KB/s    in 0s      

2023-03-22 00:42:48 (69.8 MB/s) - 'index.html' saved [1727/1727]

Многие действия в системе выполняются с правами суперпользователя, например установка обновлений, программ или их удаление.

sudo — получение прав суперпользователя.

Например, с помощью следующей команды мы обновим пакеты в Fedora Linux:

$ sudo dnf update

sudo su — удобная опция, если нужно выполнить сразу много команд от имени суперпользователя. Если ввести это один раз, далее можно писать нужные команды.

Опытные пользователи советуют избегать этой команды из соображений безопасности.

sudo!! — запуск ранее введённой команды с правами администратора.

sudo gksudo — запуск графических утилит от имени суперпользователя. Формат команды такой: sudo gksudo [название приложения, которое нужно запустить].

Но sudo есть по умолчанию не во всех дистрибутивах. Например, в таких дистрибутивах, как Arch Linux, Gentoo и некоторых других, которые позволяют пользователю настраивать систему почти без ограничений, sudo нужно устанавливать отдельно. Но везде есть su.

chmod — изменение прав доступа к файлу.

Можно дать права на чтение, запись и запуск файла.

chmod опции права /[путь_к_файлу].

Есть три основных вида прав:

  • r — чтение;
  • w — запись;
  • x — выполнение.

И три вида пользователей:

  • — владелец файла;
  • g — группа файла;
  • o — остальные пользователи.

Есть также цифровой формат записи:

  • 0 — никаких прав;
  • 1 — только выполнение;
  • 2 — только запись;
  • 3 — выполнение и запись;
  • 4 — только чтение;
  • 5 — чтение и выполнение;
  • 6 — чтение и запись;
  • 7 — чтение, запись и выполнение.

$ chmod o+w *.txt 

Эта команда разрешит остальным пользователям (всем, кроме владельца файла) чтение и запись в текстовые файлы.

$ chmod -R 777 / 

Эта команда даст всем пользователям право читать, писать и запускать файлы в системе.

chown — изменение владельца файла, папки.

Для выполнения этой команды нужно обладать правами суперпользователя.

Чтобы поменять владельца для вложенных файлов и папок, добавьте параметр -R.

В Linux может быть несколько пользователей с разными правами.

useradd/userdel/usermod — добавление, удаление, изменение пользователя.

useradd userName — добавить пользователя.

passwd userName — задать пароль для пользователя. При наборе пароля в терминале не будут отображаться никакие символы, но система учтёт все нажатые клавиши.

userdel userName — удалить учётную запись.

usermod userName — редактировать учётную запись.

hostname — определение домена.

Выводит адрес DNS вашей машины.

$ hostname
fedora

С опцией -i покажет текущий IP-адрес компьютера.

ip — работа с сетью.

Эта команда заменяет множество других команд, которые раньше использовались для настроек сети, например ifconfig, ipconfig, netstat и прочие.

ip -a — информация о сетевых настройках.

$ ip -a
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { address | addrlabel | amt | fou | help | ila | ioam | l2tp |
                   link | macsec | maddress | monitor | mptcp | mroute | mrule |
                   neighbor | neighbour | netconf | netns | nexthop | ntable |
                   ntbl | route | rule | sr | tap | tcpmetrics |
                   token | tunnel | tuntap | vrf | xfrm }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec | -j[son] | -p[retty] |
                    -f[amily] { inet | inet6 | mpls | bridge | link } |
                    -4 | -6 | -M | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -N[umeric] | -a[ll] |
                    -c[olor]}

ip address show — выводит сведения о сетевых адресах.

ip route — управление маршрутизацией.

ip -help — узнать все варианты использования.

ping — диагностика сети.

Ping используется для проверки подключения к интернету и тестирования качества связи. Самый простой способ проверить работу сети — ввести ping google.com. Для отмены выполнения команды нажмите Ctrl + C. Также с помощью этой команды можно проверять соединение со своим сервером.

$ ping google.com
PING google.com(lb-in-f101.1e100.net (2a00:1450:4010:c1e::65)) 56 data bytes
64 bytes from lb-in-f101.1e100.net (2a00:1450:4010:c1e::65): icmp_seq=1 ttl=108 time=40.9 ms

traceroute — как ping, но лучше.

Выводит не только маршрут сетевых пакетов, но и данные по узлу и время доставки пакетов.

nethogs — информация о трафике.

Полезная утилита, которая помогает определить, какая программа сколько трафика потребляет. Не во всех системах установлена по умолчанию.

zip — архивирование файла.

Упаковывает файлы в zip-архив.

$ zip my-archive.zip /home/Ivan/file-to-archive.txt

unzip — распаковка архива.

Извлекает файлы из архива.

tar — создание резервных копий.

Утилита tar тоже создаёт архивы, но уже с расширением .tar. В отличие от zip, она не сжимает файлы, поэтому её чаще используют для резервного копирования.

Выполняется с параметрами -cf. Просмотреть содержимое .tar можно с помощью опций -tvf. Для распаковки архива .tar используются опции -xvf.

tar -xvf newark.tar

  • -c, —create — создать новый архив;
  • -t, —list — вывести список содержимого архива;
  • -x, —extract — извлечь файлы из архива;
  • -v, —verbose — вывести список с деталями;
  • -f, —file — файл (архив).

Для этих целей используются редакторы Nano и Vim, которые запускаются прямо в окне терминала.

nano — запуск текстового редактора Nano.

$ nano textfile-1.txt

Вывод работы команды
Скриншот: Skillbox Media

Внизу вы видите подсказки к основным командам редактора. Введя текст, сохраните его, нажав комбинацию клавиш Ctrl + О и выходите с помощью Ctrl + X.

vim — запуск текстового редактора Vim.

Vim намного мощнее и сложнее Nano, зато Vim можно использовать как полноценную IDE для программирования и/или работы с текстами. Для выхода из редактора введите :q.

Вывод работы команды
Скриншот: Skillbox Media

У нас есть полноценный курс по Vim для начинающих.

echo — вывод строки в терминал.

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

$ echo Hello, World!
Hello, World!

С помощью опции -e можно запускать специальные последовательности. Например, добавив n, можно выводить слова на новых строках.

$ echo -e "Hello, nWorld n!"
Hello, 
World 
!

Можно раскрасить вывод в разные цвета, а добавив *, вывести содержимое папки.

$ echo *
dir00 dir01 dir02 dir03 dir04 dir05 dir06 dir07 dir08 dir09 dir10 dir11 dir12 dir13 dir14 dir15 dir16 dir17 dir18 dir19 dir20 dir21 dir22 dir23 dir24 dir25 dir26 dir27 dir28 dir29 dir30 dir31 dir32 dir33 index.html

cat — просмотр содержимого файла.

Команда cat выводит в терминал содержимое файла, который вы укажете в качестве параметра. Вот как она выглядит: cat [путь_к_файлу].

$ cat textfile-1.txt 
Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + двойной Tab.
Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.

По этой команде выводится содержимое файла, переданного в параметре.

Можно передать сразу несколько файлов.

Можно объединить содержимое нескольких файлов в новом с помощью символа >.

$ cat textfile-1.txt textfile-2.txt > textfile-3.txt

С помощью опции -n (Number) можно вывести определённое количество строк.

grep — поиск по текстовым файлам.

Мощная команда для поиска внутри файлов. Ищет по слову, строке или регулярному выражению.

Чтобы команда вывела найденное в терминал, перед ней нужно ввести cat.

Например, для поиска слова «кот» в файле cats.txt можно ввести:

$ cat cats.txt | grep кот

head — просмотр начала файла.

Похожа на cat, но по умолчанию показывает только первые 10 строк текста.

Для изменения числа выводимых строк есть параметр -n.

head -n 5 ~/Desktop/myfile.txt покажет первые пять строк файла.

$ head -n 5 ~/Desktop/textfile-1.txt
Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + двойной Tab.
Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.

tail — просмотр конца файла.

Выводит последние строки текста файла.

С помощью опции -c можно вывести определённое количество байт информации из файла.

$ tail -c 100 textfile-3.txt
ми
Показывает разницу между двумя текстовыми файлами.

Параметр -f позволяет следить за изменениями в файле и выводить их на экран.

more/less — просмотр длинных текстов.

less выводит часть большого текста так, что занимает один экран. С опцией -N показывает номера строк. Ниже — пример работы команды (вчитываться в текст не стоит, он не имеет отношения к самой команде — это просто вывод текстовой информации из случайного текстового файла).

$ less -N textfile-3.txt
1. Если нужно посмотреть, куда можно перейти из текущей папки, введите cd        1 + пробел + двойной Tab.
      2. Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd  +      2  D + двойной Tab.
      3. diff -- разница между файлами.
      4. Показывает разницу между двумя текстовыми файлами.

more делает то же самое, что и less, но у неё меньше дополнительных опций. Следующая команда выведет текст, начиная с десятой строки.

$ more +10 newtestfile.txt 

Вывод работы команды more
Скриншот: Skillbox Media

sort — сортировка строк.

Сортирует строки текста по разным критериям.

Полезные опции

-n (Numeric) — сортировка по числовому значению.

-r (Reverse) — переворачивает вывод.

$ sort text-to-sort.txt 
computer
data
GUI
line
linux
mouse
skillbox
terminal

$ sort -r text-to-sort.txt 
terminal
skillbox
mouse
linux
line
GUI
data
computer

top — отображение процессов.

Эта команда выводит список всех процессов, запущенных в системе.

Скриншот: Skillbox Media

Альтернативы: atop, xtop или сочетание ps axu | grep [имя_процесса].

$ ps axu | grep firefox
tam       531905  1.0  3.0 5597628 498708 ?      Sl   Mar15  96:44 /usr/lib64/firefox/firefox
tam       531917  0.0  0.0   4808  2320 ?        Ss   Mar15   1:20 /usr/libexec/cgroupify app-gnome-firefox-531905.scope
tam       532027  0.0  0.0 253672 11184 ?        Sl   Mar15   0:00 /usr/lib64/firefox/firefox -contentproc -parentBuildID 20230214102510 -prefsLen 29270 -prefMapSize 240130 -appDir /usr/lib64/firefox/browser {f6b45f8f-ab5a-4190-88dc-cb4e27948d4e} 531905 socket

Ещё вариант: pidof + [имя процесса].

$ pidof firefox
782667 782616 782563 782548 782341 782031 781966 781483 759503 741791 741676 721674 719583 671683 651779 647050 646496 641065 638796 635042 634566 631565 586886 586388 584499 584009 567091 566046 565460 565175 562873 562301 560923 560876 557257 553088 550860 549445 543830 543783 541594 535504 532439 532437 532180 532096 532027 531905

kill, xkill, pkill — принудительное завершение процессов.

Закрыть программу или завершить процесс можно несколькими способами.

С помощью команды kill: kill [ID_процесса].

Чтобы узнать PID (идентификатор процесса), введите команду top.

С помощью команды xkill. После её ввода вместо курсора появится крестик, наведите его на окно программы, которую нужно закрыть.

С помощью команды pkill (завершение процесса по имени).

pkill firefox

killall — завершение всех процессов с указанным именем.

killall firefox

Для установки и удаления приложений и обновлений в Linux используются пакетные менеджеры. В каждом дистрибутиве или семействах дистрибутивов они разные.

В Ubuntu и Debian это APT, в Fedora — DNF, в Arch и Manjaro — Pacman, в Gentoo — Portage, в openSUSE — RPM.

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

dnf (Fedora).

sudo dnf install [имя_пакета] — установка пакета.

sudo dnf update — обновление сведений о пакетах.

sudo dnf upgrade — обновление пакетов.

sudo dnf remove [имя_пакета] — удаление пакета.

dnf autoremove — автоматическое удаление ненужных файлов с их зависимостями.

Вывод работы команды
Скриншот: Skillbox Media

Узнать, есть ли нужная программа в репозиториях или как она точно называется, можно через поиск. В Fedora это команда dnf search [имя пакета].

$ dnf search firefox
Last metadata expiration check: 3:23:53 ago on Tue 21 Mar 2023 22:33:02 MSK.
========================== Name & Summary Matched: firefox ===========================
firefox.x86_64 : Mozilla Firefox Web browser
firefox-langpacks.x86_64 : Firefox langpacks
firefox-pkcs11-loader.x86_64 : Helper script for Firefox that sets up the browser for
                             : authentication with Estonian ID-card
firefox-wayland.x86_64 : Firefox Wayland launcher.
firefox-x11.x86_64 : Firefox X11 launcher.
============================== Summary Matched: firefox ==============================
icecat.x86_64 : GNU version of Firefox browser
mozilla-https-everywhere.noarch : HTTPS enforcement extension for Mozilla Firefox
mozilla-noscript.noarch : JavaScript white list extension for Mozilla Firefox
mozilla-ublock-origin.noarch : An efficient blocker for Firefox
profile-cleaner.noarch : Script to vacuum and reindex sqlite databases used by Firefox
                       : and by Chrome
textern.x86_64 : Firefox add-on for editing text in your favorite external editor
webextension-token-signing.x86_64 : Chrome and Firefox extension for signing with your
                                  : eID on the web

Можно также скачать файл и установить его через терминал. Программы, совместимые с дистрибутивами на основе Debian, имеют расширение .deb.

Установить такой файл можно командой dpkg: dpkg -i package.deb.

dpkg —remove package — удаление пакета.

dpkg —purge package — удаление пакета со всеми зависимостями.

Linux можно выключить или перезагрузить из терминала. Это незаменимая опция для тех, кто работает без графического окружения, и полезная, если нужно задать разные условия выключения и перезагрузки.

sudo shutdown — выключение системы (обратите внимание, этой программе нужны права суперпользователя).

Полезные опции команды shutdown:

shutdown +[время в 24-часовом формате].

shutdown 05:10 выключит компьютер через 5 часов 10 минут.

shutdown +[время в минутах].

shutdown +7 выключит компьютер через 7 минут.

shutdown +0 или shutdown now — немедленное выключение компьютера.

Tab — автозавершение.

Чтобы не вводить длинные названия файлов и папок или команд, достаточно написать пару первых букв и нажать Tab, система сама дополнит команду или путь к файлу — но только до того символа, с которого начнётся «разветвление». Звучит сложно, но вот пример: если набрать /home/[username]/D, то автокомплит не сработает, потому что по этому пути есть три папки, которые начинаются на букву D — Downloads, Documents и Desktop.

alias — создание синонимов для команд.

С помощью alias можно переименовывать команды или создавать свои. Это удобно, если команда имеет длинное имя, а вы часто ей пользуетесь.

Синтаксис: alias [длинная_команда короткая_команда].

Чтобы узнать, какие алиасы уже есть в системе, введите alias:

$ alias
alias cp='cp -i'
alias df='df -h'
alias egrep='egrep --colour=auto'
alias fgrep='fgrep --colour=auto'
alias free='free -m'
alias grep='grep --colour=auto'
alias ls='ls --color=auto'
alias more='less'
alias np='nano -w PKGBUILD'

Создать алиас для команды clear можно так:

$ alias c='clear'

unalias [alias name] — удалить alias.

Созданным таким образом алиасы сохраняются только до следующей перезагрузки системы. Чтобы сделать алиас постоянным, нужно прописать его в файле ~/.bashrc.

& & — выполнение сразу нескольких команд.

Команды можно связывать и запускать вместе.

[первая_команда] & & [вторая_команда].

| (pipe) — вывод результата первой команды во вторую.

ps axu | grep [имя_процесса].

Ctrl + Shift + T — открыть новую вкладку в терминале.

Ctrl + Shift + C — копировать текст из терминала, аналог Ctrl + C.

Ctrl + Shift + V — вставить текст в терминал, аналог Ctrl + V.

Ctrl + A, Ctrl + E — перемещение в начало/конец строки в терминале.

Alt + B, Alt + F — перемещение по слову назад/вперёд.

Alt + D — удаление следующего слова.

Ctrl + U — удалить всё до начала.

Ctrl + K — удалить всё до конца.

Ctrl + L — очистить экран, не удаляя текущую команду.

Может потребоваться установка пакетов cowsay и fortune (sudo apt-get install fortunes fortune-mod fortunes-min fortunes-ru).

cowsay — говорящая корова.

cowsay + [любое слово/фраза].

Выведет на экран корову, которая произносит введённое слово.

fortune | cowsay — корова поделится умной мыслью или цитатой.

$ fortune | cowsay
 _________________________________________ 
/ "Call immediately. Time is running out. 
| We both need to do something monstrous  |
| before we die."                         |
|                                         |
| -- Message from Ralph Steadman to       |
 Hunter Thompson                         /
 ----------------------------------------- 
           ^__^
           (oo)_______
            (__)       )/
                ||----w |
                ||     ||

cowsay -l — список других животных.

Выведет список других существ, которых можно вызвать в терминале.

fortune | cowsay -f [животное].

Выведет животное, произносящее умную мысль или цитату.

  • Обратите внимание: команды и их ключи в терминале Linux чувствительны к регистру — постановка прописной или строчной буквы влияет на их работоспособность.
  • Навыки работы с командной строкой помогут легко взаимодействовать практически с любой Unix-подобной операционной системой.
  • Использование горячих клавиш позволяет значительно ускорить работу с терминалом — собственно, без них работа будет идти довольно медленно.

Научитесь: Администрирова­ние ОС Linux
Узнать больше

Во всех операционных системах, в том числе и в Linux, термин ‘команда’ означает либо утилиту командной строки, либо определённую возможность, встроенную в командную оболочку системы. Тем не менее, для самих пользователей это различие не имеет особого значения. В конце концов, и те и другие команды терминала Linux вызываются одинаково. Вы вводите слово в вашем эмуляторе терминала и получаете результат выполнения команды.

Я уже писал о командах терминала Linux, но тогда затронул лишь несколько самых интересных, самых полезных команд, рассчитывая на то, что пользователь уже достаточно знаком с возможностями терминала. Но нужно сделать ещё одну статью, рассчитанную на новичков, тех, кто только делает свои первые шаги в освоении Linux.

И вот она. Её цель — собрать основные простые и сложные команды Linux, которые должен знать каждый пользователь, чтобы наиболее эффективно управлять своей системой. Для удобности запоминания опций команд я в скобках добавил слова, от которых они произошли — так намного проще, на себе проверено.

Это не значит, что я перечислю все команды, все перечислены тут — я постараюсь охватить всё самое полезное, то, что может пригодиться в повседневной жизни. Чтобы было удобнее читать, разделим этот список на категории команд по назначению. Большинство рассмотренных здесь утилит не требуют дополнительной установки, они будут предустановлены в любом дистрибутиве Linux, а если не будут, то их несложно найти в официальных репозиториях.

1. ls

Утилита для просмотра содержимого каталогов. По умолчанию показывает текущий каталог. Если в параметрах указать путь, то она перечислит содержимое конечного каталога. Полезные опции -l (List) и -a (All). Первая форматирует вывод в виде списка с более подробной информацией, а вторая включает показ скрытых файлов. Подробнее здесь.

2. cat

Печатает содержимое файла, переданного в параметре, в стандартный вывод. Если передать несколько файлов, команда склеит их. Также можно перенаправить вывод в ещё один файл с помощью символа ‘>’. Если нужно вывести только определенное количество строк, используйте опцию -n (Number). Подробнее тут.

3. cd

Позволяет перейти из текущего каталога в указанный. Если запустить без параметров — возвращает в домашний каталог. Вызов с двумя точками возвращает на уровень вверх относительно текущего каталога. Вызов с тире (cd -) возвращает к предыдущему каталогу. Более детально здесь.

4. pwd

Печатает на экран текущий каталог. Это может быть полезно, если ваша командная строка Linux не выводит такую информацию. Эта команда будет востребована в Bash программировании, где для получения ссылки на каталог выполняется скрипт. Более подробно в отдельной статье.

5. mkdir

Создание новых каталогов. Наиболее удобная опция -p (Parents), позволяет создать всю структуру подкаталогов одной командой, даже если они ещё не существуют. Подробнее о том как создать папку читайте в отдельной статье.

6. file

Команда file показывает тип файла. В Linux файлы не обязаны всегда иметь расширения для того, чтобы с ними работать. Поэтому пользователю иногда трудно определить, что за файл перед ним. Эта маленькая утилита решает проблему.

7. cp

Копирование файлов и каталогов. Она не копирует каталоги по умолчанию рекурсивно (то есть все поддиректории и все файлы в поддиректориях), поэтому не забудьте добавить опцию -r (Recursive) или -a (Archive). Последняя включает режим сохранения атрибутов, владельца и временного штампа в дополнение к рекурсивному копированию.

8. mv

Перемещение или переименование файлов и каталогов. Примечательно, что в Linux это одна и та же операция. Переименование — это перемещение файла в ту же папку с другим именем. Подробнее — здесь.

9. rm

Удаляет файлы и папки. Очень полезная команда Linux: с её помощью вы можете убрать весь беспорядок. Если нужно рекурсивное удаление, используйте опцию -r. Однако будьте осторожны: конечно, для того чтобы повредить систему вам нужно будет серьёзно постараться, однако можно удалить собственные важные файлы. Rm удаляет файлы не в корзину, из которой потом всё можно будет восстановить, а полностью стирает. Действия оператора rm необратимы. Поверьте, ваши оправдания в духе «rm съела мою курсовую» никому не будут интересны. Подробнее в этой статье.

 10. ln

Создает жёсткие или символические ссылки на файлы. Символические или программные ссылки — это что-то похожее на ярлыки в Windows. Они предоставляют удобный способ доступа к определённому файлу. Символические ссылки указывают на файл, но не имеют никаких метаданных. Жёсткие ссылки, в отличие от символических, указывают на физический адрес области диска, где хранятся данные файла.

11. chmod

Изменяет права доступа к файлу. Это чтение, запись и выполнение. Каждый пользователь может изменять права для своих файлов.

12. chown

Изменяет владельца файла. Только суперпользователь может изменять владельцев. Для рекурсивного изменения используйте опцию -R.

13. find

Поиск в файловой системе, файлах и папках. Это очень гибкая и мощная команда Linux не только из-за своих способностей ищейки, но и благодаря возможности выполнять произвольные команды для найденных файлов.

14. locate

В отличие от find, команда locate ведёт поиск в базе данных updatedb для шаблонов имён файлов. Эта база данных содержит снимок файловой системы, что позволяет искать очень быстро. Но этот поиск ненадёжен, потому что вы не можете быть уверены, что ничего не изменилось с момента последнего снимка. Подробнее — тут.

15. du

Показывает размер файла или каталога. Самые полезные опций: -h (Human), которая преобразует размеры файлов в легко читаемый формат, -s (Summarize), которая выводит минимум данных, и -d (Depth), устанавливающая глубину рекурсии по каталогам.

16. df

Анализатор дискового пространства. По умолчанию вывод достаточно подробный: перечислены все файловые системы, их размер, количество использованного и свободного пространства. Для удобства есть опция -h, делающая размеры легко читаемыми.

17. dd

Как сказано в официальном руководстве, это команда терминала для копирования и преобразования файлов. Не очень понятное описание, но это всё, что делает dd. Вы передаёте ей файл-источник, пункт назначения и пару дополнительных опций. Затем она делает копию одного файла в другой. Вы можете задать точный размер данных, которые нужно записать или скопировать. Работает утилита со всеми устройствами. Например, если вы хотите перезаписать жёсткий диск нулями из /dev/zero, можете сделать это. Также она часто используется для создания LiveUSB или гибридных ISO образов.

18 mount / umount

Это команды консоли Linux для подключения и отключения файловых систем Linux. Можно подключать всё: от USB накопителей, до ISO образов. И только у суперпользователя есть права для этого.

Linux команды консоли для работы с текстом

19. more / less

Это две простенькие команды терминала для просмотра длинных текстов, которые не вмещаются на одном экране. Представьте себе очень длинный вывод команды. Или вы вызвали cat для просмотра файла, и вашему эмулятору терминала потребовалось несколько секунд, чтобы прокрутить весь текст. Если ваш терминал не поддерживает прокрутки, вы можете сделать это с помощью less. Less новее, чем more и поддерживает больше опций, поэтому использовать more нет причин.

20. head / tail

Ещё одна пара, но здесь у каждой команды своя область применения. Утилита head выводит несколько первых строк из файла (голова), а tail выдает несколько последних строк (хвост). По умолчанию каждая утилита выводит десять строк. Но это можно изменить с помощью опции -n. Ещё один полезный параметр -f, это сокращение от follow (следовать). Утилита постоянно выводит изменения в файле на экран. Например, если вы хотите следить за лог файлом, вместо того, чтобы постоянно открывать и закрывать его, используйте команду tail -nf.

21. grep

Grep, как и другие инструменты Linux, делает одно действие, но делает его хорошо: она ищет текст по шаблону. По умолчанию она принимает стандартный ввод, но вы можете искать в файлах. Шаблон может быть строкой или регулярным выражением. Она может вывести как совпадающие, так и не совпадающие строки и их контекст. Каждый раз, когда вы выполняете команду, которая выдает очень много информации, не нужно анализировать всё вручную — пусть grep делает свою магию.

22. sort

Сортировка строк текста по различным критериям. Наиболее полезные опции: -n (Numeric), по числовому значению, и -r (Reverse), которая переворачивает вывод. Это может быть полезно для сортировки вывода du. Например, если хотите отсортировать файлы по размеру, просто соедините эти команды.

23. wc

Утилита командной строки Linux для подсчёта количества слов, строк, байт и символов. Подробнее тут.

24. diff

Показывает различия между двумя файлами в построчном сравнении. Причём выводятся только строки, в которых обнаружены отличия. Измененные строки отмечаются символом «с», удалнные — «d», а новые — «а». Подробнее — здесь.

Кстати, я подготовил ещё одну подробную статью, в которой описан именно просмотр содержимого текстового файла в Linux c помощью терминала.

Команды Linux для управления процессами

25. kill / xkill / pkill / killall

Служат для завершения процессов. Но они принимают различные параметры для идентификации процессов. Kill нужен PID процесса, xkill — достаточно кликнуть по окну, чтобы закрыть его, killall и pkill принимают имя процесса. Используйте ту, которая удобна в определенной ситуации.

26. ps / pgrep

Как уже говорилось, чтобы уничтожить процесс, нужен его идентификатор. Один из способов получить его, это утилита ps, которая печатает информацию о запущенных процессах. По умолчанию вывод очень длинный, поэтому используйте опцию -e, чтобы увидеть информацию об определённом процессе. Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с ключом aux выводит полную информацию о процессах. Pgrep работает следующим образом: вы задаете имя процесса, а утилита показывает его идентификатор. Подробнее о команде ps описано тут.

27. top / htop

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

28. time

Время выполнения процесса. Это секундомер для выполнения программы. Полезно, если вам интересно, насколько сильно ваша реализация алгоритма отстает от стандартной. Но, несмотря на такое название, она не сообщит вам текущее время, используйте для этого команду date.

Команды Linux окружения пользователя

29. su / sudo

Su и sudo — это два способа выполнить одну и ту же задачу: запустить программу от имени другого пользователя. В зависимости от вашего дистрибутива вы, наверное, используете одну или другую. Но работают обе. Разница в том, что su переключает вас на другого пользователя, а sudo только выполняет команду от его имени. Поэтому использование sudo будет наиболее безопасным вариантом работы. Я писал про права суперпользователя в этой статье.

30. date

В отличие от time, делает именно то, чего вы от неё и ожидаете: выводит дату и время в стандартный вывод. Его можно форматировать в зависимости от ваших потребностей: вывести год, месяц, день, установить 12-ти или 24-ти часовой формат, получить наносекунды или номер недели. Например, date +»%j %V», выведет день в году и номер недели в формате ISO.

31. alias

Команда создаёт синонимы для других команд Linux. То есть вы можете делать новые команды или группы команд, а также переименовывать существующие. Это очень удобно для сокращения длинных команд, которые вы часто используете, или создания более понятных имен для команд, которые вы используете нечасто и не можете запомнить. Здесь собрано несколько полезных алиасов.

32. uname

Выводит некую основную информацию о системе. Без параметров она не покажет ничего полезного, кроме строчки Linux, но, если задать параметр -a (All), можно получить информацию о ядре, имени хоста и узнать архитектуру процессора.

33. uptime

Сообщает вам время работы системы. Не очень существенная информация, но может быть полезна для случайных вычислений или просто ради интереса, чтобы узнать, как давно был перезагружен сервер.

34. sleep

Вам, наверное, интересно как же её можно использовать. Даже не учитывая Bash-скриптинг, у неё есть свои преимущества. Например, если вы хотите выключить компьютер через определенный промежуток времени или использовать в качестве импровизированной тревоги.

Команды Linux для управления пользователями

35. useradd / userdel / usermod

Эти команды консоли Linux позволяют вам добавлять, удалять и изменять учетные записи пользователей. Скорее всего, вы не будете использовать их очень часто. Особенно если это домашний компьютер, и вы являетесь единственным пользователем. Управлять пользователями можно и с помощью графического интерфейса, но лучше знать об этих командах на всякий случай.

36. passwd

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

Linux команды для просмотра документации

37. man / whatis

Команда man открывает руководство по определённой команде. Для всех основных команд Linux есть man страницы. Whatis показывает, какие разделы руководств есть для данной команды.

38. whereis

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

Команды Linux для управления сетью

39. ip

Если список команд Linux для управления сетью вам кажется слишком коротким, скорее всего вы не знакомы с утилитой ip. В пакете net-tools содержится множество других утилит: ipconfig, netstat и прочие устаревшие, вроде iproute2. Всё это заменяет одна утилита — ip. Вы можете рассматривать её как швейцарский армейский нож для работы с сетью или как непонятную массу, но в любом случае за ней будущее. Просто смиритесь с этим.

40. ping

Ping — это ICMP ECHO_REQUEST дейтаграммы, но на самом деле это неважно. Важно то, что утилита ping может быть очень полезным диагностическим инструментом. Она поможет быстро проверить, подключены ли вы к маршрутизатору или к интернету, и дает кое-какое представление о качестве этой связи.

41. nethogs

Если у вас медленный интернет, то вам, наверное, было бы интересно знать, сколько трафика использует какая-либо программа в Linux или какая программа потребляет всю скорость. Теперь это можно сделать с помощью утилиты nethogs. Для того чтобы задать сетевой интерфейс используйте опцию -i.

42. traceroute

Это усовершенствованная версия ping. Мы можем увидеть не только полный маршрут сетевых пакетов, но и доступность узла, а также время доставки этих пакетов на каждый из узлов. Подробнее — тут.

Выводы

Мы рассмотрели основные команды Linux, которые могут пригодиться вам при повседневном использовании системы. Если вы считаете, что есть другие команды, которые нужно добавить в этот список, напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

42 команды Linux которые вы должны знать
42 команды Linux которые вы должны знать

Содержание

Системный администратор

42 команды Linux которые вы должны знать

42 команды Linux которые вы должны знать

Во всех операционных системах, в том числе и в Linux, термин ‘команда’ означает либо утилиту командной строки, либо определённую возможность, встроенную в командную оболочку системы. Тем не менее, для самих пользователей это различие не имеет особого значения. В конце концов, и те и другие команды терминала Linux вызываются одинаково. Вы вводите слово в вашем эмуляторе терминала и получаете результат выполнения команды.

Я уже писал о командах терминала Linux, но тогда затронул лишь несколько самых интересных, самых полезных команд, рассчитывая на то, что пользователь уже достаточно знаком с возможностями терминала. Но нужно сделать ещё одну статью, рассчитанную на новичков, тех, кто только делает свои первые шаги в освоении Linux.

И вот она. Её цель — собрать основные простые и сложные команды Linux, которые должен знать каждый пользователь, чтобы наиболее эффективно управлять своей системой. Для удобности запоминания опций команд я в скобках добавил слова, от которых они произошли — так намного проще, на себе проверено.

Это не значит, что я перечислю все команды — я постараюсь охватить всё самое полезное, то, что может пригодиться в повседневной жизни. Чтобы было удобнее читать, разделим этот список на категории команд по назначению. Большинство рассмотренных здесь утилит не требуют дополнительной установки, они будут предустановлены в любом дистрибутиве Linux, а если не будут, то их несложно найти в официальных репозиториях.

КОМАНДЫ LINUX ДЛЯ УПРАВЛЕНИЯ ФАЙЛАМИ

1. LS

Утилита для просмотра содержимого каталогов. По умолчанию показывает текущий каталог. Если в параметрах указать путь, то она перечислит содержимое конечного каталога. Полезные опции -l (List) и -a (All). Первая форматирует вывод в виде списка с более подробной информацией, а вторая включает показ скрытых файлов.

2. CAT

Печатает содержимое файла, переданного в параметре, в стандартный вывод. Если передать несколько файлов, команда склеит их. Также можно перенаправить вывод в ещё один файл с помощью символа ‘>’. Если нужно вывести только определенное количество строк, используйте опцию -n (Number).

3. CD

Позволяет перейти из текущего каталога в указанный. Если запустить без параметров — возвращает в домашний каталог. Вызов с двумя точками возвращает на уровень вверх относительно текущего каталога. Вызов с тире (cd -) возвращает к предыдущему каталогу.

4. PWD

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

5. MKDIR

Создание новых каталогов. Наиболее удобная опция -p (Parents), позволяет создать всю структуру подкаталогов одной командой, даже если они ещё не существуют.

6. FILE

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

7. CP

Копирование файлов и каталогов. Она не копирует каталоги по умолчанию рекурсивно (то есть все поддиректории и все файлы в поддиректориях), поэтому не забудьте добавить опцию -r (Recursive) или -a (Archive). Последняя включает режим сохранения атрибутов, владельца и временного штампа в дополнение к рекурсивному копированию.

8. MV

Перемещение или переименование файлов и каталогов. Примечательно, что в Linux это одна и та же операция. Переименование — это перемещение файла в ту же папку с другим именем.

9. RM

Удаляет файлы и папки. Очень полезная команда Linux: с её помощью вы можете убрать весь беспорядок. Если нужно рекурсивное удаление, используйте опцию -r. Однако будьте осторожны: конечно, для того чтобы повредить систему вам нужно будет серьёзно постараться, однако можно удалить собственные важные файлы. Rm удаляет файлы не в корзину, из которой потом всё можно будет восстановить, а полностью стирает. Действия оператора rm необратимы. Поверьте, ваши оправдания в духе «rm съела мою курсовую» никому не будут интересны.

 10. LN

Создает жёсткие или символические ссылки на файлы. Символические или программные ссылки — это что-то похожее на ярлыки в Windows. Они предоставляют удобный способ доступа к определённому файлу. Символические ссылки указывают на файл, но не имеют никаких метаданных. Жёсткие ссылки, в отличие от символических, указывают на физический адрес области диска, где хранятся данные файла.

11. CHMOD

Изменяет права доступа к файлу. Это чтение, запись и выполнение. Каждый пользователь может изменять права для своих файлов.

12. CHOWN

Изменяет владельца файла. Только суперпользователь может изменять владельцев. Для рекурсивного изменения используйте опцию -R.

13. FIND

Поиск в файловой системе, файлах и папках. Это очень гибкая и мощная команда Linux не только из-за своих способностей ищейки, но и благодаря возможности выполнять произвольные команды для найденных файлов.

14. LOCATE

В отличие от find, команда locate ведёт поиск в базе данных updatedb для шаблонов имён файлов. Эта база данных содержит снимок файловой системы, что позволяет искать очень быстро. Но этот поиск ненадёжен, потому что вы не можете быть уверены, что ничего не изменилось с момента последнего снимка.

15. DU

Показывает размер файла или каталога. Самые полезные опций: -h (Human), которая преобразует размеры файлов в легко читаемый формат, -s (Summarize), которая выводит минимум данных, и -d (Depth), устанавливающая глубину рекурсии по каталогам.

16. DF

Анализатор дискового пространства. По умолчанию вывод достаточно подробный: перечислены все файловые системы, их размер, количество использованного и свободного пространства. Для удобства есть опция -h, делающая размеры легко читаемыми.

17.DD

Как сказано в официальном руководстве, это команда терминала для копирования и преобразования файлов. Не очень понятное описание, но это всё, что делает dd. Вы передаёте ей файл-источник, пункт назначения и пару дополнительных опций. Затем она делает копию одного файла в другой. Вы можете задать точный размер данных, которые нужно записать или скопировать. Работает утилита со всеми устройствами. Например, если вы хотите перезаписать жёсткий диск нулями из /dev/zero, можете сделать это. Также она часто используется для создания LiveUSB или гибридных ISO образов.

18 MOUNT / UMOUNT

Это команды консоли Linux для подключения и отключения файловых систем Linux. Можно подключать всё: от USB накопителей, до ISO образов. И только у суперпользователя есть права для этого.

LINUX КОМАНДЫ КОНСОЛИ ДЛЯ РАБОТЫ С ТЕКСТОМ

19. MORE / LESS

Это две простенькие команды терминала для просмотра длинных текстов, которые не вмещаются на одном экране. Представьте себе очень длинный вывод команды. Или вы вызвали cat для просмотра файла, и вашему эмулятору терминала потребовалось несколько секунд, чтобы прокрутить весь текст. Если ваш терминал не поддерживает прокрутки, вы можете сделать это с помощью less. Less новее, чем more и поддерживает больше опций, поэтому использовать more нет причин.

20. HEAD / TAIL

Ещё одна пара, но здесь у каждой команды своя область применения. Head выводит несколько первых строк из файла (голова), а tail выдает несколько последних строк (хвост). По умолчанию каждая утилита выводит десять строк. Но это можно изменить с помощью опции -n. Ещё один полезный параметр -f, это сокращение от follow (следовать). Утилита постоянно выводит изменения в файле на экран. Например, если вы хотите следить за лог файлом, вместо того, чтобы постоянно открывать и закрывать его, используйте команду tail -nf.

21. GREP

Grep, как и другие инструменты Linux, делает одно действие, но делает его хорошо: она ищет текст по шаблону. По умолчанию она принимает стандартный ввод, но вы можете искать в файлах. Шаблон может быть строкой или регулярным выражением. Она может вывести как совпадающие, так и не совпадающие строки и их контекст. Каждый раз, когда вы выполняете команду, которая выдает очень много информации, не нужно анализировать всё вручную — пусть grep делает свою магию.

22. SORT

Сортировка строк текста по различным критериям. Наиболее полезные опции: -n (Numeric), по числовому значению, и -r (Reverse), которая переворачивает вывод. Это может быть полезно для сортировки вывода du. Например, если хотите отсортировать файлы по размеру, просто соедините эти команды.

23. WC

Утилита командной строки Linux для подсчёта количества слов, строк, байт и символов.

24. DIFF

Показывает различия между двумя файлами в построчном сравнении. Причём выводятся только строки, в которых обнаружены отличия. Измененные строки отмечаются символом «с», удалнные — «d», а новые — «а».

КОМАНДЫ LINUX ДЛЯ УПРАВЛЕНИЯ ПРОЦЕССАМИ

25. KILL / XKILL / PKILL / KILLALL

Служат для завершения процессов. Но они принимают различные параметры для идентификации процессов. Kill нужен PID процесса, xkill — достаточно кликнуть по окну, чтобы закрыть его, killall и pkill принимают имя процесса. Используйте ту, которая удобна в определенной ситуации.

26. PS / PGREP

Как уже говорилось, чтобы уничтожить процесс, нужен его идентификатор. Один из способов получить его, это утилита ps, которая печатает информацию о запущенных процессах. По умолчанию вывод очень длинный, поэтому используйте опцию -e, чтобы увидеть информацию об определённом процессе. Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с ключом aux выводит полную информацию о процессах. Pgrep работает следующим образом: вы задаете имя процесса, а утилита показывает его идентификатор.

27. TOP / HTOP

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

28. TIME

Время выполнения процесса. Это секундомер для выполнения программы. Полезно, если вам интересно, насколько сильно ваша реализация алгоритма отстает от стандартной. Но, несмотря на такое название, она не сообщит вам текущее время, используйте для этого команду date.

КОМАНДЫ LINUX ОКРУЖЕНИЯ ПОЛЬЗОВАТЕЛЯ

29. SU / SUDO

Su и sudo — это два способа выполнить одну и ту же задачу: запустить программу от имени другого пользователя. В зависимости от вашего дистрибутива вы, наверное, используете одну или другую. Но работают обе. Разница в том, что su переключает вас на другого пользователя, а sudo только выполняет команду от его имени. Поэтому использование sudo будет наиболее безопасным вариантом работы.

30. DATE

В отличие от time, делает именно то, чего вы от неё и ожидаете: выводит дату и время в стандартный вывод. Его можно форматировать в зависимости от ваших потребностей: вывести год, месяц, день, установить 12-ти или 24-ти часовой формат, получить наносекунды или номер недели. Например, date +»%j %V», выведет день в году и номер недели в формате ISO.

31. ALIAS

Команда создаёт синонимы для других команд Linux. То есть вы можете делать новые команды или группы команд, а также переименовывать существующие. Это очень удобно для сокращения длинных команд, которые вы часто используете, или создания более понятных имен для команд, которые вы используете нечасто и не можете запомнить.

32. UNAME

Выводит некую основную информацию о системе. Без параметров она не покажет ничего полезного, кроме строчки Linux, но, если задать параметр -a (All), можно получить информацию о ядре, имени хоста и узнать архитектуру процессора.

33. UPTIME

Сообщает вам время работы системы. Не очень существенная информация, но может быть полезна для случайных вычислений или просто ради интереса, чтобы узнать, как давно был перезагружен сервер.

34. SLEEP

Вам, наверное, интересно как же её можно использовать. Даже не учитывая Bash-скриптинг, у неё есть свои преимущества. Например, если вы хотите выключить компьютер через определенный промежуток времени или использовать в качестве импровизированной тревоги.

КОМАНДЫ LINUX ДЛЯ УПРАВЛЕНИЯ ПОЛЬЗОВАТЕЛЯМИ

35. USERADD / USERDEL / USERMOD

Эти команды консоли Linux позволяют вам добавлять, удалять и изменять учетные записи пользователей. Скорее всего, вы не будете использовать их очень часто. Особенно если это домашний компьютер, и вы являетесь единственным пользователем. Управлять пользователями можно и с помощью графического интерфейса, но лучше знать об этих командах на всякий случай.

36. PASSWD

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

LINUX КОМАНДЫ ДЛЯ ПРОСМОТРА ДОКУМЕНТАЦИИ

37. MAN / WHATIS

Команда man открывает руководство по определённой команде. Для всех основных команд Linux есть man страницы. Whatis показывает, какие разделы руководств есть для данной команды.

38. WHEREIS

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

КОМАНДЫ LINUX ДЛЯ УПРАВЛЕНИЯ СЕТЬЮ

39. IP

Если список команд Linux для управления сетью вам кажется слишком коротким, скорее всего вы не знакомы с утилитой ip. В пакете net-tools содержится множество других утилит: ipconfig, netstat и прочие устаревшие, вроде iproute2. Всё это заменяет одна утилита — ip. Вы можете рассматривать её как швейцарский армейский нож для работы с сетью или как непонятную массу, но в любом случае за ней будущее. Просто смиритесь с этим.

40. PING

Ping — это ICMP ECHO_REQUEST дейтаграммы, но на самом деле это неважно. Важно то, что утилита ping может быть очень полезным диагностическим инструментом. Она поможет быстро проверить, подключены ли вы к маршрутизатору или к интернету, и дает кое-какое представление о качестве этой связи.

41. NETHOGS

Если у вас медленный интернет, то вам, наверное, было бы интересно знать, сколько трафика использует какая-либо программа в Linux или какая программа потребляет всю скорость. Теперь это можно сделать с помощью утилиты nethogs. Для того чтобы задать сетевой интерфейс используйте опцию -i.

42. TRACEROUTE

Это усовершенствованная версия ping. Мы можем увидеть не только полный маршрут сетевых пакетов, но и доступность узла, а также время доставки этих пакетов на каждый из узлов.

ВЫВОДЫ

Мы рассмотрели основные команды Linux, которые могут пригодиться вам при повседневном использовании системы. Если вы считаете, что есть другие команды, которые нужно добавить в этот список, напишите в комментариях!

источник

Запись создана, как шпаргалка, чтобы в случае необходимости, использовать как точку входа, для поиска нужной информации. За основу, был взят курс: OTUS: Linux для начинающих — Отличный видеокурс рассчитанный для программистов и администраторов, которые хотят освоить ОС Linux. Курс понравился структурой, которая объясняет основы, необходимые для начинающих изучение.

NewTux

Linux — семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU, и, возможно, другие компоненты. Как и ядро Linux, системы на его основе как правило создаются и распространяются в соответствии с моделью разработки свободного и открытого программного обеспечения. Linux-системы распространяются в основном бесплатно в виде различных дистрибутивов — в форме, готовой для установки и удобной для сопровождения и обновлений, — и имеющих свой набор системных и прикладных компонентов, как свободных, так, возможно, и собственнических. Linux — Википедия.

Официальной версии операционной системы не существует. Ядро от Линус Торвальдс + окружение от Ричарда Столлмана = GNU/Linux. Оригинальная версия ядра «Vanilla kernel» – kernel.org. Разные версии ядра, разная структура каталогов, разные менеджеры пакетов, разный набор ПО. Не существует официальных сборок.

Версии Linux

Популярные версии (Список дистрибутивов Linux):

Иерархическая структура каталогов Linux

Иерархическая структура каталогов Linux – все сводится к корню «/» (root).

Иерархическая структура каталогов Linux

Иерархическая структура каталогов Linux

/ Корневой каталог, содержит всю файловую архитектуру.
/bin Основные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp).
/boot Загрузочные файлы (в том числе файлы загрузчика, ядро, initrd).
/dev Основные файлы устройств (например, /dev/null, /dev/zero).
/etc Общесистемные конфигурационные файлы.
/home Домашние каталоги пользователей, которые содержат персональные настройки и данные пользователя.
/lib Основные библиотеки, необходимы для работы программ из /bin и /sbin.
/media Точки монтирования для сменных носителей.
/mnt Временно монтируемые файловые системы.
/opt Дополнительное программное обеспечение.
/proc Виртуальная файловая система, состояние ядра ОС и запущенные процессы в виде файлов.
/root Домашний каталог супер пользователя.
/run Информация о системе с момента ее загрузки, в том числе данные, необходимые для работы демонов.
/sbin Основные системные программы для администрирования и настройки системы, например init, iptables, ifconfig.
/srv Данные для сервисов, предоставляемых системой (например, www или ftp).
/sys Информация об устройствах, драйверах, а также некоторых свойств ядра.
/tmp Временные файлы.
/usr Вторичная иерархия для данных пользователя. Содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме.
/var Изменяемые файлы, такие как файлы регистрации, временные почтовые файлы, файлы спулеров, лог файлы.

Варианты установки ПО в Linux

Из исходных кодов – компиляция бинарных файлов, возможность модифицировать, возможность установки без прав администратора.
Минусы: Поиск зависимостей очень долгий. Отсутствие контроля установленного ПО.

Из пакетов – пакет, это своего рода архив, который содержит уже готовый скомпилированный бинарный файл и перечень зависимостей (сразу виден перечень зависимостей). Есть контроль установленного ПО.

Пакетные менеджеры обрабатываю пакеты, имеют собственную базу данных установленного ПО. Если все таки ПО идет из исходного кода, тогда правильно будет собрать пакет и установить.
Минусы: Нужны права администратора. Пакеты создаются под определённый дистрибутив Linux (rpm для пакетного менеджера yum и deb для dpkg).

Из репозитория – место где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Сразу виден перечень зависимостей, есть контроль установленного ПО и как правило все зависимости автоматически устанавливаются из репозитория. Он может быть расположен локально, либо в локальной сети, либо на официальных сайтах.

Простейшие команды в Linux

ls -l Просмотр файлов и директорий, -a показать скрытые файлы.
pwd Текущая директория.
touch Создание файлов
mkdir Создание директорий, -p авто создание поддиректорий.
cd Сменить текущую директорию. Абсолютный путь – путь от корня файловой системы. Относительный путь – путь из текущей директории.
rm Цдалить файл, можно использовать маску.
rmdir Удалить директорию, удаляет только пустые. Нужно использовать команду rm –r, а после rmdir.
cp Копирование файлов и директорий.
mv Перемещение файлов и директорий, можно использовать для переименования.
type Информация о типе команды, то как она будет интерпретироваться если вводится в командной строке.
whereis Показывает полный путь к исполняемому файлу.
who Кто сейчас работает на сервере.
man Справочная информация по команде.
more Листать файл, пробел постранично, еnter построчно, выход клавиша Q.
less Листать файл, можно с помощью курсора, поиск по файлу.

Пользователи в Linux

Идентификация пользователя (UID) — Имя пользователя – 32 символа (псевдоним), для ОС важно идентификатор пользователя.
Два типа пользователей:

  • root (UID 0) – никаких ограничений.
  • Все остальные – служебные (демоны) и обычные (UID не 0).

/etc/passwd – хранится информация о пользователях, в виде:
имя пользователя : Х : UID : GUID (UID группы) : комментарий : домашний каталог : командная оболочка

/etc/group – информация о группах пользователей.
имя группы : GUID : кто входит в группу

/etc/shadow – информация о паролях пользователей, в виде хэш.

Аутентификация – проверка подлинности, наличия пользователя в системе. Логин + пароль – Хеш функция – сравнение с тем что хранится в системе.
Авторизация — предоставление определённому лицу или группе лиц прав на выполнение определённых действий, а также процесс проверки данных прав при попытке выполнения этих действий. Часто можно услышать выражение, что какой-то человек «авторизован» для выполнения данной операции — это значит, что он имеет на неё право.

Расширение файла не имеет значения для ОС – файл это всего лишь поток байт.

File permissions

File permissions

Права доступа к файлам

Права доступа к файлам

Директория – это файл с определенным признаком каталога.
x – открыть директорию.
r – прочесть содержимое директории.

chmod – смена прав. Ключ –R меняет права директории и содержимого.

Команда chmod

Команда chmod

Файл – именованная область данных на диске — ext2,3,4. Блок минимальная единица – в ext4 блок 4 Килобайта.
inode – индексный дескриптор, хранит мета информацию о файле, идентифицируются по номерам. Количество inode ограничено, в xfs – нет таких ограничений.

stat – выводит информацию inode файла.

df – свободное пространство файловых систем.
df –i – информация о inode.

Каталог – хранит в себе имена файлов, по сути соответствие имени файла и его inode. Удаление файла — удаление его имени из каталога, файл остается лежать на диске.

Hard Link – синоним имени файлов – для создания ln, для просмотра ln –li, так как при выводе inode можно увидеть количество жестких ссылок. Жесткие линки созданные на один файл, логически между собой равны. Нельзя создавать на каталоги и только в пределах одной файловой системы, потому что inode уникальны в рамках одной файловой система.

Soft Link – аналог ярлыков, ln –s.
Софт линк занимает inode так как это новый файл, а хард линк – новое имя уже существующего файла. Можно создавать на каталоги и между разными файловыми системами.

Работа с потоками STDIN, STDOUT, STDERR

STDIN — Поток номер 0 (stdin) зарезервирован для чтения команд пользователя или входных данных.
STDOUT — Поток номер 1 (stdout) зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых.
STDERR — Поток номер 2 (stderr) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.

Потоки STDIN, STDOUT, STDERR

Потоки STDIN, STDOUT, STDERR

I/O Redirection – STDIN, STDOUT, STDERR streams

Перенаправление в файл:
Стандартный поток: ls -l > stdout
Ошибки: ls -l 2> stderr
Одновременно: ls -l 2>stderr 1> stdout
> — перезаписывает файл
>> — добавление в файл

Порядок выполнения команды в bash:
ls -l > stdout — выполнение идет справа налево, сначала создается файл и после в него записывается вывод команды ls.

Перенаправление в STDIN другой команды:
command1 | command2 — перенаправление вывода одной команды на вход другой, используется “|” — pipe.

Команда tee::

ls -l | tee file

Потоки и указатели: “&” — перенаправление по адресу, по указателю.

2>&1 1> file

И, ИЛИ, НЕ ИМЕЕТ ЗНАЧЕНИЯ — Логические операторы работают на основании кода возврата программы. Код возврата: 0 — true, не 0 — false. Каждая программа возвращает код возврата, как увидеть: echo $?

&& — Логическое И:

ls -l && echo OK

|| — Логическое ИЛИ:

ls -l || echo ERROR

; — Логическое НЕ ИМЕЕТ ЗНАЧЕНИЕ:

Команда 1; Команда 2

Монтирование

Все есть файлы, диски находятся в каталоге dev, например, sda, sda1, sda2, sdb, sdc, sde, sdf. S — интерфейс SATA. Если имя состоит из букв, это физический диск. Если в конце цифра, это логический диск. Работа с дисками посредством виртуальной файловой системы, VFS — Virtual File System:

  • Уровень абстракции поверх конкретной реализации файловой системы.
  • Обеспечивает единообразный доступ клиентских приложений к различным типам файловых систем.
  • Программный интерфейс между ядром и драйвером конкретной файловой системой.

Монтирование — связывание виртуальной файловой системы с реальной.
vfs

После того как запускается ядро ОС, оно должно произвести монтирование корневой файловой системы, точки монтирования прописаны в файле: /etc/fstab
lsblk — информация о блочных устройствах, дисках ОС.
df — h — выводить размеры в читаемом виде, в мегабайтах или гигабайтах.
mount — более подробная информация, берет данные из /etc/mtab -> /proc/self/mounts

/mnt — каталог для монтирования временных устройств, если на постоянной основе, тогда через fstab и отдельный каталог.

sudo mount /dev/sda /mnt/
unmount /mnt/ либо unmount /dev/sda

Установка ПО

rpm — Пакетный менеджер в Centos (работа с пакетами).
yum — Надстройка над пакетным менеджером, которая работает с репозиторием. Предоставляет данные пакетному менеджеру.

yum search http | grep -i apache
sudo yum install httpd

Список файлов в пакете:

rpm -ql httpd
rpm -ql httpd | grep bin

Поиск пакета по файлу:

yum provides /bin/ls
which ls
rpm -qa

Удаление пакетов:

sudo yum remove httpd
sudo rpm -e httpd

Процессы в Linux

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

Создать процесс можно исключительно из существующего процесса.
fork() – системный вызов, создающий новый процесс. Создает полную копию процесса. Стартует в одном процессе, завершается в двух.
exec() – системный вызов, заменяющий исполняемый код в процессе. Загрузили программу в созданный процесс.
exit() – завершение процесса. Возвращает код возврата.
wait() – считывает код возврата. Вызывается из процесса, который сделал вызов fork(). Считать код возврата может только тот процесс, из которого произошел процесс, который сейчас завершился, то есть процесс родитель.

fork-exec-exit-wait

fork exec exit wait

PID – Уникальный идентификатор процесса, PPID – уникальный идентификатор процесс родителя. Все процессы имеют идентификаторы кроме init или systemd (pid 1 и ppid 0) и kthreadd (pid 2 и ppid 0).

init – пространство пользователя.
kthreadd – процесс пространства ядра.

A tree of processes on a typical Linux system

Иерархическая структура процессов.

Процесс зомби – процесс между событиями exit и wait от родителя. Нормальное состояние, но если они начинают плодится стоит задуматься. Так как могут быть лимит у пользователя.
1. Симптом загруженной системы.
2. Процесс не следить за своими потомками, код возврата читает исключительно родитель.

Процесс сирота – это процесс без родителя. За сиротами следит ядро, как только появляется такой процесс он присваивается init, чтобы можно было прочесть код возврата.

Как завершить процесс-зомби, сделать сиротой, тогда он присвоится init и завершится.

Каталог /proc/pid — информация о процессе. Просмотр доступен всем пользователям ОС. Управлять процессом может либо создающий пользователь либо root. Сменить владельца не возможно. Кто является владельцем каталога то и является владельцем процесса.
Демон (Аналог служба в Windows.) — Программа работающая в фоновом режиме. Процесс, который не имеет управляющего терминала — не воспринимает команды с клавиатуры. Взаимодействие происходит с помощью сигналов ОС. Буква d в названии файлов – демон.

kill <Сигнал> pid — по умолчанию завершает процесс.
posix 28 видов сигналов.
SIGINT – 2 (Сигнал прерывания Ctrl-C с терминала).
SIGTERM – 15 (Сигнал завершения, сигнал по умолчанию для kill).
SIGKILL – 9 Безусловное завершение.

Сигналы обрабатываются специальными обработчиками – описание того что произойдет. Можем сами написать, произойдет замена на дефолтный. На 9 сигнал невозможно написать обработчик. Исключения процессы в статусе d (dump) и процесс init (В FreeBSD можно убить init).

top – показывает первые процессы которые потребляют больше всего процессорного времени.
Если нажать S можно установить период обновления.

top_load_average

Загрузка компьютера: За 1 минуту, За 5 минут, за 15 минут.

load average – среднее количество процессов в очереди на ожидании ресурсов. Если за минуту больше чем за 5 минут, значит нагрузка возрастает, если наоборот, нагрузка падает. Должно быть меньше или равно количеству ядер процессора, но не всегда.

В Линкус в очередь могут попадать процессы ожидающие каких то данных с устройства ввода-вывода, например при монтированная папка которая не доступна по сети, процесс приобретает статус di. По сути это не страшно, так как процессор не нагружают.

Если нажать 1 можно увидеть данные по ядрам.
Вторая строчка – сколько процессов и какой у них статус.

top_cpu_tasks

top_cpu_tasks

us – сколько процессорных ресурсов израсходовано в пространстве пользователя.
sy – сколько процессорного потрачено на работу ядра.
ni (nice) – сколько процесс. ресурсов потраченных на процессы с низким приоритетом
id – процент простоя процессорного времени.
wa – сколько процессорного времени потраченного на устройство ввода-вывода. Если растет этот параметр, значить система ввода-вывод не справляется с текущей нагрузкой, либо сеть либо диск.
hi – сколько процессорных ресурсов потрачено на обработку аппаратных прерываний.
si – сколько процессорных ресурсов потрачено на программные прерывания.
st – как занята хостовая машина. Актуально для виртуальных машин. Не для всех гипервизоров актуально.

ps -efl
pstree

Сеть

ip a
ip r

Узнать DNS: cat /etc/resolv.conf

sudo ss –tnlp
sudo ss –tnlp

Системы инициализации

Порядок загрузки компьютера:
Linux-Booting-process

MBR — главная загрузочная запись, 512 байт — содержит код загрузчика и таблицы раздела. Необходима для загрузки операционной системы.
GPT — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Расширяемого микропрограммного интерфейса (англ. Extensible Firmware Interface, EFI) — стандарта, предложенного Intel на смену BIOS. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR).

GRUB — Позволяет пользователю иметь несколько установленных операционных систем. Умеет по цепочке передавать управление другому загрузчику. Популярный загрузчик в мире Linux. Загрузка ядра ОС.

Ядро должно содержать драйвер диска для каталога «/». Если загрузка идет со специфического диска, то, как правило, сначала вместо реального диска в каталог / монтируется initrd (Initial RAM Disk) — временная файловая система, можно положить модули ядра. После, старт системы инициализации.

Система инициализации — стартует после загрузки ядра. За систему инициализации отвечает первый процесс (init/systemd). Определяет порядок запуска служб и программ.

Три наиболее популярные системы:
1. SysV — наиболее старая система. Пришла из мира Unix. Набор стартовых скриптов. Уровни запуска.
2. Upstart — пришла на смену SysV, упростить написание стартовых скриптов, инициализация служб отличалась от SysV. Полностью быть совместимой с SysV. Особо не популярна.
3. Systemd — современная система инициализации. Параллельность запуска. Зависимости служб. Если служба не запустилась, система будет пытаться запустить.

Скрипты SysV лежать в каталоге /etc/init.d/
Upstart — команда service
В каталогах rc*.d указывается кто и когда будет стартовать, см. /etc/rc

Каталог по умолчанию для систем инициализации: /lib/systemd/system — перечень файлов, которые отвечают за старт служб.

Понравилась статья? Поделить с друзьями:
  • Синоним фазовые
  • Синоним фагоцитоз
  • Синоним фабулы
  • Синоним уютный фильм
  • Синоним уютный мир