我正在尝试为某个命令别名配置可编程选项卡完成:
在命令notes
后按Tab键时,我希望shell在特定路径~/notes/notes_db/{some,files,here}
下的现有文件名中完成
在我的.cshrc.user文件中,我设置了以下complete
声明:
complete note 'p/1/`ls ~/notes/notes_db/`/'
当我通过输入note [TAB]
进行测试时,tcshell会回复:
注意[TAB]不匹配`。
我尝试了各种形式的逃避ls命令在backtics中 但我没有尝试过。
拜托,任何人都可以解释我应该如何正确地逃避这一宣言? 谢谢!
答案 0 :(得分:0)
有(至少)两个问题:
ls
的输出包含斜杠(/
),它与complete
命令的语法冲突。要绕过,请使用其他分隔符,例如@
~
不会被替换。请改用$HOME
。ls
被定义为某个别名(非常常见),则在complete
内部您希望使用无法使用ls
。因此,请使用\ls
。我们得到:
complete note 'p@1@`\ls $HOME/notes/notes_db`@'