我正在使用tcsh
,我正在寻找一种响应工作目录的方式,我至少想要显示最后一个文件夹名称,而不是获取完整路径。
想象一下我当前的工作目录是:
[user@hostname/home/us/Desktop/my/projects]
然后我想显示如下提示:
[user@hostname projects]
目前我正在使用我编写的文件中的.cshrc
文件:
alias setprompt 'set prompt="[suman@`hostname` `pwd`:~] $"'
alias setprompt 'set prompt="${LightGreen}[${yellow}suman${Light}${LightPurple}@%m ${LightGreen}:~] ${yellow}$ ${end} "'
我也没有PS1变量而且不知道它的作用,我想知道.cshrc
文件和.bashrc
文件之间的区别。
答案 0 :(得分:13)
您可以使用:
set prompt = '[%n@%m %c]$ '
%n
用于用户名,%m
用于主机名,直到第一个.
,%c
用于最后一个目录部分。有大量此类替换可用,您可以在tcsh(1)
中找到它们的列表,为方便起见,在下面重复。
使用`pwd`
无法正常工作,因为cshrc
文件在shelll启动时只读取一次,而不是每次更改目录。
我想知道.cshrc文件和.bashrc文件之间的区别。
cshrc
文件由csh
和tcsh
使用,bashrc
文件由bash
使用。虽然它们用于相同的目的,但它们是不同的程序(例如~/.mozilla/firefox
和~/.config/chromium
)。
%/ The current working directory.
%~ The current working directory, but with one's home direc‐
tory represented by `~' and other users' home directories
represented by `~user' as per Filename substitution.
`~user' substitution happens only if the shell has already
used `~user' in a pathname in the current session.
%c[[0]n], %.[[0]n]
The trailing component of the current working directory, or
n trailing components if a digit n is given. If n begins
with `0', the number of skipped components precede the
trailing component(s) in the format `/<skipped>trailing'.
If the ellipsis shell variable is set, skipped components
are represented by an ellipsis so the whole becomes
`...trailing'. `~' substitution is done as in `%~' above,
but the `~' component is ignored when counting trailing
components.
%C Like %c, but without `~' substitution.
%h, %!, !
The current history event number.
%M The full hostname.
%m The hostname up to the first `.'.
%S (%s)
Start (stop) standout mode.
%B (%b)
Start (stop) boldfacing mode.
%U (%u)
Start (stop) underline mode.
%t, %@
The time of day in 12-hour AM/PM format.
%T Like `%t', but in 24-hour format (but see the ampm shell
variable).
%p The `precise' time of day in 12-hour AM/PM format, with
seconds.
%P Like `%p', but in 24-hour format (but see the ampm shell
variable).
\c c is parsed as in bindkey.
^c c is parsed as in bindkey.
%% A single `%'.
%n The user name.
%N The effective user name.
%j The number of jobs.
%d The weekday in `Day' format.
%D The day in `dd' format.
%w The month in `Mon' format.
%W The month in `mm' format.
%y The year in `yy' format.
%Y The year in `yyyy' format.
%l The shell's tty.
%L Clears from the end of the prompt to end of the display or
the end of the line.
%$ Expands the shell or environment variable name immediately
after the `$'.
%# `>' (or the first character of the promptchars shell vari‐
able) for normal users, `#' (or the second character of
promptchars) for the superuser.
%{string%}
Includes string as a literal escape sequence. It should be
used only to change terminal attributes and should not move
the cursor location. This cannot be the last sequence in
prompt.
%? The return code of the command executed just before the
prompt.
%R In prompt2, the status of the parser. In prompt3, the cor‐
rected string. In history, the history string.
`%B', `%S', `%U' and `%{string%}' are available in only eight-
bit-clean shells; see the version shell variable.
The bold, standout and underline sequences are often used to
distinguish a superuser shell. For example,
> set prompt = "%m [%h] %B[%@]%b [%/] you rang? "
tut [37] [2:54pm] [/usr/accts/sys] you rang? _
If `%t', `%@', `%T', `%p', or `%P' is used, and noding is not
set, then print `DING!' on the change of hour (i.e, `:00' min‐
utes) instead of the actual time.
Set by default to `%# ' in interactive shells.
答案 1 :(得分:0)
编辑:我以为这个问题是关于bash的,因为它 被标记为。
.cshrc
是csh或tcsh的配置文件,而.bashrc
是bash的配置文件。即使它们用于类似的目的,bash和csh也只是不同的程序,因此一个的配置不一定适用于另一个。
所以你需要做的就是把这样的一行放到你的.bashrc
中PS1='...\w$ '
其中\w
是将扩展到当前工作目录的魔术代码,您可以在bash的手册页“提示”部分中查找。
从Cygwin的bash包的默认设置中获取的更完整的示例如下所示:
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
它将被扩展为这样的提示(但有颜色,uuuh):
user@machine currentdir $