我在 Lubuntu 上使用 bash。我的 PS1(在 .bashrc 中)是:
PS1="\w> "
我喜欢它,因为我需要一直粘贴工作目录。问题是路径总是很长,而且由于我使用终结器,我只有一半的屏幕宽度可用于显示它……这很丑陋和烦人。我的命令提示符如下所示:
/this/is/a/very/long/path/that/i/want/to/make/shorter >
我想在我的环境变量中设置:
$tiavl=/this/is/a/very/long
然后我会得到:
$tiavl/path/that/i/want/to/make/shorter >
目标是在命令提示符中输入一些更短的内容,但我仍然希望能够复制粘贴并执行:
cd $tiavl/path/that/i/want/to/make/shorter
这有点像 $HOME :
~/path/that/i/want/to/make/shorter >
我知道我在哪里,我可以复制粘贴~。
谢谢。
答案1
您可以使用一个小辅助函数来完成此操作,如下所示(用作/home
示例前缀路径):
~ > pwd
/home/me
~ > tiavl=/home
~ > prompt_path () { echo ${1/#$tiavl/\$tiavl}; }
~ > export PS1="\$(prompt_path \w) > "
$tiavl/me >
这使用了一个简单的字符串操作函数(参见这里$tiavl
举个例子) ,如果路径匹配,则在函数中用文字替换路径的初始部分。
以下是如何针对多条路径更新该功能的演示。
#! /bin/sh
path1=/home
path2=/usr
path3=/var
prompt_path() {
local path
path="${1/#$path1/\$path1}"
path="${path/#$path2/\$path2}"
path="${path/#$path3/\$path3}"
echo "$path"
}
prompt_path $HOME
prompt_path /usr/local
prompt_path /var/tmp
答案2
如果您在终端中复制粘贴,您只需使用 $PWD 环境变量,它将始终显示工作目录。
echo $PWD
显示工作目录。
答案3
因此基本上你要创建一个 bash 脚本:
prompt_path
其中包含 :
#! /bin/sh
path="${1/#$path1/\$path1}"
path="${path/#$path2/\$path2}"
path="${path/#$path3/\$path3}"
echo "$path"
您将其放置在如下文件夹中:
~/.local/bin
您将 x 权限授予您的脚本:
chmod u+x prompt_path
在你的 ~/.bashrc 中:
1-将 PS1 更改为:
PS1="\$(prompt_path \w) > "
2-添加以下几行:
export path1=/home
export path2=/usr
export path3=/var
3-您指出可以从任何地方调用脚本:
export PATH=~/.local/bin:$PATH
最后你获取你的 .bashrc :
. ~/.bashrc