У терміналі змініть текст, що надходить до $


13

У терміналі я завжди можу побачити, в якому шляху я перебуваю:

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

що я вважаю досить корисним. І все-таки тут є багато непотрібних речей: macbook-romeoце не корисно, оскільки я завжди перебуваю на своєму macbook (duh). Потім знову romeovsдосить корисно (це моє ім’я користувача).

Чи можна відредагувати те, що тут показано? напр

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

де 22:50поточний час? (Це лише приклад, звичайно, я не потребуватиму часу; я б хотів, щоб текст був трохи більш мінімалістичним).

Відповіді:


11

Ця стаття OSX Daily містить кілька детальних інструкцій, як це зробити. Якщо коротко, вам потрібно змінити ~/.bash_profileфайл і змінити змінну PS1.

Нижче наведено список можливих змінних, які можна відобразити:

  • \ d - Поточна дата
  • \ t - Поточний час
  • \ h - ім'я хоста
  • # - Номер команди
  • \ u - ім'я користувача
  • \ W - Поточний робочий каталог (тобто: Desktop /)
  • \ w - Поточний робочий каталог, повний шлях (тобто: / Користувачі / Адміністратор / Настільний)

11

Потрібно змінити .bashrc файл, знайдений у вашому домашньому каталозі .

Відкрийте термінал і виконайте наступне:

  • cd ~
  • touch .bashrc
  • open .bashrc

Додайте наступний рядок в кінці файлу .bashrc

експортувати PS1 = '\ t - \ W - \ u \ $'

  • Збережіть файл і закрийте редактор
  • Поверніться до терміналу і введіть таку команду:

    джерело .bashrc

Бум! Тепер у вас має бути бажаний підказки! (Якщо бажаний підказок був вашим прикладом)


Коли я це зробив, я отримав наступне MBP-15:~ Daniel$ source .bashrc -bash: export: = ': недійсний ідентифікатор -bash: export:\t - \W - \u$ ': not a valid identifier MBP-15:~ Daniel$
Daniel Compton

@DanielCompton Дякую, що вказав на це, я оновив свою відповідь, щоб це спрацювало. :)
macaco

4

Це контролюється змінною оболонки $ PS1

Ви можете встановити цю змінну на все, що вам завгодно, тимчасово або більш назавжди за допомогою .login або .profile скрипта, залежно від оболонки, яку ви використовуєте.

Погляньте на наступні результати для прикладів:

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$

Можливості безмежні. З PS2 також можна зробити щось, але я думаю, що це набуває чинності лише у тому випадку, якщо ти root - деталі туманні, мій Unix давно і заснований на Solaris, а не на Mac OS X, але основи однакові.

Додаткова інформація: Як це пропонується в інших відповідях, у вас є вбудовані прапори, такі як \ h і \ W тощо. Ви можете використовувати, але ви також можете використовувати вихід майже будь-якої команди, використовуючи "зворотні тики" (смішні одиночні цитати використовується в моєму прикладі дати вище). Команди всередині тикових кліщів запускаються, а вихід підміняється, що дозволяє вам включати що завгодно, навіть якщо у вас немає вбудованого прапора, навіть для, здавалося б, дурних речей, що б ви не придумали. Хочете включити час останнього запису до файлу журналу помилок? Використовуйте щось на кшталт:

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

(прочитайте останній рядок файлу, на який посилається $ LOGFILE, і надрукуйте 1-й стовпець, припускаючи роздільник поля за замовчуванням) тощо тощо. Якщо ви можете виконати його, ви можете включити його.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.