首先:確保您使用的是BASH外殼。
我在山貓上的MacBook和PS1命令的種類,作品。我的提示是這樣的:
⌘ ~/SVN-Precommit-Kitchen-Sink-Hook.git/ (master) _
我想問題是你想讓你的提示做什麼。 BASH提示可以嵌入一大堆轉義序列,這些序列可以完成各種在Kornshell中進行少量黑客入侵的整潔事情。
在命令行上輸入man bash
,然後找到PROMPTING標題。你應該看到類似這樣的東西:
When executing interactively, bash displays the primary prompt PS1 when it is ready to read a com-
mand, and the secondary prompt PS2 when it needs more input to complete a command. Bash allows these
prompt strings to be customized by inserting a number of backslash-escaped special characters that
are decoded as follows:
\a an ASCII bell character (07)
\d the date in "Weekday Month Date" format (e.g., "Tue May 26")
\D{format}
the format is passed to strftime(3) and the result is inserted into the prompt string;
an empty format results in a locale-specific time representation. The braces are
required
\e an ASCII escape character (033)
\h the hostname up to the first `.'
\H the hostname
\j the number of jobs currently managed by the shell
\l the basename of the shell's terminal device name
\n newline
\r carriage return
\s the name of the shell, the basename of $0 (the portion following the final slash)
\t the current time in 24-hour HH:MM:SS format
\T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format
\A the current time in 24-hour HH:MM format
\u the username of the current user
\v the version of bash (e.g., 2.00)
\V the release of bash, version + patch level (e.g., 2.00.0)
\w the current working directory, with $HOME abbreviated with a tilde
\W the basename of the current working directory, with $HOME abbreviated with a tilde
\! the history number of this command
\# the command number of this command
\$ if the effective UID is 0, a #, otherwise a $
\nnn the character corresponding to the octal number nnn
\\ a backslash
\[ begin a sequence of non-printing characters, which could be used to embed a terminal
control sequence into the prompt
\] end a sequence of non-printing characters
讓我們來看一個簡單的提示。我想顯示我的用戶名,我正在使用的系統和當前目錄。我可以設置PS1這樣的:
PS1="\[email protected]\h:\w$ "
這會給我:
[email protected]:~$ _
的\u
我的用戶名(大衛),該\h
是我的機器名(davebook),以及\w
顯示器當前目錄我與我的$HOME
目錄有關。
您也可以在提示中嵌入命令太:
PS1="\$(date) \[email protected]\h:\w$ "
現在的日期和時間將被嵌入在我的提示:
Fri Feb 1 09:45:53 EST 2013 [email protected]:~
排序傻(我應該已經格式化的日期另外,BASH已經建立了日期序列),但你明白了。
我建議你建立你自己該死的提示。如果你是一個git
的用戶,並且你使用的命令行很舒服,那麼你可以自己做出一個很好的提示,讓它看起來像你想要的樣子。您可以使用\$(command)
語法來包含每個新PS命令都執行的交互式命令。您可以使用ANSI escape codes對提示的不同部分進行着色,或者讓它們做很棒的事情。
慢慢地逐個構建您的提示。創建一個shell腳本,將設置PS1
,和源它是這樣的:
$ echo "PS='\[email protected]\h:\w\$ " > prompt.sh
$ chmod a+x prompt.sh
$ . prompt.sh
然後,添加越來越多的功能,以您的提示,直到你得到它的工作您想要的方式。
就我個人而言,我避免過於花哨的提示,只是因爲它們在你最不期待的時候傾向於分崩離析。例如,我使用VI序列進行編輯,並且只要我嘗試編輯我的命令行,該提示就會完全分開。
花式提示讓我想起像Talking Moose這樣的程序,這些程序在開始的幾分鐘內真的很酷,然後開始變得真的很煩人。
我接受了其他答案,因爲它解決了我的問題,但如果我能我會+1000您的答案。我已經使用了這個片段,因爲我不知道這是如何工作的,並且感謝你我現在做的!我基本上想要的是git分支,所以我一定會在稍後做出自己的提示以刪除無用的部分。再次感謝! – romainberger
我總是同意這個答案的結論。適應你的提示通常工作正常。根據我的經驗,只要您將顏色序列帶入其中,就會在提示中提到有關退格,歷史和換行符的奇怪行爲。我喜歡色彩繽紛的提示幾天,然後再次刪除顏色控制序列,現在bash再次正常工作。雖然着色「ll」輸出完全沒有問題。 –