bashrc trick
Алиас алиасов. Открываем на редактирование .bashrc
, и после сохранения атоматом перечитываем его же
# Так alias='$EDITOR ~/.bashrc ; source ~/.bashrc' # Либо так alias bashrc="vim ~/.bashrc && source ~/.bashrc
Alias на каджый день
alias s=less alias mount='mount |column -t'
Навигация
Автоматический ls
при смене директории
cd() { builtin cd "$@" && ls -lA }
Пользователи
Выполнение определенных команд, без подстановки sudo
# if user is not root, pass all commands via sudo if [ $UID -ne 0 ]; then alias reboot='sudo reboot' alias update='sudo apt-get upgrade' fi
history
Функция поиск по history
# grep command history. function gh () { if [ -z "$1" ]; then echo "Bad usage. try:gh some_string"; else history | egrep $* |grep -v "gh $*" fi }
# give only recent history be default alias h='history 100'
Работа с файлами
Смотрим на последние обновления файлов
alias lst='ls -ltr'
# Show text file without comment alias nocomment='grep -Ev '''^(#|$)''''
Вывод размера директорий
# Show directory size alias du1='du -h -d 1'
Резервное копирование из текущей директории
bu() { cp -r $@ $@.backup-`date +%y%m%d`; }
Используем:
bu filename
То же самое, + ведение журнала резервных копий:
bu() { cp -r $@ $@.backup-`date +%y%m%d`; echo "`date +%Y-%m-%d` backed up $PWD/$@" >> ~/.backups.log; }
Создание стандартного файлового пути
export mydir="/standard/target/directory/"
И например копируем туда файлы
cp /source/dir $mydir
file tree
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
Работа с архивами
Универсальный распаковщик архивов
extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "don't know how to extract '$1'..." ;; esac else echo "'$1' is not a valid file!" fi }
Не забываем после каждого изменения .bashrc
выполнить source ~/.bashrc
. Теперь, чтобы распаковать первый попавшийся архив выполним
extract ArchName
Дисковое пространство
Смотрим что сколько занимает места на харде
alias diskspace="du -Sh | sort -n -r | more"
Показывает размер директорий в текущем каталоге
alias folders="find . -maxdepth 1 -type d -print | xargs du -skh | sort -rn"
#Grabs the disk usage in the current directory alias usage='du -ch | grep total' #Gets the total disk usage on your machine alias totalusage='df -hl --total | grep total' #Shows the individual partition usages without the temporary memory values alias partusage='df -hlT --exclude-type=tmpfs --exclude-type=devtmpfs' #Gives you what is using the most space. Both directories and files. Varies on #current directory alias most='du -hsx * | sort -rh | head -10'
Вывод размеров файлов/директорий, отсортированных от наибольшего к наименьшему, с удобочитаемыми размерами
function dus () { du --max-depth=0 -k * | sort -nr | awk '{ if($1>=1024*1024) {size=$1/1024/1024; unit="G"} else if($1>=1024) {size=$1/1024; unit="M"} else {size=$1; unit="K"}; if(size<10) format="%.1f%s"; else format="%.0f%s"; res=sprintf(format,size,unit); printf "%-8s %sn",res,$2 }'
Редакторы
vim
# Включаем нумерацию по умолчанию alias vim='vim "+set number"' # делаем из vi vim alias vi=vim
# To open last edited file alias lvim="vim -c "normal '0"" # тоже самое, но намного короче alias lvim="!vim"
Разное
Напоминалка
Создаем файл k.txt
, вносим в него все, что не вмещает встроенная в голове память и создадим функцию forgot
function forgot () { cat /root/k.txt }
Пароли
Простой генератор паролей
genpasswd() { local l=$1 [ "$l" == "" ] && l=20 tr -dc A-Za-z0-9!@%*_ < /dev/urandom | head -c ${l} | xargs }
Используем
genpasswd 16
Новостной агрегатор
Для работы данного скрипта, в системе должны присутствовать следующие пакеты
apt install jq apt install ansiweather
Также следует получить бесплатный API key c newsapi.org. Так же смотрим руководство по ansiweather
getnews () { curl https://newsapi.org/v2/top-headlines -s -G \ -d sources=$1 \ -d apiKey=0f0e382cfb394b1c882479106c2b55ce \ | jq '.articles[] | .title' } startmyday () { echo "Good morning, Nevvad." echo "\nUpdating system..." apt update && apt upgrade -y echo "\nThe weather right now:" ansiweather -l Moscow,RU -u metric echo "\nNews from the BBC:" getnews bbc-news echo "\nNews from the Washington Post:" getnews the-washington-post echo "\nNews from Hacker News:" getnews hacker-news }
Погода
alias rain='curl -4 http://wttr.in/Moscow'
.bashrc