【问题标题】:Bash Tilde ExpansionBash 波浪号扩展
【发布时间】:2011-06-06 19:34:33
【问题描述】:

是否可以添加 bash 用于波浪号扩展的规则?我想让 ~data 扩展到 /data/users/me,~scratch 扩展到 /data/scratch/me 等。这可能吗,还是 bash 对“~”的控制太紧了?

谢谢,

安德鲁

【问题讨论】:

    标签: bash tilde-expansion


    【解决方案1】:

    波浪号扩展与用户的主目录(或目录堆栈的内容或$PWD$OLDPWD)相关联。使用变量扩展、别名或函数来完成你所追求的。您还可以使用CDPATH 列出一组目录,供cd 查找目标目录。

    【讨论】:

    • 常规变量扩展不如 bash 处理波浪号扩展的方式好。如果我想复制 cp $DATA 不会给我扩展 $DATA 中的文件。使用cp ~ 在我的主目录上执行相同的操作,结果要好得多...有什么建议吗?
    • @ajwood:试试这个:bind '"\eL":"\e\C-e\t\t"'; data=/some/dir/you/choose/,然后:cp $data[press Alt-Shift-L]
    • 太棒了!谢谢。你能解释一下它是如何工作的,或者可以给我指出正确的文件让我阅读它吗?
    • @ajwood:请参阅man bash 的“Readline 键绑定”部分。上面的bind 命令将 Meta-Shift-L (Alt-Shift-L)(Escape/Meta 是 \e)绑定到 readline 函数 shell-expand-line 的击键加上两个制表符。该函数会扩展变量(可能还有命令行上的其他内容),并且选项卡会像您自己键入它们一样启动完成。顺便说一句,您可以自己按 Ctrl-Alt-e 来获得扩展。
    • 谢谢,我去看看。它在大多数情况下都会扩展,但当变量是​​ `cd' 的 arg 时不会。这是预期的吗?
    【解决方案2】:

    ~user 展开到指定用户的主目录。一个讨厌的 hack 方法是创建名为 data 的用户,主目录为 /data/users/me 等。添加用户是特定于发行版的。

    【讨论】:

    • 我没有root权限。有什么方法可以在不实际添加用户的情况下做到这一点?
    • @ajwood 遗憾的是,我认为这是不可能的。不过,您可以尝试在superuser.com 上提问,这可能知道解决方案。
    • 将“localadmin”的波浪号扩展子目录分配给变量?... USERSUBDIRVAR=`echo ~localadmin`"/Subdirectory/Sub Sub Directory" echo "$USERSUBDIRVAR"/Users/localadmin/Subdirectory/Sub Sub Directory
    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2015-04-28
    • 2012-08-27
    • 2019-01-13
    • 1970-01-01
    相关资源
    最近更新 更多