net4me.net

Linux технологии, сети и электроника

Примеры работы в командной строке linux

Примеры использования linux утилит в различных ситуациях из жизни.
find, mount, rsync, xargs, echo и прочее прочее...
Постараюсь поддерживать порядок, но не обещаю классификации.

Linux tips

Linux tips

find + xargs


find /home/ -mtime +1 -size +1M -exec ls -laH "{}" \; # старьё
find /home/ -mtime -1 -size +1M -exec ls -laH "{}" \; # свежак
find . -mmin +5 -mmin -10 # файлы (тута), модифицированные между 6 и 9 минутами назад

find . -type f -mmin -5 -exec ls "{}" \;		# изменились за посл 5 мин
find . -type f -mmin -$((60*2)) -exec ls "{}" \;	# изменились за посл 2 часа

find ./ -name "*.html" | xargs perl -i -p -e "s/придти/прийти/g"
find ./ -name "test.txt" | xargs sed -i "s/3.1.7/version/g"

find . -newer ./passwd.awk ! -newer ./functions.awk -exec stat -c "%n %y" "{}" \;

find и циклы


# find for
for X in $(find ./ -type f -name '*.tar.gz'); do 
echo "и тут всё что угодно можно с $X делать";
done
# не сработает если пробелы в именах файлов

# поэтому find и while read
find ./ -name '*.tar.gz' -print0 | while IFS= read -r -d '' X; do 
echo "по прежнему делаем с $X что захотим";
done

# и еще варианты
find ./ -name '*.rar' -type f -print0 | xargs -0 -n1 ls -la

find ./ -type d -exec rm -f "{}.rar" \;

find ./ -type f -name \*.rar -execdir bash -c '[[ -d $(basename "{}" .rar) ]] || exit 1' \; -print # заменить -print на -delete

mount и fstab

#0 - не создавать резервные копии.
#1 - разрешить создание резервных копий.
#Шестое поле строки указывает команде fsck (утилита для проверки на ошибки) на необходимость проверки файловой системы.
#0 - раздел не будет проверятся.
#1 - раздел будет проверяться в первую очередь.
#2 - раздел будет проверяться после раздела со значением 1.

UUID=****-****	/	ext4	errors=remount-ro	0	1
# swap
UUID=****-****	none	swap	sw	0	0
# DOP свалки, в которые в home юзера будут вести симлинки.
UUID="****-****"	/mnt/DOP	ext2	rw,owner,sync	0	2
UUID="****-****"	/mnt/DOP2	ext2	rw,owner,sync	0	2

# hint:
# vim /etc/fstab
# встаём на строку куда надо вставить и :read !blkid
# убираем лишнее из текста.

система счисления

$ echo "ibase=2; 01001111"|bc
79
или без echo
bc <<< "ibase=2; 00001000"
8
$ bc <<< "ibase=16; F3"
243
$ bc <<< "ibase=16; FF"
255
$ bc <<< "ibase=10;obase=16; 255"
FF
$ bc <<< "ibase=16;obase=2; FF"
11111111
=====
$ echo $((2#11111111))
255
$ echo $((16#FF))
255
=====
$ bc <<< "obase=2 ; $((16#FF))"
11111111
$ bc <<< "obase=16 ; $((2#11111111))"
FF

rsync

rsync бэкап:
rsync -avzP --delete /home/user/to_back /home/user/backups/project_backup

# rsync кроме каталогов:
rsync -avzP --delete --exclude={'Music','Pictures','Documents'} /home/user_from/ user_name@11.222.333.444:/home/user_to/path/

# перелить каталог:
rsync -varP -e ssh Videos user@77.777.77.777:/home/user/DOP/

sass

# без дополнительного кэша, map файлов и прочего выхлопа от sass.
sass -C -t compressed ./sass/main.scss:./css/main.css --sourcemap=none --trace

статус батареи ноутбука bash

# статус батареи из консоли:
upower -i $(upower -e | grep BAT) | grep --color=never -E 'state|to\ full|to\ empty|percentage'
# или
upower -i $(upower -e | grep BAT) | awk '/state| to |percentage/'

AM PM locale date time. Изменение отображения времени в конкретной локали.

Очень редко нужно, поэтому забывается, но когда нужно, то приходится искать каждый раз с нуля и это задалбывает.
Поэтому сделаю себе напоминалку как поменять формат времени в уже существующей локали.
# смотю что есть:
locale -k LC_TIME
# Вижу d_t_fmt t_fmt date_fmt и т.д. которые хотел бы поменять.
# Проверяю что есть сейчас и что хотелось бы получить:
date +"%a %d %b %Y %r %Z"
Sun 22 Sep 2024 02:59:10 PM MSK
date +"%a %d %b %Y %T %Z"
Sun 22 Sep 2024 15:01:53 MSK
# Иду править файл настроек нужной мне локали. Выставляю форматы даты/времени:
vi /usr/share/i18n/locales/en_US
# генерирую нужную мне локаль с новыми настройками:
locale-gen en_US.UTF-8
...
Generation complete.
# Проверяю:
date
Sun 22 Sep 2024 15:03:55 MSK
locale -k LC_TIME