xyz(){ cat "$1" |fzf --reverse |{ read x;echo "$x" | dte |{ read y; awk -i inplace -v x="$x" -v y="$y" '$0==x{$0=y}{print}' "$1"; } } }
xyz /path/to/file
send=$(echo "$send" | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g')
curl -X POST -H 'Content-type: application/json' --data "$(jq -n --arg text "$send" '{text: $text}')" https://hooks.slack.com/services/???????????/???????????/????????????????????????
mkdir -p /tmp/TEST && touch "/tmp/TEST/backup-name-back-"{01..05}"-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-"{10..13}-{100..104}".bak" && tree /tmp/TEST
/tmp/TEST
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-100.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-101.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-102.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-103.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-104.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-100.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-101.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-102.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-103.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-11-104.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-100.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-101.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-102.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-103.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-12-104.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-100.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-101.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-102.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-103.bak
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
├── backup-name-back-02-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-10-100.bak
...
├── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-102.bak
├── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-103.bak
└── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
0 directories, 100 files
DIR="/tmp/TEST"; T=$(ls $DIR/* |awk -F'[-.]' '{print $4" "$(NF-2)$(NF-1)";"$0}')
echo "$T" |sort -nr |sort -un |awk -F';' '{print $2}'
comm -3 <(echo "$T" |sort -n) <(echo "$T" |sort -nr |sort -un) |awk -F';' '{print $2}'
rm $(comm -3 <(echo "$T" |sort -n) <(echo "$T" |sort -nr |sort -un) |awk -F';' '{print $2}')
$ tree /tmp/TEST
/tmp/TEST
├── backup-name-back-01-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
├── backup-name-back-02-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
├── backup-name-back-03-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
├── backup-name-back-04-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
└── backup-name-back-05-название_на_русском,_могут,_встречаться_(скобки,_точки,_запятые.)-13-104.bak
0 directories, 5 files
x="$IFS";IFS=$'\n';for WhatFile in $(find $Downloads -regex ".*\.\(mkv\|m4v\|mp4\|ts\|avi\)" -and -mmin +30 | sort -r );
do
IFS="$x"
for WhatFile in "$(find $Downloads -regex '.*\.\(mkv\|m4v\|mp4\|ts\|avi\)' -and -mmin +30 | sort -r )";
PermitRootLogin yes
sudo systemctl restart sshd.service
for user in /home/* #поиск домашнего каталога
$ man useradd
...
-b, --base-dir BASE_DIR
The default base directory for the system if -d HOME_DIR is not specified. BASE_DIR is concatenated with the account name to define the home directory. If the -m option is not used, BASE_DIR must exist.
If this option is not specified, useradd will use the base directory specified by the HOME variable in /etc/default/useradd, or /home by default.
Как получить путь до рабочего стола пользователя Ubuntu?
systemd-path user-desktop
su - YOUR_USER -c "systemd-path user-desktop"
runuser -l YOUR_USER -c "systemd-path user-desktop"
$ man useradd
...
UID_MAX (number), UID_MIN (number)
Range of user IDs used for the creation of regular users by useradd or newusers.
The default value for UID_MIN (resp. UID_MAX) is 1000 (resp. 60000).
eval $(awk '/^UID_/{print $1"="$2}' /etc/login.defs)
awk -v MIN=$UID_MIN -v MAX=$UID_MAX -F: '$3>MIN && $3<MAX {print $1}' /etc/passwd
Есть sh скрипт который должен создать 2 desktop файла на рабочем столе и разрешить их выполнение, попробовал этот код:
DESKTOP=$(systemd-path user-desktop)
cp sources/update.desktop $DESKTOP && chmod ugo+rwx $DESKTOP/update.desktop
cp sources/shutdown.desktop $DESKTOP && chmod ugo+rwx $DESKTOP/shutdown.desktop
$ cat example.json |jq -r '.server | .name,.public_net.ipv4.ip'
my-server
142.132.235.187
$ cat example.json| jq -r '.server | "name=\(.name)","ip=\(.public_net.ipv4.ip)"'
name=my-server
ip=142.132.235.187
$ eval $(jq -r '.server | "name=\(.name)","ip=\(.public_net.ipv4.ip)"' example.json)
$ echo $ip
142.132.235.187
$ sort --help
Использование: sort [ПАРАМЕТР]… [ФАЙЛ]…
или: sort [ПАРАМЕТР]… --files0-from=Ф
Печатает сортированное слияние всех ФАЙЛ(ов) на стандартный вывод.
Если ФАЙЛ не задан или задан как -, читает стандартный ввод.
...
$ sort -u
d
a
g
t
aa
нажать <Ctrl+D> для сортировки
a
aa
d
g
t
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/nvme0n1p2 ext4 rw,noatime,commit=120
commit=nrsec
Start a journal commit every nrsec seconds. The default value is 5 seconds. Zero means default.
За такие же деньги есть
jq -nr 'now-3*24*60*60|strftime("%d.%m.%Y")'
echo "25.04.2022" | jq -rR 'strptime("%d.%m.%Y")|mktime-3*24*60*60|strftime("%d.%m.%Y")'