description |
---|
پایپ که همون معنی لوله رو میده کامند نیست عملا یه کاراکتره ولی خب خیلی کاربردیه واسه ما برای همین داریم در یه سکشن در موردش حرف میزنیم ولی حالا چرا پایپ مهمه؟ |
تا اینجا با یه تعداد خوبی کامند آشنا شدیم و در ادامه هم با تعدادی دیگهشون آشنا خواهیم شد ولی همیشه کامندای لینوکسی (یا یونیکسی) کارای کوچیکی میکنن. مثلا یه کامند داریم به اسم yes که بای دیفالت y چاپ میکنه و اگه جلوش یه چیزی بنویسیم اون چیزو همینطور تکرار شونده روی ترمینال مینویسه. خب به چه دردی میخوره؟
یا مثلا ما تا الان یه دستوری به اسم history رو یاد گرفتیم؛ خب حالا اگه مثلا ما ۱۰۰۰۰ تا دستور زدیم و بعدا خواستیم دنبال یکی از دستورایی که زده بودیم بگردیم بیایم کل ۱۰۰۰ خطو دونه به دونه بررسی کنیم؟ اگه میشد شماره خطشو یا یه قسمتی از دستوری که زده بودیم و یادم مونده رو توش سرچ میکردیم چه خوب میشد. مثلا فکر کن خروجی history رو میریختیم توی یه فایل و بعد روش grep میزدیم :)
بعدا نحوهی ریختن خروجی یه دستور توی یه فایل رو میگیم ولی اگه داری میخونی و ذهنت درگیرش شده و منم نوشتمش میتونی چیزی تحت عنوان output redirection یا tee رو بخونی.
حالا فعلا میخوایم کاربرد pipe رو بگیم که میاد خروجی یه کامند رو به عنوان ورودی میده به کامند بعدی. مثلا میشه نوشته hisotry | grep ls
این دستور اول میاد کامند history رو اجرا میکنه بعد خروجیشو میده به دستور grep که توش دنبال خطایی بگرده که داخلشو ls هست؛ پس خروجی نهایی دستورایی از هیستوری رو نشون میده که توشون ls زده بودیم.
حرف بیشتری نمونده کلا هرجا خواستین دستورارو باهم دیگه قاطی کنین و یه دستور پیچیده بسازین میتونین از پایپ استفاده کنین. مثلا من از دستور زیر برای پیدا کردن اسم GPU های سیستم استفاده کرده بودم
lspci -vnn | grep compatible | awk {'print $6'}
عملا توی دستور بالا داریم از سه تا دستور استفاده میکنیم که دو تاشونو نخوندین ولی اگه دوست داشتین سرچ کنین بخونین. خیلی نمیخواد درگیرش بشین صرفا خواستم بگم میشه دستورارو ترکیبی استفاده کرد.
cat /etc/os-release | grep NAME | cut -d "\"" -f 2 | head -n 1 | cut -d " " -f 1
دوباره با دستور بالا داریم اسم توزیع مورد استفادهی سیستم رو در میاریم که ترکیبی از یه تعداد دستوره.
پایپ خیلی کاربردی و مهمه و کار کردن باهاش خیلی مهمه. همین الان سعی کنین یه مثالی از ترکیب کامندایی که خوندین با grep رو با استفاده از پایپ انجام بدین.