چگونه با 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

که این دستور لیست 10 شاخه‌ای که بیشترین فضا رو در شاخه 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

به خواندن ادامه دهید

بازی گیکی؟!

استاندارد

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

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

  • همیشه آرزوم بوده روزی برسه که لازم نباشه یک پنجم زمان طراحی پروژه‌ها رو برای رفع ایراد مرورگرهای مختلف (خصوصا ie) به هدر بدم! یا خیلی از ایده‌ها و خلاقیتهای طراحیم به گِل بشینه وقتی نتونم به راحتی با همه مرورگرها نمایشش بدم! واقعا آروزی دور از دسترسیه؟ واقعا خواسته زیادیه رعایت و اجرای استانداردهای وب در مرورگرها؟ (در همین راستا مطلبی در دست تهیه دارم!)
  • چقدر آرزو دارم سطح اطلاعات و دانش مردم و (خصوصا) مسئولین از IT و مسائل مرتبط ارتقا پیدا کنه و لازم نباشه برای مسئول مربوطه توضیح داد 128 کیلوبیت خیلی نیست! یا اینترنت فقط سایت غیر اخلاقی و بی ناموسی نیست یا دیگران بفهمند کامپیوتر وسیله جدید بازی مثل آتاری و میکرو نیست و ایضا نیاز به توضیح نباشه کسب درآمد از اینترنت همون شبکه‌های هرمی نیست یا … میدونم که حداقل این آروزی بزرگیه!
  • آرزو دارم درک و شناخت مردم از open source بیشتر بشه. هم از این نظر که استفاده از برنامه‌های بازمتن به جای برنامه‌های پولی کرک شده رایج بشه و هم اینکه روحیه و اخلاق open sourceی کمی در جو نرم‌افزار و IT ما بیشتر بشه.
  • آرزو دارم روزی همه با لینوکس کار کنند و سیستم عامل مایکروسافت رو کلا به لای باقالی‌ها بفرستیم! در نتیجه دیگه هر از گاهی یکی از دوستان و آشنایان رو با یک کیس زیر بقل نبینم که با چهره آشفته و فرتوتی به سمتم میاد و میخواد ویندوزش رو عوض کنم! (مطمئنا منظورم از لینوکس همون لینوکس ملی و اینها نیست ها! همین اوبونتوی خودمون یا شایدم پارسیکس!)

ولی بزرگترین آرزوی جدی و حقیقیم با جادی مشترکه! آه که چقدر آرزو دارم هویت و شخصیت پذیرفته شده‌ای در دنیا داشته باشم! البته حداقل الان دنیای من از دریچه محیط مجازی اینترنت هست. جایی که بارها و بارها، فقط به خاطر ایرانی بودن، ازش صدمه خوردم، از بخشهاییش رونده شدم و گاهی اوقات (به ندرت البته) مورد آزار و توهین قرار گرفتم. 🙁

من به دعوت دوست عزیز آقای منیری به این بازی کشیده شدم! اما به دلایلی ترجیح میدم در ادامه کسی رو دعوت نکنم. شاید نمیدونم چه کسی رو چطور انتخاب کنم یا …