Próbuję ustawić alias dla sudo !!
w Bash. Próbowałem alias sbb='sudo !!
”, ale interpretuje to jako dosłowny !!
i drukowany
sudo: !!: command not found
Jeśli użyję podwójnych cudzysłowów, zastępuje podwójny huk w samym ciągu, więc to nie działa.
Czy jest jakiś sposób, aby to zadziałało? Lub alternatywny alias? `
bash
sudo
alias
command-history
history-expansion
Manishearth
źródło
źródło
Odpowiedzi:
!!
jest rozwijany przez bash podczas pisania. Nie jest rozszerzany przez podstawienie aliasu.Możesz użyć
history
wbudowanego do rozszerzenia:Jeśli polecenie jest czymś więcej niż prostym poleceniem (np. Zawiera przekierowania lub potoki), musisz wywołać powłokę pod sudo:
źródło
man tcsh
i odkrył, że ma zrobić interpretację historii podczas ekspansji alias „jakby były oryginalne polecenia poprzedniego wiersza wejściowego.” Ciekawy. Jednakalias sbb 'sudo \!-2
nie działało zgodnie z oczekiwaniami (faktycznie zastąpiło drugi poprzedni wpis);alias sbb 'sudo \!\!'
nie działa prawidłowo (podstawionesbb
na!!
); i ostatecznie okazało się, że chciałem tego,alias sbb 'sudo \!-1'
czego bym się spodziewał\!\!
. (tcsh 6.17.06 (Astron) 15.04.2011) YMMV. Powodzenia.sbb
wolałbymprease
tak alias jak sugerował @jpschorrPróbować:
W rzeczywistości wolę nazywać to „proszę”:
Informacje:
fc
to wbudowane polecenie w powłoce bash. która wyświetla, edytuje i ponownie wykonuje polecenia wprowadzone wcześniej w interaktywnej powłoce.źródło
please
to zdecydowanie najlepsza droga!please
sprawia wrażenie, jakby terminal był bytem, do którego muszę być miły , aby załatwić sprawę. Wolę coś, co daje lepsze poczucie kontroli - jakfuck
;)Teraz w GitHub istnieje repozytorium do tego celu, magicznie sprawdza, czy potrzebuje uprawnień administratora, naprawia także literówki:
https://github.com/nvbn/thefuck
źródło
apt-get install thefuck
który istnieje, ale nie działa na moim Ubuntu 15.10; (Zostało to pierwotnie opublikowane na to pytanie, ale później sugerowano opublikowanie tutaj.
Oto w jaki sposób można wykorzystać
fc
ihistory
z aliasu dla!-
podobnych zastępstw. Załóżmy, że jeśli chcesz użyć!-n
(gdzie n jest cyfrą dla n- tego ostatniego użytego polecenia), możesz użyćfc
izhistory
aliasem w następujący sposób:Używanie
history
:Uwaga: Tutaj
!-n
należy dołączyć'
lub''
.Używanie
fc
:Uwaga: tu 1 st i 2 nd
-n
służą do określenia zakresu liście historii.W tym przypadku użyłem echa przed wykonaniem polecenia do wycinki typu like
!-<n>
.źródło
history -p
ifc
. Coś tu nowego?-ln -n -n
to za bardzo zagmatwane; także trochę o'
lub''
(a także trochę o-<n>
).$(fc -ln -1)
źródło