جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
محتوای باز
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]
  • خانه
  • کتاب آنلاین
  • درباره سایت
  • درباره لوگو
  • تماس با ما
محتوای باز
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0
[wcas-search-form]

Pipeline در خط فرمان لینوکس

4 تیر 1399
ارسال شده توسط فرشید نوتاش حقیقت
خط فرمان
Pipeline

توانایی خواندن اطلاعات از ورودی استاندارد و ارسال آن به خروجی استاندارد با یک ویژگی Shell به نام Pipeline یا کاراکتر خط عمودی | ایجاد شده است.

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

به عنوان مثال:

command1 | command2

با این کار فرمان اول هر خروجی که داشته باشد به داخل ورودی فرمان دوم ریخته می‌شود. برای توضیح کامل آن از فرمان less استفاده می‌شود. فرمان less فرمانی است که ورودی استاندارد را قبول می‌کند. برای توضیح کامل آن از فرمان less استفاده می‌گردد. فرمان less فرمانی است که ورودی استاندارد را قبول می‌کند.

می‌توان از فرمان less برای نمایش صفحه به صفحه خروجی هر فرمانی استفاده نمود. به عنوان مثال:

[me@linuxbox ~]$ ls -l /usr/bin | less

ملاحظه می‌شود با استفاده از علامت پایپ | خروجی فرمان ls –l /usr/bin را به داخل ورودی فرمان less ریخته شده است.

فیلترها

پایپ‌لاین (Pipeline) اغلب برای انجام عملیات‌های پیچیده بر روی داده استفاده می‌شود. ممکن است که چندین فرمان را با استفاده از Pipeline به هم متصل شود. فرمان‌هایی که به این شیوه استفاده می‌شوند را فیلتر می‌نامند. فیلترها ورودی را دریافت کرده آن را تغییر داده و سپس در خروجی نمایش می‌دهند. اولین فیلتری که امتحان خواهد شد sort می‌باشد. تصور نمایید که می‌خواهیم یک لیست ترکیبی از برنامه‌های اجرایی /bin و /usr/bin ایجاد کرده و آن‌ها را مرتب کنیم و لیست را نمایش دهیم:

[me@linuxbox ~]$ ls /bin /usr/bin | sort | less

از آنجایی که ما دو پوشه /bin و /usr/bin را تعیین کرده‌ایم خروجی فرمان ls از دو لیست مرتب شده، یکی برای هر شاخه، ولی با اضافه کردن فیلتر sort با استفاده از Pipeline، داده در لیست مرتب شده نمایش داده می‌شود.

فرمان uniq – گزارش یا حذف خطوط تکراری

فرمان uniq همان‌طور که از نام آن برمی‌آید (به معنی یگانه و منحصر به فرد) با خطوط تکراری مشکل دارد. فرمان uniq اغلب در کنار sort به کار می‌رود. فرمان uniq یک لیست مرتب شده از داده‌ها را از ورودی استاندارد یا یک آرگومان نام فایل قبول می‌کند، و به صورت پیش‌فرض هر خط تکراری موجود در لیست را حذف می‌کند. پس برای اینکه مطمئن شویم لیست ما هیچ مورد تکراری ندارد (که در این مورد که مثال می‌زنیم نام برنامه‌هاست که در هر دو پوشه /bin و /usr/bin وجود دارد) بایستی فرمان uniq را به پایپ‌لاین‌های خود اضافه نمود:

[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq | less

در این مثال از فرمان uniq برای حذف هر مورد اضافی از خروجی فرمان sort استفاده شده است. اگر به جای حذف بخواهیم لیست موارد تکراری را مشاهده کنیم می‌توان از گزینه –d استفاده نمود:

[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq -d | less

فرمان wc – نمایش تعداد بایت، کلمه و خط

فرمان wc سرنام عبارت Word Count به معنی تعداد کلمات است. این فرمان به منظور نمایش تعداد خطوط، کلمات و بایت‌های موجود در فایل‌ها به کار می‌رود:

[me@linuxbox ~]$ wc ls-output.txt
7902 64566 503634 ls-output.txt

در این مورد فرمان، سه شماره را نمایش می‌دهد: تعداد خطوط (۱)، تعداد کلمات (۹) و تعداد بایت‌های موجود (۵۴) در لیست ls-output.txt. همانند فرمان‌های قبلی اگر بدون آرگومان‌های خط فرمان به کار رود، استاندارد ورودی را دریافت می‌کند. گزینه –l خروجی را محدود می‌کند و فقط تعداد خطوط را نشان می‌دهد. اضافه نمودن آن به یک Pipeline می‌تواند روش خوبی برای شمارش موارد باشد. برای مشاهده تعداد آیتم‌هایی که ما در لیست مرتب وجود دارد می‌توان فرمان زیر را به‌کار برد:

[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq | wc -l
2728

فرمان grep – نمایش خطوطی که الگوی خاصی دارند

grep یک برنامه قدرتمند است که به منظور پیدا کردن الگوی خاص متن در داخل فایل‌ها به کار می‌رود، به این صورت به کار می‌رود:

grep pattern [file...]

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

فرض کنید که می‌خواهیم همه فایل‌هایی که در داخل لیست برنامه‌ها وجود دارند و دارای کلمه zip در نام خود هستند را پیدا کنیم. چنین جستجویی می‌تواند برای یافتن فایل‌های فشرده کاربردی باشد. مثال زیر گویای مطلب است:

[me@linuxbox ~]$ ls /bin /usr/bin | sort | uniq | grep zip
bunzip2
bzip2
gunzip
gzip
unzip
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit

گزینه‌های کاربردی خوبی برای فرمان grep وجود دارد. مثلاً –i که باعث می‌شود grep هنگام اجرا بزرگی و کوچکی حروف را نادیده بگیرد. (معمولاً جستجوها حساس به بزرگی و کوچکی هستند.) همچنین گزینه –v به grep می‌گوید که فقط خطوطی را چاپ کن که با الگو مطابقت ندارند.

head/tail – بخش اول و آخر فایل‌ها را چاپ می‌کند

گاهی اوقات شما همه خروجی یک فرمان را نمی‌خواهید. شاید فقط چند خط اول و یا چند خط آخر خروجی را بخواهید. فرمان head ده خط اول و فرمان tail ده خط آخر از خروجی‌های فرمان را چاپ می‌کند. به‌صورت پیش‌فرض هر دو فرمان، ده خط از متن را چاپ می‌کنند ولی با استفاده از گزینه –n می‌توانید این مقدار را تغییر دهید.

[me@linuxbox ~]$ head -n 5 ls-output.txt
total 343496
-rwxr-xr-x 1 root root 31316 2011-12-05 08:58 [
-rwxr-xr-x 1 root root 8240 2011-12-09 13:39 411toppm
-rwxr-xr-x 1 root root 111276 2011-11-26 14:27 a2p
-rwxr-xr-x 1 root root 25368 2010-10-06 20:16 a52dec
[me@linuxbox ~]$ tail -n 5 ls-output.txt
-rwxr-xr-x 1 root root 5234 2011-06-27 10:56 znew
-rwxr-xr-x 1 root root 691 2009-09-10 04:21 zonetab2pot.py
-rw-r--r-- 1 root root 930 2011-11-01 12:23 zonetab2pot.pyc
-rw-r--r-- 1 root root 930 2011-11-01 12:23 zonetab2pot.pyo
lrwxrwxrwx 1 root root 6 2012-01-31 05:22 zsoelim -> soelim

همچنین می‌توان با Pipeline آن را ترکیب کرد:

[me@linuxbox ~]$ ls /usr/bin | tail -n 5
znew
zonetab2pot.py
zonetab2pot.pyc
zonetab2pot.pyo
zsoelim

tail گزینه‌ای دارد که به شما اجازه می‌دهد تا فایل‌ها را به‌صورت زنده و در زمان واقعی (real time) مشاهده کنید. این ویژگی برای مشاهده پیشرفت و روند فایل‌های log بسیار مفید است. در مثال زیر نگاهی به فایل‌های پیام در مسیر /var/log می‌اندازیم. به این منظور دسترسی Super User نیاز است. چون /var/log/message دارای برخی اطلاعات امنیتی است.

[me@linuxbox ~]$ tail -f /var/log/messages
Feb 8 13:40:05 twin4 dhclient: DHCPACK from 192.168.1.1
Feb 8 13:40:05 twin4 dhclient: bound to 192.168.1.4 -- renewal in 1652
seconds.
Feb 8 13:55:32 twin4 mountd[3953]: /var/NFSv4/musicbox exported to both
192.168.1.0/24 and twin7.localdomain in 192.168.1.0/24,twin7.localdomain
Feb 8 14:07:37 twin4 dhclient: DHCPREQUEST on eth0 to 192.168.1.1 port 67
Feb 8 14:07:37 twin4 dhclient: DHCPACK from 192.168.1.1
Feb 8 14:07:37 twin4 dhclient: bound to 192.168.1.4 -- renewal in 1771
seconds.
Feb 8 14:09:56 twin4 smartd[3468]: Device: /dev/hda, SMART Prefailure
Attribute: 8 Seek_Time_Performance changed from 237 to 236
Feb 8 14:10:37 twin4 mountd[3953]: /var/NFSv4/musicbox exported to both
192.168.1.0/24 and twin7.localdomain in 192.168.1.0/24,twin7.localdomain
Feb 8 14:25:07 twin4 sshd(pam_unix)[29234]: session opened for user me by
(uid=0)
Feb 8 14:25:36 twin4 su(pam_unix)[29279]: session opened for user root by
me(uid=500)

با استفاده از گزینه –f فرمان tail مانیتور فایل را ادامه می‌دهد و زمانی که خطوط جدیدی اضافه گردد، به‌صورت خودکار در لحظه نمایش داده می‌شوند. برای خروج از این حالت Ctrl+C را فشار دهید.

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

برچسب ها: CLICommand Lineخط فرمانخط فرمان لینوکس
درباره فرشید نوتاش حقیقت

همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرم‌افزارهای آزاد/ متن‌باز و سیستم‌عامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.

نوشته‌های بیشتر از فرشید نوتاش حقیقت
قبلی هدایت و تغییر مسیر در خط فرمان لینوکس
بعدی آموزش باز کردن فایل‌های RAR در لینوکس‌های مختلف

دیدگاهتان را بنویسید لغو پاسخ

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.

جستجو
جستجو برای:
دسته‌بندی موضوعی مقالات
  • برنامه‌نویسی
    • پایتون
    • دواپس
  • پایگاه‌داده
    • MariaDB
    • MySQL
  • تجارت الکترونیک
    • بازاریابی اینترنتی
    • دیجیتال مارکتینگ
    • شبکه‌های اجتماعی
  • جامعه کاربری
    • لاگ
  • دسته‌بندی نشده
  • شبکه و امنیت
  • طراحی وب
    • سئو
    • سیستم مدیریت محتوا
      • وردپرس
  • فناوری‌های نوظهور
    • اینترنت اشیاء
    • رایانش ابری
      • OpenStack
    • کلان‌داده‌ها
  • گنو/لینوکس
    • توزیع
      • CentOS
      • اوبونتو
      • دبیان
      • فدورا
    • چیست
    • خط فرمان
  • مهاجرت به آزاد/متن‌باز
  • نرم‌افزار
    • اداری
      • لیبره آفیس
        • ایمپرس
        • بیس
        • دراو
        • رایتر
        • کالک
    • کاربردی
    • گرافیک و انیمیشن
      • بلندر
      • گیمپ
نماد الکترونیکی (اینماد)
پرداخت‌یار

محتوای باز؛ مرجع آموزشی نرم‌افزارهای آزاد/ متن‌باز

از اینکه قصد همکاری با رسانه «محتوای باز» را دارید بسیار خرسندیم و این مایه مباهات ماست.

نحوه همکاری با ما چندان پیچیده نیست و شرایط آن در ادامه، ارائه گردیده است.

دستمزد مدرسین

پیش از بیان شرایط ضبط ویدئو شایان ذکر است اشاره‌ای به دستمزد مدرسین سایت داشته باشیم.

شما ممکن است در دو حالت تمایل به نشر ویدئو خود را داشته باشید: یا آن را رایگان در اختیار عموم قرار دهید و یا اینکه در قبال فروش آن از خریدار وجه مربوطه محصول را اخذ نمایید.

صرف نظر از هر حالت ممکنه، می‌بایست شرایطی که در ادامه ذکر شده‌اند را رعایت کرده باشید.

در حالت اول (رایگان) رسانه محتوای باز (Open Content)، نه وجهی از شما برای نشر ویدئو می‌گیرد و نه وجهی به شما پرداخت می‌نماید و دوره آموزشی شما را به رایگان منتشر می‌کند.

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

شرایط کلی ضبط دوره آموزشی

دوره آموزشی مربوطه، صرف نظر از هر محتوایی که دارد می‌بایست در یکی از توزیعات گنو/لینوکسی ضبط شده باشد. (به‌عنوان مثال دوره دروپال در اوبونتو، دوره آموزشی کار با آردوینو در دبیان و امثالهم). اگر دوره آموزشی شما در محیط ویندوز و یا هر پلتفرم/سیستم‌عامل دیگری ضبط شده باشد از همکاری با شما معذوریم.

پیشنهاد می‌گردد برای ضبط دوره آموزشی در توزیع گنو/لینوکس از ابزار قدرتمند OBS استفاده نمایید. البته این صرفا یک پیشنهاد است و شما می‌توانید از هر ابزار مناسب دیگری برای این کار بهره ببرید.

برای آشنایی یا تسلط بیشتر می‌توانید دوره رایگان آموزش OBS محمد عابدینی را ببینید:

مشاهده دوره آموزش OBS
شرایط کیفی ضبط دوره آموزشی

کیفیت صدا از اهمیت ویژه‌ای برخوردار می‌باشد و می‌بایست فاقد هر گونه نویز یا صدای اضافی دیگری (صدای محیط پیرامون) باشد.

دوره آموزشی تهیه شده صرفا باید برای رسانه محتوای باز تدوین شده باشد و در هیچ سایت مشابه دیگری قرار نگرفته باشد.

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

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

در حین دوره، مدرس نباید به برند خاصی اشاره کند که جز رقبای ما به‌شمار می‌آیند.

مدرس باید در ابتدا در اواسط و در انتهای دوره به برند ما یعنی رسانه محتوای باز (Open Content) بصورت کلامی اشاره نماید.

مدرس، هنگام تدریس نباید تپق زده، سرفه یا عطسه کند یا صدای قورت دادن بزاقش شنیده شود و بایستی با صدای رسا، دوستانه و پرانرژی به تدریس بپردازد.

قبل از تدوین دوره آموزشی حتما با ما در تماس باشید و یک ویدیوی چنددقیقه‌ای (ترجیحا 5 الی 10 دقیقه)، بصورت نمونه‌کار برای ما بفرستید.

از همکاری با شما سپاسگزاریم.

فراخوان همکاری