【发布时间】:2019-10-22 11:36:54
【问题描述】:
我正在重建 bash 命令ls,使用 C 作为 unix 编程书练习,并查看了各种 dir 函数。我意识到,chdir、opendir 和类似的不接受以 ~ 开头的路径名,但接受 . 或 ..
首先,为什么?其次,真正的 unix ls 命令的源代码是否可见?因为ls ~ 确实有效,我很好奇它是如何工作的。
【问题讨论】:
-
~被 shell 扩展。 -
"~" 被 bash 替换,而不是由 'ls' 或执行的任何其他命令评估。您可以致电
echo ~查看。但这意味着如果你从 bash 调用你的 ls,你也会得到主目录作为命令行参数 -
啊谢谢。是的,这是有道理的,因为我刚刚意识到,如果我将 ~ 作为命令行参数传递,它会起作用
-
@Lavair:如果您将 ~ 的扩展值(shell 扩展)作为命令行参数传递。