Skip to content

Instantly share code, notes, and snippets.

@achesco
Last active May 7, 2024 11:36
Show Gist options
  • Save achesco/35d4e3cc67dc675acd51afb547ed7a43 to your computer and use it in GitHub Desktop.
Save achesco/35d4e3cc67dc675acd51afb547ed7a43 to your computer and use it in GitHub Desktop.
Linux shell snippets
# self sign cert for localhost
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt
# find folder which content's size less than 10kb
find /volume1/Volume/fapfapbackup -mindepth 1 -maxdepth 1 -type d -exec du -ks {} + | awk '$1 <= 10' | cut -f 2-
# Send output to Telegram, JSON POST with curl
# telelog.sh
LOG=`cat <&0`
curl -H "Content-Type: application/json" \
-X POST -d '{"chat_id":"<num or @chat>","text":"'"$LOG"'"}' \
"https://api.telegram.org/bot<access token>/sendMessage"
#usage
cat file.log | telelog.sh
# Format ls date, get columns
ls -l --time-style iso folder | awk '{print $5, $6, $7, $8}'
# Case by user input param
case "$1" in
"action")
echo 'do action'
;;
*)
echo 'do default'
;;
esac
# Чтение файла построчно
# Line by line file reading
while read line; do
value=`expr $value + 1`;
echo $value;
done < "myfile"
# Чтение токенов из строки
# Reading tokens string
while IFS=' ' read -ra ADDR; do
for letter in "${ADDR[@]}"; do
echo $letter;
done
done <<< "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
# Создать директорию если она не существует
# Create folder if it’s does not exists
if [-d /tmp/old]; then; elif; fi
# Разбиение на подстроки с разделителем
# Split line by divider
echo $string |cut -d';' -f1 | read str1
echo $string |cut -d';' -f2 | read str2
# Запуск команды или скрипта в фоне
# Run in background
command-name &
# Запуск скрипта или команды работающего после логаута
# Run command in background after logout
nohup find / -xdev -type f -perm +u=s -print > out.txt 2>&1 &
# Найти
# Find
# … и удалить / and remove (delete)
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;
# … Case Insensitive
find . -iname PatTeRn -print
# … с глубиной поиска / limti search depth
find . -maxdepth 1
# Архивировать без сжатия, кусками по 100 мегабайт
# Do archive without compression, split by parts
zip -0 -s100mb -r archive.zip folder_to_archive
# Поиск файла по содрежимому
# Search file by contents
find . -type f -exec grep -il "pattern" {} \;
grep -il "pattern" `find . -type f`
# для большого кол-ва файлов
find . -type f | xargs grep -il "pattern"
# Размер директории
# Total directory size
du -sh /path/to/folder;
# Подсчет строк в файле
# How to count lines in a file
wc -l /path/to/file;
# Использование памяти процессами
# Memory usage per process
ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }';
# Найти все файлы по контенту
# Find files by content
grep -rn 'bindToDoc' ./bower_components/islands-components/*/popup/
# Найти все файлы с кириллическими символами в одинарных ковычках (локализация в коде)
grep -rniEe "'.*[а-я]+.*'" ./blocks/ | grep -v i18n
# Какой процесс слушает порт
# Which process port used by
netstat -lnp
# Переименовать с префиксом
# Batch rename with prefix
for f in * ; do mv "$f" "PRE_$f" ; done
# Найти битые ссылки на сайте
# Find broken links for site
wget --spider -e robots=off --wait 1 --recursive --level=8 -o wget.log -p https://www.site.com/
# --spider – используем HEAD запросы
# -e robots=off – игнорируем инструкции robots.txt
# --wait 1 – ждём 1 секунду между запросами
# --recursive --level=8 – рекурсивно обходим в глубину на 8 уровней
cat wget.log | grep -B 2 '404'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment