什么是带有 `->` 的 l 类型的目录以及如何导航这些文件

diE*_*cho 0 linux file-management directory-listing

我正在列出目录,它l在权限列的前面显示很少的文件/目录,这些文件/目录有两个->用星号分隔的名称*(这意味着可执行文件)。这是什么意思l

cd /opt/lampp/bin/
ll php*  
---- 
lrwxrwxrwx 1 root root       13 Nov 15 16:05 phpize -> phpize-5.5.15*
-rwxrwxrwx 1 root root     4522 Aug 20 17:23 phpize-5.5.15*
Run Code Online (Sandbox Code Playgroud)

以及如何执行这些命令或进入这些导演。我试图在终端上分别使用两个名称执行,但都返回not a directory

/opt/lampp/bin$ phpize
No command 'phpize' found, did you mean:
 Command 'phpize5' from package 'php5-dev' (main)
phpize: command not found
Run Code Online (Sandbox Code Playgroud)
/opt/lampp/bin$ cd phpize
bash: cd: phpize: Not a directory
Run Code Online (Sandbox Code Playgroud)

Ken*_*Ken 5

它是一个符号链接,也由l第一列中的指示。这是一种常见的情况,其中某事物的简单名称与具有确切版本号的“真实事物”相关联。您的所有脚本和命令都可以简单地引用/opt/lampp/bin/phpize. 安装 5.5.16 或 5.6 版后,您只需更改链接(或安装程序会为您执行此操作)。

“不是目录”:正如您提到的,星号表示那些是可执行文件,而不是目录。通常为可执行文件附加星号的东西会/为目录添加斜杠。所以cd不适用。

您在当前目录中运行可执行文件的问题很常见。简短的版本是,如果您只指定一个名称,shell 将搜索您的 PATH。您当前的目录不在 PATH 中是常见且推荐的做法。所以大家所做的只是简单地指定当前目录:./phpize

替代方法是指定整个路径,就像我上面所说的那样。无论当前目录是什么,这当然都可以工作。或者您可以将此目录添加到您的 PATH。如果你有很多目录,只有一两个你经常使用的可执行文件,那会变得很笨拙。因此,符号链接的另一个用途是创建指向这些分散的可执行文件的链接(链接到简短的无版本名称——链接可以嵌套),并将所有这些新链接放在您添加到 PATH 的单个目录中。因此,现在当您只输入名称时,shell 会搜索 PATH,找到二级链接,然后跳转到主要链接,找到确切的可执行文件,然后运行它。