Nie jestem pewien, jak to powiedzieć, ale często zdarza mi się pisać takie polecenia:
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
Zazwyczaj po prostu wpisuję ścieżkę dwukrotnie (z uzupełnieniem tabulacji) lub skopiuję i wkleję ścieżkę kursorem. Czy jest jakiś bashfoo, który ułatwia pisanie?
bash
command-line
clipboard
line-editor
użytkownik1028270
źródło
źródło
bash-fu
:)Odpowiedzi:
Istnieje wiele sztuczek (myślę, że można znaleźć duplikat), ale zazwyczaj robię to
który zostanie rozszerzony na twoje polecenie.
Jest to nazywane rozszerzaniem nawiasów klamrowych . W użytej tutaj formie
{}
wyrażenie określa liczbę ciągów oddzielonych przecinkami. Te „rozszerzają” całe/etc/prog/dir1/myconfig.yml{,.bak}
wyrażenie, zamieniając kolejno{}
część z każdym ciągiem: pusty ciąg, dając/etc/prog/dir1/myconfig.yml
, a następnie.bak
dając/etc/prog/dir1/myconfig.yml.bak
. Wynik toTe wyrażenia mogą być zagnieżdżone:
produkuje
Istnieje wariant wykorzystujący liczby do tworzenia sekwencji:
produkuje
i możesz również określić krok:
produkuje
źródło
.bak
.Rozwijanie historii może być przydatne do tego rodzaju rzeczy (zakładając, że historia bash jest włączona).
W twoim przykładzie możesz wykonać:
Tutaj
!#
odnosi się do bieżącej linii,!#:1
odnosi się do parametru 1 w bieżącej liniii
!#:1.bak
odnosi się do parametru 1 na bieżącej linii z „.bak” sczepionym na końcu.Po wypisaniu specyfikatora historii możesz użyć Ctrl+ Alt+E aby rozwinąć go do jego rzeczywistej wartości, jeśli chcesz np. Dwukrotnie sprawdzić lub zmodyfikować nazwę pliku.
Sekcja „Rozszerzenie historii” na stronach podręcznika bash zawiera więcej informacji.
źródło
Podobne do odpowiedzi progo, ale nieco prostsze:
C-w
wycina („zabija”) słowo po lewej stronie kursora,C-y
wstawia („szarpnie”) ponownie.źródło
Możesz także wyciąć i wkleić (kill-yank w kategoriach emacs / bash) z wiersza poleceń, aby powielić części do edycji.
M-d
zabija do przodu, aż do granicy słów, i możesz zabijać tekst wiele razy, a wszystkie łączą się w jedną „pastę” do szarpania. Wygodna!Pociągnij to wszystko z powrotem do linii poleceń pod kursorem
C-y
. Więc jeśli masz taką linię (element blokowy █ wskazuje pozycję kursora):Tak czy inaczej wolisz to zrobić, zapoznanie się z tym, co bash ma do zaoferowania w interaktywnym dziale kluczy, będzie korzystne. http://web.mit.edu/gnu/doc/html/features_7.html
źródło
W
tcsh
lubzsh
, Alt+Ctrl+_wemacs
trybie (copy-prev-word
widget) wstawia ostatnie słowo, takbash
macopy-backward-word
widżet (domyślnie niepowiązany z żadnym klawiszem), ale który kopiuje tylko słowo do bufora dzwonka, musisz także nacisnąć Ctrl-Y(wemacs
trybie), aby go szarpnąć. Ale możesz zrobić:Aby Alt+Ctrl+_zrobić zarówno kopię / snarf i wklej / yank jak w
tcsh
/zsh
.źródło