it-swarm-ru.tech

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

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

# 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"
141
Gareth

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

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
Gert M

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

У меня есть скрипт ~/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} "

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

39
Eddie

Цвет для страниц меньшего размера делает страницы немного легче для чтения:

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'

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

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

Не больше 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
Alberto Zaccagni

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

alias claudius="ssh [email protected]"

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

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

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"

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

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), эта функция, очевидно, не может справиться с этим. Слегка пересмотренная версия в это Gist может обрабатывать произвольные аргументы awk перед номером поля (но все же требует ввода из stdin).

19
Drew Stephens

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:[email protected]/latest; }
15
Bruno Bronosky

это отличный ресурс для этого:

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

12
devin

Раньше я настраивал их повсеместно, но потом понял, что лучше просто вспомнить, как их делать "вручную", потому что это означало, что я 1) полностью пойму, что происходит, и 2) буду иметь доступ к этим возможностям, даже если мой пользовательский .bashrc не был установлен.

Единственное, что я использую в эти дни псевдонимы, - это сокращение повторяющегося набора действительно длинных строк (например, alias myhost='ssh -T [email protected] screen -dAr')

12
pjz

Один лайнер и крошечные сценарии могут продолжаться вечно. Я рекомендую man bash и писать вещи самостоятельно. Несколько хороших коротких вещей от bash на http://www.commandlinefu.com . Вот несколько вещей.

#use extra globing features. See man bash, search extglob.
shopt -s extglob
#include .files when globbing.
shopt -s dotglob
#When a glob expands to nothing, make it an empty string instead of the literal characters.
shopt -s nullglob
# fix spelling errors for cd, only in interactive Shell
shopt -s cdspell
# vi mode
set -o vi

s() { # do Sudo, or Sudo the last command if no argument given
    if [[ $# == 0 ]]; then
        Sudo $(history -p '!!')
    else
        Sudo "[email protected]"
    fi
}

Prompt_command() {
    p=$PWD  # p is much easier to type in interactive shells
    # a special IFS should be limited to 1 liners or inside scripts.
    # Otherwise it only causes mistakes.
    unset IFS
}
Prompt_COMMAND=Prompt_command


# smart advanced completion, download from
# http://bash-completion.alioth.debian.org/
if [[ -f $HOME/local/bin/bash_completion ]]; then
    . $HOME/local/bin/bash_completion
fi


extract () { # extract files. Ignore files with improper extensions.
    local x
    ee() { # echo and execute
        echo "[email protected]"
        $1 "$2"
    }
    for x in "[email protected]"; do
        [[ -f $x ]] || continue
        case "$x" in
            *.tar.bz2 | *.tbz2 )    ee "tar xvjf" "$x"  ;;
            *.tar.gz | *.tgz ) ee "tar xvzf" "$x"   ;;
            *.bz2 )             ee "bunzip2" "$x"   ;;
            *.rar )             ee "unrar x" "$x"   ;;
            *.gz )              ee "gunzip" "$x"    ;;
            *.tar )             ee "tar xvf" "$x"   ;;
            *.Zip )             ee "unzip" "$x"     ;;
            *.Z )               ee "uncompress" "$x" ;;
            *.7z )              ee "7z x" "$x"      ;;
        esac
    done
}
9
Ian Kelling

Небольшой совет для Bash, если вы системный администратор и много работаете с привилегиями root:

shopt -o noclobber

Это предотвратит случайное уничтожение содержимого уже существующего файла, если вы перенаправите вывод (> имя файла). Вы всегда можете принудительно перезаписать с помощью имени файла |.

9
Cyberdrow

У меня есть следующее в моем bashrc

function __setprompt {
  local BLUE="\[\033[0;34m\]"
  local NO_COLOUR="\[\033[0m\]"
  local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'`
  local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'`
  if [ $SSH2_IP ] || [ $SSH_IP ] ; then
    local SSH_FLAG="@\h"
  fi
  PS1="$BLUE[\$(date +%H:%M)][\u$SSH_FLAG:\w]\\$ $NO_COLOUR"
  PS2="$BLUE>$NO_COLOUR "
  PS4='$BLUE+$NO_COLOUR '
}
__setprompt

На локальной машине это выглядит так:

[17:57][user:~]$

но на удаленном (через ssh) это:

[17:57][[email protected]:~]$
8
Anders Rasmussen

У меня было это в моем .bashrc некоторое время, и я нашел это полезным. Если вы входите в окно, экран запускается автоматически при входе в систему, таким образом, когда ваше сетевое соединение прерывается или что-то еще, вы не теряете то, что делали. Это должно быть размещено в конце.

if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x  -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs

sleep 1
screen -U -RR && exit 0

echo "Screen failed! continuing with normal bash startup"
fi
6
baudtack

У меня есть несколько битов:

# stop the pc speaker ever annoying me :)
setterm -bfreq 0

# don't put duplicate lines in the history. See bash(1) for more options
HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
HISTCONTROL=ignoreboth

# Expand the history size
HISTFILESIZE=10000 
HISTSIZE=100

# commands with leading space do not get added to history
HISTCONTROL=ignorespace

# am I on the internet?
alias p4='ping 4.2.2.2 -c 4'

# pwsafe
alias pw='pwsafe -p'

# ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -laptr' #oldest first sort
alias labc='ls -lap' #alphabetical sort

# cd aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# cd into the old directory
alias bd='cd "$OLDPWD"'

# install a package and automatically respond yes to confirmation Prompt
alias ins="Sudo aptitude install"

# remove a package and its configuration files
alias remp="Sudo aptitude purge"

# search for a package - apt-cache and aptitude search in different ways
# so have both
alias searchc="apt-cache search"
alias search="aptitude search"
alias show="aptitude show"
5
Hamish Downer

Сколько псевдонимов для fortune вам нужно?

Мне нравится создавать псевдоним cdd, который приведет меня туда, где я, скорее всего, буду работать на этом сервере.

PATH переопределение действительно принадлежит .bash_profile, а не .bashrc.

На сервере, где я обычно использую большой набор screens, мой .bashrc буду иметь:

alias s1="screen -dr chaos1"
alias s2="screen -dr chaos2"
alias s3="screen -dr chaos3"
# ... and so on

(screens были настроены, например, с помощью screen -U -S chaos1.)

5
chaos

Помимо прочего, я установил некоторые значения по умолчанию на меньшее, предотвратил случайное закрытие моего терминала и включил прямую навигацию по истории:

# ignore case, long Prompt, exit if it fits on one screen, allow colors for ls and grep colors
export LESS="-iMFXR"

# must press ctrl-D 2+1 times to exit Shell
export IGNOREEOF="2"

# allow ctrl-S for history navigation (with ctrl-R)
stty -ixon
5

Хвост все логи в/var/log

alias logs="find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f"
5
hoberion

Чтобы иметь цвета для всех команд grep, таких как grep, egrep и zgrep, в моем .bashrc есть следующее

export GREP_OPTIONS='--color=auto'
4

Псевдоним "Папки" отличный! Я немного изменил его, чтобы каталоги с пробелами не вызывали ошибок.

alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'
4
phoenix8

Я бы повторил комментарий @ pjz о том, что нужно знать что-то вручную, а не настраивать их. Особенно, если вы получаете доступ к многочисленным машинам, как я всегда делаю.

Так что я точно знаю, это set -o vi потому что я знаю команды vi-edit в bash и не знаю emacs (кроме того, Ctrl + A мешает screen). На своих ящиках я положил это в .bashrc

Я также считаю, что я должен включить export EDITOR=vim потому что в ряде недавних дистрибутивов по умолчанию используется nano, что наиболее раздражает, когда в утилиту нужно что-то редактировать, когда я ожидал vi. : - /

Я также изменяю мою подсказку. Давным-давно я обнаружил, что добавление последнего кода ошибки достаточно полезно, и мне это нравится. И мне нравится полный путь в подсказке. И текущий screen номер тоже. И имеет смысл включить текущего пользователя и имя хоста. Моя подсказка PS1='\[email protected]\h $PWD $WINDOW [$?] \$ '

3
staticsan

Вот мины:

export HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:bg:fg"

# set variable identifying the chroot you work in (used in the Prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# shows you if you are in a chroot or in a git repository
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;30m\]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]$(__git_ps1)\$ '


if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

# two handy single-letter aliases

alias u='ls -hltr'
alias e='du * -cs | sort -nr | head'
alias g='grep -C5 --color=auto'

# creates a temp dir and cds into it
alias td='pushd $(mktemp -d)'

# find <dir> <file name regexp> <file contents regexp>
function fing { find "$1" -name "$2" -exec grep -H "$3" "{}" \; }

# shows "git diff" across any project in any subdirectory
alias git-differ='for g in $(find . -name ".git"); do g=${g%%.git};printf "$g\t\t\t";pu $g >/dev/null && git diff |wc -l; p >/dev/null; done'

# does git house keeping across any project in any subdirectory
alias git-housekeep='for g in $(find . -name ".git"); do g=${g%%.git};echo $g;pu $g && git repack && git gc --auto && p;done'

# Debian update
alias apg='aptitude update && aptitude dist-upgrade && aptitude clean'

# Quick way to serve files in HTTP from the local dir
alias webs='python -m SimpleHTTPServer'
3
Federico
3
raspi

Имейте bash проверку, чтобы видеть, изменился ли размер окна (препятствует тому, чтобы редактирование линии стало странным, если вы изменяете размер своего окна терминала)

shopt -s checkwinsize

Это мой любимый Вызывает bash добавить в историю вместо перезаписывает это. Обычно, когда вы запускаете bash, он загружает историю в память, а когда вы ее закрываете, записывает ее. Это означает, что если вы загрузите две оболочки, используйте обе, а затем закроете обе, та, которую вы закрыли последней, перезапишет все изменения.

Этот фрагмент заставляет его сначала только добавлять изменения (вместо перезаписи всего буфера), а затем заставлять его после каждой команды записывать изменения. По сути, вы получаете живое обновление .bash_history, поэтому, если вы запускаете новый терминал, у вас есть все команды из истории других запущенных сессий.

shopt -s histappend
Prompt_COMMAND='history -a'
3
Dan Udey

Вот некоторые из моих фаворитов:

alias ls='ls -F --color=auto'
alias l='ls'
alias ll='ls -ahl'
alias ..='cd ..'
alias ...='cd ../..'
alias mv='mv -i'

mkcd() {
        if [ $# != 1 ]; then
                echo "Usage: mkcd <dir>"
        else
                mkdir -p $1 && cd $1
        fi
}

# Git related
alias gs='git status'
alias gc='git commit'
alias ga='git add'
alias Gd='git diff'
alias gb='git branch'
alias gl='git log'
alias gsb='git show-branch'
alias gco='git checkout'
alias gg='git grep'
alias gk='gitk --all'
alias gr='git rebase'
alias gri='git rebase --interactive'
alias gcp='git cherry-pick'
alias grm='git rm'
2
Tom

От Автоматизация Linux и Unix Administration Кирк Бауэр (отличная книга!)

PS1='\n[\[email protected]\h]: \w\n$?> '

Новая строка в начале - моя, мне нравится иметь четкую грань между предыдущим выводом и приглашением. Остальное это:

\ u = имя пользователя

\ h = Хост

\ w = рабочий каталог

$? = последний код возврата

2
Cawflands

Я использую это около 20 раз в день, чтобы перейти в последний измененный каталог:

cl()
{
        last_dir="$(ls -Frt | grep '/$' | tail -n1)"
        if [ -d "$last_dir" ]; then
                cd "$last_dir"
        fi
}

Эти два хранят постоянные закладки часто используемых каталогов:

rd(){
    pwd > "$HOME/.lastdir_$1"
}

crd(){
        lastdir="$(cat "$HOME/.lastdir_$1")">/dev/null 2>&1
        if [ -d "$lastdir" ]; then
                cd "$lastdir"
        else
                echo "no existing directory stored in buffer $1">&2
        fi
}
2
gz34

Это мои любимые:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

Мне нравится иметь историю командной строки, которая никогда не забывает.

К сожалению, некоторое время назад я запустил Shell из cron, который как-то не читал .bashrc, и урезал все до 500 строк, разрушив историю за многие годы. Поэтому я рекомендую это зайти в/etc/bashrc.

2
skiphoppy

Это один из моих любимых:

alias ssh='if [ "$(ssh-add -l)" = "The agent has no identities." ]; then ssh-add; fi; /usr/bin/ssh "[email protected]"'

Если я забыл подтвердить подлинность, это позволяет мне без необходимости тратить время на ввод текста, выполняя ssh-add after сеанс ssh.

1
joshk0

Пара хороших

Заставьте SSH автоматически заполнить имя хоста, к которому вы подключаетесь (если это в вашей конфигурации или истории)

complete -o default -o nospace -W "$(/usr/bin/env Ruby -ne 'puts $_.split(/[,\s]+/)[1..-1].reject{|Host| Host.match(/\*|\?/)} if $_.match(/^\s*Host\s+/);' < $HOME/.ssh/config)" scp sftp ssh

Некоторые полезные настройки завершения bash

bind "set completion-ignore-case on" # note: bind used instead of sticking these in .inputrc
bind "set bell-style none" # no bell
bind "set show-all-if-ambiguous On" # show list automatically, without double tab

Некоторые полезные для Mac OS X

alias nospotlight='Sudo mdutil -a -i off'
alias cleardnscache='Sudo killall -HUP mDNSResponder'
alias ldd='otool -L'
alias seq='jot - '
alias eject='drutil eject'
1
lynxman
# vi ~/.bashrc # red/green terminal colors regarding exit code
export Prompt_COMMAND='PS1="`
if [[ \$? = "0" ]];
then echo "\\[\\033[0;32m\\]";
else echo "\\[\\033[0;31m\\]";
fi`[\[email protected]\h \w]\[\e[m\] "'
export PS1
1
LanceBaynes
IP_ADDRESS_BASH=`ip addr | grep -w inet | gawk '{if (NR==2) {$0=$2; gsub(/\//," "); print $1;}}'`
PS1="\h $IP_ADDRESS_BASH \w % "

Затем он отображает IP-адрес вашей машины, на которую вы только что вошли.

1
mrkafk

Я собираю несколько вещей вручную в $ HOME/local, поэтому у меня есть небольшой фрагмент:

for prog in $HOME/local/*
do
    if [ -d "$prog/bin" ]; then
        export PATH=$prog/bin:$PATH
    fi
    if [ -d "$prog/include" ]; then
        export C_INCLUDE_PATH=$prog/include:$C_INCLUDE_PATH
    fi
    if [ -d "$prog/lib" ]; then
        export LD_LIBRARY_PATH=$prog/lib:$LD_LIBRARY_PATH
        export LIBRARY_PATH=$prog/lib:$LIBRARY_PATH
    fi
    if [ -d "$prog/man" ]; then
        export MANPATH=$prog/man:$MANPATH
    fi
    if [ -d "$prog/share/man" ]; then
        export MANPATH=$prog/share/man:$MANPATH
    fi
done

У меня также есть мой IRC клиент на моем сервере, работающий на экране, поэтому у меня есть это (не вещь .bashrc, но все еще полезная)

#!/usr/bin/env bash

RUNNING=`screen -ls | grep irc`
if [ "" = "$RUNNING" ]; then
   screen -S irc irssi
else
   screen -dr irc
fi
1
Daniel Huckstep

Я использую свой bashrc на многих машинах, поэтому у меня есть небольшой фрагмент, чтобы убедиться, что LS окрашен. Это исправит это на компьютерах с OSX, возможно, даже * BSD, если вы настроите строку uname.

if [ "$TERM" != "dumb" ]; then
    if [ `uname` == "Darwin" ]; then
       alias ls='ls -G'
    else
       eval "`dircolors -b`"
       alias ls='ls --color=auto'
    fi
fi

Кроме того, у меня есть команда для резервного копирования файла, полезная, если вы собираетесь изменить конфигурационный файл и хотите сделать быстрое копирование заранее.

bu () { cp $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }
1
Andrew Williams
mkdircd () { mkdir -p "[email protected]" && eval cd "\"\$$#\""; }

ecb () { emacsclient -n -a emacs [email protected] & } # open in emacsclient in the background
ecp () { emacsclient -n $(which [email protected]) & } # open a given file found in a $PATH in emacsclient
ecr () { Sudo_EDITOR="emacsclient -a emacs" sudoedit [email protected]; } # start emacsclient or emacs and open the file as root

eCf () { emacs --batch --eval "(byte-compile-file \"[email protected]\")"; } # byte-compile file
eCa () { emacs --batch --eval "(batch-byte-compile-if-not-done)" *.el; } # byte-compile all el files in the current directory and it's children
1
Adobe

, $ HOME/bin/ГИТ-Prompt/ git-Prompt.sh

0
brunoqc

Несколько псевдонимов, которые я использую, чтобы снять Edge с ежедневного CLI Grind ...

# I find myself doing this a lot
alias hg='history | grep '

# Likewise this, plus I'm always mistyping it...
alias findy='find . -name'

# sometimes you're just not sure you want to delete something...
alias trash='mv -t ~/.local/share/Trash/files --backup=t'

alias vb='vim ~/.bashrc'

# I find typing 'cd ..' less than optimal
alias up='cd ..'
alias 2up='cd ../../'
alias 3up='cd ../../../'
alias 4up='cd ../../../../'

# re-map caps lock key to be Ctrl
# (works on Linux, at least)
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "add control = Caps_Lock"

# helpful history settings:
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export HISTIGNORE=ls:ll:la:l:cd:pwd:exit:mc:su:df:clear:cls
0
yalestar

Иногда мне приходится использовать систему Solaris на работе.

Однако система управляется централизованно через Puppet, включая файл паролей (который включает в себя настройку Shell).

Мой .bashrc поэтому читает что-то вроде:

%!/bin/bash
exec /bin/tcsh

:)

0
Alnitak

Чтобы исправить размер окна на экране GNU после изменения размера:

shopt -s checkwinsize

Чтобы показать разрешения для каталога, используйте ярлык ls -ld:

alias lld='ls -ld'

Просмотр истории:

alias h='history | zgrep'

И содержимое моего скрипта zgrep, который я не мог понять, как втиснуть прямо в псевдоним:

#!/bin/sh
grep "${*-.}"
0
Annika Backstrom

Я зависим от экрана, и я использую следующие ярлыки для SSHing к машинам. С этим сценарием я набираю p hostname для SSH на хост и экран запуска или o hostname сделать то же самое, но запустить экран на локальной машине.

Сначала скрипт, который подключается к серверу SSH с тем же именем, что и скрипт, который вы запускаете. Я называю это simple_ssh:

#!/bin/sh
BASENAME=$(basename $0)

if [ "$SCREEN" = "1" ]; then
    export SCREEN=0
    exec screen -RD scr$BASENAME -s $0
Elif [ "$SCREEN" = "2" ]; then
    exec ssh $BASENAME "[email protected]" -t 'screen -RD'
fi

exec ssh $BASENAME "[email protected]"

Добавьте ссылку на mars в вашем пути, и mars станет ярлыком для ssh mars:

[email protected]:bin$ ln -s simple_ssh mars
[email protected]:bin$ mars
[email protected]:~$

$SCREEN переменная окружения позволяет автоматически выполнять экран GNU с подключением. SCREEN=1 запускает экран локально (скажем, если экран не установлен на хосте), а SCREEN = 2 запускает его на самом хосте.

Используйте пару псевдонимов, чтобы сократить это:

alias o='SCREEN=1 exec'
alias p='SCREEN=2 exec'

Используйте скрипт для создания символических ссылок для всех ваших хостов, заданных ~/.ssh/config файл такой:

Host mars
    HostName mars.example.com
    User abackstrom

Сценарий, sshconfig2simplessh:

#!/bin/sh

BASENAME=$(basename "$0")
USAGE="Usage: $BASENAME /path/to/bin"

if [ -z "$1" ] ; then
    echo $USAGE
    exit 0
fi

if [ ! -d "$1" ] ; then
    echo "$1 is not a directory" >&2
    exit 1
fi

cd "$1"

HOSTS=$(grep '^Host ' < ~/.ssh/config | cut -d' ' -f2)

for Host in $HOSTS ; do
    if [ ! -e "$Host" ]; then
        echo ln -s simple_ssh "$Host"
        ln -s simple_ssh "$Host"
    fi
done
0
Annika Backstrom

Мягкая фетровая шляпа

alias install=Sudo yum install

Debian

alias install=Sudo apt-get update && Sudo apt-get install
0
egorgry