2015-10-09 105 views
2

我正在使用tcsh,我正在寻找一种方式响应式工作目录,我至少想要显示最后一个文件夹名称而不是获取完整路径。如何更改我的tcsh提示以显示我当前的工作目录?

想象一下,我当前的工作目录是:

[[email protected]/home/us/Desktop/my/projects] 

然后我想显示这样的提示:

[[email protected] projects] 

目前我使用的是.cshrc文件中的文件我已经写了这样的:

alias setprompt 'set prompt="[[email protected]`hostname` `pwd`:~] $"' 
    alias setprompt 'set prompt="${LightGreen}[${yellow}suman${Light}${LightPurple}@%m ${LightGreen}:~] ${yellow}$ ${end} "' 

我没有PS1变量也不知道它做什么,我想知道.cshrc文件和.bashrc文件之间的区别。

+0

我发现,当我在那有许多深层次的目录正在工作,名字很长,在屏幕的RHS的提示是没有帮助的。就我个人而言,我拒绝将工作目录放入我的提示中。但通过一切手段去寻找关于这个话题的其他问题。 –

+0

可能重复[Bash:自定义PS1与漂亮的工作目录路径](http://stackoverflow.com/questions/5687446/bash-custom-ps1-with-nice-working-directory-path) –

+0

'.cshrc'文件由C shell使用; '.bashrc'文件被Bash使用。你可以看看,在许多其他问题中,[Bash:自定义PS1具有良好的工作目录路径](https://stackoverflow.com/questions/5687446/bash-custom-ps1-with-nice-working-directory-path) 。 –

回答

-1

编辑:我以为问题是关于bash,因为它 被标记为那样。

.cshrc是csh或tcsh的配置文件,wheras .bashrc是bash的配置文件。即使它们有类似的用途,bash和csh也只是不同的程序,所以配置一个不一定适用于另一个。

所以,你需要做的是把这样一行到你的.bashrc

PS1='...\w$ ' 

其中\w是一个神奇的代码将被扩展为当前的工作目录,你可以查找bash的手册页在“提示”部分。

一个更完整的例子,从Cygwin的bash包的默认设置拍摄,可以是这样的:

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\[email protected]\h \[\e[33m\]\w\[\e[0m\]\n\$ ' 

这将扩大到像这样的提示(但颜色,uuuh):

[email protected] currentdir $ 
+0

'并且'\ W'对应于最后一步在CWD。 – choroba

+0

对不起,我只有.cshrc文件,我cretaed一个.bashrc文件,我做了你所说的,即使当我来源.bashrc文件它给出了以下错误PS1:命令未找到 – pawankalyan

+0

但你确定你正在运行bash,而不是csh之类的?如果有疑问,运行'ps -p $$'并检查Command列是否实际引用了bash。 – matz

6

您可以使用:

set prompt = '[%[email protected]%m %c]$ ' 

%n输入用户名,%m,主机名为最后一个目录部分的第一个.%c。有大量这样的替换可用,你可以在tcsh(1)找到它们的列表,为方便起见,下面重复。

使用`pwd`将无法​​正常工作,因为cshrc文件上shelll启动只读一次,而不是在每一个目录的变化。

我想知道.cshrc文件和.bashrc文件之间的区别。

cshrc文件由cshtcsh使用的,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. 
+0

没错,''.chsrc''中的'set prompt'中'pwd'不起作用,但是在打印提示符前每次都可以使用'precmd'来设置提示符。 (例如,请参阅https://stackoverflow.com/questions/9973266/customize-csh-prompt-for-git-repo/13090820#13090820) – Randall

相关问题