چگونه با Bash شاد کام باشیم (2)

یا علایم خاص در Bash

در قسمت قبل به بحث completion در Bash پرداختیم. این بار بحث شیرین Special Characters را خواهیم داشت. کاراکترهای خاص برای ایجاد قابلیتها و کاربردهای خاصی طراحی شدند که در امور روزمره کار با shell و همچنین در داشتن shell scriptهای بهینه‌تر به ما کمک میکنند.

Pipe (|)
این کاراکتر (که با Shift+\ قابل دسترسیه) همونطور که از اسمش پیداست کار ارتباطی انجام میده، به این شکل که با استفاده از pipe میشه خروجی (stdout) یک دستور رو به دستور بعدش فرستاد. کاربرد این موضوع زمانی هست که بخواید داده‌ای رو با استفاده از چند دستور یا برنامه پردازش کنید و خروجی فیلتر شده یا متفاوتی داشته باشید.
مثال ساده: برای دیدن یک پروسه خاص از لیست پروسه‌ها:

ps aux | grep apache2

دستور ps با پارامترهای داده شده فهرستی از پروسه‌های فعال در سیستم به ما میده. این فهرست معمولا طولانی هست. دستور grep هم عبارت داده شده رو داخل خطوط یک فایل یا ورودی پیدا میکنه و کل خط رو برمیگدونه. حالا نتیجه ترکیب این دو دستور با pipe اینه که خطوط حاوی عبارت apache2 از بین لیست طولانی پروسه‌ها جدا میشه و نمایش داده میشه. Pipe میتونه به تعداد نامحدودی در یک دستور خطی استفاده بشه:

cd /home; du --max-depth=1 ./ | sort -nr | head | awk '{ print $2 }' | cut -d/ -f2

که این دستور لیست ۱۰ شاخه‌ای که بیشترین فضا رو در شاخه home اشغال کردند نمایش میده.

ًRedirections (>,<,>>)
این کاراکترها برای تغییر مسیر ورودی (stdin) و خروجی (stdout) و یا حتی خطاها (stderr) کاربرد دارند. برای مثال میتونید از یک فایل حاوی داده به عنوان ورودی استفاده کنید و بعد از پردازش لازم نتیجه رو در فایل دیگه‌ای ذخیره کنید یا به انتهاش اضافه (append) کنید.
کاراکتر > برای استفاده از محتویات یک فایل (معمولا متنی) به عنوان ورودی (stdin) استفاده میشه. کاراکتر < برای ذخیره خروجی (stdout) یک دستور در یک فایل و کاراکتر << برای append کردن خروجی به انتهای فایل استفاده میشه.
برای مثال از فایلی به نام ‘results’ حاوی لیست نمرات و اسامی دانش‌آموزان سطرهایی حاوی عبارت ali را جدا کرده و در فایل list ذخیره میکنیم:

sort -nr < results | grep -in ali > list

از این کاراکترها برای تغییر مسیر stdout به stderr و بالعکس هم میشه استفاده کرد، مثلا برای دستوراتی که به طور خودکار (مثلا cron) اجرا میشند گاهی این کار انجام میشه:

some_command 2>&1 >> /var/log/command_output

Tilde (~)
این کاراکتر همواره به شاخه خانگی (home directory) کاربر فعلی (که شما دارید باهاش کار میکنید یا دستور به نام اون اجرا میشه) اشاره میکنه. در مسیر دادن به کار میاد:

cd ~/projects → cd /home/ali/projects

ادامه مطلب را بخوانید »

سه شنبه، ۱۶ مهر ۱۳۸۷ | درباره: Bash، لینوکس | ۷ نظر
  • خلاصه‌نویسی CSS

    ممکنه تا به حال کدهای CSS زیادی دیده باشید که خیلی کوتاه و مفید نوشته شدند و شاید گاهی هم ازشون سر در نیاورده باشید. اکثر طراحان بعد از پشت سر گذاشتن مراحل اولیه یادگیری کدنویسی و بعد از تسلط نسبی، سعی میکنند به کارشون سرعت بیشتری بدهند و کدهای کوتاه‌تر و تمیزتری بنویسند. به این علت خلاصه نویسی دستورات اهمیت پیدا میکنه. استفاده از کدهای خلاصه، کد شما رو ساده‌تر، کوتاه‌تر و تمیزتر میکنه. [از نظر من] نگهداری این نوع کد ساده‌تر هست و اگر مسلط باشید حتی خوندنش هم سریعتر خواهد بود!

    Margin/Padding
    margin و padding برای هر عنصر …

    سه شنبه، ۱۳۸۷/۰۲/۱۷ - ۸ بعد از ظهر | (۸) نظر
  • نشانی‌هایی بدون www

    آیا تا به حال به این اندیشیده‌اید که این سه دبلیو در ابتدای نشانی سایتتان چقدر مضر است؟
    دلایلی هست که بنده و خیلی‌های دیگر نشانی‌هایی بدون www را ترجیح میدهیم. اول اینکه به خاطر سپردن و رجوع مجدد به نشانی با 4 حرف کمتر ساده‌تر است! خیلی‌ها شاید ندانند که احتمالا سایت شما بدون www اول هم درست کار میکند. خیلی‌ها هم شاید به طور حسی - غریزی - همینجوری نشانی‌ها را همانطور که هست به خاطر میسپارند! در نتیجه حذف …

    شنبه، ۱۳۸۶/۱۰/۲۲ - ۸ بعد از ظهر | (۲۹) نظر
  • IE8 و استانداردهای وب

    این روزها خبر (تقریبا) مسرت بخشی برای طراحان و توسعه دهندگان وب منتشر شده. خبر اجرای موفقیت آمیز آزمون Acid2 در IE8! اما آیا واقعا برای همه مسرت بخشه؟

    سازگاری کامل با استانداردها و Backward Compatibility
    اول اینکه ادعای تیم توسعه IE مبنی بر اجرای درست آزمون، به این معنی نیست که همه مشکلات IE برطرف شده باشه. همونطور که خودشون اشاره کردند، آزمون Acid2 همه جوانب استانداردهای وب رو پوشش نداده و اجرای صحیحش نمیتونه تضمینی برای انطباق کامل با استانداردها باشه.
    IE مشکلات ریز …

    پنجشنبه، ۱۳۸۶/۱۰/۱۳ - ۱۲ بعد از ظهر | (۸) نظر
  • بازی گیکی؟!

    تا به حال توی جو و جریان وبلاگ بازی نبودم و از این کارها نکردم. اما حداقل به عنوان بهانه‌ای برای نوشتن و خلاص کردن شما از باغم! بد ندیدم زورکی هم که شده به بازی geekها بپیوندم :)

    کلمه geek به فردی میگند که خوره یک چیز باشه! یعنی اول علاقه داشته بعد خوره شده! البته نه از نوع علاقه‌ای که مثلا خیلی‌ها به یانگوم دارندها! نه! بیشتر علاقه به فناوری و امور تکنولوژیک منظور بوده! ;) البته لازم به تذکر نیست که من geek نیستم ولی geekهارو یکمی دوست دارم!

    • همیشه آرزوم بوده روزی برسه که

    یکشنبه، ۱۳۸۶/۱۰/۲ - ۹ بعد از ظهر | (۸) نظر

مطالب اخیر