默认情况下不会取消引用符号链接目录

问题描述 投票:0回答:2

当我

ls
指向目录的符号链接时,
ls
只是回显目录名称。

➜  java-tutorial git:(main) ls -al
...
lrwxr-xr-x   1 josalvatorre  staff  124 Jul  9 16:17 bazel-bin -> /private/var/tmp/_bazel_josalvatorre/0614f10b8ea3a5a2198fe449cfe635ce/execroot/__main__/bazel-out/darwin_arm64-fastbuild/bin
...

➜  java-tutorial git:(main) ls /private/var/tmp/_bazel_josalvatorre/0614f10b8ea3a5a2198fe449cfe635ce/execroot/__main__/bazel-out/darwin_arm64-fastbuild/bin
ProjectRunner                    ProjectRunner.jar-0.params       ProjectRunner.jdeps              _javac
ProjectRunner-native-header.jar  ProjectRunner.jar-1.params       ProjectRunner.runfiles           external
ProjectRunner.jar                ProjectRunner.jar_manifest_proto ProjectRunner.runfiles_manifest

➜  java-tutorial git:(main) ls bazel-bin
bazel-bin

凭记忆,我几乎可以肯定这不是正常行为。当我输入在网上找到的命令时,它会导致意外的行为。这是怎么回事?

我在 M1 Mac 上使用 zsh。我用

oh-my-zsh

跟进

一些乐于助人的人指出,有取消引用选项

-H
-L
可以解决这个问题。我如何将其设置为默认行为?

macos shell command-line zsh oh-my-zsh
2个回答
0
投票

原来

ls
是别名
ls -G
。我只需要跑
unalias ls

➜  java-tutorial git:(main) ✗ unalias ls        
➜  java-tutorial git:(main) ✗ type ls
ls is /bin/ls
➜  java-tutorial git:(main) ✗ ls bazel-bin 
ProjectRunner                           ProjectRunner.jar-1.params              ProjectRunner.runfiles_manifest         libgreeter-hjar.jdeps                   libgreeter.jar-1.params
ProjectRunner-native-header.jar         ProjectRunner.jar_manifest_proto        _javac                                  libgreeter-native-header.jar            libgreeter.jar_manifest_proto
ProjectRunner.jar                       ProjectRunner.jdeps                     external                                libgreeter.jar                          libgreeter.jdeps
ProjectRunner.jar-0.params              ProjectRunner.runfiles                  libgreeter-hjar.jar                     libgreeter.jar-0.params                 src
➜  java-tutorial git:(main) ✗ ls -G bazel-bin 
bazel-bin

正如其他一些人提到的,您还可以通过

-H
-L
强制解除引用。


0
投票

对于使用 oh-my-zsh 的人:

ls -G
别名已在
~/.oh-my-zsh/lib/theme-and-appearance.zsh
中设置。

在 MacOS 上,

-G
单独提供着色,但禁用符号链接取消引用。

如果您希望

ls
自动取消引用符号链接,最简单的方法是在
.zshrc
文件底部或在
source $ZSH/oh-my-zsh.sh
行之后覆盖它。

我个人使用以下:

# Override oh-my-zsh alias
alias ls="ls -FGH"

这提供了

ls
着色、文件类型符号和符号链接取消引用。

© www.soinside.com 2019 - 2024. All rights reserved.