Вопрос: Какие полезные вещи можно добавить в свой .bashrc? [закрыто]


Есть ли что-то, с чем вы не можете жить без, и сделать мою жизнь намного проще? Вот некоторые из них, которые я использую («дисковое пространство» и «папки» особенно удобны).

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn"

# This will keep you sane when you're about to smash the keyboard again.
alias frak="fortune"

# This is where you put your hand rolled scripts (remember to chmod them)
PATH="$HOME/bin:$PATH"

142


Источник


Это должна быть вики сообщества - Toro
Включен в вики сообщества. Наслаждаться. - Gareth
больше? Бьюсь об заклад, вы были бы счастливее с менее или менее -F - derobert
За исключением того, что перед этим больше, чем «сортировка», так как сортировка требует полного ввода, тем меньше -F просто позволит вам видеть сортировку быстрее, и я уверен, что это довольно быстро. - GreenKiwi
На всякий случай кто-то заинтересован, есть служба, которая позволяет вам просматривать, создавать список и создавать свои псевдонимы: alias.sh - Sam152


Ответы:


У меня есть небольшой скрипт, который извлекает архивы, я нашел его где-то в сети:

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
 }

81



Ницца. Опять же, есть аргумент IDE / Vim о знании команд из памяти. Фантастический бит скрипта. Определенно заходите в .bashrc Cheers! - Gareth
Там есть хорошая и простая команда linux под названием «unp», The Unpacker, которая делает это и многое другое. - Sander Marechal
Команда имеет одну отсутствующую функцию. Он не может открыть пакет 7z на boost.org/doc/libs/1_39_0/more/getting_started/... правильно. Вы знаете, как решить проблему? - Léo Léopold Hertz 준영
Новые версии tar автоматически определяют тип архива, поэтому вы можете извлечь все поддерживаемые форматы, просто «tar xvf». - Prof. Moriarty
@Sander dtrx тоже неплохо. Он гарантирует, что архив извлекается в свой собственный подкаталог. - Tobu


Поскольку я использую так много разных машин, .bashrc всегда устанавливает командную строку для включения, среди прочего, имени сервера, в который я в настоящий момент зарегистрирован. Таким образом, когда я нахожусь на трех уровнях в telnet / ssh, я не нахожу неправильное значение в неправильном окне. Это действительно отстойно rm -rf . в неправильном окне! (Примечание. В домашних условиях telnet отключен на всех машинах. На работе ssh не всегда включен и у меня нет доступа root к очень многим машинам.)

У меня есть сценарий ~/bin/setprompt который выполняется моим .bashrc, который содержит:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

# Throw it all together 
PS1="${RESET}${YELLOW}\h${NORMAL} \`${SELECT}\` ${YELLOW}>${NORMAL} "

Этот скрипт устанавливает приглашение имени хоста, за которым следует :) если последняя команда была успешной и :( если последняя команда не выполнена.


39



$? проверка - довольно аккуратная идея, мне она нравится. - derobert
Я также показываю статус в своем приглашении, но сохраняю числовое значение и цвет его красным, если не равен нулю, иначе зеленый. - pgs
Интересно.... - imapollo


Цвет для manpages в менее делает manpages немного легче читать:

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

Цветные manpages также можно получить, установив большинство и используя его в качестве переменной env MANPAGER. Если вы хотите использовать этот пейджер не только для человека, используйте переменную PAGER, например:

export PAGER="/usr/bin/most -s"

25





Нет больше cd ../../../ .. но вверх 4

Запускает множество dirs, поскольку число передается как аргумент, если по умолчанию не увеличивается на 1 (найдено в ссылке в комментарии в stackoverflow.com и немного модифицировано)

up(){
  local d=""
  limit=$1
  for ((i=1 ; i <= limit ; i++))
    do
      d=$d/..
    done
  d=$(echo $d | sed 's/^\///')
  if [ -z "$d" ]; then
    d=..
  fi
  cd $d
}

24



Эта версия up () кажется излишне сложной. Я использую эту версию: up () {cd $ (eval printf '../'%.0s {1 .. $ 1}) && pwd; }. Вы можете удалить вызов на «pwd», если хотите. - Matthew G
Я использую что-то вроде этого: # Псевдонимы навигации к каталогу alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


Я имею дело с множеством разных машин, поэтому один из моих фаворитов - это псевдонимы для каждой машины, для которых мне часто требуется SSH:

alias claudius="ssh dinomite@claudius"

Также полезно настроить хорошую .ssh/config а также Клавиши ssh чтобы сделать прыжок среди машин еще проще.

Еще один из моих любимых псевдонимов - это перемещение каталогов:

alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."

И некоторые для часто используемых вариаций ls (и опечатки):

alias ll="ls -l"
alias lo="ls -o"
alias lh="ls -lh"
alias la="ls -la"
alias sl="ls"
alias l="ls"
alias s="ls"

История может быть очень полезной, но по умолчанию в большинстве дистрибутивов ваша история сдувается каждой оболочкой, и она не имеет большого значения для начала. Мне нравится иметь 10 000 строк истории:

export HISTFILESIZE=20000
export HISTSIZE=10000
shopt -s histappend
# Combine multiline commands into one in history
shopt -s cmdhist
# Ignore duplicates, ls without options and builtin commands
HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:[bf]g:exit"

Таким образом, если я знаю, что я что-то сделал раньше, но не могу вспомнить специфику, быстро history | grep foo поможет пробежать мою память.

Я часто обнаруживал, что awk чтобы получить определенный столбец вывода, как в df -h | awk '{print $2}' чтобы найти размер каждого из моих дисков. Чтобы сделать это проще, я создал функцию fawk в моем .bashrc:

function fawk {
    first="awk '{print "
    last="}'"
    cmd="${first}\$${1}${last}"
    eval $cmd
}

Теперь я могу запустить df -h|fawk 2 что экономит хороший набор текста.

Если вам нужно указать разделитель (например, awk -F: для /etc/passwd), эта функция, очевидно, не может справиться с этим. Немного измененная версия в этот смысл может обрабатывать произвольные awk аргументы перед номером поля (но все равно требуется ввод из stdin).


19



Я использую также псевдонимы ssh и ssh ... это делает все так просто - devin
+1 для подсказок контроля истории. - Rene Saarsoo
вы можете добавить псевдонимы имен хостов в .ssh / config к тому же эффекту. В этом случае добавьте запись «Облачный облачный узел» с именем «username dinomite», - Sirex


GPG зашифрованный bashrc

Я уверен, что у всех нас есть вещи, которые мы хотели бы включить в наш bashrc, что мы не хотим, чтобы легко читаемые sudoers. Мое решение:

if [ -f ~/.bash_private.gpg ]; then
   eval "$(gpg --decrypt ~/.bash_private.gpg 2>/dev/null)"
fi

У меня есть агент GPG, который делает это, поэтому я должен только вводить пароль своего личного ключа один раз в несколько часов. Вы все еще должны иметь некоторое доверие к пользователям системы, потому что ваша переменная, функции и псевдонимы, которые вы определяете, могут быть извлечены из ОЗУ. Тем не менее, я использую это в основном для своего ноутбука. Если он украден, я не хочу, чтобы кто-то легко видел такие вещи, как:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:secret@server.com/latest; }

15



Вы также шифруете свою историю в этом случае? Почему бы не зашифровать ваш $ home - Rqomey
@Rqomey, все дело в том, что мне не нужно зашифровывать мою историю, поскольку мои пароли не отображаются в моей .bash_history, потому что они скрыты из-за псевдонимов или функций. В ней вы видите такие вещи, как MYsql < garbagecollect.sql вместо mysql -uadmin -psecret < garbagecollect.sql - Bruno Bronosky


это потрясающий ресурс для этого:

покажите нам свой .bashrc


12