Zastanawiam się nad przejściem z bash na zsh, ponieważ często spotykam posty chwalące zsh. Jestem doświadczonym użytkownikiem wiersza poleceń i zakładam, że podstawy są prawie takie same, więc szukam porady, aby uzyskać korzyści z przeprowadzki i innych problemów, o których należy pamiętać.
Podaj tylko jedną radę na odpowiedź. Szukam kawałków wielkości kęsa, w których mogę wrócić i zintegrować dodatkowe fragmenty informacji z użyciem mojej powłoki w stałym tempie zamiast próbować nauczyć się tego wszystkiego za jednym razem.
bash
command-line
zsh
Hamish Downer
źródło
źródło
source /etc/zsh_command_not_found
do swojego.zshrc
.Odpowiedzi:
Jak mówisz,
zsh
pod wieloma względami jest podobnybash
. Ma pewne funkcje, których nie znajdzieszbash
, i można go rozbudować w potężny sposób. Nie myśl o poruszaniu się jako o rodzaju rewolucji, a raczej o serii kroków ewolucyjnych, które pomogą ci w codziennej pracy. Oto kilka wskazówek ode mnie.zshrc
. Chociaż twierdzisz, że wolisz pojedyncze porady, ten post jest długą listą. Nadal dobrze jest przejrzeć punkty jeden po drugim. Po prostu dodaj interesujące bity~/.zshrc
i załaduj ponowniesource ~/.zshrc
. Ostateczna wskazówka: nauczyć znaki wpisywanezsh
„s (domyślnie)«Emacs»skrótów klawiszowych:^A ^E ^W Alt-F Alt-B Alt-P ^L ^R
. Możesz zastąpićAlt
go dwoma osobnymi naciśnięciami klawiszy:Alt-P
odpowiada toESC
P
.Zapewnia to bardziej rozbudowane uzupełnianie kart.
Uzupełnianie tabulatorów z obu końców.
Uzupełnianie tabulatorów nie uwzględnia wielkości liter.
Lepsze zakończenie dla killall.
Zmienia definicję „słowa”, np. Za pomocą ^ W.
Kolory dla ls.
Skróty dla ls.
Jedna historia dla wszystkich otwartych powłok; zapisz 10.000 wpisów. To sprawia, że jest to przydatna pomoc w pamięci, aby znaleźć polecenia, których użyłeś ostatnio
./configure
itp. Użyj Alt-P (znajdź polecenie, które zaczyna się w ten sposób) i ^ R (szukaj w historii) swobodnie.Umożliwia wszystkie rodzaje rozszerzonego globowania, takie jak ls ** / *. Txt (znajdź wszystkie pliki tekstowe),
ls -d *(D)
(pokaż wszystkie pliki, w tym te zaczynające się od „.”). Aby dowiedzieć się więcej, przejdź doman zshexpn
sekcji „GENERACJA NAZWY PLIKU”.Jest to przydatne do zapamiętywania poleceń w historii bez ich wykonywania.
Wpisz „..” zamiast „cd ..”, „/ usr / include” zamiast „cd / usr / include”.
Miły podpowiedź.
Wyświetl statystyki użycia procesora dla poleceń trwających dłużej niż 10 sekund
Niektóre polecenia, których często używasz w Ubuntu.
Wyświetla listę pakietów posortowanych według ich wielkości - przydatne przy podejmowaniu decyzji, które pakiety zajmują miejsce na dysku.
źródło
Poleciłbym książkę From bash to Z Shell . Zawiera wszystkie porady potrzebne do zmiany powłoki. Wyjaśnia różnice między obiema powłokami i ułatwia nowy Zsher.
źródło
Oto mój .zshrc i to jest najważniejsze. Zsh ma wiele opcji, z których możesz skorzystać, więc spójrz na niektóre przykłady w sieci lub przeczytaj dokumentację na stronie głównej Zsh .
Mój .zshrc nie zawiera żadnych naprawdę fajnych rzeczy poza znacznikiem czasu po prawej stronie wiersza poleceń.
Przy okazji, pamiętaj, aby wypróbować tabulację co kilka przykładów tutaj:
pokaże coś takiego:
A jeśli używasz ssh-klucze lub ssh-agent bez hasła, może być przydatne do uzupełniania zdalnych plików tabulatorami:
Po uzyskaniu listy możesz nacisnąć klawisz Tab więcej razy, aby przełączać się między różnymi możliwościami.
Ale uwaga, ta skorupa sprawi, że będziesz leniwy i poczujesz, że standardowa skorupa jest głupia i denerwująca!
źródło
Kilka szczególnie użytecznych rozszerzonych globów:
1-
rmdir *(/^F)
- usuń wszystkie niepuste katalogi w bieżącym katalogu2-
grep traceback /srv/log/**/*(.m-2)
- poszukaj tego wyrażenia regularnego w plikach zmodyfikowanych w ciągu ostatnich dwóch dni3-
chmod g+w **/*(U^I)
- spraw, aby wszystkie pliki, które są własnością mnie i nie były zapisywane w grupie, były zapisywalne w grupieTak, oczywiście, możesz to napisać,
find
ale łatwiej to oderwać. Ma dwie wady, szczerze mówiąc, obie związane z rozszerzeniem ich do wiersza poleceń: jeśli pasuje do wielu tysięcy plików, wiersz polecenia będzie zbyt długi i to się nie powiedzie, a po drugie wszystkie pliki zostaną znalezione zanim plik zacznie działać.(Będziesz potrzebować,
setopt extendedglob
jeśli to jeszcze nie jest włączone)źródło
Nie wiem tyle o bashu, więc nie mogę pisać. Niektóre fragmenty z mojego pliku konfiguracyjnego zsh.
Trochę konfiguracji
Podpowiedź
Niektóre skróty, wstaw na początku wiersza tekst.
Funkcje, które następnie przechowuję w ~ / .zsh / funkcje
Git_info_for_prompt
Niektóre opcje github
źródło
Jestem w tej samej podróży :)
Jak dotąd odkryłem, że chodzi o to, aby mieć dobry plik konfiguracyjny (.zshrc).
Weź to jako przykład http://matt.blissett.me.uk/linux/zsh/zshrc , spójrz na komentarze i włamuj się. Przepełnienie stosu i awaria oraz dobre miejsca do wyszukiwania.
Muszę jeszcze zagłębić się w http://dotfiles.org/.zshrc , ale nie mam zbyt wiele czasu do stracenia :)
źródło
Dowiedz się o rozszerzonym globowaniu i rekurencyjnych globach w zsh.
Dowiedz się trochę o zstyle i o tym, jak różne rzeczy (zwłaszcza uzupełnianie) pozwalają dostroić ich konfigurację za pomocą zstyle.
Spójrz na tablice asocjacyjne. Również standardowe tablice (uważaj na różnice od bash, na lepsze!)
Jeśli używasz wyrażeń regularnych, zajrzyj do
=~
(która również ma bash) i zastanów się:setopt rematch_pcre
Unikaj pisania skryptów, które zależą od więcej niż odrobiny magii zsh, ponieważ chociaż jest fantastyczny w użyciu, zsh może mieć tendencję do bycia tylko do zapisu. Jeśli używasz zbyt dużo, zastanów się, kiedy przejść na język taki jak Python.
Zsh jest uwodzicielski. To jest ciemna strona. Witamy.
źródło
Duża korzyść - doskonałe uzupełnianie tabulatorów dzięki gotowym skryptom uzupełniania dla wielu poleceń. Oto przykład pokazujący wynik
apt-get<TAB>
:źródło
Dałem coupe rozmowy i przekonałem kilka osób do zsh. Trzymam repozytorium github moich (jakie są zalety) notatek wraz z starterem i kopią mojej własnej konfiguracji zsh w github tutaj.
http://github.com/mitechie/zshrc
źródło
Innym doskonałym zasobem jest strona miłośników zsh (pochodzi ze strony grml zsh ).
źródło