Tylko pytanie, aby poprawić swoje bash
umiejętności. Zawsze to robię:
$ history | grep some_long_command
...
...
123 some_long_command1.........
124 some_long_command2.........
...
Następnie mogę uruchomić polecenie, które znalazłem, wykonując:
!123
Jednak często chcę to zrobić:
some_long_command1foobar
To znaczy zmień polecenie, zanim je uruchomię. Czy możesz użyć basha, aby zamiast tego uruchomić to polecenie:
#some_long_command1
więc jest komentowany.
Wtedy nie muszę używać myszy, aby podświetlać polecenie, edytować je, a następnie uruchamiać (mogę po prostu użyć klawiatury - szybciej).
Przypuszczam, że mógłbym napisać skrypt, który to zrobi, ale może być już gdzieś wbudowana funkcjonalność ....?
linux
bash
command-line
ale
źródło
źródło
bind Space:magic-space
swój profil bash. Następnie naciśnięcieSpace
rozwinie się!123
dosome_long_command1
.Odpowiedzi:
Sugerowałbym, aby zamiast używać polecenia historii, użyj
ctrl+r
i zacznij pisać to polecenie. Po naciśnięciu klawisza strzałki, jakbyś chciał go zmodyfikować, wypadnie on z rozpoznawania autouzupełniania i pozwoli ci edytować przed uruchomieniem.UPDATE: także, jeśli chcesz przełączać się między różnymi poleceniami zawierającymi właśnie wpisany ciąg, naciskaj dalej
ctrl+r
źródło
set -o vi
), możesz również użyć/
do przeszukiwania historii i jej edycji.ctr+r
, zacznij pisać, a jeśli chcesz znaleźć wszystkie polecenia, które to zawierają, po prostu naciskajctrl+r
. Innymi słowy, to, co chcesz zrobić z górę / w dół, jest wykonywane (w sposób okrężny) za pomocąctrl+r
Właściwie możesz po prostu dołączyć
:p
do polecenia, aby je wydrukować bez faktycznego uruchamiania. Na przykład:Zostanie wydrukowane
ls -la
jako poprzednie polecenie bez uruchamiania go i możesz po prostu nacisnąć ↑(w górę), aby je znaleźć i edytować.Ty też możesz to zrobić
wydrukować 123. polecenie jako poprzednie polecenie.
źródło
!mycmd:p
. Jeśli masz włączone polecenia vi w Bash, odpowiedź Pursella jest równie dobra lub lepsza. Ctrl-r, jak wspomniał Miquel, jest następny w kolejności.Możesz także spróbować
fc
polecenia polecenie, aby edytować polecenie w historii.WIKI mówi:
Oprócz wyszukiwania wstecznego ( Ctrl+ R), mamy jeszcze kilka skrótów bash :
Od
man bash
:źródło
Uruchomi polecenie 123, zastępując ciąg „stary” ciągiem „nowy”.
źródło
Możesz przejść do trybu edycji, naciskając M- ^ (opcja-shift-6 na komputerze Mac).
Wpisz to:
Będziesz edytować polecenie # 123. To trochę tak, jak przy użyciu ctrl-r, ale zaczynając od składni wykrzyknika.
źródło
M-^
można ponownie powiązać z czymś bardziej przyjaznym dla palców?Zamiast korzystania z
history
polecenia wiążąhistory-search-backward
/history-search-forward
do skrótów klawiszowych, które mogą być zapamiętane łatwo (wolę przód / PgDown). Aby to zrobić, umieść to w swoim.inputrc
pliku:"<key code>": history-search-backward "<key code>": history-search-forward
Aby dostać
<key code>
, typCtrl-V <key>
w skorupkach, i zastąpić rozruch^[
ze\e
w cokolwiek było wyjścia.Po skonfigurowaniu możesz po prostu wpisać
some
i nacisnąć PgUp, aby uzyskaćsome_long_command
. Jeśli potrzebujesz,some_long_command with_some_arg
ale jest podobne poleceniesome_long_command with_some_other_arg
później w historii, możesz przechodzić między nimi, aż do niego dotrzesz, wpisując,some
a następnie naciskając wielokrotnie PgUp, lub możesz pisaćsome
, naciśnij PgUp, przesuń kursor do miejsca, w którym dwie komendy zaczynają się różnić wpisz kilka znaków i jeszcze raz naciśnij PgUp. Ta możliwość szybkiego przewijania stron / rozróżniania podobnych poleceń sprawia, że moim zdaniem jest to znacznie wygodniejsze narzędzie niżCtrl-R
.źródło
Możesz również umieścić
shopt -s histverify
w twoim
.bash_profile
, co powoduje, że każde rozwinięcie historii pojawia się w linii poleceń bez uruchamiania go, umożliwiając edycję przed wykonaniem tego.źródło
Możesz spróbować historii podobnej do "pola sugestii" https://github.com/dvorka/hstr - czyta historię Bash i pozwala na szybką nawigację.
Aby uzyskać ostatnie polecenie, po prostu wpisz hh, przejdź do polecenia i użyj strzałki w prawo, aby uzyskać je w wierszu poleceń (gdzie możesz je edytować i / lub dodać komentarz).
źródło
^ p, aby pobrać ostatnio wpisane polecenie w unix / solaris
źródło
Położyć
alias r = 'fc -s'
w swoim
.bashrc
(domowym katalogu), możesz po prostu wpisaćw wierszu polecenia i wykonasz kopię ostatniego
<whatever>
polecenia (te same parametry), które znajduje się w historii. po prostu naciśnij strzałkę w górę, aby zobaczyć, co wykonałeś, jeśli poczujesz taką potrzebę.źródło