linux common.md 9.8 KB

RabbitSVC SVN

Решение проблемы с постоянной авторизацией:

$ sudo add-apt-repository ppa:philippun/stuff
$ sudo apt update
$ sudo apt install python3-svn
Сеть

Сканирование сети:

$ sudo arp-scan --interface=eno1 --localnet

Добавить сетевой интерфейс

sudo ifconfig eno1:1 192.168.24.30
О системе

https://losst.pro/sbor-informatsii-o-sisteme-ubuntu

$ hostnamectl # версия ОС, ядра
$ cat /proc/cpuinfo
$ lsb_release -a
$ uname -a # версия ядра
$ df -h # место на дисках
Полезное
$ obsidian & # запуск программы в фоне
$ ctrl + l # очистка экрана

Утилиты

xxd - вывод содержимого файлов в hex и bin форматах

$ xxd my_file.txt
$ xxd -с 1 -b my_file.txt 
# -b - выводит в двоичном формате
# -c 1 - вывод по одному символу
# -p - убрать справочную информацию
$ xxd -r -p file_in file_out # обратное преобразование

Командная строка

Создание и удаление

$ true > file.txt # создает пустой файл
$ echo "hello world" > file.txt # создает файл и пишет строку 
$ touch {1..50} # создает 50 файлов с именами от 1 до 50
$ mkdir -p folder1/folder2/folder3 # создает вложенные директории
$ mkdir -p folder1/{folder2, folder3}/folder4 # второй способ
$ ls -R folder1 # рекурсивные вывод содержимого
$ tree folder1
$ echo ?.txt # выведет имена файлов только с 1 символом
$ # ? - это только один символ
$ touch user_{ivan, akex, petr}.txt #  создает 3 файлв с именами по шаблону
$ echo now is $(date) # вывод результата команды через $
$ rm *.txt # удаляет файлы по маске

Разное

$ du -sh /usr/bin # вывод размера директории /usr/bin
$ du -sh /usr/bin/* # вывод размера всех нескрытых файлов в /usr/bin
$ du -sh /usr/bin/* | sort -h | less # сортировка по размеру файлов
$ !du # команда du выполнится с предыдущими аргументами
$ cd - # Вернуться в предыдущую директорию
$ wc -l # считает количество строк переданных команде wc
$ export # выводит переменные окружения
$ export EDITOR=nano # установка переменной окружения
$ export "export EDITOR=nano" >> ~./bashrc # установить текстовый редактор по умолчанию
$ head -n10 file.txt # вывести 10 первых строк файла
$ tail -n10 file.txt # вывести 10 последних строк файла
$ cut -c 1-10 file.txt # выведет с 1-ого по 1-ый символы из каждой строчки файла
$ watch -n 1 date # запускает каждую секунду команду date
$ watch -g "df -h" # перезапускает команду df пока не изменится ее вывод
$ tr ":" "\" # заменяетодин символ на другой
````
<h6>История команд</h6>

bash $ history # выводит историю команд $ history | less # листать историю команд $ !25 # выполнить команду под номером 25 $ !! # повтороить предыдущую команду $

<h6>Редактирование команд</h6>

bash $ ctrl + a # переход в начало строки $ ctrl + e # переход в конец строки $ ctrl + w # удаление по словам

<h6>Потоки ввода/вывода</h6>
">" :: Перенаправить поток вывода в файл. Файл будет перезаписан. 
"2>" :: Перенаправить поток ошибок в файл. Файл будет перезаписан. 
"&>" :: Перенаправить поток вывода и поток ошибок в файл. Файл будет перезаписан. 
">>" :: Перенаправить поток вывода в файл. Файл будет создан или дозаписан. 
"2>>" :: Перенаправить поток ошибок в файл. Файл будет создан дозаписан. 
"&>>" :: Перенаправить поток вывода и поток ошибок в файл. Файл будет создан или дозаписан. 
"|" :: Канал. Позволяет передать поток stdout одной команды в поток stdin другой команды.

bash $ echo hello world > 1.txt $ echo new line >> 1.txt # дозаписать файл $ cat 1.txt 2.txt > 3.txt # поместить содержимое двух файлов в третий $ tac 3.txt # выводит файл в обратном порядке $ ls nonexistent_file 2> 4.txt # перенаправить поток ошибок stderr в файл $ ls nonexistet_file &> 4.txt # оба потока stdout и stderr в файл $ cat < 1.txt # передача в stdin $ ls -la | tree output.txt # сохранит вывод ls в файл output.txt

<h6>Пользователи</h6>

bash $ whoami # выводи имя пользователя $ cd # переход в домашнюю директорию пользователя

<h6>Статистика и информация</h6>

bash $ stat file.txt # вывод статистики $ ls -l --time-style=full-iso file.txt # время выводится в полном формате $ ls -l --time=atime file.txt # вывод времени доступа $ touch -a --date="tomorrow" test.txt # изменитьвремя обращения к файлу $ touch -am --date="1990-06-01" test.txt # изменитьвремя обращения и время изменения файла

<h6>Псевдонимы</h6>

bash $ alias l="ls -l" # создание alias. Сохраняется только в текущей сессии

Для сохранения нужнодобавитьв .bashrc

<h6>Помощь</h6>

bash $ man ls # Получение справки по команде $ ls --help

ls --help | less # листать справку

<h6>Переменные окружения</h6>

bash $ env # вывод переменных окружения $ echo $HOME # вывод значения переменной окружения $ touch $USER.txt # создает файл с именем пользователя $ export MY_VARIABLE=123 # создает переменную окружения в текущей сессии $ echo "export MY_VARIABLE=123" >> .bashrc # $ TMP=123 env | less # установка переменной окружения в рамках одной команды $ echo $PATH | tr ":" "\n" $ export CDPATH=.:/cygdrive/c/projects # добавить путь для перехода командой cd

<h6>Файловая система Linux</h6>

bash $ bin -> usr/bin # ссылка на usr/bin $ /boot # загрузчик $ /dev # файлы устройств = устройства $ /etc # конфигурация системных программ $ /home # домашние директории всех пользователей $ lib -> usr/lib # библиотеки $ /media # монтируются устройства $ /mnt # монтируются устройства $ /proc # файлы процессов $ /root # директория суперпользователя $ sbin -> usr/sbin # файлы программ, которые может запускать только root $ /tmp # временные файлы $ /usr # пользовательские программы $ /var # частоизменяемые файлы $ /sys # информация ядра о системе, устройствах и драйверах $ /srv # файлы сервисов

<h6>Жесткие и (мягкие) символьные ссылки</h6>
Можно изменять данные по ссылкам.
При удалении файла символьная ссылка остается, но ссылается на пустое пространство. Но жесткая ссылка и данные остаются.

bash $ ln file.txt hard_link_to_file.txt # жесткая ссылкоа на file.txt $ ln -s file.txt soft_link_to_file.txt # символьная ссылкоа на file.txt

<h6>Группы пользователей</h6>

bash $ groups user_1 # вывести группы в которых состоит пользователь user_1 $ /etc/passwd # информация о пользователях $ /etc/group # инфооормация о группах $ sudo adduser new_user # создать нового пользователя $ /etc/sudoers # пользователи с правами sudo $ sudo groupadd friends # создать группу friends $ sudo usermod -aG friends user_1 # добавить пользователя user_1 в группу friends $ sudo passwd user_1 # изменить пароль пользователя user_1 $ sudo passwd # изменить пароль текущего пользователя

<h6>Задания на bash</h6>

bash $ mkdir -p {2020..2024}/{01..12}

```