Przydatne aliasy bash i generowanie listy najczęściej używanych poleceń


10

Znalazłem ten artykuł omawiający szybki sposób na posortowanie historii basha i sprawdzenie, jakich poleceń używasz najczęściej:

cut -f1 -d" " .bash_history | sort | uniq -c | sort -nr | head -n 30

To naprawdę otwiera oczy na to, dla których zadań powinieneś utworzyć aliasy, a które z nich powinieneś całkowicie usunąć.

Chciałbym zobaczyć listę ServerFault zalecanych aliasów wiersza poleceń, które oszczędzają czas w pracy . Co masz?

Założę się, że możemy uratować każdego użytkownika, który czyta ten post, co najmniej 10 minut dziennie. (Minus pierwszego dnia, w którym tracą cały swój czas na czytanie ServerFault zamiast wykonywania swojej pracy oczywiście!)



Odpowiedzi:


7

Mam do czynienia z wieloma różnymi komputerami, więc jednym z moich ulubionych są aliasy dla każdej maszyny, do której muszę często SSH:

alias claudius="ssh dinomite@claudius"

Przydatne jest również skonfigurowanie dobrego .ssh/configi ssh, aby jeszcze bardziej ułatwić przeskakiwanie między maszynami.

Kolejnym z moich ulubionych aliasów jest przenoszenie katalogów:

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

I niektóre z często używanych odmian ls(i literówek):

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"

Prawie zawsze chcę egrep:

alias grep="egrep"

Pobierz strony podręcznika ze wszystkich sekcji

alias man="man -a"

Często przepuszczałem dane wyjściowe awk, aby uzyskać określoną kolumnę danych wyjściowych, np. df -h | awk '{print $2}'Aby znaleźć rozmiar każdego z moich dysków. Aby to ułatwić, stworzyłem funkcję fawkw moim .bashrc:

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

Mogę teraz uruchomić, df -h|fawk 2co oszczędza sporo pisania.

Pracuję z dużą ilością Perla i muszę znać wersje modułów zainstalowanych w systemie:

function perlmodver {
    perl -M$1 -e 'print "Version " .
        $ARGV[0]->VERSION . " of " . $ARGV[0] .
        " is installed.\n"' $1
}

3

Zwykle lubię pisać wszystko, bo boję się, że szybko zapomnę o poleceniach, których używam. Wiem, że się mylę, ale nie sądzę, bym wiedział tyle o systemie, gdybym tylko wkleił wszystkie polecenia w Commandlinefu do mojego .bashrc.

Zauważ, że nie mówię, że jestem najlepszy i wiem wszystko, co można wiedzieć o Linuksie. Poza tym, po prostu mówię, że lubię się uczyć i pamiętam, czego się nauczyłem.

Nie oznacza to, że nie doceniam aliasów oszczędzających czas (szczególnie w przypadku większych funkcji, ale musisz sprawdzić, czy skrypt nie jest lepszy), ale osobiście nie lubię ich używać (przynajmniej nie zawsze).

To powiedziawszy, Commandlinefu ma specjalny znacznik dla aliasów. Warto poszukać.

Myślę też, że to jest dobre:

   alias less='less -FSRX'

To zużyje mniej, jeśli wyjście jest większe niż ekran.


2

Mój ulubiony wszechczasów:

alias server_name='ssh -v -l username ip_address'

Nie potrzebuje wyjaśnienia, prawda? :-)


5
Czy to nie jest to .ssh / config: -P Host nazwa_serwera nazwa hosta 1.2.3.4 nazwa użytkownika użytkownika itp.
vartec

Używając bash_completion i tab, tab wydaje się działać dobrze dla mnie, zamiast konfigurować kilka aliasów ssh
Clayton Stanley

2

alias lt='ls -lhart'

  • l = długi: h = rozmiary czytelne dla człowieka: a = wszystkie: r = sortowanie wsteczne: t = sortowanie czasowe
  • Umieszcza najnowszy plik na dole, tuż nad monitem

alias active='grep -v -e "^$" -e"^ *#"'

  • pokazuje tylko wiersze, które nie są puste lub nie zostały zakomentowane
  • przykład: active /etc/httpd/conf/httpd.conf

alias svi='sudo vim'

alias scr='screen -Rd'


Fajne, szczególnie sudo vim
astropaniczny

1

Muszę przyznać, że mam kilka takich ...

alias sl=ls

Aby spróbować walczyć z moimi literówkami :-)

też mam

alias aliases='xterm -e vim ~/.bash_aliases;reload'
alias reload='. ~/.bash_aliases'

Więc jest miło i łatwo dodać nowe.



1
for host in `awk '{ print $1 }' ~/.hostsILogIntoAllTheTime`; do
  alias $host='ssx '$host
done 

Wpisz nazwę hosta, aby zalogować się do hosta. Uwaga: ssx to sam alias:

ssx='ssh -Y'

W połączeniu ze wspólnymi kluczami jest to całkiem sprytne.


1

Irytujące jest umieszczanie wszystkich rzeczy apt-get i apt-cache w debian / * buntu, szczególnie z prefiksem sudo, więc mam:

alias apti='sudo apt-get install'
alias aptr='sudo apt-get remove'
alias apts='apt-cache search'

1

utwórz .tar.gz

alias tarc="tar czvf"

wyciąg .tar.gz

alias tarx="tar xzvf"

lista .tar.gz

alias tart="tar tzvf"


0

Znalazłem tę stronę, szukając sposobu na utworzenie aliasu, aby pokazać n-tą kolumnę pliku csv (właściwie tsv) za pomocą awk. Powyższa funkcja fawk była prawie dokładnie tym, czego chciałem. Zmodyfikowałem nieznacznie, aby dodać opcjonalny drugi argument, nazwę pliku, więc mogę go używać jak awk normalnie, a nie tylko przez potok.

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

Dzięki!


0

To nie jest alias, ale przydatne mogą być osoby, które aliasują połączenia ssh.

Pakiet openssh ma plik binarny o nazwie ssh-argv0, który działa za pośrednictwem dowiązań symbolicznych.

Jeśli więc zrobisz coś takiego:

sudo ln -s /usr/bin/ssh-argv0 /usr/local/bin/user@ssh.server.com

Mając / usr / local / bin w $ PATH, teraz możesz połączyć się jako użytkownik „user” z ssh.server.com, pisząc to w zachęcie powłoki:

 $ user@ssh.server.com 

0

+1 za odpowiedź Drew Stephens. Jedyny, którego nie opisał, którego używam, to alias różnych plików kropek, do których muszę regularnie uzyskiwać dostęp, takich jak:

alias dotz='vi ~/.zshrc'

Przejdź o krok dalej dzięki funkcji dodawania aliasu w locie:

function add-alias {
echo "alias $1=\047$2\047" >> ~/.zshrc
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.