当我
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
可以解决这个问题。我如何将其设置为默认行为?
原来
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
强制解除引用。
对于使用 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
着色、文件类型符号和符号链接取消引用。