Re: bash скрипти
Ґномівський скріншотер скидає всі файли в загальну папку Pictures, перетворюючи її на смітник.
Написав короткий скрипт, аби автоматично скидати всі скріншоти в окрему папку Pictures/Screenshots.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → *nix → bash скрипти
Сторінки Попередня 1 2 3 4 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
Ґномівський скріншотер скидає всі файли в загальну папку Pictures, перетворюючи її на смітник.
Написав короткий скрипт, аби автоматично скидати всі скріншоти в окрему папку Pictures/Screenshots.
Створив невеликий шел-скрипт, який генерує sitemap.xml для статичного веб-сайту.
Зауваги радо приймаю.
Створив простий скрипт, щоб перевіряти погоду в терміналі.
Запакував у .deb пакунок.
Дістати:
wget https://github.com/bebyx/wtr/blob/master/wtr_1.0_all.deb
Ne duge tsjikavyj, ale moglyvo korysnyj.
Potcav dyvyty Amerykansjkoho «Ofis», tam vydyva buly jak mp4, a napysy v okremij tetsi. A vydyvohratc mpv tcomusj tak sobi tcy ne tak stjahuvav napysy, koly robec z dekiljkoma vydyvamy. Abo ja zatupyj. V budj-jakomu vypadku pobatcyv na dotsi, ge aby zastosuvaty pevni zminy do pevnoho vydyva, to treba prosto prostavjaty u megax --{ […] --}. Odrazu v holovi otrymav duge prostyj alqorytm, tog dlja sebe xutko nackrjabav.
Zalyv i podaljci zminy, jakctco vynykne potrjiba, robyty jmu na qýsti na Qýthabi.
Obrav $(eval echo ${videos}), bo dozvoljaje obyraty pevni vydyva, a ne vsji, napryklad:
$ my-mpv -vs "%name%.S01E{07..22}*.mp4" -ss "./Sub/*.srt"
Skrypt zberjihaje nakazy do mpv, tomu to ne prosto okremyj skrypt pid pevnu zadatcu, a moga uvagyty za prosto malenjkoho patca.
Кожен, хто встановлював Linux from Scratch, доходив до цього розділу, де треба вивантажити сирці для майбутньої LFS-системи.
Звісно там є варіянт вивантажити все зразу з дзеркала LFS. Однак коли вчишся, такі шляхи видаються надто банальними.
Написав bash-скрипт, який парсить зазначену ж у першому абзаці html-сторінку, витягує посилання й вивантажує всі архіви wget'ом.
Знайшов отаке чудо, яке допомогло свого часу виявити обман
#!/bin/bash
prev_count=`cat ze.log | tail -1 | awk '{print $2}'`
time=`date '+%Y-%m-%d-%H-%M-%S'`
count=`curl https://ze2019.com/storage/counters.json?rand=0.8880051828185136 | grep "volunteer_amount" | sed 's/{"volunteer_amount"://' | sed 's/}/ /'`
let "inc = $count - $prev_count"
echo "$time $count $inc" >> ze.log
Скрипт автоматичного імпорту бд в проект із вказаного каталогу
використання:
bash import.sh project1 -d 123.123.123.123
#!/bin/sh
#domain - project name
#-d - drop and create db before import
#host - localhost
DOMAIN=$1
ACTION=$2
HOST=$3
USERNAME="user"
PASSWORD="pass"
BASE_DIR="/var/www/$DOMAIN/import/*"
if [ ! $HOST ]; then
HOST='localhost'
fi
if [ "$ACTION" == "-d" ]; then
mysqladmin -u $USERNAME -p$PASSWORD -h $HOST drop $DOMAIN
mysqladmin -u $USERNAME -p$PASSWORD -h $HOST create $DOMAIN
echo "drop database $DOMAIN"
echo "create database $DOMAIN"
fi
for i in $BASE_DIR.sql
do
mysql -u $USERNAME -p$PASSWORD -h $HOST $DOMAIN < "$i"
echo "import database [$DOMAIN]"
done
for i in $BASE_DIR.sql.bz2
do
bunzip2 < "$i" | mysql -u $USERNAME -p$PASSWORD -h $HOST $DOMAIN
echo "import database [$DOMAIN]"
done
for i in $BASE_DIR.sql.gz
do
zcat "$i" | mysql -u $USERNAME -p$PASSWORD -h $HOST $DOMAIN
echo "import database [$DOMAIN]"
done
Чистить Убунту, видаляє купу всього зайвого і старого. Запускайте на свій страх і ризик
#!/bin/sh
#Check the Drive Space Used by Cached Files
du -sh /var/cache/apt/archives
#Clean all the log file
#for logs in `find /var/log -type f`; do > $logs; done
logs=`find /var/log -type f`
for i in $logs
do
> $i
done
#Getting rid of partial packages
apt-get clean && apt-get autoclean
apt-get remove --purge -y software-properties-common
#Getting rid of no longer required packages
apt-get autoremove -y
#Getting rid of orphaned packages
deborphan | xargs sudo apt-get -y remove --purge
#Free up space by clean out the cached packages
apt-get clean
# Remove the Trash
rm -rf /home/*/.local/share/Trash/*/**
rm -rf /root/.local/share/Trash/*/**
# Remove Man
rm -rf /usr/share/man/??
rm -rf /usr/share/man/??_*
#Delete all .gz and rotated file
find /var/log -type f -regex ".*\.gz$" | xargs rm -Rf
find /var/log -type f -regex ".*\.[0-9]$" | xargs rm -Rf
#Cleaning the old kernels
dpkg-query -l|grep linux-im*
#dpkg-query -l |grep linux-im*|awk '{print $2}'
apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) --assume-yes
apt-get install linux-headers-`uname -r|cut -d'-' -f3`-`uname -r|cut -d'-' -f4`
#Cleaning is completed
echo "Cleaning is completed"
1. Команда перевіряє чи "живий" ssh тунель з портом 9521:
nc -z 127.0.0.1 9521 || echo "no tunnel open"
2. Команда створює ssh тунель з портом 9521:
ssh user1@example.com -D9521 -C -N -q
Розгадую ребус, як об'єднати (1) і (2), тобто створювати тунель лише тоді, коли він ще не існує.
----
Upd: поки що потестив такий варіант:
1) відкриваємо тунель під час чого створюється сокет-файл my-ctrl-socket
ssh -M -S my-ctrl-socket -fNT user1@example.com -D9521 -C
2) перевіряємо чи тунель створено успішно
ssh -S my-ctrl-socket -O check user1@example.com
якщо успішно - буде відповідь схожа на таку
Master running (pid=142033)
якщо неуспішно - буде відповідь схожа на таку
Control socket connect(my-ctrl-socket): No such file or directory
3) закриваємо тунель
ssh -S my-ctrl-socket -O exit user1@example.com
$ sudo ls /var/log/httpd/
access_log access_log-20220522 error_log error_log-20220522
Як грамотно видаляти лише access_log-20220522 і error_log-20220522 якщо такі існують, враховуючи що дата в імені файлу може змінюватися?
access_log і error_log повинні залишатися на місці (не видалятися).
Найпростіше, склепав за кілька секунд на колінці
перевірено на FreeBSD
rm -rf *_log-*
Чомусь з великою пересторогою ставлюся до ключа -rf, спробую якось без нього...
А дарма, нічого в цих ключах страшного
-r означає рекурсивне видалення, тобто без нього ви більше одного файлу не видалите за раз(без нього це не буде працювати)
-f просто каже програмі не запитувати підтвердження(можете не вказувати, але кожний файл треба підтверджувати, що ви його хочете видалити)
https://man7.org/linux/man-pages/man1/rm.1.html
UPD Якщо боїтесь, спочатку спробуйте на піддослідній теці, наприклад зробіть копію, або просто створіть теку і в ній кілька файлів)
-r означає рекурсивне видалення, тобто без нього ви більше одного файлу не видалите за раз(без нього це не буде працювати)
Vzahalê to možna vydalyty dekôljka fajlôv i bez -r, bo tut radše hynša rekurcija, pro kotru i napysano vô zhadanôj lancê:
remove directories and their contents recursively
Tobto jakščo snopy ne rozkydani po tekax, to rm -f access_log* error_log* dostatnjo. Pravda, ne pamjataju, čy bash može v ce, čy treba jakyjsj parameter do cjoho propysuvaty, bo môj nače robe, ale to može buty vplyv zsh.
No i možna išče takyj sposôb: ls | grep -E '^(access_log|error_log)' | xargs rm
$ sudo rm /var/log/httpd/*_log-*
rm: не вдалося вилучити «/var/log/httpd/*_log-*»: No such file or directory
і ось так не працює:
$ sudo rm /var/log/httpd/access_log-*
rm: не вдалося вилучити «/var/log/httpd/access_log-*»: No such file or directory
хоча
$ sudo ls /var/log/httpd/
access_log access_log-20220522 error_log error_log-20220522
не розумію...
Спробував в Дебіан, так само працює
Можливо, у вашій ОС синтаксис відрізняється, або ще варіант - цю команду треба виконувати в теці з файлами
спочатку
cd /var/log/httpd/
, а вже потім rm, або вказуйте шлях до теки
rm /var/log/httpd/*_log-*
мені потрібно автоматизувати в кроні, бо вручну в файл-менеджері mc я можу це зробити без проблем
тобто змінюю директорію за допомогою команди cd, тоді видаляю файли за маскою - помилка...
наступною командою відображаю наявні файли - всі файли на місці...
що тут не так?.....
sudo crontab -e
вписав такий рядок
10 * * * * rm /шлях/до/теки/*_log-*
на 10 хвилині спрацювало