Я хотел бы создать сценарий удара, который позволяет мне отображать файл с помощью "кошки". Вещь состоит в том, что отображение простого файла легко даже для меня, но я хотел бы случайным образом отобразить файл в папке в моем терминале так, чтобы каждый раз я открылся один, существует случайный отображенный файл.
Кто-то мог помочь мне?
править: те файлы являются просто изображениями, сделанными из символов ASCII, их размер о 2-3ko
Это - Ваши похороны... Я не беру на себя ответственности за то, что это сделает к Вашему терминалу (необходимо удостовериться, что нет никаких двоичных файлов в каталоге), ни сколько дерьма покажут в нем. Если Вы действительно хотите сделать это, можно использовать (с благодарностью для @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[@]}]}"
Я соглашаюсь с terdon, что это - Ваши похороны, но позвольте ему не быть сказанным, что мы препятствовали тому, чтобы Вы завинтили себя несколькими способами:
find /some/path -type f -print0 | shuf -zn1 | xargs -0 cat
Что это делает?
find
-print0
, shuf
-z
и xargs
-0
все объединение для контакта с NUL-разграниченным входом. Это и /
единственные символы, не позволенные в именах файлов, таким образом, это является самым безопасным для раздавания имен файлов и путей.find
произведет список всех файлов (рекурсивно) в /some/path
.shuf
переставит входные строки и произведет точно одну строку (-n1
).xargs cat
будет затем использовать ту одну строку в качестве аргумента cat
.