Czy ktoś zna sposób umieszczania polecenia „time” przed każdym poleceniem w sesji bash?
Czy ktoś zna sposób umieszczania polecenia „time” przed każdym poleceniem w sesji bash?
Odpowiedzi:
Przepraszam za złą odpowiedź wcześniej, nie rozumiem twojego pytania.
Aby dodać czas przed każdym poleceniem wykonanym w powłoce, możesz zrobić coś takiego
bind 'RETURN: "\e[1~time \e[4~\n"'
Spowoduje to ponowne powiązanie klawisza Return. Teraz za każdym razem, gdy naciśniesz klawisz powrotu zamiast pisania nowego wiersza \ n, przejdzie on na początek wiersza, wprowadzi tekst „czas” i spację, przejdzie na koniec wiersza i wprowadzi nowy wiersz \ n, tworząc w ten sposób pożądany efekt.
Jeśli nie chcesz poświęcać swojego klawisza Enter, możesz utworzyć „drugi” klawisz porównawczy, np. F12, wiążąc polecenie w ten sposób
bind '"\e[24~": "\e[1~time \e[4~\n"'
Teraz zamiast zastępować klawisz powrotu, związałeś F12.
Tłem tego wszystkiego jest to, że bash używa polecenia readline GNU do odczytu poleceń. Tak więc readline byłby dobrym punktem wyjścia do dalszej manipulacji poleceniami itp.
Zdaję sobie sprawę, że to nie wchodzi w zakres tego pytania, ale ...
W zsh
(co, według mojej wiedzy, to super zestaw bash), jeśli ustawisz następującą zmienną w swoim .zshrc
pliku:
export REPORTTIME=5
Każde polecenie, które trwa dłużej niż 5 sekund (jestem całkiem pewien) wyświetli wynik time
. Nie wszystkie polecenia, które szybciej się wypełniają. I w takich przypadkach tak naprawdę to nie obchodzi, więc miło jest nie zaśmiecać rzeczy. Istnieje również wiele innych fajnych funkcji zsh
, które mogą ci się spodobać, gdy jesteś przy nim.
Uwzględnij \ t w ciągu zachęty. Będzie zawierać czas w monicie w punkcie, w którym go podałeś. Zobacz: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/
PS1 wydaje się standardowym sposobem na zrobienie czegoś takiego.
time
robi (mierzy, ile czasu zajęło wykonanie polecenia).