答案1
你可以这样做:
$ set -o extendedglob -o promptsubst
$ PS1='${${${PWD/#%(#b)$HOME(|\/*)/
答案2
- 我们需要编辑该
.p10k.zsh
文件(在我的例子中,我在 zsh/oh-my-zsh/iTerm 上使用 powerlevel10k)
(或使用您选择的任何其他编辑器)。nano .p10k.zsh
- 我们搜索该行
typeset -g POWERLEVEL9K_SHORTEN_STRATEGY
并添加值,如下所示:typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_from_right
- 我们搜索该行
typeset -g POWERLEVEL9K_SHORTEN_DELIMITER
并将其设置为空:typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
- 最后我们搜索该行
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH
并添加值 1:typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
如果您使用标准 zsh 主题(没有 powerlevel10k 主题),您可以尝试以下操作:
添加~/.zshrc
:
setopt prompt_subst
PROMPT='\$ /$(printf "%c/" ${(s./.)PWD:h})${PWD:t} '
(s./.)
– 在 处分割路径/
。printf "%c/"
– 打印每个目录片段的第一个字符。${PWD:h}
– 当前目录的“头”,即除了最后一个元素之外的所有内容。${PWD:t}
– 目录路径中的“tail”/最后一个元素。
答案3
您可以创建链接
ln -s pokemon P
然后您可以执行cd pokemon
或操作cd P
,您将进入同一目录。
答案4
我做了这个测试:
pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print $i}}'
result : /opt/tools/intel/oneapi
然后是这个:
pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print substr($i,1,1)}}'
result : /o/t/i/o
所以,我们可以尝试像这样修改你的bashrc:
function generate_pwd {
pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print substr($i,1,1)}}'
}
export PS1="\$(generate_pwd) => "
它可以正常工作。