Linux 集装箱内的分拣顺序

Linux 集装箱内的分拣顺序,linux,bash,docker,ls,Linux,Bash,Docker,Ls,运行ls-d以列出目录,如果文件名中存在拖尾/,则按不同顺序打印目录。为什么呢?什么排序规则适用?为什么只有docker才会这样 带有尾随的/ $ docker run --rm ubuntu:16.04 /bin/bash -c "mkdir foo ; mkdir foo-bar ; ls -d foo/ foo-bar/" foo-bar/ foo/ $ docker run --rm -it ubuntu:16.04 /bin/bash -c "mkdir foo ; mkdir f

运行
ls-d
以列出目录,如果文件名中存在拖尾
/
,则按不同顺序打印目录。为什么呢?什么排序规则适用?为什么只有docker才会这样

带有尾随的
/

$ docker run --rm ubuntu:16.04 /bin/bash -c "mkdir foo ; mkdir foo-bar ; ls -d foo/ foo-bar/"

foo-bar/
foo/
$ docker run --rm -it ubuntu:16.04 /bin/bash -c "mkdir foo ; mkdir foo-bar ; ls -d foo foo-bar"

foo
foo-bar
不带尾随的
/

$ docker run --rm ubuntu:16.04 /bin/bash -c "mkdir foo ; mkdir foo-bar ; ls -d foo/ foo-bar/"

foo-bar/
foo/
$ docker run --rm -it ubuntu:16.04 /bin/bash -c "mkdir foo ; mkdir foo-bar ; ls -d foo foo-bar"

foo
foo-bar

我发现我使用
sort
命令得到了相同的行为

docker run --rm ubuntu:16.04 /bin/bash -c "echo -e 'foo/\nfoo-bar/' | sort"
但是使用
sort-d时排序顺序会发生变化

docker run --rm ubuntu:16.04 /bin/bash -c "echo -e 'foo/\nfoo-bar/' | sort -d"
感谢David为我指出了正确的方向,这是由所述的区域设置引起的

在裸ubuntu容器上,使用POSIX语言环境,它有不同的排序规则。
我通过在docker映像中安装en_US locale解决了我的问题,并再次按预期进行排序。

很有趣。
类型ls
ls--version
?ls的输出是/bin/ls。Ubuntu容器上的8.28版本可能会说得更多;但对于“如何使用Linux工具”来说,提问更合适。特别是,主机上的语言环境设置与容器中的语言环境设置几乎肯定会有所不同。@David-您被邀请参加会议。房间信息位于。这是一个地方,在这里,人们可以实时协同工作,效率高于密集的队列。我想你会很合适的。