刚刚发现未完成的手册,但它真的没什么意义.正好在高潮.我还是不明白.
Eshell是一个像普通shell一样的命令解释器,但它不会运行bash或其他任何shell.像bash一样,它有几种类型的命令:虽然bash有别名,函数,但是回退到$ PATH,eshell有别名,lisp函数,eshell函数,然后回退到$ PATH.
因此,例如,您可以运行:
~ $ find-file foo.txt
并且lisp函数find-file将以非交互方式执行(与之不同M-x),这意味着必须传入所有必需的参数.这是告诉emacs从eshell编辑文件的一种方法.它可能更快运行C-x C-f,因为它将默认为eshell当前所在的目录.
当你运行:
~ $ ls
它实际上运行该函数eshell/ls,它将在不调用的情况下获得目录列表/bin/ls.有类似的内置; 如果你跑,C-h f eshell/ <TAB>你可以得到他们的清单.
eshell内置函数的一个主要观点是使命令适合其他现有的emacs函数.例如,grep将进入*grep*缓冲区,以便您可以快速跳转到结果.
它也有别名,它有点类似于bash别名,但在处理参数的方式上有点像函数.例如,你可能会说,在bash中
alias ll='ls -l'
而在eshell你会说
alias ll ls -l '$*'
这两者意味着同样的事情.该$*方法基本上是"扩大所有参数",并引用它,它是必要的.您可以运行alias以查看您创建的所有别名.