Jak zamieniłem swoje sesje terminala Linuksa w codzienne wyzwania na czas

Jak zamieniłem swoje sesje terminala Linuksa w codzienne wyzwania na czas

Odkryj, jak zoptymalizować użycie terminala w Linuxie poprzez mierzenie czasu poleceń, korzystanie z aliasów i funkcji oraz poznawanie swojego potencjału.

Linux to mój drugi dom. Używam go od lat, ale ciągle coś odkrywam. Zawsze jest szybszy sposób na to, co robisz. Skupiłem się na tym, żeby zobaczyć, ile czasu mogę zyskać w terminalu.

Mierzenie czasu wykonania poleceń zmienia moje podejście. Oto jak to robię.

Zacznij mierzyć swoje polecenia

Identyfikacja czasochłonności pierwszym krokiem do ich naprawy

Najprościej zmierzyć polecenie za pomocą polecenia time. Idealnie nadaje się do optymalizacji, zwłaszcza dla własnych skryptów.

Ale time jako narzędzie raportujące to za mało. Szukałem szybkiego sposobu na sprawdzenie, na co marnuję czas w terminalu. W zsh można podpiąć się pod dwa zdarzenia: preexec, które wyzwala się przed każdym poleceniem, oraz precmd, które oznacza powrót do monitu.

timer_preexec() { TIMER_START=$EPOCHREALTIME } timer_precmd() { if [ -n "$TIMER_START" ]; then local duration=$(( EPOCHREALTIME - TIMER_START )) # coś zrób z $duration tutaj unset TIMER_START fi } add-zsh-hook preexec timer_preexec add-zsh-hook precmd timer_precmd 

W pełnej wersji skryptu ustawiam zmienną PROMPT w time_precmd, jeśli czas wykonania przekroczy ustalony próg. Dzięki temu wiem, kiedy polecenie trwa za długo. To dopiero początek; można wyciągnąć znacznie więcej.

Możesz też użyć zmiennej REPORTTIME zsh, by automatycznie uruchamiać time z każdym poleceniem:

export REPORTTIME=0 

Ustawić ją na pewną liczbę sekund, by raportować tylko te polecenia, które zajmują więcej czasu.

Przyspieszanie codziennego użycia terminalu

Często jest szybszy sposób na robienie czegoś

Prędkość działań to także skróty. Na początku może się wydawać, że to drobnostki, ale z czasem łączą się, oszczędzając nie tylko sekundy, ale i nerwy.

Przestań używać strzałki w górę

Pisałem te same polecenia w kółko, tracąc czas. Historia w powłoce to gra w oszczędzanie – wystarczy nacisnąć strzałkę w górę, by cofnąć się do przeszłości i powtórzyć polecenie. Można nawet edytować wiersz za pomocą lewej, prawej i Backspace.

Ale sporo pisania jest zbędne. Jest !$, które przekształca się w ostatni argument wcześniejszego polecenia, pozwalając na takie sztuczki:

mkdir -p my/new/directory cd !$ 

Przydatne, zwłaszcza po uczynieniu pliku wykonywalnym. Nie zapomnij o prefiksie ./, jeśli nie jest w PATH:

chmod +x foo.sh ./!$ 

Mnóstwo skrótów historii jak !! rozwijają się do poprzedniego polecenia:

apt install something # ups, muszę być rootem... sudo !! 

To tylko jedna metoda na przypomnienie sobie poleceń. Polecam także substytucję znaku caret:

$ cd my/new/directry cd: no such file or directory $ ^tr^tor cd

Z tą składnią twoja powłoka wymienia pierwsze wystąpienie jednego ciągu na drugi, a następnie wykonuje polecenie. Zamiast klikać w górę, przeszedłem na tę metodę i jestem zaskoczony przyspieszeniem, jakie to przyniosło, zwłaszcza że zacząłem myśleć o rozwiązaniach w inny sposób.

Polecenie fc może być najcenniejszym narzędziem w twoim arsenale. Automatycznie otwiera ostatnie polecenie w edytorze terminala i uruchamia je po wyjściu.

Komenda, typowo szybsza niż zastępowanie kursora lub ręczne przewijanie.

Użyj aliasów i funkcji

Masz pewnie zestawy komend, które uruchamiasz jak automat, nie zastanawiając się nad tym. Działa to sprawnie, ale może być jeszcze szybsze. Jeśli ciągle wpisujesz tę samą komendę, pomyśl o stworzeniu aliasu.

Alias umożliwia prostą zamianę tekstu. Zamiast wprowadzać ls -lh za każdym razem, możesz wpisać:

ll

Aby to zrobić, zdefiniuj alias w pliku .bashrc. Wystarczy użyć komendy alias, wybrać unikalny skrót i przypisać pełną komendę:

alias ll='ls -lh' 

Na pierwszy rzut oka oszczędności mogą wydawać się drobne, ale z czasem narastają. Osobiście używam eza zamiast ls, mój alias wygląda więc tak:

alias ll='eza --long --sort=size --reverse' 

To ogromna oszczędność wpisywania, szczególnie gdy wywołuję to dziesiątki razy każdego dnia.

Gdy aliasy stają się zbyt skomplikowane, lepiej zdefiniować prostą funkcję. Funkcje umożliwiają korzystanie z parametrów i kontrolowanie przepływu, a także wywoływanie ich w własnych skryptach shellowych.

Jedna funkcja, którą zawsze dodałem, wygląda następująco:

mkd() { mkdir -p -- "$1" && cd -P -- "$1" || exit } 

Nazwa tej funkcji jest krótsza niż mkdir, co już przynosi oszczędności przy każdym tworzeniu katalogu! Ponadto automatycznie wchodzi do nowo utworzonego katalogu.

Domyślnie dodaję opcję -p do mkdir, co tworzy wszystkie katalogi pośrednie, na przykład w przypadku "mkd docs/finance."

Choć minusem korzystania z -p non-stop mogą być niektóre błędy, które umykają uwadze, doświadczony użytkownik nie przejmuje się takimi szczegółami; stara się działać jak najszybciej.

Podstawowe narzędzia Linuxa są solidne, ale są też nowoczesne alternatywy. Wiele z nich, jak Rust, oferuje szybkość i bezpieczeństwo.

Przykłady lepszych narzędzi wiersza poleceń to m.in. tmux do zarządzania sesjami, fzf i fd, które zastępują find/grep, oraz zoxide, znacznie ułatwiające nawigację w porównaniu do cd.

Poznaj swoje ograniczenia — i je pokonaj!

Twoja powłoka nie tylko mierzy wydajność, ale też pozwala ją poprawić. Tab-completion, procesy w tle, łańcuchowanie komend — to tylko niektóre możliwości, które możesz wykorzystać.

Jeśli ciekawią Cię artykuły podobne do Jak zamieniłem swoje sesje terminala Linuksa w codzienne wyzwania na czas, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.

Indeks
  1. Zacznij mierzyć swoje polecenia
    1. Identyfikacja czasochłonności pierwszym krokiem do ich naprawy
  2. Przyspieszanie codziennego użycia terminalu
    1. Często jest szybszy sposób na robienie czegoś
    2. Przestań używać strzałki w górę
  3. Komenda, typowo szybsza niż zastępowanie kursora lub ręczne przewijanie.
    1. Użyj aliasów i funkcji
    2. Poznaj swoje ograniczenia — i je pokonaj!

Możesz być zainteresowany

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Go up