xeo*_*eor 3 python linux bash shell
我希望在bash或python脚本中创建与ls创建的输出相同的输出.我不是指列出目录,但ls确实能够"循环".例:
# ls
a b c d
# ls | head -n 1
a
# for i in $(ls); do echo "file: $i"; done
file: a
file: b
file: c
file: d
Run Code Online (Sandbox Code Playgroud)
怎么可以这样,并在调用它时仍然显示一行?
使用选项卡不起作用.换行符只是强制它是多行.\ 000不起作用.
# echo -e "a\tb\tc\td" | head -n 1
a b c d
echo -e "a\000b\000c\000d" | head -n 1
abcd
Run Code Online (Sandbox Code Playgroud)
猫-A不给我太多信息......
# cat -A <(ls --color=no)
a$
b$
c$
d$
# cat -A <(echo -e "a\nb\nc\nd")
a$
b$
c$
d$
Run Code Online (Sandbox Code Playgroud)
那么..如何在我的脚本中生成相同类型的输出?我在这里缺少任何控制角色吗?
诀窍是检测输出是否是终端,在这种情况下是否ls
使用列,在这种情况下,它以更简单的格式输出.
在Unix中,您应该能够使用Python的os.isatty()
函数来获取此信息.
从shell中,您可以使用该tty(1)
程序:tty -s <&1
.如果stdout是tty,则返回true,否则返回false.tty
实际上检查stdin,但<&1
你可以将stdout重定向到stdin以有效地检查stdout.