Команда fortune зазвичай вважається однією з команд просто для розваги, які ви знайдете в системах Linux, але вона може виявитися корисною у деяких цікавих аспектах. Яких саме – досліджували в Network World.
Як це працює
Ймовірно, більшість користувачів Linux запускають команду fortune лише тоді, коли їм нудно. Проте насправді команда fortune більш універсальна.
Більшість відповідей на введення fortune не є справжніми пророцтвами. Замість передбачення вашого майбутнього чи навіть результатів вашого дня можна отримати цитати або легкі коментарі.
За замовчуванням відповіді на введення слова fortune надходять із будь-якої досить великої серії файлів.
Що ви можете зробити з командою долі
Якщо ви хочете, щоб ваше fortune було взяте з файлу, пов’язаного з певною тематичною областю, то можете надати його як такий аргумент:
$ fortune food
A waist is a terrible thing to mind.
-- Ziggy
Для цього корисно знати, які тематичні області доступні. Ось можливі варіанти:
$ cd /usr/share/games/fortune; ls *.dat | sed "s/.dat//" | column
art food law people sports
ascii-art fortunes linux perl startrek
bofh-excuses goedel literature pets tao
computers hitchhiker love platitudes translate-me
cookie humorists magic politics wisdom
definitions humorix-misc medicine pratchett work
disclaimer humorix-stories miscellaneous riddles zippy
drugs kernelnewbies news rules-of-acquisition
education kids osfortune science
ethnic knghtbrd paradoxum songs-poems
Якщо ви знаєте тематичні області, то можете використовувати будь-яку з них, щоб отримати fortune, який відповідає вашому настрою.
$ fortune politics
The time for action is past! Now is the time for senseless bickering.
Створення власних fortune
Якщо тематичні області не відповідають вашим потребам, не варто засмучуватися. Ви можете створити свої власні!
Насправді це дуже просто зробити. Вам потрібно створити файл із певним форматом, а потім виконати одну команду, щоб зробити дані сумісними з вимогами команди fortune.
Щоб перевірити це, ми створили файл із кількома радісними цитатами. Файл назвали «Щасливими цитатами» й додали цей вміст:
$ cat happy_quotes
You're never fully dressed without a smile.
%
Let a smile be your umbrella.
%
Happiness depends upon ourselves.
%
Happiness is when what you think, what you say, and what you do are in harmony.
Зверніть увагу, тут використані знаки % для розділення рядків тексту. Унизу вони не потрібні.
Далі запустили наведену нижче команду, щоб створити файл quotes.dat, який вимагає команда fortune.
$ strfile -c % happy_quotes happy_quotes.dat
Коли запускається команда fortune happy_quotes, надається така відповідь:
$ fortune happy_quotes
You're never fully dressed without a smile.
Інші способи використання fortune
Команда fortune пропонує ще кілька застосувань, які можуть бути неочевидними.
Так, можна використовувати команду fortune для створення випадкових текстових файлів, які використовуються для тестування різних команд і сценаріїв. Подібна команда створює невеликий файл такого типу:
$ fortune > file1
$ ls -l file1
-rw-r--r--. 1 shs shs 244 Sep 22 13:53 file1
Якщо вам потрібен більший випадково згенерований текстовий файл, просто запустіть команду, надану вище, а потім додайте до неї додаткові команди:
$ fortune >> file1
$ fortune >> file1
Також можна використовувати відповіді від команди fortune для генерування випадкових чисел. Аргумент -c команди wc дає кількість символів у кожній долі.
$ fortune | wc -c
107
$ fortune | wc -c
226
$ fortune | wc -c
86
Якщо отримані числа недостатньо великі або недостатньо випадкові для вашої мети, створіть псевдонім із кількома викликами команди fortune, які можуть вам знадобитися.
$ alias randnum='expr `fortune | wc -c` \* `fortune | wc -c` \* `fortune | wc -c`'
Ще одним варіантом є використання команди fortune для рандомізації даних для іншого використання.
Наприклад, вкладіть імена всіх своїх друзів, співробітників або учасників конкурсу в файл і використовуйте команду fortune, щоб вибрати переможця. Після того, як ви маєте імена в текстовому файлі з рядками, розділеними знаками %, можна створити свій .dat файл і провести розіграш, який залежить від випадковості команди fortune, щоб грати чесно.
$ strfile -c % friends friends.dat
"friends.dat" created
There were 15 strings
Longest string: 12 bytes
Shortest string: 4 bytes
$ fortune friends
Rebecca
Скільки fortune доступно?
Ось скрипт для підрахунку кількості fortune у каталозі /usr/share/games/fortune:
#!/bin/bash
total=0
for file in `ls /usr/share/games/fortune | grep -v "\."`
do
num=`grep % $file | wc -l`
num=`expr $num - 1`
total=`expr $total + $num`
done
Команда grep гарантує, що для підрахунку використовуються лише файли-джерела fortune (ті, у яких немає розширень файлів).
$ count_all_fortunes
16139
Дізнавайтеся й інші лайфхаки на ProIT: Використання команди comm для порівняння файлів або каталогів у Linux.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодну публікацію!