# Bash/Shell

# Info/Users/Files/Lines

### <span style="color:rgb(53,152,219);">INFO</span>

##### Очистить файл истории

```ruby
cat /dev/null > ~/.bash_history && history -c && exit
```

##### Удаление содержимого файла через VIM

```ruby
ggdG
```

##### Запуск программы как фоновый процесс

```ruby
nohup <program> &
```

**Перевод программы в активный процесс**

```ruby
fg %1
```

**Поиск и Удаление Процесса**

```ruby
ps -ef | grep <program>
kill <PID>
```

##### Список служб в автозагрузке Linux

```ruby
sudo systemctl list-unit-files | grep enabled
```

##### Версия Linux и Версия ядра

```ruby
lsb_release -a
uname -a
cat /etc/os-release
cat /etc/redhat-release
```

##### Версия графического интерфейса

```ruby
printenv XDG_CURRENT_DESKTOP
```

### <span style="color:rgb(53,152,219);">USERS</span>

##### Переключиться на пользователя

```ruby
su - username
```

##### Запуск команды под root

```ruby
sudo sh -c '<command>'
```

##### Запуск команды от другого пользователя

```ruby
su -l <user> -c '<command>'
```

##### Завершение PID другого пользователя

```ruby
# Определяем TTY нужного user-а (pts/0)
w
# Определяем PID нужного user-а
ps -ft pts/0
# Убиваем процесс
sudo kill -9 PID
```

### <span style="color:rgb(53,152,219);">FILES</span>

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

```ruby
tail -n 10 /var/log/syslog
```

##### Ожидать появления новых данных и выводить

```ruby
tail -f /var/log/syslog
```

##### Размер всех папок внутри текущей (включая скрытые файлы)

```ruby
sudo du -sh ./* | sort -h
find -maxdepth 1 -exec du -sh "{}" \; | sort -h
```

##### Показать подключённые диски

```ruby
lsblk
```

##### Создать пустой файл

```ruby
sudo touch file01
```

##### Копирование нескольких файлов в 1 каталог

```ruby
cp file01 file02 fileN /Folder01
```

##### Копирование содержимого текущей папки в др.папку

**\[без учета скрытых файлов\]**

```ruby
cp -a * /folder/
```

##### Поиск файлов

```ruby
find /home -name "file01.txt"
```

##### Удаление файлов по маске

```ruby
find /home/ -type f -name "*.log" -delete
```

##### Удалить содержимое (очистить) файл

```ruby
:> file01
# либо
cp /dev/null file01
```

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

```ruby
ln -s /path/folder /path/link
```

##### Изменение даты создания файла

```ruby
sudo touch -t 200905230000.00 file01
```

##### Копирование Прав/Доступов папки-Folder1 папке-Folder2

```ruby
sudo chown -R --reference= /path/to/folder1 /path/to/folder2
```

### <span style="color:rgb(53,152,219);">LINES</span>

##### Добавить строку в конец файла

```ruby
echo "some_text" >> patch_to_file
```

```ruby
sudo sh -c "echo 'some_text' >> patch_to_ file"
```

##### Вставить строку text перед 3-ей строкой файла

```ruby
sed -i '3itext' file
```

##### Удалить все паттерны text в файле

```ruby
sed 's/text//g' file
```

##### Найти и заменить строку text1 на text2 в файле

```ruby
sed -i 's/text1/text2/g' file
```

##### Удалить строку text1 в файле

```ruby
sed -i '/text1/d' file
```

##### Вставить/ Удалить комментарий (#) строки text в файле

```ruby
 # Добавить комментарий
sed -i '/text/s/^/#/g' file

# Удалить комментарий
sed -i '/text/s/^#//g' file
```

##### В файле file вывести строки без пробела ( ) и комментария (#) в начале

```ruby
sudo grep -v '^[[:space:]]*#' file
```

##### Вставить строку text в начало/конец файла

```ruby
# Вставить text в начало
sed -i '1s/^/text\n/' file

# Вставить text в конец
sed -i '$a\text' file
```

##### Удалить строку text в файле

```ruby
sed -i '/text/d' file
```

##### Вставить перенос на новую строку (\\n) в файле

```ruby
sed -i 's/text1/\n text2/g' file
```

##### Вывести строки которые содержат/ не содержат слово text

```ruby
#  Содержат text
sed -n '/text/p' file

#  Не содержат text
sed -e '/^text/d' file
```

##### Добавить в конец файла &lt;code&gt;

```ruby
tee -a file << EOF
code
EOF
```

##### Заменить содержимое файла на &lt;code&gt;

```ruby
tee file << EOF
code
EOF
```

##### Вывести содержимое файлов в папке с разделителями

```ruby
find . -type f \
  -exec grep -Il . {} \; \
  -exec sh -c '
    printf "\n%60s\nФАЙЛ: %s\n%60s\n" "" "$1" "" | tr " " "="
    cat "$1"
  ' _ {} \;
```

# Net/Repo/Alias/Arc

### <span style="background-color:rgb(255,255,255);color:rgb(53,152,219);">NETWORK</span>

##### Узнать свой MAC адрес

```ruby
ifconfig -a | grep ether | gawk '{print $2}'
```

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

```ruby
curl ifconfig.me
```

##### Узнать свои локальные IP адреса

```ruby
hostname -I
```

##### Узнать свои локальные IP адреса

```ruby
nmap -sn 192.168.1.0/24 | grep "Nmap scan report for" | awk '{print $NF}' | tr -d '()'
```

##### Очистить DNS cache

```ruby
sudo systemd-resolve --flush-caches
```

##### Установка SSH Туннеля

**с 8000 порта уд.сервера на локальный порт 8000**

```ruby
ssh -i ~/.ssh/<key> <ip> -lroot -L 8000:127.0.0.1:8000
```

### <span style="color:rgb(53,152,219);">REPOs</span>

##### Поиск сервиса по маске

```ruby
sudo systemctl list-units --type=service --all | grep <name>
```

##### Инфо о сервисе по маске

```ruby
dpkg -l | grep <name>
```

##### Удаление пакета Ubuntu

```ruby
sudo apt remove --purge package_name
sudo apt autoremove
```

##### Удаление пакета CentOS 7

```ruby
sudo yum install yum-plugin-remove-with-leaves
sudo yum remove package_name  --remove-leaves
```

##### Удаление пакета CentOS 8

```ruby
sudo sh -c "echo 'clean_requirements_on_remove=1' >> /etc/yum.conf"
sudo yum remove "package_name*"
sudo yum autoremove
```

##### Удаление Репозитория

```ruby
# Debian
sudo apt-add-repository --r ppa:nilarimogard/webupd8

# Redhat
sudo rm /etc/yum.repos.d/"repo_name*"
```

##### Удаление gpg ключа

```ruby
sudo apt-key list
sudo apt-key del '1641 6B76 CB22 062C 8A2A  5F99 F4A7 CFE6 A3FA 5D6A'
```

### <span style="color:rgb(53,152,219);">ALIAS</span>

##### Создать временный Алиас

```ruby
# Создать Alias [временный]
alias name='command'

# Удалить Алиас
unalias name
```

##### Создать постоянный Алиас

```ruby
# Создать Alias [постоянный]
echo alias name='command' >> ~/.bashrc
exit

# Применить bashrc без перезагрузки
. ~/.bashrc
```

### <span style="color:rgb(53,152,219);">ARCHIVES</span>

##### Архиватор Tar

```ruby
# Упаковать тек.дир.
tar -cvzf files.tar.gz .

# Распаковать архив в тек.дир.
tar -xvf files.tar.gz
```

##### Архиватор 7-Zip

```ruby
# Упаковать тек.дир.
7z a arch.7z

# Упаковать тек.дир. + запись в Log Loglevel1
7z a arch.7z -bb >Log.txt 2>&1

# Распаковать архив в тек.дир.
7z x arch.7z
```