【发布时间】:2011-06-06 19:34:33
【问题描述】:
是否可以添加 bash 用于波浪号扩展的规则?我想让 ~data 扩展到 /data/users/me,~scratch 扩展到 /data/scratch/me 等。这可能吗,还是 bash 对“~”的控制太紧了?
谢谢,
安德鲁
【问题讨论】:
标签: bash tilde-expansion
是否可以添加 bash 用于波浪号扩展的规则?我想让 ~data 扩展到 /data/users/me,~scratch 扩展到 /data/scratch/me 等。这可能吗,还是 bash 对“~”的控制太紧了?
谢谢,
安德鲁
【问题讨论】:
标签: bash tilde-expansion
波浪号扩展与用户的主目录(或目录堆栈的内容或$PWD 或$OLDPWD)相关联。使用变量扩展、别名或函数来完成你所追求的。您还可以使用CDPATH 列出一组目录,供cd 查找目标目录。
【讨论】:
cp $DATAcp ~bind '"\eL":"\e\C-e\t\t"'; data=/some/dir/you/choose/,然后:cp $data[press Alt-Shift-L]
man bash 的“Readline 键绑定”部分。上面的bind 命令将 Meta-Shift-L (Alt-Shift-L)(Escape/Meta 是 \e)绑定到 readline 函数 shell-expand-line 的击键加上两个制表符。该函数会扩展变量(可能还有命令行上的其他内容),并且选项卡会像您自己键入它们一样启动完成。顺便说一句,您可以自己按 Ctrl-Alt-e 来获得扩展。
~user 展开到指定用户的主目录。一个讨厌的 hack 方法是创建名为 data 的用户,主目录为 /data/users/me 等。添加用户是特定于发行版的。
【讨论】:
USERSUBDIRVAR=`echo ~localadmin`"/Subdirectory/Sub Sub Directory" echo "$USERSUBDIRVAR" ➝ /Users/localadmin/Subdirectory/Sub Sub Directory