تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

8 Alias ترمینال عجیب برای توسعه‌دهندگان


۱۴ اردیبهشت ۱۴۰۴

تقریباً همه ما این تجربه را داشته‌ایم؛ در حال دیباگ یک پروژه هستیم که ناگهان ایده‌ای جالب به ذهنمان می‌رسد. ایده‌ای که صرفاً برای رفع باگ نیست، بلکه ممکن است منجر به ساخت یکی از خاص‌ترین aliasهای ترمینال شود؛ میان‌بری که حتی می‌تواند فرآیند commit کردن را متوقف کند.

در سال‌های فعالیت در حوزه توسعه نرم‌افزار، با aliasهایی مواجه شده‌ایم که برخلاف تصور اولیه، فقط برای صرفه‌جویی در زمان نیستند. این دستورها، ابزارهایی کاربردی برای موقعیت‌های واقعی و چالش‌های روزمره هستند. می‌توان آن‌ها را به پوشیدن کت‌وشلوار رسمی در یک مهمانی دوستانه تشبیه کرد؛ اقدامی متفاوت و قابل توجه:)

در ادامه با ۸ alias کاربردی در ترمینال آشنا می‌شوید که ممکن است نه‌تنها کارایی شما را افزایش دهند، بلکه تحسین و توجه همکاران‌تان را نیز برانگیزند.

8 Alias ترمینال عجیب برای توسعه‌دهندگان

اولین Russian Roulette :Alias

این alias درست مثل بازی رولت روسی با سیستم فایل شما بازی می‌کند، وقتی اجرا می‌شود یک شانس ۱ به ۶ دارد که سعی می‌کند کل سیستم فایل شما را پاک کند.

alias roulette='[ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Click"'

و بقیه ۵/۶ هم فقط کلمه Click را چاپ می‌کند. این alias چندسال پیش سروصدای زیادی در انجمن‌ها داشت و مدیران سیستم (Sysadmin) را حسابی نگران کرد. حتی بعضی از توسعه‌دهندگان این alias را در فایل‌های تنظیمات خود کامنت کردند تا یادآوری برای انجام ندادن چنین کارهایی باشد.

حالا چرا این‌کار خطرناک است: واقعاً نیازی به توضیح نیست که شبیه‌سازی یک بازی مرگبار شانسی با داده‌هایتان چقدر می‌تواند فاجعه‌بار باشد.

راه‌حل امن‌تر: اگر به دنبال کمی تصادف بی‌خطر در برنامه‌نویسی خود هستید:

alias fortune='echo "$(curl -s https://api.quotable.io/random | jq -r ".content")"'
هر آنچه باید در مورد سرور مجازی لینوکس و کاربردها و مزایایش بدانید را می‌توانید در مقاله زیر بخوانید.
سرور مجازی لینوکس چیست؟

دومین Passive-Aggressive Git :Alias

این Alias Git به طرز فریبنده‌ای کاری می‌کند که هر بار مجبور شوید وضعیت پروژه را چک کنید، بدون اینکه خودتان خواسته باشید:

alias please='sudo'
alias sorry='git push --force'
alias fine='git commit --amend --no-edit --force'

نتیجه معمولا به‌صورت زیر می‌شود:

alias iknowwhatiamdoing='git push --force && echo "Do you though?"'

جالب است بدانید یک تیم برنامه‌نویسی بعد از یک force push فاجعه‌بار‌، این aliasها را استفاده کردند.

چرا این alias عجیب است؟ زیرا شخصیت انسانی دادن به دستورات مخرب Git، باعث پرخطر شدن آنها می‌شود.

راه‌حل بهتر: برای جلوگیری از بروز چنین مشکلاتی، پیشنهاد می‌شود قوانین محافظت از شاخه (Branch Protection Rules) را در مخزن اصلی تنظیم کنید و از دستور زیر استفاده کنید:

alias safe-push='git push --force-with-lease'

حداقل این alias قبل از اینکه همه چیز را نابود کند، چک می‌کند که تغییر جدیدی push شده است یا خیر.

سومین Auto-Blame Someone Else :Alias

این alias آنقدر عجیب است که شگفت‌زده می‌شوید. قبل از کامیت، موقتا اطلاعات کاربری گیت را به اسم و ایمیل فرد دیگری تغییر می‌دهد:(

alias git-blame-someone-else='function _git_blame_someone_else() { 
  if [[ ! -z "$1" && ! -z "$2" ]]; then
    git config --local user.name "$1";
    git config --local user.email "$2";
    echo "You\'re now committing as $1 <$2>";
  else
    echo "Usage: git-blame-someone-else \"John Doe\" \"john@example.com\"";
  fi
}; _git_blame_someone_else'

برخی تیم‌ها‌ی توسعه از این ترفند برای شوخی‌های روز اول آوریل استفاده می‌کنند:( بطوریکه ناگهان در لاگ کامیت‌ها نام‌هایی مانند Darth Vader و Batmandh یا حتی بدتر از آن استفاده می‌کنند.

چرا این کار غیر منطقی است؟ چون عملا معادل جعل امضای دیجیتال است. چنین کاری می‌تواند موجب سردرگمی جدی شود و اعتماد به تاریخچه کامیت‌ها را کاملا از بین ببرد.

روش ایمن‌تر: اگر می‌خواهید به‌‌صورت نمادین با هویت‌ها بازی کنید، این‌کار را به صورت شفاف و مشخص انجام دهید:

alias commit-as-superhero='function _commit_as_hero() { 
  HEROES=("Batman" "Superman" "Wonder Woman" "Iron Man");
  HERO=${HEROES[$RANDOM % ${#HEROES[@]}]};
  GIT_COMMITTER_NAME="$USER as $HERO" git commit -m "$*";
  echo "Committed as $HERO!";
}; _commit_as_hero'

با این روش، نام کاربری واقعی شما حفظ می‌شود و فقط یک نام مستعار مثل یک ابرقهرمان به آن اضافه می‌شود؛ هم جنبه‌ی سرگرمی دارد و هم مسئولیت‌پذیری را حفظ می‌کند.

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

چهارمین Dramatic Exit :Alias

زمانی که دیباگ کردن کدها شما را آزرده خاطر می‌کند، این alias برای مواقع بحرانی طراحی شده است. کارهایی که انجام می‌دهد:

  • به‌صورت نمایشی استعفای شما را اعلام می‌کند.
  • همه‌ی تغییرات را با یک پیام کامیت پر از نارضایتی ذخیره می‌کند.
  • سپس این تغییرات را push می‌کند.
  • یک مت گرافیکی ASCII بزرگ با عنوان I QUIT را نشان می‌دهد.
  • و در آخر ترمینال را می‌بندد! یک نوع خروج حماسی از پروژه:)
alias rage-quit='function _rage_quit() {
  echo "THAT'\''S IT, I'\''M DONE."; 
  sleep 1;
  echo "Saving work..."; 
  git add -A; 
  git commit -m "I QUIT: $*";
  echo "Pushing to remote..."; 
  git push;
  echo "Clearing terminal in disgust..."; 
  clear;
  figlet "I QUIT";
  sleep 2;
  exit; 
}; _rage_quit'

یکی از توسعه‌دهندگان ارشد در یک شرکت مالی اشاره می‌کرد که این alias به او کمک کرد تا در یک موقعیت بحرانی شغلی‌اش تصمیم اشتباهی نگیرد. به‌جای آنکه از یک پروژه پیچیده استعفا بدهد، این دستور را اجرا می‌کرد. لحظه‌ای استراحت می‌کرد و سپس با باز کردن یک ترمینال جدید، به کار خود ادامه می‌داد.

چرا این‌کار منطقی نیست؟ خودکارسازی واکنش‌های احساسی می‌تواند به طور جدی بر محیط کاری تأثیر بگذارد و فضای حرفه‌ای تیم را دچار مشکل کند.

راه‌حل معقول‌تر: به‌جای استفاده از چنین روش‌هایی، بهتر است از دستورات ساده و ملایم برای حفظ آرامش استفاده کنید:

alias save-and-break='git add -A && git commit -m "WIP: Taking a break" && git push && echo "Work saved. Go touch grass for a minute."'

پنجمین Hide The Evidence :Alias

این alias شلِ شما را به‌کل پاک می‌کند، فایل‌های تاریخچه را حذف می‌کند و تمام ردپای دستورات اجرا شده را از بین می‌برد.

alias panic='function _panic() { 
  history -c; 
  clear; 
  echo "Shredding evidence..."; 
  shred -u ~/.*history 2> /dev/null; 
  echo "Evidence shredded. You were never here."; 
}; _panic'

در رابطه با این alias یک مدیر سیستم فاش کرد که این دستور را پس از وارد کردن تصادفی پسورد دیتابیس تولیدی خود در پنجره‌ای اشتباه، ایجاد کرده است.

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

راه‌حل امن‌تر: از قابلیت‌های شل برای جلوگیری منند کد زیر از ذخیره تاریخچه استفاده کنید:

alias private-mode='export HISTIGNORE="*" && echo "History recording paused. Use exit-private-mode to resume."'
alias exit-private-mode='unset HISTIGNORE && echo "History recording resumed."'

این دستور به‌طور موقت ذخیره تارریخچه دستورات را متوقف می‌کند، بدون اینکه داده‌های قبلی را حذف کند.

ششمین Compulsive Committer :Alias

این alias در هر ۳۰ ثانیه یک کامیت جدید ایجاد می‌کند و تمام تغییرات فعلی را ذخیره می‌کند، تقریبا مثل یک قابلیت ذخیره خودکار است، اما به سبک غیر معمول و افراطی.

alias commit-every-30s='while true; do git add .; git commit -m "WIP: $(date) - Auto-commit"; sleep 30; done'

یک توسعه دهنده تازه‌کار اعتراف کرد که در طول دوره کارآموزی خود، به‌دلیل ترس از دست رفتن کد، از این alias استفاده می‌کرد. نتجیه این شد که تاریخچه‌ی Git او مانند نوار اخبار بورس مملو از صدها Commit در روز شده بود. بعضی با فاصله چندثانیه و با تغییراتی تقریبا یکسان بودند.

توسعه‌دهندگان ارشد زمانی به اهمیت این موضوع پی بردند که هنگام تلاش برای Rebase شاخه‌ای مرتبط، با مشکلی مواجه شدند که نزدیک بود سیستم آن‌ها را از کار بیندازد.

چرا غیر منطقی است: تاریخچه‌ی مخزن Git باید مسیر تکامل کد را نشان دهد، نه اینکه هر فشردن کلید را ثبت کند.

جایگزین مناسب: از Git به‌درستی استفاده کنید. تغییرات مهم و معنادار را در بازه‌های زمانی منطقی Commit کنید و اطمینان از حفظ کد از ابزارهایی مانند autosave در ویرایشگرهای کد یا نسخه‌های پشتیبان منظم استفاده کنید:

alias save-point='git add -A && git commit -m "SAVEPOINT: $(date)" && echo "Progress saved. Keep coding!"'

هفتمین Hostile Work Environment :Alias

alias build='function _hostile_build() {
  original_volume=$(osascript -e "output volume of (get volume settings)");
  osascript -e "set volume output volume 100";
  say -v "Bad News" "BUILDING PROJECT. PREPARE FOR FAILURE.";
  if eval $@; then
    say -v "Good News" "BUILD SUCCEEDED. YOU DIDN'T MESS UP THIS TIME.";
  else
    say -v "Bad News" "BUILD FAILED. AS EXPECTED.";
    afplay /System/Library/Sounds/Sosumi.aiff;
  fi;
  osascript -e "set volume output volume $original_volume";
}; _hostile_build'

این alias خاص از قابلیت تبدیل متن به گفتار در سیستم‌عامل مک سوءاستفاده می‌کند و عملا سیستم اعلان صوتی طنزآمیز و تا حدی آزاردهنده می‌سازد.

در واقع کاری که انجام می‌دهد:

  • صدای سیستم را تا جایی که راه دارد زیاد می‌کند:(
  • با لحنی منفی و بدبین اعلام می‌کند که فرایند Build در حال شروع است.
  • نتیجه Build را با یکی از دوحالت اعلام می‌کند: یا تمجید کنایه‌آمیز در صورت موفقیت و یا تائید متکبرانه در صورت شکست:(
  • در آخر تنظیمات صدا را به حالت قبل برمی‌گرداند.

بنابه توصیف یک توسعه‌دهنده، این اسکریپت را یکی از همکارانش بی خبر از او به‌عنوان شوخی روی سیستمش تنظیم کرده بود، درست وسط یک روز کاری شلوغ و مهم، با اجرای دستور Build، سیستمش با صدای بلند اعلام کرد:

!BUILDING PROJECT. PREPARE FOR FAILURE

حالا چرا عجیب و غیرمنطقی است؟ غیر از بی‌احترامی اجتماعی، این نوع alias به نوعی تنبیه روانی شبیه است؛ طوری که چه موفق بشید و چه شکست بخورید، نتیجه‌اش تمسخر است.

جایگزین منطقی‌تر: از یک اعلان بی‌صدا و خصوصی استفاده کنید تا بازخورد ساخت پروژه را محترمانه نشان دهد:

alias notify-build='function _notify_build() {
  if eval $@; then
    osascript -e "display notification \"Build succeeded!\" with title \"Build Status\"";
  else
    osascript -e "display notification \"Build failed.\" with title \"Build Status\"";
  fi;
}; _notify_build'

این دستور، به‌جای ایجاد مزاحمت صوتی یک اعلان بی‌صدا ارسال می‌کند.

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

هشتمین Time Thief :Alias

alias appear-busy='function _appear_busy() {
  echo "Creating the illusion of productivity...";
  while true; do
    random_sleep=$((RANDOM % 10 + 1));
    random_file="temp_file_$RANDOM.txt";
    random_content=$(curl -s https://baconipsum.com/api/?type=meat-and-filler&paras=1);
    echo "Working on $random_file...";
    echo $random_content > $random_file;
    sleep $random_sleep;
    git add $random_file;
    git commit -m "Important work on $random_file";
    rm $random_file;
    git rm $random_file;
    git commit -m "Finalized work on $random_file";
  done
}; _appear_busy'

این اسکریپت نامتعارف، کارهای زیر را انجام می‌دهد:

  • ایجاد فایل‌های موقت تصادفی با محتوای متن لورم ایپسوم
  • کامیت‌کردن این فایل‌ها
  • بلافاصله حذف فایل‌ها
  • کامیت مجدد برای حذف فایل‌ها
  • تکرار این چرخه در بازه‌های زمانی تصادفی

نتیجه؟ یک جریان مداوم از فعالیت‌ در GitHub که ظاهرا نشان‌دهنده فعالیت مستمر و فشرده است. درحالی که در واقع هیچ‌‌کاری انجام نمی‌شود.

یک توسعه‌دهنده فریلنسر اعتراف کرده که این اسکریپت رار روی یک مخزن خصوصی اجرا می‌کرده، چون برخی از مشتریانش فعالیت‌های GitHub او را به‌عنوان معیاری برای میزان ساعت کاری در نظر می‌گرفتند. توجیه او این بود: «من مقصر نیستم که فکر می‌کرددن مربع‌های سبز یعنی بهره‌وری!»

چرا اینکار غیرمنطقی است: این کار شبیه به دویدن روی چرخ‌‌دنده‌ی همستر است، پر از حرکت ولی بدون هیچ پیشرفتی!

راهکار منطقی: واقعا کار مفید انجام دهید:)

alias pomodoro='function _pomodoro() {
  echo "Starting 25-minute focus session...";
  sleep 1500 && terminal-notifier -message "Time for a break!";
}; _pomodoro'

این اسکریپت یک تایمر ساده پیاده‌سازی می‌کند تا به شما کمک کند بر روی کار واقعی تمرکز کنید و آن را در بخش‌های قابل مدیریت انجام دهید.

با سرور مجازی لینوکس لیارا، قدرت، سرعت و امنیت را یکجا داشته باشید!
✅ منابع اختصاصی و مقیاس‌پذیر✅ استقرار سریع بدون پیچیدگی ✅ قیمت مقرون‌به‌صرفه
خرید سرور مجازی لینوکس ساعتی لیارا

نتیجه‌گیری

این aliasها از کمی خلاقیت تا دیوانگی کامل را شامل می‌شوند. اما آنها در یک مورد مشترک هستند. حل مشکلات واقعی که توسعه‌دهند‌گان با آن مواجه‌اند:

  • دستورات تکراری و خسته‌کننده
  • ترس از دست دادن کار
  • نیاز به رعایت فرایندهای مشخص
  • ارتباط وضعیت با تیم‌ها
  • مقابله با ناامیدی

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

پس دفعه بعد که نگاهی به ترمینال یکی از همکارانتان انداختید و دیدید که دستوری ظاهراً بی‌ضرر مثل yolo را تایپ می‌کند که به طور معجزه‌آسا روی Production استقرار پیدا می‌کند و همزمان March Imperial از Star Wars پخش می‌شود، به یاد داشته باشید: معمولاً پشت این جنون یک منطق پیچیده وجود دارد.

سوالات متداول

چرا باید از aliasهای ترمینال استفاده کنم؟

aliasها به شما کمک می‌کنند تا دستورات پیچیده و طولانی را با نام‌های ساده‌تر و سریع‌تر فراخوانی کنید. این باعث صرفه‌جویی در زمان و کاهش اشتباهات تایپی می‌شود.

آیا استفاده از aliasهای ترمینال خطرناک است؟

بله، استفاده نادرست یا ایجاد aliasهایی که عملکردشان قابل پیش‌بینی نیست، می‌تواند به مشکلات جدی منجر شود. به‌ویژه اگر aliasها دستورات حساس را شامل شوند، می‌توانند به از دست دادن داده‌ها یا تغییرات ناخواسته منجر شوند.

چگونه aliasهای ترمینال را مدیریت کنم؟

برای مدیریت aliasها، می‌توانید از فایل‌های پیکربندی مانند .bashrc یا .zshrc استفاده کنید. با ویرایش این فایل‌ها، می‌توانید aliasها را اضافه، حذف یا ویرایش کنید. همچنین استفاده از ابزارهایی مانند alias و unalias به شما کمک می‌کند تا aliasها را مدیریت کنید.

چگونه می‌توانم از aliasها در اسکریپت‌های شل استفاده کنم؟

برای استفاده از aliasها در اسکریپت‌ها، باید فایل‌های پیکربندی شل مانند .bashrc یا .zshrc را قبل از اجرای اسکریپت بارگذاری کنید.

به اشتراک بگذارید

برچسب‌ها: