Prosty scenariusz: szukam wsdl
pliku zgubionego w trakcie projektu.
$ find -name '*.wsdl'
./some/very/very/long/way/to/some/lost/directory/filename.wsdl
Teraz, gdy wiem, gdzie to jest, chcę coś zrobić z tym plikiem, powiedzmy edytuj. Czy zamiast skopiować / wkleić ścieżkę za moim poleceniem, można użyć ścieżki zwróconej find
wcześniej? Tak jak jest to możliwe, aby uzyskać dostęp do ostatniego argumentu, który wpisałeś !$
lub ostatniego polecenia !!
.
Czytałem, że było to możliwe $?
, ale zwraca mi tylko błąd:0: command not found
$ echo $?
0: command not found
Odpowiedzi:
Uruchom polecenie w podstawieniu polecenia:
Dane wyjściowe są teraz przechowywane w
output
zmiennej, której możesz używać dowolną liczbę razy.źródło
$?
nie zawiera ścieżek.return
. Twoja odpowiedź jest całkowicie poprawna na powyższe pytanie.$?
zawiera status wyjścia ostatniego poleceniaNie ma do tego specjalnej zmiennej bash.
$?
zawiera kod wyjścia ostatniego polecenia (0 = sukces,> 0 = kod błędu)Możesz użyć wyjścia
find
z-exec
flagą, tak jak to:{}
Zostanie zastąpiony nazwą pliku znalezionego przezfind
. Spowoduje to wykonanie polecenia dla każdego znalezionego pliku. Jeśli chcesz wykonać polecenie ze wszystkimi znalezionymi plikami jako argumentami, użyj+
na końcu w następujący sposób:Spowoduje to otwarcie jednej instancji emacs z otwartymi wszystkimi znalezionymi plikami .wsdl.
Bardziej ogólnym rozwiązaniem jest przechowywanie danych wyjściowych w zmiennej:
Działa to ze wszystkimi poleceniami, nie tylko znajdź. Chociaż możesz również użyć
xargs
:źródło
$?
zwrócić kod wyjścia innego polecenia? np. ping 1.1.1.1 -w 10; zwrócić $?$?
zawiera kod wyjścia poprzedniego polecenia, cokolwiek to jest. Tak więc odpowiedź brzmi tak.Oto szybki hack, który powinien robić to, co chcesz, przy minimalnym naciśnięciu klawisza, jeśli nie przeszkadza ci, że ostatnie polecenie jest wykonywane dwukrotnie.
Użyj strzałki wstecz, ala:
`!!`
na przykład
* edytuj: Widzę, że powyższe link „możliwe zwielokrotnienie” również zawiera tę odpowiedź. nadal dotyczy bezpośrednio tego, więc zostaw to, ale przepraszam za duplikat.
źródło
git br | grep
w moim przypadku)!!
jest o wiele łatwiejsze niż naciśnięcie klawisza w górę? I wtedy nadal możesz zobaczyć swoje polecenie. Jeśli ponowne uruchomienie polecenia jest dopuszczalne, myślę, że naciśnięcie przycisku jest tak samo łatwe (i nieco bardziej zrozumiałe i przejrzyste),