Difference between revisions of "Color Bash Prompt (Русский)"

From ArchWiki
Jump to: navigation, search
(update interlanguage links (https://github.com/lahwaacz/wiki-scripts/blob/master/update-interlanguage-links.py))
 
(31 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
[[Category:Русский]]
 
[[Category:Command shells (Русский)]]
 
[[Category:Command shells (Русский)]]
[[en:Color Bash Prompt]]
+
[[de:Bash-Prompt anpassen]]
 +
[[en:Bash/Prompt customization]]
 
[[es:Color Bash Prompt]]
 
[[es:Color Bash Prompt]]
 
[[it:Color Bash Prompt]]
 
[[it:Color Bash Prompt]]
Существуют различные возможности настройки строки приглашения [[Bash]]'а (PS1), и настройка строки приглашения, поможет вам быть более продуктивными в командной строке. Вы можете добавить дополнительную информацию, или вы можете просто добавить цвет чтобы выделяться строка выделялась.
+
[[ja:Bash カラープロンプト]]
 +
[[zh-cn:Color Bash Prompt]]
 +
{{Related articles start (Русский)}}
 +
{{Related|Bash (Русский)}}
 +
{{Related|Переменные окружения}}
 +
{{Related articles end}}
 +
{{Unmaintained (Русский)}}
 +
{{TranslationStatus (Русский)|Color Bash Prompt|2015-07-21|381378}}
 +
Существуют различные возможности настройки строки приглашения [[Bash]]'а (PS1), которые могут сделать работу в командной строке комфортней и продуктивней. Например, можно добавить дополнительную информацию или цвет, чтобы приглашение ввода можно было легко обнаружить среди остального текста.
  
==Основные приглашения==
+
В этой статье рассказывается как ''настроить персональное приглашение для обычного пользователя''.
Следующие настройки полезны для визуального различия приглашения root пользователя, от такой же строки обычного пользователя.
+
  
*Редактируем персональный конфигурационный файл Bash:
+
== Применение настроек ==
$ nano ~/.bashrc
+
  
*Комментируем строку по умолчанию:
+
Чтобы применить изменения, сделанные в файле {{ic|.bashrc}}, без перезапуска shell, запустите команду:
  #PS1='[\u@\h \W]\$ '
+
  $ source ~/.bashrc
  
*И добавляем зелёный цвет для обычного пользователя:
+
== Базовые приглашения ==
{{bc|1=
+
<span style="color: #0f0">[chiri@zetsubou ~]$</span> <span style="text-decoration: blink;">_</span>
+
}}
+
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '
+
  
*Редактируем .bashrc файл root-а; если его нет, копируем из /etc/skel:
+
Следующие настройки полезны для визуального различия приглашения root пользователя от приглашений обычных пользователей.
# nano /root/.bashrc
+
*Добавляем красный цвет для приглашения root-а:
+
{{bc|1=
+
<span style="color: #f00">[root@zetsubou ~]#</span> <span style="text-decoration: blink;">_</span>
+
}}
+
PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '
+
  
===Slightly fancier prompts===
+
=== Обычный пользователь ===
*A green and blue prompt for regular users:
+
{{bc|1=
+
<span style="color: #0a0">chiri</span> <span style="color: #00f">~/docs</span> <span style="color: #0f0">$</span> <span style="color: #000">echo "sample output text"<br/>
+
sample output text<br/>
+
</span><span style="color: #0a0">chiri</span> <span style="color: #00f">~/docs</span> <span style="color: #0f0">$</span> <span style="color: #000"><span style="text-decoration: blink;">_</span></span>
+
}}
+
PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'
+
  
This will give a very pleasing, colorful prompt and theme for the console with bright white text.
+
Зелёное приглашение для ''обычных пользователей'':
  
The string above contains color-set escape sequences (start coloring: \[\e[color\], end coloring: \[\e[m\]) and information placeholders:
+
<div style="font-family: monospace; white-space: pre; padding: 1em; border: 3px solid #bcd; background-color: black; color: #aaa;"><span style="color: #0f0">[chiri@zetsubou ~]$</span> <span style="text-decoration: blink;">_</span></div>
 +
{{hc|~/.bashrc|
 +
<nowiki>#PS1='[\u@\h \W]\$ '  # Default
 +
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '</nowiki>}}
  
* \u - Username. The original prompt also has \h, which prints the host name.
+
=== Root ===
* \w - Current absolute path. Use \W for current relative path.
+
* \$ - The prompt character (eg. '#' for root, '$' for regular users).
+
  
The last color-set sequence, "\[\e[1;37m\]", is not closed, so the remaining text (everything typed into the terminal, program output and so on) will be in that (bright white) color. It may be desirable to change this color, or to delete the last escape sequence in order to leave the actual output in unaltered color.
+
Красное приглашение для ''root'' (скопируйте из {{ic|/etc/skel/}}, если ещё не сделали этого):
  
*A red and blue prompt for root:
+
<div style="font-family: monospace; white-space: pre; padding: 1em; border: 3px solid #bcd; background-color: black; color: #aaa;"><span style="color: #f00">[root@zetsubou ~]#</span> <span style="text-decoration: blink;">_</span></div>
{{bc|1=
+
{{hc|/root/.bashrc|
<span style="color: #a00">root</span> <span style="color: #00f">~/docs</span> <span style="color: #a00">#</span> <span style="color: #0a0">echo "sample output text"<br/>
+
<nowiki>#PS1='[\u@\h \W]\$ '  # Default
sample output text<br/>
+
PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '</nowiki>}}
</span><span style="color: #a00">root</span> <span style="color: #00f">~/docs</span> <span style="color: #a00">#</span> <span style="color: #0a0"><span style="text-decoration: blink;">_</span></span>
+
 
}}
+
== Профессиональные приглашения ==
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\]'
+
 
 +
=== Обычный пользователь ===
 +
 
 +
Зелёное с синим приглашение для ''обычных пользователей'':
 +
 
 +
<div style="font-family: monospace; white-space: pre; padding: 1em; border: 3px solid #bcd; background-color: black; color: #aaa;"><span style="color: #0a0">chiri</span> <span style="color: #00f">~/docs</span> <span style="color: #0f0">$</span> echo "sample output text"<br />sample output text<br /><span style="color: #0a0">chiri</span> <span style="color: #00f">~/docs</span> <span style="color: #0f0">$</span> <span style="text-decoration: blink;">_</span></div>
 +
{{bc|<nowiki>PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'</nowiki>}}
 +
 
 +
Этот пример предоставляет очень приятное цветное приглашение и тему консоли с ярко-белым цветом текста.
 +
 
 +
Вышеописанная строка содержит управляющие последовательности для цветового набора (начало окраски: {{ic|\[\e[''color''\]}}, конец окраски: {{ic|\[\e[m\]}}) и информационные заполнители:
 +
 
 +
* '''\u''' - Имя пользователя. Исходное приглашение также содержит '''\h''', который печатает имя хоста.
 +
* '''\w''' - Текущий абсолютный путь. Используйте '''\W''' для текущего относительного пути.
 +
* '''\$''' - Символ приглашения (например, {{ic|#}} для root, {{ic|$}} для обычных пользователей).
 +
* '''\[''' и '''\]''' - Эти теги должны обрамлять цветовые коды, чтобы bash понимал как правильно позиционировать курсор.
 +
 
 +
Последняя цветовая управляющая последовательность {{ic|\[\e[1;37m\]}} не закрыта, поэтому весь оставшийся текст (всё что вы набираете в терминале, вывод программ и т.д.) будет окрашено в этот (ярко белый) цвет. Вы можете захотеть изменить этот цвет или удалить последнюю управляющую последовательность для того, чтобы оставить последующий вывод в неизменном цвете.
 +
 
 +
=== Root ===
 +
 
 +
Красное с синим приглашение для ''root'':
 +
 
 +
<div style="font-family: monospace; white-space: pre; padding: 1em; border: 3px solid #bcd; background-color: black; color: #aaa;"><span style="color: #a00">root</span> <span style="color: #00f">~/docs</span> <span style="color: #a00">#</span> <span style="color: #0a0">echo "sample output text"<br />sample output text<br /></span><span style="color: #a00">root</span> <span style="color: #00f">~/docs</span> <span style="color: #a00">#</span> <span style="color: #0a0"><span style="text-decoration: blink;">_</span></span></div>
 +
{{bc|<nowiki>PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\]'</nowiki>}}
 +
 
 +
Этот пример предоставляет красное выделение и зелёный цвет текста в консоли.
  
This will give you a red designation and green console text.
+
== Максимальные приглашения ==
  
==Advanced prompts==
+
=== Статус нагрузки/памяти для 256colors ===
  
===Load/Mem Status for 256colors===
+
Это даже не предел. Вместо использования {{ic|sed}} для парсинга загрузки памяти и нагрузки (используя опцию {{ic|-u}} для non-buffering) и встроенной команды ''history'' для сохранения вашей истории в {{ic|HISTFILE}} после каждой команды, что может быть очень полезно, если у вас проблемы с вылетами оболочек или дочерних оболочек, этот пример по сути заставляет BASH печатать переменные, которые ему уже известны, таким обоазом делая его экстремально быстрым по сравнению с приглашениями, использующими не-встроенные команды.
This isn't even pushing the limits.. other than using 'sed' to parse the memory and load average (using the ''-u'' option for non-buffering), and the builtin ''history'' to save your history to your ''HISTFILE'' after every command, which I have found incredibly useful when dealing with crashing shells or subshells, this is essentially just making BASH print variables it already knows, making this extremely fast compared to prompts with non-builtin commands.
+
  
This prompt is from AskApache.com's [http://www.askapache.com/linux-unix/bash-power-prompt.html BASH Power Prompt article], which goes into greater detailIt is especially helpful for those wanting to understand 256 color terminals, ncurses, termcap, and terminfo.
+
Это приглашение из статьи [http://www.askapache.com/linux-unix/bash-power-prompt.html BASH Power Prompt] с AskApache.com, в которой разбираются подробностиЭто особенно полезно для тех, кто хочет понять 256 цветные терминалы, ncurses, termcap и terminfo.
  
This is for '''256 color terminals''', which is where the '''\033[38;5;22m''' terminal escapes come from.   
+
Этот пример для '''256 цветных терминалов''', из которых произошли {{ic|\033[38;5;22m}} управляющие последовательности.   
 
{{bc|1=
 
{{bc|1=
 
<span style="color:#0b0">802</span><span style="color:#005f00">/1024MB</span>      <span style="color:#5f00af">1.28 1.20 1.13 3/94 18563</span>
 
<span style="color:#0b0">802</span><span style="color:#005f00">/1024MB</span>      <span style="color:#5f00af">1.28 1.20 1.13 3/94 18563</span>
Line 71: Line 88:
 
}}
 
}}
  
  PROMPT_COMMAND='history -a;echo -en "\033[m\033[38;5;2m"$(( `sed -nu "s/MemFree:[\t ]\+\([0-9]\+\) kB/\1/p" /proc/meminfo`/1024))"\033[38;5;22m/"$((`sed -nu "s/MemTotal:[\t ]\+\([0-9]\+\) kB/\1/Ip" /proc/meminfo`/1024 ))MB"\t\033[m\033[38;5;55m$(< /proc/loadavg)\033[m"'
+
{{bc|<nowiki>PROMPT_COMMAND='history -a;echo -en "\033[m\033[38;5;2m"$(( $(sed -nu "s/MemFree:[\t ]\+\([0-9]\+\) kB/\1/p" /proc/meminfo)/1024))"\033[38;5;22m/"$(($(sed -nu "s/MemTotal:[\t ]\+\([0-9]\+\) kB/\1/Ip" /proc/meminfo)/1024 ))MB"\t\033[m\033[38;5;55m$(&lt; /proc/loadavg)\033[m"'
  PS1='\[\e[m\n\e[1;30m\][$$:$PPID \j:\!\[\e[1;30m\]]\[\e[0;36m\] \T \d \[\e[1;30m\][\[\e[1;34m\]\u@\H\[\e[1;30m\]:\[\e[0;37m\]${SSH_TTY} \[\e[0;32m\]+${SHLVL}\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n($SHLVL:\!)\$ '
+
PS1='\[\e[m\n\e[1;30m\][$$:$PPID \j:\!\[\e[1;30m\]]\[\e[0;36m\] \T \d \[\e[1;30m\][\[\e[1;34m\]\u@\H\[\e[1;30m\]:\[\e[0;37m\]${SSH_TTY} \[\e[0;32m\]+${SHLVL}\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n($SHLVL:\!)\$ '</nowiki>}}
 
+
  
===List of colors for prompt and Bash===
+
=== Список цветов для приглашений и Bash ===
Add this to your Bash file(s) to define colors for prompt and commands:
+
 
{{bc|1=txtblk='\e[0;30m' # Black - Regular
+
Добавьте это в ваш(и) Bash файл(ы), чтобы задать цвета для приглашений и команд:
 +
{{bc|<nowiki>txtblk='\e[0;30m' # Black - Обычный
 
txtred='\e[0;31m' # Red
 
txtred='\e[0;31m' # Red
 
txtgrn='\e[0;32m' # Green
 
txtgrn='\e[0;32m' # Green
Line 85: Line 102:
 
txtcyn='\e[0;36m' # Cyan
 
txtcyn='\e[0;36m' # Cyan
 
txtwht='\e[0;37m' # White
 
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
+
bldblk='\e[1;30m' # Black - Жирный
 
bldred='\e[1;31m' # Red
 
bldred='\e[1;31m' # Red
 
bldgrn='\e[1;32m' # Green
 
bldgrn='\e[1;32m' # Green
Line 93: Line 110:
 
bldcyn='\e[1;36m' # Cyan
 
bldcyn='\e[1;36m' # Cyan
 
bldwht='\e[1;37m' # White
 
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
+
unkblk='\e[4;30m' # Black - Подчёркнутый
 
undred='\e[4;31m' # Red
 
undred='\e[4;31m' # Red
 
undgrn='\e[4;32m' # Green
 
undgrn='\e[4;32m' # Green
Line 101: Line 118:
 
undcyn='\e[4;36m' # Cyan
 
undcyn='\e[4;36m' # Cyan
 
undwht='\e[4;37m' # White
 
undwht='\e[4;37m' # White
bakblk='\e[40m'  # Black - Background
+
bakblk='\e[40m'  # Black - Фоновый
 
bakred='\e[41m'  # Red
 
bakred='\e[41m'  # Red
badgrn='\e[42m'  # Green
+
bakgrn='\e[42m'  # Green
 
bakylw='\e[43m'  # Yellow
 
bakylw='\e[43m'  # Yellow
 
bakblu='\e[44m'  # Blue
 
bakblu='\e[44m'  # Blue
Line 109: Line 126:
 
bakcyn='\e[46m'  # Cyan
 
bakcyn='\e[46m'  # Cyan
 
bakwht='\e[47m'  # White
 
bakwht='\e[47m'  # White
txtrst='\e[0m'    # Text Reset}}
+
txtrst='\e[0m'    # Text Reset</nowiki>}}
  
To use in commands from your shell environment:
+
Или если вы предпочитаете названия цветов, вы сможете писать их без необходимости их вычисления и желания высоко интенсивных цветов:
$ echo -e "${txtblu}test"
+
{{bc|<nowiki># Сброс
<font color='blue'>test</font>
+
Color_Off='\e[0m'       # Text Reset
$ echo -e "${bldblu}test"
+
<font color='lightblue'><b>test</b></font>
+
$ echo -e "${undblu}test"
+
<font color='lightblue'><b><u>test</u></b></font>
+
$ echo -e "${bakblu}test"
+
<span style="color: white; background-color: lightblue"><b>test</b></span>
+
  
To use in a prompt (note double quotes and <nowiki>\[ \]</nowiki> used by the shell to count proper length):
+
# Обычные цвета
PS1="\[$txtblu\]foo\[$txtred\] bar\[$txtrst\] baz : "
+
Black='\e[0;30m'        # Black
 +
Red='\e[0;31m'          # Red
 +
Green='\e[0;32m'        # Green
 +
Yellow='\e[0;33m'      # Yellow
 +
Blue='\e[0;34m'        # Blue
 +
Purple='\e[0;35m'      # Purple
 +
Cyan='\e[0;36m'        # Cyan
 +
White='\e[0;37m'        # White
  
===Prompt escapes===
+
# Жирные
The various Bash prompt escapes listed in the manpage:
+
BBlack='\e[1;30m'       # Black
Bash allows these prompt strings to be customized by inserting a
+
BRed='\e[1;31m'         # Red
number of ''backslash-escaped special characters'' that are
+
BGreen='\e[1;32m'      # Green
decoded as follows:
+
BYellow='\e[1;33m'     # Yellow
+
BBlue='\e[1;34m'        # Blue
  \a         an ASCII bell character (07)
+
BPurple='\e[1;35m'      # Purple
  \d        the date in "Weekday Month Date" format (e.g., "Tue May 26")
+
BCyan='\e[1;36m'        # Cyan
  \D{format} the format is passed to strftime(3) and the result
+
BWhite='\e[1;37m'       # White
              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
+
         
+
  The command number and the history number are usually different:
+
  the history number of a command is its position in the history
+
  list, which may include commands restored from the history file
+
  (see HISTORY below), while the command number is the position in
+
  the sequence of commands executed during the current shell session.
+
  After the string is decoded, it is expanded via parameter
+
  expansion, command substitution, arithmetic expansion, and quote
+
  removal, subject to the value of the promptvars shell option (see
+
  the description of the shopt command under SHELL BUILTIN COMMANDS
+
  below).
+
  
===Positioning the cursor===
+
# Подчёркнутые
The following sequence sets the cursor position:
+
UBlack='\e[4;30m'      # Black
\[\033[<row>;<column>f\]
+
URed='\e[4;31m'        # Red
 +
UGreen='\e[4;32m'      # Green
 +
UYellow='\e[4;33m'      # Yellow
 +
UBlue='\e[4;34m'        # Blue
 +
UPurple='\e[4;35m'      # Purple
 +
UCyan='\e[4;36m'        # Cyan
 +
UWhite='\e[4;37m'      # White
  
The current cursor position can be saved using:
+
# Фоновые
\[\033[s\]
+
On_Black='\e[40m'      # Black
 +
On_Red='\e[41m'        # Red
 +
On_Green='\e[42m'      # Green
 +
On_Yellow='\e[43m'      # Yellow
 +
On_Blue='\e[44m'        # Blue
 +
On_Purple='\e[45m'      # Purple
 +
On_Cyan='\e[46m'        # Cyan
 +
On_White='\e[47m'      # White
  
To restore a position, use the following sequence:
+
# Высоко Интенсивные
\[\033[u\]
+
IBlack='\e[0;90m'      # Black
 +
IRed='\e[0;91m'        # Red
 +
IGreen='\e[0;92m'      # Green
 +
IYellow='\e[0;93m'      # Yellow
 +
IBlue='\e[0;94m'        # Blue
 +
IPurple='\e[0;95m'      # Purple
 +
ICyan='\e[0;96m'        # Cyan
 +
IWhite='\e[0;97m'      # White
  
The following example uses these sequences to display the time in the upper right corner:
+
# Жирные Высоко Интенсивные
PS1=">\[\033[s\]\[\033[1;\$((COLUMNS-4))f\]\$(date +%H:%M)\[\033[u\]"
+
BIBlack='\e[1;90m'      # Black
 +
BIRed='\e[1;91m'        # Red
 +
BIGreen='\e[1;92m'      # Green
 +
BIYellow='\e[1;93m'    # Yellow
 +
BIBlue='\e[1;94m'      # Blue
 +
BIPurple='\e[1;95m'    # Purple
 +
BICyan='\e[1;96m'      # Cyan
 +
BIWhite='\e[1;97m'      # White
  
The environment variable ''COLUMNS'' contains the number of columns of the terminal. The above example substracts 4 from its value in order to justify the five character wide output of ''date'' at the right border.
+
# Высоко Интенсивные фоновые
 +
On_IBlack='\e[0;100m'   # Black
 +
On_IRed='\e[0;101m'     # Red
 +
On_IGreen='\e[0;102m'   # Green
 +
On_IYellow='\e[0;103m' # Yellow
 +
On_IBlue='\e[0;104m'    # Blue
 +
On_IPurple='\e[0;105m'  # Purple
 +
On_ICyan='\e[0;106m'    # Cyan
 +
On_IWhite='\e[0;107m'  # White
 +
</nowiki>}}
  
===Return value visualisation===
+
Для использования в командах в окружении вашего shell:
  
WARNING WARNING WARNING WARNING<br>
+
<div style="font-family: monospace; padding: 1em; border: 3px solid #bcd; background-color: black; color: #fff;">$ echo -e "${txtblu}test"<br /><span style="color: blue;">test</span><br />$ echo -e "${bldblu}test"<br /><span style="color: lightblue;"><strong>test</strong></span><br />$ echo -e "${undblu}test"<br /><span style="color: lightblue;"><strong><span style="text-decoration: underline;">test</span></strong></span><br />$ echo -e "${bakblu}test"<br /><span style="color: white; background-color: lightblue;"><strong>test</strong></span><br />$ <span style="text-decoration: blink;">_</span></div>
This seemed to me to have some bugs, see the entry I added to the discussion page.
+
  
Add this line if you want to see the return value of the last executed command. This should work with any kind of prompt as long as it does not need PROMPT_COMMAND:
+
{{bc|<nowiki>PS1="\[$txtblu\]foo\[$txtred\] bar\[$txtrst\] baz : "</nowiki>}}
<nowiki>PROMPT_COMMAND='RET=$?; if [[ $RET -eq 0 ]]; then echo -ne "\033[0;32m$RET\033[0m ;)"; else echo -ne "\033[0;31m$RET\033[0m ;("; fi; echo -n " "'</nowiki>
+
  
It will look like this:
+
Двойные кавычки позволяют разрешить переменную {{ic|$color}}, а управляющие {{ic|<nowiki>\[ \]</nowiki>}} вокруг них позволяют не учитывать их при расчёте количества символов, поэтому позиция курсора будет верной.
<font color="green">0</font><b> ;) </b>harvie@harvie-ntb ~/ $ true
+
<font color="green">0</font><b> ;) </b>harvie@harvie-ntb ~/ $ false
+
<font color="red">1</font><b> ;( </b>harvie@harvie-ntb ~/ $
+
Zero is green and non-zero is red. There is also the smiley indication (replace it with anything you want); so your prompt will smile if the last operation was succesful.
+
  
====Advanced return value visualisation====
+
{{Note (Русский)|Если у вас возникает преждевременный перенос строки при наборе команды, скорее всего причиной является пропущенные управляющие последовательности ({{ic|<nowiki>\[ \]</nowiki>}}).}}
If you want colors, you need to set ''$RED'' and ''$GREEN'' values:
+
RED='\e[0;31m'
+
GREEN='\e[0;32m'
+
  
You have to specify these values in Bash's configuration files:
+
=== Прерывания приглашения ===
{{bc|<nowiki>
+
#return value visualisation
+
PROMPT_COMMAND='RET=$?;'
+
RET_VALUE='$(echo $RET)' #Ret value not colorized - you can modify it.
+
RET_SMILEY='$(if [[ $RET = 0 ]]; then echo -ne "\[$GREEN\];)"; else echo -ne "\[$RED\];("; fi;)'
+
</nowiki>}}
+
  
Then you can use ''$RET_VALUE'' and ''$RET_SMILEY'' variables in the prompt. Note that you need use double quotes:
+
Некоторые прерывания приглашения Bash перечислены в man странице:
#prompt
+
PS1="$RET_VALUE $RET_SMILEY : "
+
  
This will give you basic prompt:
+
{{bc|1=Bash allows these prompt strings to be customized by inserting a
0 <font color="green">;)</font> : true
+
number of ''backslash-escaped special characters'' that are
0 <font color="green">;)</font> : false
+
decoded as follows:
1 <font color="red">;(</font> :  
+
  
But you will probably want to use ''$RET_VALUE'' or ''$RET_SMILEY'' in your own prompt, like this:
+
\a an ASCII bell character (07)
{{bc|1=
+
\d the date in "Weekday Month Date" format (e.g., "Tue May 26")
PS1="\[$WHITE\]$RET_VALUE $RET_SMILEY \[$BLUE\]\u\[$RED\]@\[$EBLUE\]\h\[$WHITE\] \W \[$ERED\]\\$\[$EWHITE\] "
+
\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
 +
 
 +
The command number and the history number are usually different:
 +
the history number of a command is its position in the history
 +
list, which may include commands restored from the history file
 +
(see HISTORY below), while the command number is the position in
 +
the sequence of commands executed during the current shell session.
 +
After the string is decoded, it is expanded via parameter
 +
expansion, command substitution, arithmetic expansion, and quote
 +
removal, subject to the value of the promptvars shell option (see
 +
the description of the shopt command under SHELL BUILTIN COMMANDS
 +
below).
 
}}
 
}}
  
===Wolfman's===
+
=== Позиционирование курсора ===
After reading through most of the [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/index.html Bash Prompt Howto], the author developed a color bash prompt that displays the last 25 characters of the current working directory. This prompt should work well on terminals with a black background. The following code goes in file {{ic|~/.bashrc}}.
+
  
*Add the bash_prompt_command function. If you have a couple directories with long names or start entering a lot of subdirectories, this function will keep the command prompt from wrapping around the screen by displaying at most the last pwdmaxlen characters from the PWD. This code was taken from the ''Bash Prompt Howto''<nowiki>'s</nowiki> section on [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x783.html Controlling the Size and Appearance of $PWD] and modified to replace the user's home directory with a tilde.
+
Эта последовательность устанавливает позицию курсора:
##################################################
+
# Fancy PWD display function
+
##################################################
+
# The home directory (HOME) is replaced with a ~
+
# The last pwdmaxlen characters of the PWD are displayed
+
# Leading partial directory names are striped off
+
# /home/me/stuff          -> ~/stuff              if USER=me
+
# /usr/share/big_dir_name -> ../share/big_dir_name if pwdmaxlen=20
+
##################################################
+
bash_prompt_command() {
+
    # How many characters of the $PWD should be kept
+
    local pwdmaxlen=25
+
    # Indicate that there has been dir truncation
+
    local trunc_symbol=".."
+
    local dir=${PWD##*/}
+
    pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
+
    NEW_PWD=${PWD/#$HOME/\~}
+
    local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))
+
    if [ ${pwdoffset} -gt "0" ]
+
    then
+
        NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}
+
        NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}
+
    fi
+
}
+
  
*The next fragment generates the command prompt and various colors are defined. The user's color for the username, hostname, and prompt ($ or #) is set to cyan, and if the user is root (root's UID is always 0), set the color to red. The command prompt is set to a colored version of Arch's default with the NEW_PWD from the last function.
+
{{bc|<nowiki>\[\033[<row>;<column>f\]</nowiki>}}
  
:Also, make sure that your color variables are enclosed in double and not single quote marks. Using single quote marks seems to give Bash problems with line wrapping correctly.
+
Текущая позиция может быть сохранена так:
bash_prompt() {
+
    case $TERM in
+
      xterm*|rxvt*)
+
          local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]'
+
          ;;
+
      *)
+
          local TITLEBAR=""
+
          ;;
+
    esac
+
    local NONE="\[\033[0m\]"    # unsets color to term's fg color
+
   
+
    # regular colors
+
    local K="\[\033[0;30m\]"    # black
+
    local R="\[\033[0;31m\]"    # red
+
    local G="\[\033[0;32m\]"    # green
+
    local Y="\[\033[0;33m\]"    # yellow
+
    local B="\[\033[0;34m\]"    # blue
+
    local M="\[\033[0;35m\]"    # magenta
+
    local C="\[\033[0;36m\]"    # cyan
+
    local W="\[\033[0;37m\]"    # white
+
   
+
    # emphasized (bolded) colors
+
    local EMK="\[\033[1;30m\]"
+
    local EMR="\[\033[1;31m\]"
+
    local EMG="\[\033[1;32m\]"
+
    local EMY="\[\033[1;33m\]"
+
    local EMB="\[\033[1;34m\]"
+
    local EMM="\[\033[1;35m\]"
+
    local EMC="\[\033[1;36m\]"
+
    local EMW="\[\033[1;37m\]"
+
   
+
    # background colors
+
    local BGK="\[\033[40m\]"
+
    local BGR="\[\033[41m\]"
+
    local BGG="\[\033[42m\]"
+
    local BGY="\[\033[43m\]"
+
    local BGB="\[\033[44m\]"
+
    local BGM="\[\033[45m\]"
+
    local BGC="\[\033[46m\]"
+
    local BGW="\[\033[47m\]"
+
   
+
    local UC=$W                # user's color
+
    [ $UID -eq "0" ] && UC=$R  # root's color
+
   
+
    PS1="$TITLEBAR ${EMK}[${UC}\u${EMK}@${UC}\h ${EMB}\${NEW_PWD}${EMK}]${UC}\\$ ${NONE}"
+
    # without colors: PS1="[\u@\h \${NEW_PWD}]\\$ "
+
    # extra backslash in front of \$ to make bash colorize the prompt
+
}
+
  
*Finally, append this code. This ensures that the NEW_PWD variable will be updated when you cd somewhere else, and it sets the PS1 variable, which contains the command prompt.
+
{{bc|<nowiki>\[\033[s\]</nowiki>}}
PROMPT_COMMAND=bash_prompt_command
+
bash_prompt
+
unset bash_prompt
+
  
===KitchM's===
+
Чтобы восстановить позицию, используйте:
These prompts offer a little more flash and visual clarity.  Note that the use of red in the root user's prompt should provide ample warning.  That's not to say someone couldn't use flashing text or arrow to do even more, but these will give you a good starting point.
+
  
'''First''', change the default background in your terminal preferences (this example uses Xfce's Terminal program) to #D2D2D2, and the text color to #000000.  The font is listed as DejaVu Sans Mono Book 12.  The cursor color is #00AA00, and the tab activity color is #AF0000.
+
{{bc|<nowiki>\[\033[u\]</nowiki>}}
  
'''Second''', in ~/.bashrc and right after the PS1= line, enter a new line with the following:
 
PS1='\e[1;33;47m\u \e[1;32;47mon \h \e[1;35;47m\d \@\e[0;0m\n\e[1;34m[dir.= \w] \# > \e[0;0m'
 
And then place a # in front of the first PS1 line to remark it out.
 
  
'''Third''', for root user, edit /root/.bashrc in the same manner to include:
+
Следующий пример использует эти последовательности, чтобы отображать время в правом верхнем углу:
PS1='\e[1;31;47m\u \e[1;32;47mon \h \e[1;35;47m\d \@\e[0;0m\n\e[1;31m[dir.= \w] \# > \e[0;0m'
+
Don't forget to comment out the old line.
+
  
These are double-line prompts, and they should look something like these:
+
{{bc|<nowiki>PS1="&gt;\[\033[s\]\[\033[1;\$((COLUMNS-5))f\]\$(date +%H:%M)\[\033[u\]"</nowiki>}}
  
User-
+
Переменная окружения ''COLUMNS'' содержит число столбцов в терминале. В примере выше из этого значения отнимается ''5'', чтобы выровнять 5-символьный вывод команды {{ic|date}} по правому краю.
<span style="color:#D2D2D2; background:#D2D2D2">                                          </span>
+
<span style="color:#FFFF00; background:#A9A9A9"><b>Username</b></span><span style="color:#00FF00; background:#A9A9A9"><b> on myhost</b></span><span style="color:#FF00FF; background:#A9A9A9"><b> Sun Jan 15 12:30 PM</b></span><span style="color:#D2D2D2; background:#D2D2D2">    </span>
+
<span style="color:#0000FF; background:#D2D2D2"><b>[dir.= /home/username] 1 >                </b> </span>
+
<span style="color:#D2D2D2; background:#D2D2D2">                                          </span>
+
  
Root-
+
=== Отображение кода возврата ===
<span style="color:#D2D2D2; background:#D2D2D2">                                          </span>
+
<span style="color:#FF0000; background:#A9A9A9"><b>Root</b></span><span style="color:#00FF00; background:#A9A9A9"><b> on myhost</b> </span><span style="color:#FF00FF; background:#A9A9A9"><b> Sun Jan 15 12:30 PM</b> </span><span style="color:#D2D2D2; background:#D2D2D2">      </span> 
+
<span style="color:#FF0000; background:#D2D2D2"><b>[dir.= /etc/rc.d] 1 >                    </b> </span>
+
<span style="color:#D2D2D2; background:#D2D2D2">                                          </span>
+
  
You'll note that the background colors make them easier to read, and the text colors just keep things interesting.  There's a lot of leeway to make them personalized, just with the use of colors.  Enjoy!
+
Используйте следующий промпт, чтобы видеть какое значение вернула последняя команда:
  
==Set xterm window title==
+
<div style="font-family: monospace; padding: 1em; border: 3px solid #bcd; background-color: black; color: #fff;">0 <span style="color: green;">;)</span>&nbsp;: true<br />0 <span style="color: green;">;)</span>&nbsp;: false<br />1 <span style="color: red;">;(</span>&nbsp;:</div>
You can use the {{Ic|<nowiki>${XTERM_TITLE}</nowiki>}} variable at the beginning of the prompt to set [[xterm]] title (if available) to directory@user@hostname. Or you can modify it using regular [[#Prompt escapes|prompt escape sequences]]:
+
 
 +
{{bc|<nowiki>#return value visualisation
 +
PS1="\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[0;32m\];)\"; else echo \"\[\033[0;31m\];(\"; fi)\[\033[00m\] : "</nowiki>}}
 +
 
 +
''Ноль'' - зелёный смайлик, а ''не ноль'' - красный. Таким образом, ваше приглашение будет со смайликом, если последняя операция была успешной.
 +
 
 +
Но вы возможно также захотите использовать имя пользователя и хоста, например так:
 +
 
 +
<div style="font-family: monospace; padding: 1em; border: 3px solid #bcd; background-color: black; color: #fff;"><span style="font-weight: bold;">0</span> <span style="color: #0a0; font-weight: bold;">;) andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> true<br /><span style="font-weight: bold;">0</span> <span style="color: #0a0; font-weight: bold;">;) andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> false<br /><span style="font-weight: bold;">1</span> <span style="color: #a00; font-weight: bold;">;(</span> <span style="color: #0a0; font-weight: bold;">andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> <span style="text-decoration: blink;">_</span></div>
 +
 
 +
{{bc|<nowiki>#return value visualisation
 +
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\];)\"; else echo \"\[\033[01;31m\];(\"; fi) $(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "</nowiki>}}
 +
 
 +
Или, если вы хотите создать ваш промпт с использованием юникод-символа <span style="color: #0a0; font-weight: bold;">&#10003;</span> для статуса ''ноль'' и юникод-символ <span style="color: #a00; font-weight: bold;">&#10007;</span> для статуса ''не ноль'':
 +
 
 +
<div style="font-family: monospace; padding: 1em; border: 3px solid #bcd; background-color: black; color: #fff;"><span style="font-weight: bold;">0</span> <span style="color: #0a0; font-weight: bold;">&#10003; andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> true<br /><span style="font-weight: bold;">0</span> <span style="color: #0a0; font-weight: bold;">&#10003; andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> false<br /><span style="font-weight: bold;">1</span> <span style="color: #a00; font-weight: bold;">&#10007;</span> <span style="color: #0a0; font-weight: bold;">andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> I\ will\ try\ to\ type\ a\ wrong\ command...<br />bash: I will try to type a wrong command...: command not found<br /><span style="font-weight: bold;">127</span> <span style="color: #a00; font-weight: bold;">&#10007;</span> <span style="color: #0a0; font-weight: bold;">andy@alba</span> <span style="color: #55f; font-weight: bold;">~ $</span> <span style="text-decoration: blink;">_</span></div>
 +
 
 +
{{bc|<nowiki>#return value visualisation
 +
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\]\342\234\223\"; else echo \"\[\033[01;31m\]\342\234\227\"; fi) $(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "</nowiki>}}
 +
 
 +
Альтернативно, это можно сделать более [http://stackoverflow.com/a/22362727/1821548 читабельно] при помощи {{ic|PROMPT_COMMAND}}:
 +
 
 +
{{bc|<nowiki>set_prompt () {
 +
    Last_Command=$? # Must come first!
 +
    Blue='\[\e[01;34m\]'
 +
    White='\[\e[01;37m\]'
 +
    Red='\[\e[01;31m\]'
 +
    Green='\[\e[01;32m\]'
 +
    Reset='\[\e[00m\]'
 +
    FancyX='\342\234\227'
 +
    Checkmark='\342\234\223'
 +
 
 +
    # Add a bright white exit status for the last command
 +
    PS1="$White\$? "
 +
    # If it was successful, print a green check mark. Otherwise, print
 +
    # a red X.
 +
    if [[ $Last_Command == 0 ]]; then
 +
        PS1+="$Green$Checkmark "
 +
    else
 +
        PS1+="$Red$FancyX "
 +
    fi
 +
    # If root, just print the host in red. Otherwise, print the current user
 +
    # and host in green.
 +
    if [[ $EUID == 0 ]]; then
 +
        PS1+="$Red\\h "
 +
    else
 +
        PS1+="$Green\\u@\\h "
 +
    fi
 +
    # Print the working directory and prompt marker in blue, and reset
 +
    # the text color to the default.
 +
    PS1+="$Blue\\w \\\$$Reset "
 +
}
 +
PROMPT_COMMAND='set_prompt'</nowiki>}}
 +
 
 +
Вот пример, который показывает статус ошибки только в случае ''не нулевого'' статуса:
 
{{bc|<nowiki>
 
{{bc|<nowiki>
#set xterm title
+
PROMPT_COMMAND='es=$?; [[ $es -eq 0 ]] &amp;&amp; unset error || error=$(echo -e "\e[1;41m $es \e[40m")'
case "$TERM" in
+
PS1="${error} ${PS1}"</nowiki>}}
  xterm | xterm-color)
+
 
    XTERM_TITLE='\[\033]0;\W@\u@\H\007\]'
+
== Советы и подсказки ==
  ;;
+
 
esac;
+
=== Разные цвета при вводе текста и при выводе ===
 +
 
 +
Если вы не сбросили цвет текста в конце вашего промпта, то этим цветом будут отображаться как текст который вы вводите, так и текст консоли. Если вы хотите задать определённый цвет для ввода, но при этом чтобы цвет вывода команд остался по умолчанию, вам нужно будет сбросить цвет после нажатия {{ic|Enter}}, но до того, как какая-либо команда будет запущена. Вы можете сделать это установив DEBUG trap, например так:
 +
 
 +
{{hc|~/.bashrc|
 +
<nowiki>trap 'printf "\e[0m" "$_"' DEBUG</nowiki>}}
 +
 
 +
=== Случайные цитаты при входе ===
 +
 
 +
Для коричневого приглашения [[Fortune]] добавьте:
 +
 
 +
{{hc|~/.bashrc|<nowiki>
 +
[[ "$PS1" ]] && echo -e "\e[00;33m$(/usr/bin/fortune)\e[00m"
 
</nowiki>}}
 
</nowiki>}}
  
==Different colors for text entry and console output==
+
=== Раскрашенные последние новости Arch при входе ===
If you don't reset the text color at the end of your prompt, both the text you enter and the console text will simply stay in that color. If you want to edit text in a special color but still use the default color for command output, you'll need to reset the color after you press enter, but still before any commands get run. To do this, install a DEBUG trap in your ~/.bashrc like this:
+
  
trap 'echo -ne "\e[0m" > $(tty)' DEBUG
+
Чтобы читать 10 latestпоследних пунктов новостей с [https://www.archlinux.org/news/ Arch official website], пользователь [https://aur.archlinux.org/account.php?Action=AccountInfo&ID=33208 grufo] [https://bbs.archlinux.org/viewtopic.php?id=146850 написал] маленький и цветной скрипт для извлечения RSS (''scrollable''):
  
And add yourself to the tty group:
+
<div style="height: 350px; overflow: auto; font-family: monospace; padding: 1em; border: 3px solid #bbccdd; background-color: black; color: #aaaaaa;">&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">Arch Linux: Recent news updates</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br />The latest and greatest news from the Arch Linux distribution.<br /><br />&nbsp;<span style="color: #aa0000; font-weight: bold;">en-us Sun, 04 Nov 2012 16:09:46 +0000</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">End of initscripts support</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/end-of-initscripts-support/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Tom Gundersen wrote:<br />As <span style="color: #ffffff;">systemd</span> is now the default init system, Arch Linux is receiving minimal testing on initscripts systems. Due to a lack of resources and interest, we are unlikely to work on fixing <span style="color: #ffffff;">initscripts</span>-specific bugs, and may close them as WONTFIX.<br />We therefore strongly encourage all users to migrate to <span style="color: #ffffff;">systemd</span> as soon as possible. See the <span style="color: #ffffff;">systemd</span> migration guide <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://wiki.archlinux.org/index.php/Systemd</nowiki></span> <span style="color: #5555ff;">]</span>.<br />To ease the transition, <span style="color: #ffffff;">initscripts</span> support will remain in the official repositories for the time being, unless otherwise stated. As of January 2013, we will start removing <span style="color: #ffffff;">initscripts</span> support (e.g., <span style="color: #ffffff;">rc</span> scripts) from individual packages without further notice.<br /><br />&nbsp;<span style="color: #ffffff;">Tom Gundersen Sun, 04 Nov 2012 16:09:46 +0000 tag:www.archlinux.org,2012-11-04:/news/end-of-initscripts-support/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">November release of install media available</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/november-release-of-install-media-available/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Pierre Schmitz wrote:<br />The latest snapshot of our install and rescue media can be found on our <span style="color: #aa0000; font-weight: bold;">Download</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://www.archlinux.org/download/</nowiki></span> <span style="color: #5555ff;">]</span> page. The 2012.11.01 ISO image mainly contains minor bug fixes, cleanups and new packages compared to the previous one:<br />&nbsp;<span style="color: #5555ff;">*</span> First media with Linux 3.6<br />&nbsp;<span style="color: #5555ff;">*</span> <span style="background-color: #aa0000;">copytoram=n</span> can be used to not copy the image to RAM on network boot. This is probably unreliable but an option for systems with very low memory.<br />&nbsp;<span style="color: #5555ff;">*</span> <span style="background-color: #aa0000;">cowfile_size</span> boot parameter mainly for persistent COW on VFAT. See the <span style="color: #aa0000; font-weight: bold;">README</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://projects.archlinux.org/archiso.git/plain/docs/README.bootparams?id=v4</nowiki></span> <span style="color: #5555ff;">]</span> file for details.<br /><br />&nbsp;<span style="color: #ffffff;">Pierre Schmitz Fri, 02 Nov 2012 17:54:15 +0000 tag:www.archlinux.org,2012-11-02:/news/november-release-of-install-media-available/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">Bug Squashing Day: Saturday 17th November</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/bug-squashing-day-saturday-17th-november/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Allan McRae wrote:<br />The number of bugs in the Arch Linux bug tracker is creeping up so it is time for some extermination.<br />This is a great way for the community to get involved and help the Arch Linux team. The process is simple. First look at a bug for your favorite piece of software in the bug tracker and check if it still occurs. If it does, check the upstream project for a fix and test it to confirm it works. If there is no fix available, make sure the bug has been filed in the upstream tracker.<br />Join us on the #archlinux-bugs IRC channel. We are spread across timezones, so people should be around all day.<br /><br />&nbsp;<span style="color: #ffffff;">Allan McRae Thu, 01 Nov 2012 12:28:51 +0000 tag:www.archlinux.org,2012-11-01:/news/bug-squashing-day-saturday-17th-november/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">ConsoleKit replaced by logind</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/consolekit-replaced-by-logind/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Allan McRae wrote:<br />With GNOME 3.6, polkit and networkmanager moving to [extra], ConsoleKit has now been removed from the repositories. Any package that previously depended on it now relies on systemd-logind instead. That means that the system must be booted with systemd to be fully functional.<br />In addition to GNOME, both KDE and XFCE are also affected by this change.<br /><br />&nbsp;<span style="color: #ffffff;">Allan McRae Tue, 30 Oct 2012 22:17:39 +0000 tag:www.archlinux.org,2012-10-30:/news/consolekit-replaced-by-logind/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">systemd is now the default on new installations</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/systemd-is-now-the-default-on-new-installations/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Thomas B&auml;chler wrote:<br />The base group now contains the <span style="color: #ffffff;">systemd-sysvcompat</span> package. This means that all new installations will boot with systemd by default.<br />As some packages still lack native systemd units, users can install the <span style="color: #ffffff;">initscripts</span> package and use the <span style="color: #ffffff;">DAEMONS</span> array in <span style="color: #ffffff;">/etc/rc.conf</span> to start services using the legacy rc.d scripts.<br />This change does not affect existing installations. For the time being, the <span style="color: #ffffff;">initscripts</span> and <span style="color: #ffffff;">sysvinit</span> packages remain available from our repositories. However, individual packages may now start relying on the system being booted with systemd.<br />Please refer to <span style="color: #aa0000; font-weight: bold;">the wiki</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://wiki.archlinux.org/index.php/Systemd</nowiki></span> <span style="color: #5555ff;">]</span> for how to transition an existing installation to systemd.<br /><br />&nbsp;<span style="color: #ffffff;">Thomas B&auml;chler Sat, 13 Oct 2012 09:29:38 +0000 tag:www.archlinux.org,2012-10-13:/news/systemd-is-now-the-default-on-new-installations/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">Install medium 2012.10.06 introduces systemd</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/install-medium-20121006-introduces-systemd/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Pierre Schmitz wrote:<br />The October release of the Arch Linux install medium is available for <span style="color: #aa0000; font-weight: bold;">Download</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://www.archlinux.org/download/</nowiki></span> <span style="color: #5555ff;">]</span> and can be used for new installs or as a rescue system. It contains a set of updated packages and the following notable changes:<br />&nbsp;<span style="color: #5555ff;">*</span> systemd is used to boot up the live system.<br />&nbsp;<span style="color: #5555ff;">*</span> initscripts are no longer available on the live system but are still installed by default on the target system. This is likely to change in the near future.<br />&nbsp;<span style="color: #5555ff;">*</span> EFI boot and setup has been simplified.<br />&nbsp;<span style="color: #5555ff;">*</span> gummiboot is used to display a menu on EFI systems.<br />&nbsp;<span style="color: #5555ff;">*</span> The following new packages are available on the live system: ethtool, fsarchiver, gummiboot-efi, mc, partclone, partimage, refind-efi, rfkill, sudo, testdisk, wget, xl2tpd<br /><br />&nbsp;<span style="color: #ffffff;">Pierre Schmitz Sun, 07 Oct 2012 16:58:03 +0000 tag:www.archlinux.org,2012-10-07:/news/install-medium-20121006-introduces-systemd/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">New install medium 2012.09.07</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/new-install-medium-20120907/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Pierre Schmitz wrote:<br />As is customary by now there is a new install medium available at the beginning of this month. The live system can be downloaded from <span style="color: #aa0000; font-weight: bold;">Download</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://www.archlinux.org/download/</nowiki></span> <span style="color: #5555ff;">]</span> and be used for new installs or as a rescue system.<br />In addition to a couple of updated packages and bug fixes the following changes stand out:<br />&nbsp;<span style="color: #5555ff;">*</span> First medium with Linux 3.5 (3.5.3)<br />&nbsp;<span style="color: #5555ff;">*</span> The <span style="background-color: #aa0000;">script</span> boot parameter works again (<span style="color: #aa0000; font-weight: bold;">FS#31022</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://bugs.archlinux.org/task/31022</nowiki></span> <span style="color: #5555ff;">]</span>)<br />&nbsp;<span style="color: #5555ff;">*</span> When booting via PXE and NFS or NBD the ISO will be copied to RAM to ensure a more stable usage.<br />&nbsp;<span style="color: #5555ff;">*</span> The live medium contains <span style="background-color: #aa0000;">usb_modeswitch</span> and <span style="background-color: #aa0000;">wvdial</span> which e.g. allows to establish a network connection using an UMTS USB dongle<br />&nbsp;<span style="color: #5555ff;">*</span> Furthermore the newest versions of <span style="background-color: #aa0000;">initscripts</span>, <span style="background-color: #aa0000;">systemd</span> and <span style="background-color: #aa0000;">netcfg</span> are included.<br /><br />&nbsp;<span style="color: #ffffff;">Pierre Schmitz Sat, 08 Sep 2012 09:48:52 +0000 tag:www.archlinux.org,2012-09-08:/news/new-install-medium-20120907/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">Fontconfig 2.10.1 update - manual intervention required</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/fontconfig-2101-update-manual-intervention-required/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Andreas Radke wrote:<br />The fontconfig 2.10.1 update overwrites symlinks created by the former package version. These symlinks need to be removed before the update:<br /><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/20-unhint-small-vera.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/20-fix-globaladvance.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/29-replace-bitmap-fonts.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/30-metric-aliases.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/30-urw-aliases.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/40-nonlatin.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/45-latin.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/49-sansserif.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/50-user.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/51-local.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/60-latin.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/65-fonts-persian.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/65-nonlatin.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/69-unifont.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/80-delicious.conf</span><br /><span style="color: #ffffff;">rm /etc/fonts/conf.d/90-synthetic.conf</span><br /><span style="color: #ffffff;">pacman -Syu fontconfig</span><br /><br />Main systemwide configuration should be done by symlinks (especially for autohinting, sub-pixel and lcdfilter):<br /><br /><span style="color: #ffffff;">cd /etc/fonts/conf.d</span><br /><span style="color: #ffffff;">ln -s ../conf.avail/XX-foo.conf</span><br /><br />Also check <span style="color: #aa0000; font-weight: bold;">Font Configuration</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://wiki.archlinux.org/index.php/Font_Configuration</nowiki></span> <span style="color: #5555ff;">]</span> and <span style="color: #aa0000; font-weight: bold;">Fonts</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://wiki.archlinux.org/index.php/Fonts</nowiki></span> <span style="color: #5555ff;">]</span>.<br /><br />&nbsp;<span style="color: #ffffff;">Andreas Radke Thu, 06 Sep 2012 13:54:23 +0000 tag:www.archlinux.org,2012-09-06:/news/fontconfig-2101-update-manual-intervention-required/</span><br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">netcfg-2.8.9 drops deprecated rc.conf compatibility</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/netcfg-289-drops-initscripts-compatibility/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Florian Pritz wrote:<br />Users of <span style="color: #ffffff;">netcfg</span> should configure all interfaces in <span style="color: #ffffff;">/etc/conf.d/netcfg</span> rather than <span style="color: #ffffff;">/etc/rc.conf</span>.<br /><br />&nbsp;Florian Pritz Sat, 11 Aug 2012 20:00:02 +0000 tag:www.archlinux.org,2012-08-11:/news/netcfg-289-drops-initscripts-compatibility/<br /><br /><br />&nbsp;&nbsp; <span style="color: #ffffff; font-weight: bold;">::</span> <span style="color: #aa0000; font-weight: bold;">Install media 2012.08.04 available</span> <span style="color: #ffffff; font-weight: bold;">::</span><br />&nbsp;<span style="color: #ffffff;">[</span> <span style="color: #55ccff; font-weight: bold;"><nowiki>https://www.archlinux.org/news/install-media-20120804-available/</nowiki></span> <span style="color: #ffffff;">]</span><br /><br /><br />Pierre Schmitz wrote:<br />The August snapshot of our live and install media comes with updated packages and the following changes on top of the <span style="color: #aa0000; font-weight: bold;">previous ISO image</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;">/news/install-media-20120715-released/</span> <span style="color: #5555ff;">]</span>:<br />&nbsp;<span style="color: #5555ff;">*</span> GRUB 2.0 instead of the legacy 0.9 version is available.<br />&nbsp;<span style="color: #5555ff;">*</span> The <span style="color: #aa0000; font-weight: bold;">Installation Guide</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>https://wiki.archlinux.org/index.php/Installation_Guide</nowiki></span> <span style="color: #5555ff;">]</span> can be found at <span style="background-color: #aa0000;">/root/install.txt</span>.<br />&nbsp;<span style="color: #5555ff;">*</span> ZSH with <span style="color: #aa0000; font-weight: bold;">Grml's configuration</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;"><nowiki>http://grml.org/zsh/</nowiki></span> <span style="color: #5555ff;">]</span> is used as interactive shell to provide a user friendly and more convenient environment. This includes completion support for pacstrap, arch-chroot, pacman and most other tools.<br />&nbsp;<span style="color: #5555ff;">*</span> The network daemon is started by default which will automatically setup your network if DHCP is available.<br />Note that all these changes only affect the live system and not the base system you install using pacstrap. The ISO image can be downloaded from our <span style="color: #aa0000; font-weight: bold;">download page</span> <span style="color: #5555ff;">[</span> <span style="text-decoration: underline;">/download/</span> <span style="color: #5555ff;">]</span>. The next snapshot is scheduled for September.<br /><br />&nbsp;<span style="color: #ffffff;">Pierre Schmitz Sat, 04 Aug 2012 17:24:30 +0000 tag:www.archlinux.org,2012-08-04:/news/install-media-20120804-available/</span><br /><br /><br /><span style="color: #0a0; font-weight: bold;">andy@alba</span> <span style="text-decoration: blink;">_</span></div>
  
sudo gpasswd -add <username> tty
+
{{hc|~/.bashrc|
 +
<nowiki># Arch latest news
 +
if [ "$PS1" ] && [[ $(ping -c1 www.google.com 2>&-) ]]; then
 +
# The characters "&pound;, &sect;" are used as metacharacters. They should not be encountered in a feed...
 +
echo -e "$(echo $(curl --silent https://www.archlinux.org/feeds/news/ | sed -e ':a;N;$!ba;s/\n/ /g') | \
 +
sed -e 's/&amp;amp;/\&amp;/g
 +
s/&amp;lt;\|&amp;#60;/&lt;/g
 +
s/&amp;gt;\|&amp;#62;/&gt;/g
 +
s/&lt;\/a&gt;/&pound;/g
 +
s/href\=\"/&sect;/g
 +
s/&lt;title&gt;/\\n\\n\\n  :: \\e[01;31m/g; s/&lt;\/title&gt;/\\e[00m ::\\n/g
 +
s/&lt;link&gt;/ [ \\e[01;36m/g; s/&lt;\/link&gt;/\\e[00m ]/g
 +
s/&lt;description&gt;/\\n\\n\\e[00;37m/g; s/&lt;\/description&gt;/\\e[00m\\n\\n/g
 +
s/&lt;p\( [^&gt;]*\)\?&gt;\|&lt;br\s*\/\?&gt;/\n/g
 +
s/&lt;b\( [^&gt;]*\)\?&gt;\|&lt;strong\( [^&gt;]*\)\?&gt;/\\e[01;30m/g; s/&lt;\/b&gt;\|&lt;\/strong&gt;/\\e[00;37m/g
 +
s/&lt;i\( [^&gt;]*\)\?&gt;\|&lt;em\( [^&gt;]*\)\?&gt;/\\e[41;37m/g; s/&lt;\/i&gt;\|&lt;\/em&gt;/\\e[00;37m/g
 +
s/&lt;u\( [^&gt;]*\)\?&gt;/\\e[4;37m/g; s/&lt;\/u&gt;/\\e[00;37m/g
 +
s/&lt;code\( [^&gt;]*\)\?&gt;/\\e[00m/g; s/&lt;\/code&gt;/\\e[00;37m/g
 +
s/&lt;a[^&sect;|t]*&sect;\([^\"]*\)\"[^&gt;]*&gt;\([^&pound;]*\)[^&pound;]*&pound;/\\e[01;31m\2\\e[00;37m \\e[01;34m[\\e[00;37m \\e[04m\1\\e[00;37m\\e[01;34m ]\\e[00;37m/g
 +
s/&lt;li\( [^&gt;]*\)\?&gt;/\n \\e[01;34m*\\e[00;37m /g
 +
s/&lt;!\[CDATA\[\|\]\]&gt;//g
 +
s/\|&gt;\s*&lt;//g
 +
s/ *&lt;[^&gt;]\+&gt; */ /g
 +
s/[&lt;&gt;&pound;&sect;]//g')\n\n";
 +
fi</nowiki>}}
  
Now bash will execute the DEBUG trap every time before running a command. We have to echo the reset sequence directly to the terminal device (as reported by tty), otherwise the sequence would become part of the command output (and thus part of any redirected data). To be able to write to the terminal device we need to be part of the tty group.
+
Чтобы получить только самую последнюю новость, воспользуйтесь этим:
 +
 
 +
{{bc|<nowiki># Arch latest news
 +
if [ "$PS1" ] && [[ $(ping -c1 www.google.com 2>&-) ]]; then
 +
# The characters "&pound;, &sect;" are used as metacharacters. They should not be encountered in a feed...
 +
echo -e "$(echo $(curl --silent https://www.archlinux.org/feeds/news/ | awk ' NR == 1 {while ($0 !~ /<\/item>/) {print;getline} sub(/<\/item>.*/,"</item>") ;print}' | sed -e ':a;N;$!ba;s/\n/ /g') | \
 +
sed -e 's/&amp;amp;/\&amp;/g
 +
s/&amp;lt;\|&amp;#60;/&lt;/g
 +
s/&amp;gt;\|&amp;#62;/&gt;/g
 +
s/&lt;\/a&gt;/&pound;/g
 +
s/href\=\"/&sect;/g
 +
s/&lt;title&gt;/\\n\\n\\n  :: \\e[01;31m/g; s/&lt;\/title&gt;/\\e[00m ::\\n/g
 +
s/&lt;link&gt;/ [ \\e[01;36m/g; s/&lt;\/link&gt;/\\e[00m ]/g
 +
s/&lt;description&gt;/\\n\\n\\e[00;37m/g; s/&lt;\/description&gt;/\\e[00m\\n\\n/g
 +
s/&lt;p\( [^&gt;]*\)\?&gt;\|&lt;br\s*\/\?&gt;/\n/g
 +
s/&lt;b\( [^&gt;]*\)\?&gt;\|&lt;strong\( [^&gt;]*\)\?&gt;/\\e[01;30m/g; s/&lt;\/b&gt;\|&lt;\/strong&gt;/\\e[00;37m/g
 +
s/&lt;i\( [^&gt;]*\)\?&gt;\|&lt;em\( [^&gt;]*\)\?&gt;/\\e[41;37m/g; s/&lt;\/i&gt;\|&lt;\/em&gt;/\\e[00;37m/g
 +
s/&lt;u\( [^&gt;]*\)\?&gt;/\\e[4;37m/g; s/&lt;\/u&gt;/\\e[00;37m/g
 +
s/&lt;code\( [^&gt;]*\)\?&gt;/\\e[00m/g; s/&lt;\/code&gt;/\\e[00;37m/g
 +
s/&lt;a[^&sect;|t]*&sect;\([^\"]*\)\"[^&gt;]*&gt;\([^&pound;]*\)[^&pound;]*&pound;/\\e[01;31m\2\\e[00;37m \\e[01;34m[\\e[00;37m \\e[04m\1\\e[00;37m\\e[01;34m ]\\e[00;37m/g
 +
s/&lt;li\( [^&gt;]*\)\?&gt;/\n \\e[01;34m*\\e[00;37m /g
 +
s/&lt;!\[CDATA\[\|\]\]&gt;//g
 +
s/\|&gt;\s*&lt;//g
 +
s/ *&lt;[^&gt;]\+&gt; */ /g
 +
s/[&lt;&gt;&pound;&sect;]//g')\n\n";
 +
fi</nowiki>}}
 +
 
 +
=== Просмотр цветов ===
 +
 
 +
Страница по адресу http://ascii-table.com/ansi-escape-sequences.php описывает некоторые доступные цветовые последовательности. Следующая Bash функция отображает таблицу с готовыми к копированию управляющими кодами.
 +
 
 +
{{hc|~/.bashrc|<nowiki>
 +
colors() {
 +
local fgc bgc vals seq0
 +
 
 +
printf "Color escapes are %s\n" '\e[${value};...;${value}m'
 +
printf "Values 30..37 are \e[33mforeground colors\e[m\n"
 +
printf "Values 40..47 are \e[43mbackground colors\e[m\n"
 +
printf "Value  1 gives a  \e[1mbold-faced look\e[m\n\n"
 +
 
 +
# foreground colors
 +
for fgc in {30..37}; do
 +
# background colors
 +
for bgc in {40..47}; do
 +
fgc=${fgc#37} # white
 +
bgc=${bgc#40} # black
 +
 
 +
vals="${fgc:+$fgc;}${bgc}"
 +
vals=${vals%%;}
 +
 
 +
seq0="${vals:+\e[${vals}m}"
 +
printf "  %-9s" "${seq0:-(default)}"
 +
printf " ${seq0}TEXT\e[m"
 +
printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
 +
done
 +
echo; echo
 +
done
 +
}
 +
</nowiki>}}
 +
 
 +
=== Раскрашенное git приглашение ===
 +
 
 +
Укажите {{ic|/usr/share/git/completion/git-prompt.sh}} вашему шеллу:
 +
 
 +
{{hc|~/.bashrc|
 +
source /usr/share/git/completion/git-prompt.sh
 +
}}
 +
 
 +
и используйте {{ic|__git_ps1}} внутри {{ic|PS1}} или {{ic|PROMPT_COMMAND}}. Смотрите [http://ithaca.arpinum.org/2013/01/02/git-prompt.html Don't Reinvent the Wheel] для подробностей.
 +
 
 +
=== Раскрашенные существующие бесцветные приглашения ===
 +
 
 +
Добавьте в свой {{ic|~/.bashrc}}:
 +
 
 +
{{hc|~/.bashrc|<nowiki>
 +
# Colorize prompts
 +
for i in {1..4}; do
 +
PSi="PS$i"
 +
export $PSi="\[\e[1;37m\]${!PSi}\[\e[0m\]"
 +
done
 +
unset PSi
 +
unset i
 +
</nowiki>}}
  
'''This is a bit of a hack, so use it at your own risk.'''
+
== Смотрите также ==
  
==External links==
+
* Community examples and screenshots in the Forum thread: [https://bbs.archlinux.org/viewtopic.php?id=50885 What's your PS1?]
* Forum Discussions:
+
* The original ''not modified'' Gentoo's {{ic|/etc/bash.bashrc}} file can be found [http://www.jeremysands.com/archlinux/gentoo-bashrc-2008.0 here]{{Dead link|2014|08|05}}. See also the {{AUR|gentoo-bashrc}} package from [[AUR]].
** [http://bbs.archlinux.org/viewtopic.php?id=1817 BASH prompt]
+
* tput(1)
** [http://bbs.archlinux.org/viewtopic.php?id=50885 What's your PS1?]
+
** [http://wiki.bash-hackers.org/scripting/terminalcodes tput reference on bash-hackers.org]
* http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
+
** [http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html Colours and Cursor Movement With tput]
 +
* [http://xcolors.net/ Nice Xresources color schemes collection]
 +
* [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html Bash Prompt HOWTO]
 
* [http://gilesorr.com/bashprompt/prompts/index.html Giles Orr's collection of sample prompts]
 
* [http://gilesorr.com/bashprompt/prompts/index.html Giles Orr's collection of sample prompts]
 +
* [http://misc.flogisoft.com/bash/tip_colors_and_formatting Bash tips: Colors and formatting]

Latest revision as of 08:43, 6 February 2016

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Color Bash Prompt. Дата последней синхронизации: 2015-07-21. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Существуют различные возможности настройки строки приглашения Bash'а (PS1), которые могут сделать работу в командной строке комфортней и продуктивней. Например, можно добавить дополнительную информацию или цвет, чтобы приглашение ввода можно было легко обнаружить среди остального текста.

В этой статье рассказывается как настроить персональное приглашение для обычного пользователя.

Применение настроек

Чтобы применить изменения, сделанные в файле .bashrc, без перезапуска shell, запустите команду:

$ source ~/.bashrc

Базовые приглашения

Следующие настройки полезны для визуального различия приглашения root пользователя от приглашений обычных пользователей.

Обычный пользователь

Зелёное приглашение для обычных пользователей:

[chiri@zetsubou ~]$ _
~/.bashrc
#PS1='[\u@\h \W]\$ '  # Default
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '

Root

Красное приглашение для root (скопируйте из /etc/skel/, если ещё не сделали этого):

[root@zetsubou ~]# _
/root/.bashrc
#PS1='[\u@\h \W]\$ '  # Default
PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '

Профессиональные приглашения

Обычный пользователь

Зелёное с синим приглашение для обычных пользователей:

chiri ~/docs $ echo "sample output text"
sample output text
chiri ~/docs $ _
PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'

Этот пример предоставляет очень приятное цветное приглашение и тему консоли с ярко-белым цветом текста.

Вышеописанная строка содержит управляющие последовательности для цветового набора (начало окраски: \[\e[color\], конец окраски: \[\e[m\]) и информационные заполнители:

  • \u - Имя пользователя. Исходное приглашение также содержит \h, который печатает имя хоста.
  • \w - Текущий абсолютный путь. Используйте \W для текущего относительного пути.
  • \$ - Символ приглашения (например, # для root, $ для обычных пользователей).
  • \[ и \] - Эти теги должны обрамлять цветовые коды, чтобы bash понимал как правильно позиционировать курсор.

Последняя цветовая управляющая последовательность \[\e[1;37m\] не закрыта, поэтому весь оставшийся текст (всё что вы набираете в терминале, вывод программ и т.д.) будет окрашено в этот (ярко белый) цвет. Вы можете захотеть изменить этот цвет или удалить последнюю управляющую последовательность для того, чтобы оставить последующий вывод в неизменном цвете.

Root

Красное с синим приглашение для root:

root ~/docs # echo "sample output text"
sample output text
root ~/docs # _
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\]'

Этот пример предоставляет красное выделение и зелёный цвет текста в консоли.

Максимальные приглашения

Статус нагрузки/памяти для 256colors

Это даже не предел. Вместо использования sed для парсинга загрузки памяти и нагрузки (используя опцию -u для non-buffering) и встроенной команды history для сохранения вашей истории в HISTFILE после каждой команды, что может быть очень полезно, если у вас проблемы с вылетами оболочек или дочерних оболочек, этот пример по сути заставляет BASH печатать переменные, которые ему уже известны, таким обоазом делая его экстремально быстрым по сравнению с приглашениями, использующими не-встроенные команды.

Это приглашение из статьи BASH Power Prompt с AskApache.com, в которой разбираются подробности. Это особенно полезно для тех, кто хочет понять 256 цветные терминалы, ncurses, termcap и terminfo.

Этот пример для 256 цветных терминалов, из которых произошли \033[38;5;22m управляющие последовательности.

802/1024MB      1.28 1.20 1.13 3/94 18563
[5416:17880 0:70] 05:35:50 Wed Apr 21 [srot@host.sqpt.net:/dev/pts/0 +1] ~
(1:70)$ _
PROMPT_COMMAND='history -a;echo -en "\033[m\033[38;5;2m"$(( $(sed -nu "s/MemFree:[\t ]\+\([0-9]\+\) kB/\1/p" /proc/meminfo)/1024))"\033[38;5;22m/"$(($(sed -nu "s/MemTotal:[\t ]\+\([0-9]\+\) kB/\1/Ip" /proc/meminfo)/1024 ))MB"\t\033[m\033[38;5;55m$(< /proc/loadavg)\033[m"'
PS1='\[\e[m\n\e[1;30m\][$$:$PPID \j:\!\[\e[1;30m\]]\[\e[0;36m\] \T \d \[\e[1;30m\][\[\e[1;34m\]\u@\H\[\e[1;30m\]:\[\e[0;37m\]${SSH_TTY} \[\e[0;32m\]+${SHLVL}\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n($SHLVL:\!)\$ '

Список цветов для приглашений и Bash

Добавьте это в ваш(и) Bash файл(ы), чтобы задать цвета для приглашений и команд:

txtblk='\e[0;30m' # Black - Обычный
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Жирный
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Подчёркнутый
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Фоновый
bakred='\e[41m'   # Red
bakgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

Или если вы предпочитаете названия цветов, вы сможете писать их без необходимости их вычисления и желания высоко интенсивных цветов:

# Сброс
Color_Off='\e[0m'       # Text Reset

# Обычные цвета
Black='\e[0;30m'        # Black
Red='\e[0;31m'          # Red
Green='\e[0;32m'        # Green
Yellow='\e[0;33m'       # Yellow
Blue='\e[0;34m'         # Blue
Purple='\e[0;35m'       # Purple
Cyan='\e[0;36m'         # Cyan
White='\e[0;37m'        # White

# Жирные
BBlack='\e[1;30m'       # Black
BRed='\e[1;31m'         # Red
BGreen='\e[1;32m'       # Green
BYellow='\e[1;33m'      # Yellow
BBlue='\e[1;34m'        # Blue
BPurple='\e[1;35m'      # Purple
BCyan='\e[1;36m'        # Cyan
BWhite='\e[1;37m'       # White

# Подчёркнутые
UBlack='\e[4;30m'       # Black
URed='\e[4;31m'         # Red
UGreen='\e[4;32m'       # Green
UYellow='\e[4;33m'      # Yellow
UBlue='\e[4;34m'        # Blue
UPurple='\e[4;35m'      # Purple
UCyan='\e[4;36m'        # Cyan
UWhite='\e[4;37m'       # White

# Фоновые
On_Black='\e[40m'       # Black
On_Red='\e[41m'         # Red
On_Green='\e[42m'       # Green
On_Yellow='\e[43m'      # Yellow
On_Blue='\e[44m'        # Blue
On_Purple='\e[45m'      # Purple
On_Cyan='\e[46m'        # Cyan
On_White='\e[47m'       # White

# Высоко Интенсивные
IBlack='\e[0;90m'       # Black
IRed='\e[0;91m'         # Red
IGreen='\e[0;92m'       # Green
IYellow='\e[0;93m'      # Yellow
IBlue='\e[0;94m'        # Blue
IPurple='\e[0;95m'      # Purple
ICyan='\e[0;96m'        # Cyan
IWhite='\e[0;97m'       # White

# Жирные Высоко Интенсивные
BIBlack='\e[1;90m'      # Black
BIRed='\e[1;91m'        # Red
BIGreen='\e[1;92m'      # Green
BIYellow='\e[1;93m'     # Yellow
BIBlue='\e[1;94m'       # Blue
BIPurple='\e[1;95m'     # Purple
BICyan='\e[1;96m'       # Cyan
BIWhite='\e[1;97m'      # White

# Высоко Интенсивные фоновые
On_IBlack='\e[0;100m'   # Black
On_IRed='\e[0;101m'     # Red
On_IGreen='\e[0;102m'   # Green
On_IYellow='\e[0;103m'  # Yellow
On_IBlue='\e[0;104m'    # Blue
On_IPurple='\e[0;105m'  # Purple
On_ICyan='\e[0;106m'    # Cyan
On_IWhite='\e[0;107m'   # White

Для использования в командах в окружении вашего shell:

$ echo -e "${txtblu}test"
test
$ echo -e "${bldblu}test"
test
$ echo -e "${undblu}test"
test
$ echo -e "${bakblu}test"
test
$ _
PS1="\[$txtblu\]foo\[$txtred\] bar\[$txtrst\] baz : "

Двойные кавычки позволяют разрешить переменную $color, а управляющие \[ \] вокруг них позволяют не учитывать их при расчёте количества символов, поэтому позиция курсора будет верной.

Примечание: Если у вас возникает преждевременный перенос строки при наборе команды, скорее всего причиной является пропущенные управляющие последовательности (\[ \]).

Прерывания приглашения

Некоторые прерывания приглашения Bash перечислены в man странице:

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

	The command number and the history number are usually different:
	the history number of a command is its position in the history
	list, which may include commands restored from the history file
	(see HISTORY below), while the command number is the position in
	the sequence of commands executed during the current shell session.
	After the string is decoded, it is expanded via parameter
	expansion, command substitution, arithmetic expansion, and quote
	removal, subject to the value of the promptvars shell option (see
	the description of the shopt command under SHELL BUILTIN COMMANDS
	below).

Позиционирование курсора

Эта последовательность устанавливает позицию курсора:

\[\033[<row>;<column>f\]

Текущая позиция может быть сохранена так:

\[\033[s\]

Чтобы восстановить позицию, используйте:

\[\033[u\]


Следующий пример использует эти последовательности, чтобы отображать время в правом верхнем углу:

PS1=">\[\033[s\]\[\033[1;\$((COLUMNS-5))f\]\$(date +%H:%M)\[\033[u\]"

Переменная окружения COLUMNS содержит число столбцов в терминале. В примере выше из этого значения отнимается 5, чтобы выровнять 5-символьный вывод команды date по правому краю.

Отображение кода возврата

Используйте следующий промпт, чтобы видеть какое значение вернула последняя команда:

0 ;) : true
0 ;) : false
1 ;( :
#return value visualisation
PS1="\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[0;32m\];)\"; else echo \"\[\033[0;31m\];(\"; fi)\[\033[00m\] : "

Ноль - зелёный смайлик, а не ноль - красный. Таким образом, ваше приглашение будет со смайликом, если последняя операция была успешной.

Но вы возможно также захотите использовать имя пользователя и хоста, например так:

0 ;) andy@alba ~ $ true
0 ;) andy@alba ~ $ false
1 ;( andy@alba ~ $ _
#return value visualisation
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\];)\"; else echo \"\[\033[01;31m\];(\"; fi) $(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "

Или, если вы хотите создать ваш промпт с использованием юникод-символа для статуса ноль и юникод-символ для статуса не ноль:

0 ✓ andy@alba ~ $ true
0 ✓ andy@alba ~ $ false
1 andy@alba ~ $ I\ will\ try\ to\ type\ a\ wrong\ command...
bash: I will try to type a wrong command...: command not found
127 andy@alba ~ $ _
#return value visualisation
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\]\342\234\223\"; else echo \"\[\033[01;31m\]\342\234\227\"; fi) $(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "

Альтернативно, это можно сделать более читабельно при помощи PROMPT_COMMAND:

set_prompt () {
    Last_Command=$? # Must come first!
    Blue='\[\e[01;34m\]'
    White='\[\e[01;37m\]'
    Red='\[\e[01;31m\]'
    Green='\[\e[01;32m\]'
    Reset='\[\e[00m\]'
    FancyX='\342\234\227'
    Checkmark='\342\234\223'

    # Add a bright white exit status for the last command
    PS1="$White\$? "
    # If it was successful, print a green check mark. Otherwise, print
    # a red X.
    if [[ $Last_Command == 0 ]]; then
        PS1+="$Green$Checkmark "
    else
        PS1+="$Red$FancyX "
    fi
    # If root, just print the host in red. Otherwise, print the current user
    # and host in green.
    if [[ $EUID == 0 ]]; then
        PS1+="$Red\\h "
    else
        PS1+="$Green\\u@\\h "
    fi
    # Print the working directory and prompt marker in blue, and reset
    # the text color to the default.
    PS1+="$Blue\\w \\\$$Reset "
}
PROMPT_COMMAND='set_prompt'

Вот пример, который показывает статус ошибки только в случае не нулевого статуса:

PROMPT_COMMAND='es=$?; [[ $es -eq 0 ]] && unset error || error=$(echo -e "\e[1;41m $es \e[40m")'
PS1="${error} ${PS1}"

Советы и подсказки

Разные цвета при вводе текста и при выводе

Если вы не сбросили цвет текста в конце вашего промпта, то этим цветом будут отображаться как текст который вы вводите, так и текст консоли. Если вы хотите задать определённый цвет для ввода, но при этом чтобы цвет вывода команд остался по умолчанию, вам нужно будет сбросить цвет после нажатия Enter, но до того, как какая-либо команда будет запущена. Вы можете сделать это установив DEBUG trap, например так:

~/.bashrc
trap 'printf "\e[0m" "$_"' DEBUG

Случайные цитаты при входе

Для коричневого приглашения Fortune добавьте:

~/.bashrc
[[ "$PS1" ]] && echo -e "\e[00;33m$(/usr/bin/fortune)\e[00m"

Раскрашенные последние новости Arch при входе

Чтобы читать 10 latestпоследних пунктов новостей с Arch official website, пользователь grufo написал маленький и цветной скрипт для извлечения RSS (scrollable):

   :: Arch Linux: Recent news updates ::
 [ https://www.archlinux.org/news/ ]

The latest and greatest news from the Arch Linux distribution.

 en-us Sun, 04 Nov 2012 16:09:46 +0000


   :: End of initscripts support ::
 [ https://www.archlinux.org/news/end-of-initscripts-support/ ]


Tom Gundersen wrote:
As systemd is now the default init system, Arch Linux is receiving minimal testing on initscripts systems. Due to a lack of resources and interest, we are unlikely to work on fixing initscripts-specific bugs, and may close them as WONTFIX.
We therefore strongly encourage all users to migrate to systemd as soon as possible. See the systemd migration guide [ https://wiki.archlinux.org/index.php/Systemd ].
To ease the transition, initscripts support will remain in the official repositories for the time being, unless otherwise stated. As of January 2013, we will start removing initscripts support (e.g., rc scripts) from individual packages without further notice.

 Tom Gundersen Sun, 04 Nov 2012 16:09:46 +0000 tag:www.archlinux.org,2012-11-04:/news/end-of-initscripts-support/


   :: November release of install media available ::
 [ https://www.archlinux.org/news/november-release-of-install-media-available/ ]


Pierre Schmitz wrote:
The latest snapshot of our install and rescue media can be found on our Download [ https://www.archlinux.org/download/ ] page. The 2012.11.01 ISO image mainly contains minor bug fixes, cleanups and new packages compared to the previous one:
 * First media with Linux 3.6
 * copytoram=n can be used to not copy the image to RAM on network boot. This is probably unreliable but an option for systems with very low memory.
 * cowfile_size boot parameter mainly for persistent COW on VFAT. See the README [ https://projects.archlinux.org/archiso.git/plain/docs/README.bootparams?id=v4 ] file for details.

 Pierre Schmitz Fri, 02 Nov 2012 17:54:15 +0000 tag:www.archlinux.org,2012-11-02:/news/november-release-of-install-media-available/


   :: Bug Squashing Day: Saturday 17th November ::
 [ https://www.archlinux.org/news/bug-squashing-day-saturday-17th-november/ ]


Allan McRae wrote:
The number of bugs in the Arch Linux bug tracker is creeping up so it is time for some extermination.
This is a great way for the community to get involved and help the Arch Linux team. The process is simple. First look at a bug for your favorite piece of software in the bug tracker and check if it still occurs. If it does, check the upstream project for a fix and test it to confirm it works. If there is no fix available, make sure the bug has been filed in the upstream tracker.
Join us on the #archlinux-bugs IRC channel. We are spread across timezones, so people should be around all day.

 Allan McRae Thu, 01 Nov 2012 12:28:51 +0000 tag:www.archlinux.org,2012-11-01:/news/bug-squashing-day-saturday-17th-november/


   :: ConsoleKit replaced by logind ::
 [ https://www.archlinux.org/news/consolekit-replaced-by-logind/ ]


Allan McRae wrote:
With GNOME 3.6, polkit and networkmanager moving to [extra], ConsoleKit has now been removed from the repositories. Any package that previously depended on it now relies on systemd-logind instead. That means that the system must be booted with systemd to be fully functional.
In addition to GNOME, both KDE and XFCE are also affected by this change.

 Allan McRae Tue, 30 Oct 2012 22:17:39 +0000 tag:www.archlinux.org,2012-10-30:/news/consolekit-replaced-by-logind/


   :: systemd is now the default on new installations ::
 [ https://www.archlinux.org/news/systemd-is-now-the-default-on-new-installations/ ]


Thomas Bächler wrote:
The base group now contains the systemd-sysvcompat package. This means that all new installations will boot with systemd by default.
As some packages still lack native systemd units, users can install the initscripts package and use the DAEMONS array in /etc/rc.conf to start services using the legacy rc.d scripts.
This change does not affect existing installations. For the time being, the initscripts and sysvinit packages remain available from our repositories. However, individual packages may now start relying on the system being booted with systemd.
Please refer to the wiki [ https://wiki.archlinux.org/index.php/Systemd ] for how to transition an existing installation to systemd.

 Thomas Bächler Sat, 13 Oct 2012 09:29:38 +0000 tag:www.archlinux.org,2012-10-13:/news/systemd-is-now-the-default-on-new-installations/


   :: Install medium 2012.10.06 introduces systemd ::
 [ https://www.archlinux.org/news/install-medium-20121006-introduces-systemd/ ]


Pierre Schmitz wrote:
The October release of the Arch Linux install medium is available for Download [ https://www.archlinux.org/download/ ] and can be used for new installs or as a rescue system. It contains a set of updated packages and the following notable changes:
 * systemd is used to boot up the live system.
 * initscripts are no longer available on the live system but are still installed by default on the target system. This is likely to change in the near future.
 * EFI boot and setup has been simplified.
 * gummiboot is used to display a menu on EFI systems.
 * The following new packages are available on the live system: ethtool, fsarchiver, gummiboot-efi, mc, partclone, partimage, refind-efi, rfkill, sudo, testdisk, wget, xl2tpd

 Pierre Schmitz Sun, 07 Oct 2012 16:58:03 +0000 tag:www.archlinux.org,2012-10-07:/news/install-medium-20121006-introduces-systemd/


   :: New install medium 2012.09.07 ::
 [ https://www.archlinux.org/news/new-install-medium-20120907/ ]


Pierre Schmitz wrote:
As is customary by now there is a new install medium available at the beginning of this month. The live system can be downloaded from Download [ https://www.archlinux.org/download/ ] and be used for new installs or as a rescue system.
In addition to a couple of updated packages and bug fixes the following changes stand out:
 * First medium with Linux 3.5 (3.5.3)
 * The script boot parameter works again (FS#31022 [ https://bugs.archlinux.org/task/31022 ])
 * When booting via PXE and NFS or NBD the ISO will be copied to RAM to ensure a more stable usage.
 * The live medium contains usb_modeswitch and wvdial which e.g. allows to establish a network connection using an UMTS USB dongle
 * Furthermore the newest versions of initscripts, systemd and netcfg are included.

 Pierre Schmitz Sat, 08 Sep 2012 09:48:52 +0000 tag:www.archlinux.org,2012-09-08:/news/new-install-medium-20120907/


   :: Fontconfig 2.10.1 update - manual intervention required ::
 [ https://www.archlinux.org/news/fontconfig-2101-update-manual-intervention-required/ ]


Andreas Radke wrote:
The fontconfig 2.10.1 update overwrites symlinks created by the former package version. These symlinks need to be removed before the update:

rm /etc/fonts/conf.d/20-unhint-small-vera.conf
rm /etc/fonts/conf.d/20-fix-globaladvance.conf
rm /etc/fonts/conf.d/29-replace-bitmap-fonts.conf
rm /etc/fonts/conf.d/30-metric-aliases.conf
rm /etc/fonts/conf.d/30-urw-aliases.conf
rm /etc/fonts/conf.d/40-nonlatin.conf
rm /etc/fonts/conf.d/45-latin.conf
rm /etc/fonts/conf.d/49-sansserif.conf
rm /etc/fonts/conf.d/50-user.conf
rm /etc/fonts/conf.d/51-local.conf
rm /etc/fonts/conf.d/60-latin.conf
rm /etc/fonts/conf.d/65-fonts-persian.conf
rm /etc/fonts/conf.d/65-nonlatin.conf
rm /etc/fonts/conf.d/69-unifont.conf
rm /etc/fonts/conf.d/80-delicious.conf
rm /etc/fonts/conf.d/90-synthetic.conf
pacman -Syu fontconfig

Main systemwide configuration should be done by symlinks (especially for autohinting, sub-pixel and lcdfilter):

cd /etc/fonts/conf.d
ln -s ../conf.avail/XX-foo.conf

Also check Font Configuration [ https://wiki.archlinux.org/index.php/Font_Configuration ] and Fonts [ https://wiki.archlinux.org/index.php/Fonts ].

 Andreas Radke Thu, 06 Sep 2012 13:54:23 +0000 tag:www.archlinux.org,2012-09-06:/news/fontconfig-2101-update-manual-intervention-required/


   :: netcfg-2.8.9 drops deprecated rc.conf compatibility ::
 [ https://www.archlinux.org/news/netcfg-289-drops-initscripts-compatibility/ ]


Florian Pritz wrote:
Users of netcfg should configure all interfaces in /etc/conf.d/netcfg rather than /etc/rc.conf.

 Florian Pritz Sat, 11 Aug 2012 20:00:02 +0000 tag:www.archlinux.org,2012-08-11:/news/netcfg-289-drops-initscripts-compatibility/


   :: Install media 2012.08.04 available ::
 [ https://www.archlinux.org/news/install-media-20120804-available/ ]


Pierre Schmitz wrote:
The August snapshot of our live and install media comes with updated packages and the following changes on top of the previous ISO image [ /news/install-media-20120715-released/ ]:
 * GRUB 2.0 instead of the legacy 0.9 version is available.
 * The Installation Guide [ https://wiki.archlinux.org/index.php/Installation_Guide ] can be found at /root/install.txt.
 * ZSH with Grml's configuration [ http://grml.org/zsh/ ] is used as interactive shell to provide a user friendly and more convenient environment. This includes completion support for pacstrap, arch-chroot, pacman and most other tools.
 * The network daemon is started by default which will automatically setup your network if DHCP is available.
Note that all these changes only affect the live system and not the base system you install using pacstrap. The ISO image can be downloaded from our download page [ /download/ ]. The next snapshot is scheduled for September.

 Pierre Schmitz Sat, 04 Aug 2012 17:24:30 +0000 tag:www.archlinux.org,2012-08-04:/news/install-media-20120804-available/


andy@alba _
~/.bashrc
# Arch latest news
if [ "$PS1" ] && [[ $(ping -c1 www.google.com 2>&-) ]]; then
	# The characters "£, §" are used as metacharacters. They should not be encountered in a feed...
	echo -e "$(echo $(curl --silent https://www.archlinux.org/feeds/news/ | sed -e ':a;N;$!ba;s/\n/ /g') | \
		sed -e 's/&amp;/\&/g
		s/&lt;\|&#60;/</g
		s/&gt;\|&#62;/>/g
		s/<\/a>/£/g
		s/href\=\"/§/g
		s/<title>/\\n\\n\\n   :: \\e[01;31m/g; s/<\/title>/\\e[00m ::\\n/g
		s/<link>/ [ \\e[01;36m/g; s/<\/link>/\\e[00m ]/g
		s/<description>/\\n\\n\\e[00;37m/g; s/<\/description>/\\e[00m\\n\\n/g
		s/<p\( [^>]*\)\?>\|<br\s*\/\?>/\n/g
		s/<b\( [^>]*\)\?>\|<strong\( [^>]*\)\?>/\\e[01;30m/g; s/<\/b>\|<\/strong>/\\e[00;37m/g
		s/<i\( [^>]*\)\?>\|<em\( [^>]*\)\?>/\\e[41;37m/g; s/<\/i>\|<\/em>/\\e[00;37m/g
		s/<u\( [^>]*\)\?>/\\e[4;37m/g; s/<\/u>/\\e[00;37m/g
		s/<code\( [^>]*\)\?>/\\e[00m/g; s/<\/code>/\\e[00;37m/g
		s/<a[^§|t]*§\([^\"]*\)\"[^>]*>\([^£]*\)[^£]*£/\\e[01;31m\2\\e[00;37m \\e[01;34m[\\e[00;37m \\e[04m\1\\e[00;37m\\e[01;34m ]\\e[00;37m/g
		s/<li\( [^>]*\)\?>/\n \\e[01;34m*\\e[00;37m /g
		s/<!\[CDATA\[\|\]\]>//g
		s/\|>\s*<//g
		s/ *<[^>]\+> */ /g
		s/[<>£§]//g')\n\n";
fi

Чтобы получить только самую последнюю новость, воспользуйтесь этим:

# Arch latest news
if [ "$PS1" ] && [[ $(ping -c1 www.google.com 2>&-) ]]; then
	# The characters "£, §" are used as metacharacters. They should not be encountered in a feed...
	echo -e "$(echo $(curl --silent https://www.archlinux.org/feeds/news/ | awk ' NR == 1 {while ($0 !~ /<\/item>/) {print;getline} sub(/<\/item>.*/,"</item>") ;print}' | sed -e ':a;N;$!ba;s/\n/ /g') | \
		sed -e 's/&amp;/\&/g
		s/&lt;\|&#60;/</g
		s/&gt;\|&#62;/>/g
		s/<\/a>/£/g
		s/href\=\"/§/g
		s/<title>/\\n\\n\\n   :: \\e[01;31m/g; s/<\/title>/\\e[00m ::\\n/g
		s/<link>/ [ \\e[01;36m/g; s/<\/link>/\\e[00m ]/g
		s/<description>/\\n\\n\\e[00;37m/g; s/<\/description>/\\e[00m\\n\\n/g
		s/<p\( [^>]*\)\?>\|<br\s*\/\?>/\n/g
		s/<b\( [^>]*\)\?>\|<strong\( [^>]*\)\?>/\\e[01;30m/g; s/<\/b>\|<\/strong>/\\e[00;37m/g
		s/<i\( [^>]*\)\?>\|<em\( [^>]*\)\?>/\\e[41;37m/g; s/<\/i>\|<\/em>/\\e[00;37m/g
		s/<u\( [^>]*\)\?>/\\e[4;37m/g; s/<\/u>/\\e[00;37m/g
		s/<code\( [^>]*\)\?>/\\e[00m/g; s/<\/code>/\\e[00;37m/g
		s/<a[^§|t]*§\([^\"]*\)\"[^>]*>\([^£]*\)[^£]*£/\\e[01;31m\2\\e[00;37m \\e[01;34m[\\e[00;37m \\e[04m\1\\e[00;37m\\e[01;34m ]\\e[00;37m/g
		s/<li\( [^>]*\)\?>/\n \\e[01;34m*\\e[00;37m /g
		s/<!\[CDATA\[\|\]\]>//g
		s/\|>\s*<//g
		s/ *<[^>]\+> */ /g
		s/[<>£§]//g')\n\n";
fi

Просмотр цветов

Страница по адресу http://ascii-table.com/ansi-escape-sequences.php описывает некоторые доступные цветовые последовательности. Следующая Bash функция отображает таблицу с готовыми к копированию управляющими кодами.

~/.bashrc
colors() {
	local fgc bgc vals seq0

	printf "Color escapes are %s\n" '\e[${value};...;${value}m'
	printf "Values 30..37 are \e[33mforeground colors\e[m\n"
	printf "Values 40..47 are \e[43mbackground colors\e[m\n"
	printf "Value  1 gives a  \e[1mbold-faced look\e[m\n\n"

	# foreground colors
	for fgc in {30..37}; do
		# background colors
		for bgc in {40..47}; do
			fgc=${fgc#37} # white
			bgc=${bgc#40} # black

			vals="${fgc:+$fgc;}${bgc}"
			vals=${vals%%;}

			seq0="${vals:+\e[${vals}m}"
			printf "  %-9s" "${seq0:-(default)}"
			printf " ${seq0}TEXT\e[m"
			printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
		done
		echo; echo
	done
}

Раскрашенное git приглашение

Укажите /usr/share/git/completion/git-prompt.sh вашему шеллу:

~/.bashrc
source /usr/share/git/completion/git-prompt.sh

и используйте __git_ps1 внутри PS1 или PROMPT_COMMAND. Смотрите Don't Reinvent the Wheel для подробностей.

Раскрашенные существующие бесцветные приглашения

Добавьте в свой ~/.bashrc:

~/.bashrc
# Colorize prompts
for i in {1..4}; do
	PSi="PS$i"
	export $PSi="\[\e[1;37m\]${!PSi}\[\e[0m\]"
done
unset PSi
unset i

Смотрите также