W terminalu zmodyfikuj tekst przed $

13

W terminalu zawsze mogę zobaczyć, w której ścieżce się znajduję:

macbook-romeo:School romeovs$ echo "example command"

co uważam za bardzo przydatne. Ale tutaj jest też wiele niepotrzebnych rzeczy: macbook-romeonie jest użyteczne, ponieważ zawsze jestem na moim Macbooku (duh). To znowu romeovsjest całkiem przydatne (to moja nazwa użytkownika).

Czy istnieje możliwość edycji tego, co pokazano tutaj? na przykład

22:50 - School - Romeo$ echo "example"

gdzie 22:50jest aktualny czas? (To tylko przykład, nie będę potrzebował czasu, chciałbym, żeby tekst był nieco bardziej minimalistyczny).

Romeovs
źródło

Odpowiedzi:

11

W tym artykule OSX Daily znajduje się kilka szczegółowych instrukcji, jak to zrobić. Krótko mówiąc, musisz zmodyfikować ~/.bash_profileplik i zmodyfikować zmienną PS1.

Poniżej znajduje się lista możliwych zmiennych, które możesz wyświetlić:

  • \ d - aktualna data
  • \ t - Aktualny czas
  • \ h - nazwa hosta
  • # - Numer polecenia
  • \ u - nazwa użytkownika
  • \ W - bieżący katalog roboczy (np .: Desktop /)
  • \ w - bieżący katalog roboczy, pełna ścieżka (tj .: / Users / Admin / Desktop)
BinaryMisfit
źródło
11

Musisz zmodyfikować plik .bashrc znaleziony w katalogu domowym .

Otwórz terminal i wykonaj następujące czynności:

  • cd ~
  • touch .bashrc
  • open .bashrc

Dodaj następujący wiersz na końcu pliku .bashrc

eksport PS1 = „\ t - \ W - \ u \ $”

  • Zapisz plik i zamknij edytor
  • Wróć do terminala i wprowadź następujące polecenie:

    źródło .bashrc

Bum! Powinieneś teraz otrzymać pożądany monit! (W razie potrzeby podany był przykład)

macaco
źródło
Gdy to zrobiłem, otrzymałem następujący komunikat MBP-15:~ Daniel$ source .bashrc -bash: export: : „niepoprawny identyfikator -bash: eksport:\t - \W - \u$ ': not a valid identifier MBP-15:~ Daniel$
Daniel Compton
@DanielCompton Dzięki za zwrócenie na to uwagi zaktualizowałem swoją odpowiedź, aby działała. :)
macaco
4

Jest to kontrolowane przez zmienną powłoki $ PS1

Możesz ustawić tę zmienną na dowolną, tymczasowo lub na stałe za pomocą skryptu .login lub .profile, w zależności od używanej powłoki.

Przykłady:

Last login: Fri Oct 21 21:59:28 on ttys000

Dans-MacBook-Air:~ stuffe$ echo $PS1

\h:\W \u\$

Dans-MacBook-Air:~ stuffe$ PS1="Hello World $"

Hello World $PS1=`date`

Fri 21 Oct 2011 22:03:23 BSTsleep 60

Fri 21 Oct 2011 22:03:24 BSTPS1="`date +%H:%M` $"

22:04 $PS1="\h:\W \u\$"

Dans-MacBook-Air:~ stuffe$

Możliwości są nieskończone. Jest też coś, co możesz zrobić z PS2, ale myślę, że działa to tylko, jeśli jesteś rootem - szczegóły są mgliste, mój Unix jest dawno temu i oparty na Solarisie, a nie Mac OS X, ale podstawy są takie same.

Informacje dodatkowe: Jak sugerowano w innych odpowiedziach, istnieją wbudowane flagi, takie jak \ h i \ W itp., Których można użyć, ale można również użyć danych wyjściowych niemal dowolnego polecenia, używając „tyka” (śmieszne pojedyncze cudzysłowy) użyte w powyższym przykładzie z datą). Uruchamiane są polecenia wewnątrz tyknięć, a dane wyjściowe zastępowane, co pozwala na dołączenie czegokolwiek, nawet jeśli nie ma wbudowanej flagi, nawet dla pozornie głupich rzeczy, cokolwiek wymyślisz. Czy chcesz dołączyć godzinę ostatniego wpisu do pliku dziennika błędów? Użyj czegoś takiego:

PS1="`tail -1 $LOGFILE | awk '{print $1}'` $ "

(przeczytaj ostatni wiersz pliku, do którego odwołuje się $ LOGFILE, i wydrukuj pierwszą kolumnę, zakładając domyślny ogranicznik pola) itp. itp. Jeśli możesz go wykonać, możesz go dołączyć.

farsz
źródło