میتوانید کاری کنید که سیستم های یونیکس‌تان عملکرد خوبی داشته باشند، در برابر خطراتی که یکپارچگی سیستم را تهدید می کنند، مقاومت کنند، در مقابل حمله هکرها مقاومت کنند، مشکلات را گزارش دهند، و کاربر هرطور با آنها رفتار کند، آنها خوب و آرام کار کنند.

اما، آیا می توانید کاری کنید که کارهای مسخره انجام دهند؟ بیایید به یک سری ابزار عجیب و غریب که احتمالاً چیزی از آنها نشنیده اید، نگاهی بیاندازیم.

Shuf

فرمان Shuf – کوتاه شده ی “Shuffle” است و خطوط فایل را از راهی تقریبا تصادفی میشناسد. مثلاً یک فایل میتواند شامل روزهای هفته باشد و می توانیم آنها را از ۵۰۴۰ راه مختلف ( ۷ * ۶ * ۵ * ۴ * ۳ * ۲ ) دوباره بچینیم. احتمالاً راه خوبی هم هست که مشخص کنیم طی چند هفته ی آینده نوبت کیست که شیرینی بیاورد!

$ shuf Days-of-Week

Monday

Tuesday

Wednesday

Saturday

Thursday

Sunday

Friday

$ shuf Days-of-Week

Sunday

Saturday

Wednesday

Tuesday

Thursday

Monday

Friday

نیازی نیست نتیجه ی کل shuffle را هم ببینید، میخواهید بفهمید کدامیک از همکارانتان طی هفته شیرینی می آورند؟ نیازی به کشیدن کل آن نیست. فقط خروجی را به سه فرمان shuf با گزینه ی –n مثل زیر، محدود کنید:

$ shuf -n 3 staffJamesKevinMay

میتوانید بازه ای از اعداد را هم shuffle کنید:

$ shuf -i 2-11811794210563

و میتوانید از یک بازه ی خیلی بزرگ عددی، یک سری اعداد به خصوص را انتخاب کنید:

$ shuf -n 5 -i 1-1000859521494982

Rev

فرمان rev خطوط را معکوس می کند، چه به عنوان دستور استاندارد تایید شده باشد، چه در یک فایل ذخیره شده باشد.

$ echo Hello, World! | rev!dlroW ,olleH$ rev Days-of-WeekyadnuSyadnoMyadseuTyadsendeWyadsruhTyadirFyadrutaS

Tac

فرمان tac هم تقریبا مثل فرمان معکوس است و معکوس آن کلمه cat می شود. محتوای یک فایل را نشان میدهد، ولی با ترتیب برعکس. احتمالاً خیلی وقتها ممکن است این فرمان به کار بیاید، وجود این فرمان هنوز هم برای من عجیب است.

$ tac Days-of-WeekSaturdayFridayThursdayWednesdayTuesdayMondaySunday

Sl

و اگر tac به اندازه کافی عجیب نبود، فرمان sl را هم داریم که کسانی را تنبیه کند که به جای /s اشتباهی s/ را تایپ کردند. تنبیهشان چیست؟ یک قطار ( مثلا لوکوموتیو ) که از صفحه آنها عبور می کند.

(@@) ( ) (@) ( ) @@ () @

( )

(@@@@)

( )

(@@@)

==== ________ ___________

_D _| |_______/ \__I_I_____===__|_________|

|(_)— | H\________/ | | =|___ ___|

/ | | H | | | | ||_| |_||

| | | H |__——————–| [___] |

| ________|___H__/__|_____/[][]~\_______| |

|/ | |———–I_____I [][] [] D |=======|__

__/ =| o |=-~~\ /~~\ /~~\ /~~\ ____Y___________|__|

|/-=|___|= || || || |_____/~\___/

\_/ \O=====O=====O=====O_/ \_/

Look

فرمان look میتواند اوقاتی که میخواهید کلماتی با رشته های به خصوص پیدا کنید مفید باشد. در مثال زیر، به دنبال کلماتی می گردیم که با رشته ی “fun” شروع شده باشند.

$ look fun | head -11

fun

funambulant

funambulate

funambulated

funambulating

funambulation

funambulator

funambulatory

funambule

funambulic

funambulism

اما look چیزهای دیگری را هم پیدا می کند:

$ look sandra

Sandra

sandra

Sandrakottos

فرمان look از فایل کلمات سیستم شما استفاده می کند (usr/share/dict/words) و فقط کلماتی را پیدا می کند که با رشته ی دلخواه شما “شروع” می شود. فرمان grep –i در اکثر موارد تطبیق های بیشتری پیدا می کند.

Yes

فرمان yes شما را در حلقه ای می اندازد که همان رشته را دوباره و دوباره تکرار می کند. گاهی وقت ها میتواند مفید باشد، اما به هر حال، فرمان مسخره ای به نظر می رسد. گاهی مردم از آن استفاده می کنند تا هر مقدار پاسخ “yes” ای که مورد نیاز اسکریپت باشد را تهیه کنند.

رفتار پیشفرض yes فراهم کردن حلقه ی بی انتهایی از پاسخ های “y” است:

$ yes | head -4

y

y

y

y

البته در میتوانید رشته ی مورد نظر خود را هم بگذارید:

$ yes Please loop forever | head -11Please loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop foreverPlease loop forever

Cowsay

احتمالاً عجیب ترین فرمانی که لینوکس دارد فرمان cowsay است که یک گاو را با کد ASCII نشان میدهد و هر آنچه را که شما بخواهید می گوید. اینجا یک مثال وجود دارد. توجه کنید که دکمه Escape به علامت آپستروف ( ‘ ) اجازه میدهد نمایش داده شود.

$ cowsay I don\’t moo for just anyone

_____________________________

< I don’t moo for just anyone >

—————————–

\ ^__^

\ (oo)\_______

(__)\ )\/\

||—-w |

|| ||

Factor

فرمان عجیب ولی نه چندان مسخره ی دیگر، فرمان factor است که از عددی که به آن بدهید ضریب و عامل مشترک میگیرد. الان عددی وارد کردم که دو ضریب داشت:

$ factor 33431

33431: 101 331

با فرمان expr هم می توانید عکس این کار را انجام دهید و از درست بودن آن مطمئن شوید:

$ expr 101 \* 331 33431

Figlet

آخرین فرمان عجیب که میخواهم درباره آن صحبت کنم figlet نام دارد، از تعداد کمی کاراکترهای بزرگ شده ی کیبرد استفاده میکند تا متون را مثل بنر درست کند.

$ figlet Show me!

____ _ _

/ ___|| |__ _____ __ _ __ ___ ___| |

\___ \| ‘_ \ / _ \ \ /\ / / | ‘_ _ \ / _ \ |

___) | | | | (_) \ V V / | | | | | | __/_|

|____/|_| |_|\___/ \_/\_/ |_| |_| |_|\___(_)

نکته ی خیلی جالب درباره فرمان figlet این است که چه گزینه هایی در دسترس است. یک نفر زمان زیادی گذشته تا مطمئن شود این فرمان خروجی درستی می دهد. گزینه ها شامل تفاوت فونت ها، تطبیق خطی، مجموعه کاراکترها و غیره می شود. در فرمان زیر، میگوییم از پهنای صفحه ی 40 استفاده کن و خروجی را در مرکز صفحه قرار بده.

$ figlet -w 40 -c Can you do this?

____

/ ___|__ _ _ __ _ _ ___ _ _

| | / _ | ‘_ \ | | | |/ _ \| | | |

| |__| (_| | | | | | |_| | (_) | |_| |

\____\__,_|_| |_| \__, |\___/ \__,_|

|___/

_ _ _ _ ___

__| | ___ | |_| |__ (_)__|__ \

/ _` |/ _ \ | __| ‘_ \| / __|/ /

| (_| | (_) | | |_| | | | \__ \_|

\__,_|\___/ \__|_| |_|_|___(_)

اینجا مثالی از این است که ورودی کجا از فایل گرفته می شود، فونت اسکریپت استفاده می شود، و پهنای صفحه کنترل می شود که بیش از یک روز هفته در هر خط نداشته باشیم – خروجی خلاصه می شود.

$ figlet -f script -w 60 -p < Days-of-Week

() |

/\ _ _ __| __,

/ \| | / |/ | / | / | | |

/(__/ \_/|_/ | |_/\_/|_/\_/|_/ \_/|/

/|

\|

,__ __

/| | | |

| | | __ _ _ __| __,

| | | / \_/ |/ | / | / | | |

| | |_/\__/ | |_/\_/|_/\_/|_/ \_/|/

/|

\|

به من گفته شده که figlet ( که بهار 1991 ساخته شد) به چند ماه قبل از لینوکس باز میگردد و در گستره ی وسیعی از سیستم های عامل قابل دسترسی است.

امیدوارم که این اطلاعات برای شما سرگرم کننده بوده باشد.