linux_trick

linux trick

Создаем директорию

mkdir -p /my/long/path/to/dir

И стремительно переходим в только, что созданную директорию без лишнего пути

cd !$

Если случайно сменили директорию, можно просто вернуться в последнюю набрав:

cd -

Создание нескольких директорий в одном каталоге одной командой

mkdir {dir2,dir3}
# создаем три директории с именами FolderName001 FolderName001002 FolderName001003
mkdir FolderName001{001..3}

Меняем разрешения только на определенные каталоги в директории

chmod -R 775 /my/long/path/to/dir/{temp,logs}

Создайте несколько пустых файлов

touch /my/long/path/to/dir/{1..5}.txt

Убираем в файле все пробелы и комментарии

sed -e '/#/d; /^$/d'

Удаление всех файлов за исключением одного указанного:

rm -rf !(save_file_name)

Вывод списка директорий (без файлов)

ls -d */
dir -d */
find . -maxdepth 1 -type d
tree -d -L 1
echo */
ls -l | grep '^d'
echo dir1 dir2 | xargs -n 1 cp -v test.file
'test.file' -> 'dir1/test.file'
'test.file' -> 'dir2/test.file'

У find есть ключ mtime, который позволяет предаться данной забаве.

find /path/to/files/* -mtime +1 -delete

В примере выше есть нюанс. -mtime +1 модифицированные больше 1 дня назад, а -mtime 1 модифицированные один день назад (сегодня и позавчера уже не затронет). Вместо -delete, для начала можно ничего не писать, он выдаст на экран что найдет.
Либо так

#! /bin/bash
i=7 #(или ваше число дней)
find /path/to/files/ -type f -mtime +$i -exec rm -f {} \;

По ссылке можно подробнее ознакомится с временными метками

Для того, чтобы увидеть временные метки файла, используется команда stat

touch FileName.txt
stat FileName.txt
  Файл: 'FileName.txt'
  Размер: 0             Блоков: 0          Блок В/В: 4096   пустой обычный файл
Устройство: 802h/2050d  Inode: 14417922    Ссылки: 1
Доступ: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Доступ: 2019-10-28 15:06:47.243769073 +0300
Модифицирован: 2019-10-28 15:06:47.243769073 +0300
Изменён: 2019-10-28 15:06:47.243769073 +0300

Для того, чтобы получить дату установки OS:

# date
ls -alct / | tail -1 | awk '{print $7, $6, $8}'
 
# date and time 
ls -alct --time-style=+"%b %d %Y %H:%M:%S" / | tail -1 | awk '{print $6, $7, $8, $9}

Получить TOP 10 наиболее часто используемых команд в терминал. Дергаются естественно из истории.

 history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10

Убрать комментарии и пустые строки в файле

  • С помощью sed
    cat /etc/filename.conf | sed -e '/#/d; /^$/d'
  • С помощью grep
    cat /etc/nsswitch.conf | grep -Ev '(#.*$)|(^$)'

Еще можно выполнить поисковый запрос в командной строке набрав комбинацию клавиш Ctrl + r

Вывод аргументов

вывод аргументов последней команды

!:*

вывод последнего аргумента последней команды

!:$

HotKey для навигации

Переместиться в начало терминала          Shift + Ctrl PageUP
Переместиться в конец терминала           Shift + Ctrl PageDown
Переместиться в на одну страницу вверх    Shift PageUP
Переместиться в на одну страницу вниз     Shift PageDown

Перевести букву в верхний регистр         Alt + c

Вырезать слово перед курсором             Alt + d
Вырезать слово после курсора              Alt + w

Перемещение в лево                        Alt + b
Перемещение в право                       Alt + f

Перейти в начало строки                   Ctrl + a
Перейти в конец строки                    Ctrl + e

Удалить строку слева от курсора           Ctrl + u
Удалить строку справа от курсора          Ctrl + k

Отчистить консоль                         Ctrl + l # or clear

Прежде, чем редактировать какой-либо конфиг, перед редакцией всенепременнейше нужно сделать его копию. Пример с файлом конфигурации dovecot.

Делаем бэкап:

cp /etc/dovecot/conf.d/10-mail.conf{,.bak251019}

Восстанавливаем из бекапа:

cp /etc/dovecot/conf.d/10-mail.conf{.bak251019,}

Указываем тёкшею дату при копировании

cp /etc/dovecot/conf.d/10-mail.conf{,.bak_$(date '+%F_%H:%M:%S')}

Архивируем несколько директорий

tar -cjf /var/backup/'date +%Y%m%d_%H%M%S'.tar.bz2 dir1 dir2 file3

Бекап только измененных файлов:

yes | cp -auv source/ destinaton/

Посмотреть все смонтированные устройства с человеко читаемым выводом:

mount | column -t

Удобный просмотр пользователей в файле /etc/passwd

cat /etc/passwd | column -t -s :

Сортировка процессов по памяти:

ps aux | sort -nk 4

Сортировка процессов по использованию CPU:

ps aux | sort -nk 3

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

{ uname -r & w; }

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

grep -Ril "text-to-find-here" /

Где:

  • i обозначает случай игнорирования (необязательный аргумент).
  • R означает рекурсивный.
  • l означает «показать имя файла, а не сам результат».

Ищем ip адрес в файле

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /var/log/apache2/access.log.1
  • E Использовать расширенное регулярное выражение
  • o Выводить только ip адрес

Сразу удаляем все найденное

grep -Ril "text-to-find-here" / | xargs rm -f

Еще как вариант:

grep -rn word /directory

Где:

  • -r – рекурсивный обход каталога
  • -n – выведет номер строки в результатах

Пример поиска с использованием нескольких шаблонов:

egrep -rn '(word1|word2|word3)' /home/vasyan/somedir

По контрольной сумме

find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD

Либо воспользоваться утилитой fdupes

find . -type f -name '* *' 

Быстро переименовать файл можно так:

mv filename.{old,new}

Заменяем нижние подчёркивания в имени файла на пробелы:

rename "s/_/ /g" *
 
# либо так
find -type f -name '*_*' | xargs -n1 bash -c 'mv "$0" "${0//_/ }"'

Находим путь до исполняемого файла

readlink -f -- "$(which awk)"
 
/usr/bin/gawk

Смотрим размер дисков:

lsblk -o name,size
NAME  SIZE
sda   256G
sdb   256G

Сортировка по количеству подключений tcp:

netstat -ntu | awk '{print $5}'| cut -d: -f1 -s | sort | uniq -c | sort -nk1 -r

Посмотреть свой внешний ip

curl http://ifconfig.co
  • linux_trick.txt
  • Последнее изменение: 2023/01/31 11:38
  • admin