Mam wiele poleceń, które muszę rutynowo wykonywać, często z najmniejszymi zmianami.
Teraz przechowuję je wszystkie .bash_history
i używam CTRL- Raby uzyskać do nich dostęp, ale zastanawiam się, czy jest lepszy sposób. Czego szukam:
- Łatwo dodać nowe polecenie
- Łatwe wyszukiwanie i ponowne wykonanie żądanego polecenia
- Unikaj niepożądanych poleceń w sugestiach
Niestety, bash_history nie jest tak silny na trzecie żądanie: jeśli zrobię kilka cd
i ls
szybko zapełni plik historii. Niedawno się dowiedziałem HIST_SIZE
i że możesz skonfigurować historię, aby uniknąć duplikatów lub niektórych poleceń, ale przed skonfigurowaniem tego wszystkiego chciałem się upewnić, że to najlepszy sposób.
shell
command-history
Konerak
źródło
źródło
alias
może bardziej przydatne. na przykład.alias gfc="git fetch origin"
Odpowiedzi:
Uważam za bardzo przydatne następujące polecenia readline
(należy pamiętać, że są różni się od zwykłej
reverse-search-history
,forward-search-history
, przywiązany do Ctrl- R, Ctrl- S).Mam te polecenia dla Ctrl- Upi Ctrl- Downumieszczenie poniższe linie do
~/.inputrc
:Jak działają: napisz kilka znaków na początku polecenia, naciśnij Ctrl- Upa zostanie wyświetlone następne starsze polecenie rozpoczynające się od tego prefiksu, naciśnij ponownie, aby zobaczyć następne i tak dalej. Jeśli jesteś zadowolony, po ewentualnej modyfikacji polecenia, naciśnij, Enteraby wykonać.
źródło
"\e[B": history-search-forward
i"\e[A": history-search-backward
HISTFILESIZE
i / lubHISTSIZE
(tylko zsh obsługujeHISTSIZE
bash, oba obsługują oba), aby upewnić się, że bufor jest wystarczająco duży. Pytanie SO bash HISTSIZE vs. HISTFILESIZE? może oświetlać dalej.Kolejna wskazówka: czasami używam komentarzy do dodawania zakładek / oznaczania polecenia:
następnie:
źródło
$_bookmark
. Można argumentować, że jest to okropny hack wykorzystujący fakt, że nieistniejące zmienne rozwijają się do zera, ale na pewno działa, z zastrzeżeniem, że spacje są niedozwolone (zamiast tego należy użyć _).Mimo bardzo ograniczonego zakresu chciałbym zwrócić uwagę na te dwa symbole zastępcze rozszerzenia:
jest rozszerzeniem zastępczym dla ostatniego polecenia. Przydatne, jeśli zapomniałeś wstawić
sudo
przed poleceniem.powtarza ostatni parametr. Przydatne, jeśli chcesz powtórzyć inne polecenie za pomocą
a/very/long/path/name/you/do/not/want/to/type/again
źródło
Użyj „aliasu”
alias
jest do tego doskonałym narzędziem.Kiedy używasz aliasu, jest dokładnie tak, jakbyś go wpisał, więc jest dość elastyczny. Na przykład możesz używać go z potokami:
Powinieneś być w stanie dokonywać „niewielkich zmian”, przekazując wszelkie flagi, których jeszcze nie określiłeś.
źródło
Tworzę minimalne skrypty powłoki dla moich częstych poleceń i nadaję im krótkie nazwy. Wszystkie są przechowywane w tym samym miejscu, do którego dodano
PATH
.W ten sposób mam dostęp do skrótów do bardzo skomplikowanych poleceń i w przeciwieństwie do
alias
tego, mogę zmienić zmienne części mojego zadania w argumenty wiersza poleceń mojego skrótu.źródło
Utrzymuję kopię .bash_history w Git . Aby to uprościć, ustawiłem
w .bashrc oraz następujące polecenia (zmodyfikowane do ogólnego użytku) w skrypcie czyszczącym
które uruchamiam przed dodaniem wierszy
git gui
. Ponieważ plik historii jest modyfikowany przy każdym poleceniu, mam również specjalne polecenie do aktualizacji tego konkretnego repozytorium:źródło
HISTCONTROL=ignorespace
, co jest ważne, aby czasami nie zagracać historii.Wśród wszystkich innych odpowiedzi tutaj dotyczących historii.
ustawiłem
w ~ / .bash_profile
Oprócz innych komentarzy dotyczących: historii
Kolejna przydatna funkcja ...
Rozpoczęcie przypominania historii
przywoła ostatnie polecenie, które zaczęło się od kilku pierwszych liter
na przykład:
Nie wspomniałeś, czy używasz GUI, czy tylko wiersza poleceń. Jeśli korzystasz z GUI, możesz użyć jednego z trwałych menedżerów schowka do kopiowania / wklejania często używanych poleceń, identyfikatorów użytkowników, haseł, adresów URL itp.
źródło
!find<ESC>CTRL-E
działa, ale wątpię, czy będę mógł to zapamiętać jutro. Co to jest ESC CTRL-E?Nauczenie się obsługi Ctrl-Ri Ctrl-Spozwala na łatwe wyszukiwanie poleceń, których szukasz w historii, a już znalazłeś zmienną środowiskową HISTCONTROL, aby zignorować duplikaty i zmienić stronę pliku historii bash.
Zazwyczaj robię wiele, Ctrl-Ra następnie Ctrl-Ezmieniam niektóre parametry, jeśli pominąłem znalezione polecenie, uderzając Ctrl-Rje zbyt wiele razy, Ctrl-Sby uratować.
źródło
Zawsze wolę przechowywać ostatnio używane polecenia i ich dane wyjściowe.
źródło
Oprócz powyższych dobrych odpowiedzi, jeśli używasz GUI opartego na kde lub gnome, AutoKey może być niezwykle pomocny.
Pozwala tworzyć frazy, które są uruchamiane przez wpisanie kilku znaków lub naciśnięcie klawisza skrótu. Te frazy są następnie zastępowane lub dodawane do danych wejściowych.
Obsługuje również skrypty napisane w języku Python, które możesz zrobić prawie wszystko, jeśli znasz język Python. Nie znam jeszcze Pythona, ale już dostaję kilka bardzo prostych skryptów do robienia porządnych rzeczy.
Wygląda na to, że wszystko pochodzi z klawiatury, więc działa z każdą aplikacją, która akceptuje wprowadzanie z klawiatury - i z samym komputerem stacjonarnym.
Ma wiele opcji kontrolujących sposób i miejsce aktywacji tych rzeczy, więc niektóre mogą działać tylko w konsoli, a inne tylko w innym oknie. Możesz także ustawić, aby frazy były uruchamiane, gdy tylko wpiszesz ciąg, który je wyzwala lub poczekaj, aż dasz im OK.
źródło
Jak inni powiedzieli, że alias jest twoim przyjacielem. Dla nieco bardziej skomplikowanych rzeczy (gdy potrzebujesz argumentów między instrukcją) używam funkcji w moim .zshrc, takich jak:
który działa jak locate (używam go, gdy z jakiegoś powodu db nie jest dostępny). Lub
za namiastkę killall.
źródło
Oprócz używania Cntl-Rdo przeglądania wstecz
.bash_history
, mam również plik README w~/develop
katalogu, w którym umieszczam długie polecenia, takie jakgit
/svn
, więc mogę do nich wrócić później, kiedy będę musiał. Podobnie, planuję mieć~/install/README
plik do umieszczenia wszystkich popularnych nazw pakietów, które zwykle instaluję po zainstalowaniu nowej wersji Linux / Ubuntu. Pomysł polega więc na umieszczeniu pliku README w każdym katalogu, np. Wideo, Audio, ... i umieszczeniu w nich typowych poleceń / wskazówek, które mogą być potrzebne w późniejszym czasie.źródło