我想创建一个 bash 脚本,允许我使用“cat”显示文件。事实上,显示一个简单的文件对我来说很容易,但我想随机显示终端文件夹中的文件,以便每次打开一个文件时,都会显示一个随机文件。
有人能帮助我吗?
编辑:这些文件只是由 ASCII 字符组成的图像,其大小约为 2-3ko
答案1
这是你的葬礼。。。我对这会对你的终端造成什么影响不负任何责任(你需要确保目录中没有二进制文件),也不负责终端上会显示多少垃圾。如果你真的想这样做,你可以使用(感谢@DavidFoerster 和@muru 的改进):
#!/bin/bash
targetDir="/home/terdon/foo"
## Save the files in the array $files
files=( "$targetDir"/* )
## Cat a random file
cat "${files[RANDOM % ${#files[@]}]}"
答案2
我同意 terdon 的观点,这是你的葬礼,但我们别忘了,我们通过多种方式阻止了你搞砸自己:
find /some/path -type f -print0 | shuf -zn1 | xargs -0 cat
它有什么作用?
find
、-print0
和shuf
都结合起来处理 NUL 分隔的输入。 和-z
是xargs
文件名中唯一不允许使用的字符,因此它是传递文件名和路径最安全的方式。-0
/
find
将输出 (递归) 中的所有文件的列表/some/path
。shuf
将打乱输入行并输出一行(-n1
)。xargs cat
然后将使用该行作为 的参数cat
。