Aliasy Bash nie możesz żyć bez

0 Comments

alias Bash jest metodą uzupełniania lub nadpisywania poleceń Bash nowymi. Aliasy Bash ułatwiają użytkownikom dostosowywanie ich obsługi w terminalu POSIX. Często są one definiowane w $HOME/.bashrc lub $HOME/bash_aliases (które muszą być załadowane przez $HOME/.bashrc).

większość dystrybucji domyślnie dodaje co najmniej kilka popularnych aliasów.plik bashrc każdego nowego konta użytkownika. Są to proste, aby zademonstrować składnię aliasu Bash:

alias ls="ls -F"
alias ll="ls -lh"

jednak nie wszystkie dystrybucje są dostarczane z wstępnie wypełnionymi aliasami., Jeśli dodasz aliasy ręcznie, musisz załadować je do bieżącej sesji Bash:

$ source ~/.bashrc

w przeciwnym razie możesz zamknąć terminal i otworzyć go ponownie, aby załadował swój plik konfiguracyjny.

z tymi aliasami zdefiniowanymi w skrypcie inicjalizacyjnym Bash, możesz wpisać ll i uzyskać wyniki ls – l, a po wpisaniu ls otrzymasz, zamiast wyjścia zwykłego starego ls.

te aliasy są świetne, ale po prostu zarysowują powierzchnię tego, co jest możliwe. Oto najlepsze aliasy Bash 10, bez których po wypróbowaniu nie będziesz mógł żyć.,

najpierw ustaw

przed rozpoczęciem utwórz plik o nazwie ~/.bash_aliases:

$ touch ~/.bash_aliases

następnie upewnij się, że ten kod pojawi się w twoim ~/.plik bashrc:

if ; then
source $HOME/.bash_aliases
fi

Jeśli chcesz wypróbować któryś z aliasów w tym artykule, wprowadź je do swojego .plik bash_aliases, a następnie załaduj je do sesji Bash ze źródłem~/.dowództwo bashrc.,

Sortuj według rozmiaru pliku

jeśli rozpocząłeś pracę z menedżerami plików GUI, takimi jak Nautilus w GNOME, Finder w MacOS lub Explorer w Windows, prawdopodobnie jesteś przyzwyczajony do sortowania listy plików według ich rozmiaru. Możesz to zrobić również w terminalu, ale nie jest to do końca zwięzłe.

Dodaj ten alias do swojej konfiguracji w systemie GNU:

alias lt="ls --human-readable --size -1 -S --classify"

Ten alias zastępuje lt poleceniem ls, które wyświetla rozmiar każdego elementu, a następnie sortuje go według rozmiaru, w jednej kolumnie, z notacją wskazującą rodzaj pliku., Załaduj nowy alias, a następnie wypróbuj:

na MacOS lub BSD polecenie ls nie ma tych samych opcji, więc ten alias działa:

alias lt="du -sh * | sort -h"

wyniki tej wersji są nieco inne:

$ du -sh * | sort -h
0 compile
0 COPYING
0 install-sh
0 missing
4.0K configure.ac
4.0K dot-gitlab.ci.yml
4.0K flatpak.path.patch
4.0K git-portal.spec
4.0K info.slackermedia.Git-portal.json
4.0K Makefile.am
8.0K README.md
12K config.log
16K bin
24K Makefile
24K Makefile.in
32K config.status
36K LICENSE
44K aclocal.m4
60K share
140K configure
476K autom4te.cache

w rzeczywistości, nawet na Linuksie, polecenie to jest przydatne, ponieważ używanie list ls katalogi i dowiązania symboliczne jako o rozmiarze 0, które mogą nie być informacjami, które naprawdę chcesz. Twój wybór.

podziękowania dla Brada Alexandra za ten pomysł.

Wyświetlaj tylko zamontowane dyski

Komenda mount była kiedyś tak prosta., Za pomocą jednego polecenia można było uzyskać listę wszystkich zamontowanych systemów plików na komputerze i była ona często używana do przeglądania, jakie Napędy zostały dołączone do stacji roboczej. Kiedyś było imponujące, aby zobaczyć więcej niż trzy lub cztery wpisy, ponieważ większość komputerów nie ma wiele więcej portów USB niż to, więc wyniki były zarządzalne.,

komputery są teraz nieco bardziej skomplikowane i pomiędzy LVM, fizycznymi dyskami, pamięcią sieciową i wirtualnymi systemami plików wyniki mount mogą być trudne do przetworzenia:

aby rozwiązać ten problem, spróbuj użyć aliasu takiego:

alias mnt="mount | awk -F" " "{ printf \"%s\t%s\n\",\$1,\$3; }" | column -t | egrep ^/dev/ | sort"

Ten alias używa awk do przetworzenia wyjścia mount po kolumnie, zmniejszając wyjście do tego, czego prawdopodobnie szukasz (jakie dyski twarde, a nie systemy plików, są montowane):

w systemie macOS polecenie mount nie zapewnia strasznie szczegółowych danych wyjściowych, więc alias może być przesadny., Jeśli jednak wolisz zwięzły raport, spróbuj tego:

alias mnt="mount | grep -E ^/dev | column -t"

wyniki:

znajdź polecenie w historii grepa

czasami wymyślasz, jak zrobić coś w terminalu i obiecujesz sobie, że nigdy nie zapomnisz tego, czego się właśnie nauczyłeś. Minęła godzina, a Ty zupełnie zapomniałeś, co zrobiłeś.

przeszukiwanie historii Bash jest czymś, co każdy musi zrobić od czasu do czasu., Jeśli wiesz dokładnie, czego szukasz, możesz użyć Ctrl + R, aby wykonać odwrotne wyszukiwanie w historii, ale czasami nie pamiętasz dokładnej komendy, którą chcesz znaleźć.

oto alias, który ułatwi to zadanie:

alias gh="history|grep"

oto przykład, jak go użyć:

$ gh bash
482 cat ~/.bashrc | grep _alias
498 emacs ~/.bashrc
530 emacs ~/.bash_aliases
531 source ~/.bashrc

Sortuj według czasu modyfikacji

zdarza się to w każdy poniedziałek: bierzesz się do pracy, siadasz przy komputerze, otwierasz terminal i znajdujesz zapomniałem, co robiłeś w zeszły piątek., Potrzebujesz aliasu, aby wyświetlić listę ostatnio zmodyfikowanych plików.

możesz użyć polecenia ls, aby utworzyć alias, który pomoże Ci znaleźć miejsce, w którym skończyłeś:

alias left="ls -t -1"

wyjście jest proste, chociaż możesz go rozszerzyć za pomocą opcji –long, jeśli wolisz., Alias, jak na liście, wyświetla to:

$ left
demo.jpeg
demo.xcf
design-proposal.md
rejects.txt
brainstorm.txt
query-letter.xml

Policz pliki

Jeśli chcesz wiedzieć, ile plików masz w katalogu, rozwiązanie jest jednym z najbardziej klasycznych przykładów konstrukcji poleceń Uniksa: listy plików są wykonywane za pomocą polecenia ls, kontrolujesz jego wyjście, aby było tylko jedną kolumną z opcją -1, a następnie przesyłaj je do polecenia wc (word count), aby policzyć, ile linii pojedynczych plików jest.

jest to genialna demonstracja tego, jak filozofia Uniksa pozwala użytkownikom na tworzenie własnych rozwiązań przy użyciu małych komponentów systemowych., Ta kombinacja poleceń jest również dużo do wpisania, jeśli zdarza się to robić kilka razy dziennie, i nie działa ona dokładnie dla katalogu katalogów bez użycia opcji-R, która wprowadza nowe linie do wyjścia i czyni ćwiczenie bezużytecznym.

zamiast tego, Ten alias ułatwia proces:

alias count="find . -type f | wc -l"

ten liczy pliki, ignorując katalogi, ale nie zawartość katalogów. Jeśli masz folder projektu zawierający dwa katalogi, z których każdy zawiera dwa pliki, alias zwraca cztery, ponieważ w całym projekcie są cztery pliki.,

$ ls
foo bar
$ count
4

tworzenie środowiska wirtualnego Pythona

czy kodujesz w Pythonie?

często kodujesz w Pythonie?

Jeśli tak, to wiesz, że stworzenie wirtualnego środowiska Pythona wymaga co najmniej 53 naciśnięć klawiszy.
to o 49 za dużo, ale można to łatwo obejść za pomocą dwóch nowych aliasów o nazwie ve i va:

alias ve="python3 -m venv ./venv"
alias va="source ./venv/bin/activate"

uruchamiając ve tworzymy nowy katalog o nazwie venv, zawierający zwykły system plików środowiska wirtualnego dla Python3., Alias va aktywuje środowisko w bieżącej powłoce:

$ cd my-project
$ ve
$ va
(venv) $

Dodaj pasek postępu kopiowania

wszyscy śmieją się z pasków postępu, ponieważ są one niesłusznie niedokładne. A jednak w głębi duszy wszyscy ich pragniemy. Polecenie UNIX cp nie ma paska postępu, ale ma opcję-v dla szczegółowości, co oznacza, że wyświetla nazwę KAŻDEGO pliku kopiowanego do terminala. To całkiem dobry hack, ale to nie działa tak dobrze, gdy kopiujesz jeden duży plik i chcesz jakieś wskazanie, ile z pliku ma jeszcze zostać przeniesione.,

polecenie pv zapewnia pasek postępu podczas kopiowania, ale nie jest powszechne jako domyślna aplikacja. Z drugiej strony, polecenie rsync jest zawarte w domyślnej instalacji prawie każdego dostępnego systemu POSIX i jest powszechnie uznawane za jeden z najmądrzejszych sposobów kopiowania plików zarówno zdalnie, jak i lokalnie.

jeszcze lepiej, ma wbudowany pasek postępu.,

alias cpv="rsync -ah --info=progress2"

używanie tego aliasu jest takie samo jak używanie polecenia cp:

$ cpv bigfile.flac /run/media/seth/audio/
3.83M 6% 213.15MB/s 0:00:00 (xfr#4, to-chk=0/4)

interesującym efektem ubocznym używania tego polecenia jest to, że rsync kopiuje zarówno pliki, jak i katalogi bez flagi-r, której CP w przeciwnym razie wymagałby.

chroń się przed wypadkami usuwania plików

nie powinieneś używać polecenia rm. Instrukcja obsługi rm nawet tak mówi:

ostrzeżenie: jeśli używasz 'rm' do usunięcia pliku, Zwykle możliwe jest odzyskanie zawartości tego pliku., Jeśli chcesz mieć większą pewność, że zawartość jest naprawdę nie do odzyskania, rozważ użycie „shred”.

Jeśli chcesz usunąć plik, powinieneś przenieść go do kosza, tak jak to robisz podczas korzystania z pulpitu.

POSIX ułatwia to, ponieważ kosz jest dostępną, rzeczywistą lokalizacją w systemie plików. Ta lokalizacja może się zmienić, w zależności od platformy: na FreeDesktop Kosz znajduje się w~/.local / share / Trash, podczas gdy na MacOS jest to~/.,Kosz, ale tak czy inaczej, to tylko katalog, w którym umieszczasz pliki, które chcesz ukryć, dopóki nie będziesz gotowy, aby je usunąć na zawsze.

Ten prosty alias Umożliwia wrzucanie plików do kosza z terminala:

alias tcn="mv --force -t ~/.local/share/Trash "

Ten alias używa mało znanej flagi mv, która umożliwia podanie pliku, który chcesz przenieść jako ostatecznego argumentu, ignorując Zwykle wymóg, aby ten plik był wyświetlany jako pierwszy., Teraz możesz użyć nowego polecenia, aby przenieść pliki i foldery do kosza systemowego:

$ ls
foo bar
$ tcn foo
$ ls
bar

teraz plik jest „zniknął”, ale tylko do momentu, gdy zdasz sobie sprawę z zimnego potu, że nadal go potrzebujesz. W tym momencie możesz uratować Plik z kosza systemowego; pamiętaj, aby dać napiwek deweloperom Bash I mv w drodze.

Uwaga: jeśli potrzebujesz bardziej solidnego polecenia Trash z lepszą zgodnością z FreeDesktop, zobacz Trashy.

Uprość swój przepływ pracy w Git

każdy ma unikalny przepływ pracy, ale zazwyczaj są powtarzalne zadania bez względu na wszystko., Jeśli pracujesz z Gitem regularnie, to prawdopodobnie jest jakaś Sekwencja, którą powtarzasz dość często. Może wracasz do gałęzi master i ciągniesz najnowsze zmiany w kółko w ciągu dnia, a może tworzysz tagi, a następnie pchasz je do pilota, a może jest to coś zupełnie innego.

bez względu na to, jakie Git incantation znudziło Ci się pisanie, Możesz być w stanie złagodzić ból za pomocą aliasu Bash., W dużej mierze dzięki swojej zdolności do przekazywania argumentów hookom, Git ma bogaty zestaw introspekcyjnych poleceń, które oszczędzają Ci od wykonywania niesamowitych wyczynów w Bash.

na przykład, podczas gdy możesz mieć trudności z zlokalizowaniem w Bash katalogu najwyższego poziomu projektu (który, jeśli chodzi o Bash, jest całkowicie arbitralnym oznaczeniem, ponieważ absolutnym najwyższym poziomem dla komputera jest katalog główny), Git zna swój najwyższy poziom za pomocą prostego zapytania., Jeśli zapoznasz się z hookami Gita, znajdziesz się w stanie dowiedzieć się WSZYSTKICH rodzajów informacji, o których Bash nic nie wie, ale możesz wykorzystać te informacje za pomocą aliasu Bash.,

tutaj znajduje się alias, aby znaleźć najwyższy poziom projektu Git, bez względu na to, gdzie aktualnie pracujesz, a następnie zmienić katalog do niego, zmienić gałąź master i wykonać Git pull:

alias startgit="cd `git rev-parse --show-toplevel` && git checkout master && git pull"

Ten rodzaj aliasu nie jest bynajmniej uniwersalnie użytecznym aliasem, ale pokazuje, jak stosunkowo prosty alias może wyeliminować wiele pracochłonnej nawigacji, poleceń i czekania na monity.

prostszy i prawdopodobnie bardziej uniwersalny alias przywraca Ci najwyższy poziom projektu Git., Ten alias jest przydatny, ponieważ gdy pracujesz nad projektem, ten projekt staje się mniej więcej Twoim katalogiem „dom tymczasowy”. To powinno być tak proste, aby przejść do „home”, Jak to jest, aby przejść do rzeczywistego domu, a oto alias, aby to zrobić:

alias cg="cd `git rev-parse --show-toplevel`"

teraz polecenie cg przeniesie Cię na szczyt twojego projektu Git, bez względu na to, jak głęboko w jego strukturze katalogów się schodziłeś.,

Zmiana katalogów i przeglądanie zawartości w tym samym czasie

kiedyś (rzekomo) zaproponował czołowy naukowiec, że moglibyśmy rozwiązać wiele problemów energetycznych planety, wykorzystując energię zużywaną przez maniaków piszących cd, a następnie ls.
jest to częsty wzorzec, ponieważ zazwyczaj gdy zmieniasz katalogi, masz impuls lub potrzebę, aby zobaczyć, co jest wokół.

ale „chodzenie” drzewa katalogów komputera nie musi być procesem start-and-stop.

ten jest oszustwem, ponieważ w ogóle nie jest aliasem, ale jest świetnym pretekstem do odkrywania funkcji Bash., Podczas gdy aliasy są świetne do szybkich zastępstw, Bash pozwala dodać lokalne funkcje w Twoim .plik bashrc (lub oddzielny plik funkcji, do którego ładujesz .bashrc, tak jak robisz plik aliasów).

aby wszystko było modularne, utwórz nowy plik o nazwie ~/.bash_functions, a następnie mieć swoje .,BASHRC załaduj go:

if ; then
source $HOME/.bash_functions
fi

w pliku funkcji Dodaj ten kod:

załaduj funkcję do swojej sesji Bash, a następnie wypróbuj ją:

$ source ~/.bash_functions
$ cl Documents
foo bar baz
$ pwd
/home/seth/Documents
$ cl ..
Desktop Documents Downloads

$ pwd
/home/seth

funkcje są znacznie bardziej elastyczne niż aliasy, ale dzięki tej elastyczności musisz upewnić się, że Twój kod ma sens i robi to, czego oczekujesz. Aliasy mają być proste, więc zachowaj je łatwe, ale przydatne. W przypadku poważnych modyfikacji zachowania Bash użyj funkcji lub niestandardowych skryptów powłoki zapisanych w lokalizacji ścieżki.,

dla przypomnienia, istnieje kilka sprytnych hacków, aby zaimplementować sekwencję cd i ls jako alias, więc jeśli jesteś wystarczająco cierpliwy, to niebo jest granicą nawet przy użyciu skromnych aliasów.

rozpocznij aliasing i działanie


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *