دستور write در لینوکس: آموزش ارسال پیام به کاربران دیگر
دستور write در لینوکس یک پیام رسان دیجیتالی است که به کمک آن می توانید در محیط ترمینال با سایر کاربران فعال در همان سیستم ارتباط برقرار کنید.
خط ارتباطی که با دستور write ایجاد می شود، کاربران وارد شده به سیستم لینوکس را به هم وصل می کند و کاربران هم می توانند پیام های موردنظر خود را از طریق ترمینال به یکدیگر ارسال کنند.
طرز کار دستور write در لینوکس
این دستور، مشابه دستور wall در لینوکس است و سبک کار بسیار راحتی دارد. کاربر a با دستور write یک پیام متنی می نویسد و یک کاربر فعال دیگر مثلاً کاربر b را موردخطاب قرار می دهد.
سپس، کاربر b این پیام را به صورت زیر دریافت می کند:
Message from username on tty at time …
حالا کاربر b می تواند دستور write را متقابلاً برای کاربر a اجرا کند و جواب مناسبی را به کاربر a ارسال کند.
پایان مکالمه هم با کلید ترکیبی Ctrl + D اتفاق می افتد.
حالا اگر ترمینال کاربر مقصد باز نباشد، پیام فرستنده به کاربر تحویل داده نمی شود و از بین می رود چون دستور write برای ارسال پیام فوری بین کاربران آنلاین طراحی شده است و تنها زمانی کار می کند که ترمینال کاربر مقصد باز و آماده دریافت پیام باشد.
پیش نیازهای اجرای دستور رایت در لینوکس
- دسترسی به ترمینال
- چند کاربره بودن سیستم یا سرور لینوکس موردنظر
- دسترسی به امتیازات sudo
- ویرایشگر متنی
- نصب بودن دستور write
با اینکه دستور رایت به طور پیش فرض روی اکثر توزیع های لینوکس نصب است ولی برای اطمینان از نصب بودن write در سیستم لینوکس خود می توانید از دستور write –version استفاده کنید.
اگر دیدید که سیستم شما مجهز به این ابزار نیست، ابتدا باید آن را روی سیستم خود نصب کنید و سپس شروع به استفاده از آن کنید:
دستور نصب write در اوبونتو – دبیان
sudo apt install util-linux
دستور نصب write در فدورا – CentOs
sudo yum install util-linux
یا
sudo dnf install util-linux
دستور نصب write در آرچ لینوکس
sudo pacman -Syu util-linux
بعد از اتمام کار، مجدداً دستور زیر را اجرا کنید تا از نصب موفقیت آمیز آن مطمئن شوید.
write --version
البته با خرید سرور مجازی لینوکس از آسام سرور، می توانید از بابت نصب بودن ابزارهای پرکاربردی مثل write مطمئن باشید و بعد از فعال سازی مجوز، مستقیماً شروع به برقراری یک ارتباط موثر و قدرتمند با هم تیمی های خود کنید.
سینتکس دستور write در لینوکس
سینتکس پایه دستور write به صورت زیر است:
write user [tty]
user نام کاربر مخاطب است.
با استفاده از tty هم می توانید محیط ترمینال کاربر را مشخص کنید، البته در صورتی که این کاربر چند محیط ترمینال را باز کرده باشد.
آپشن های دستور write
با اینکه دستور write طرز کار بسیار راحت و سرراستی دارد ولی با آپشن های زیر می توانید رفتار آن را بهتر کنترل کنید:
ارسال پیام به کاربر موردنظر
write username
ارسال پیام به کاربر موردنظر از طریق محیط ترمینال مشخص شده
write username tty
تکمیل و خاتمه پیام ورودی
Ctrl+D
فعال سازی قابلیت دریافت پیام از سایر کاربران فعال
mesg y
غیرفعال سازی قابلیت دریافت پیام از سایر کاربران فعال
mesg n
نحوه استفاده از دستور write با مثال های کاربردی
برای شروع استفاده از این دستور، ابتدا بهتر است لیست کاربران فعال سیستم لینوکس را چک کنید و سپس پیام را به یک کاربر متصل به سیستم ارسال کنید.
برای این کار می توانید از دستور w استفاده کنید.
این دستور، لیست کاربرانی که در حال حاضر به سیستم Log in شده اند را نشان می دهد.
محض احتیاط، دستور mesg y را هم اجرا کنید تا قابلیت دریافت پیام از سایر کاربران را فعال کنید.
اکنون وقت آن است که به صورت عملی با نحوه کار write آشنا شوید:
ارسال پیام به کاربر موردنظر
اسم کاربر فعال موردنظر خود را در دستور زیر لحاظ کرده و آن را اجرا کنید:
write zahra
بعد از کلیک روی دکمه Enter، خط فرمان آماده دریافت پیام از شماست.
پیام موردنظر خود را وارد کنید و در صورت نیاز به خط جدید، اینتر را بزنید.
در همین زمانی که شما در حال وارد کردن پیام هستید، zahra هم در ترمینال خود شاهد این پیام است.
پیامی که zahra می بیند، با Message from username شروع می شود. سپس پیامی که شما در حال نوشتن هستید را به صورت real time می بیند.
بعد از اینکه پیام خود را تکمیل کردید، کلید ترکیبی CTRL+D را فشار دهید تا دستور write خاتمه پیدا کند.
وقتی شما به عنوان ارسال کننده پیام، کلید ترکیبی CTRL+D را فشار می دهید، zahra هم با دیدن EOF در انتهای پیام، متوجه می شود که پیام شما به پایان رسیده است.
برقراری یک مکالمه به صورت تعاملی
شاید بعضی وقت ها بخواهید مکالمات را به صورت تعاملی و دو طرفه جلو ببرید که البته دستور write هم به این خواسته شما احترام می گذارد.
برای این کار کافیست ابتدا دستور write را برای کاربر موردنظر اجرا کنید:
write zahra
سپس zahra هم به صورت همزمان باید شما را خطاب قرار دهد و دستور write را برای شما اجرا کند:
write Asam
با توجه به این که هیچ راهی برای تشخیص زمان ارسال و دریافت پیام ها وجود ندارد، می توانید با یک فاصله و کاراکتر o پایان عبارت فعلی پیام خود را به کاربر نشان دهید تا کاربر مخاطب هم شروع به نوشتن کند و از این طریق ارتباط بهینه تری برقرار کنید.
برای نشان دادن پایان مکالمه خود هم می توانید از یک فاصله و oo استفاده کنید.
در آخر، برای بسته شدن کانال ارتباطی write می توانید از کلید ترکیبی CTRL+D استفاده کنید.
تعیین کاربر و ترمینال موردنظر برای ارسال پیام
اگر مخاطب شما از چند محیط ترمینال استفاده می کند، باید محیط یا دستگاه TTY موردنظر برای ارسال پیام را هم مشخص کنید.
به عنوان مثال فرض کنید می خواهید به کاربری به اسم zahra که وارد محیط TTY1 شده است، پیام ارسال کنید. کافیست دستور زیر را ارسال کنید:
write zahra /dev/tty1
این دستور، پیام را به دستگاه TTY1 ارسال می کند و این اطمینان را می دهد که این پیام فقط در ترمینال مرتبط با آن دستگاه ظاهر می شود.
پایپ یک پیام به دستور write
اگر نمی خواهید پیام متنی را به طور real time در داخل دستور write بنویسید، می توانید متن موردنظر خود را به دستور echo در لینوکس اضافه کنید و بعد آن را با دستور write پایپ کنید.
echo "Hello from Asam" | write zahra
بعد اجرای این دستور، کانال ارتباطی فرستنده بسته می شود، در حالی که گیرنده پیام را دریافت می کند و منتظر پایان پیام می ماند.
به همین دلیل، بهتر است بعد از پیام اصلی خود، یک نشانه برای پایان پیام بگذارید. مثلاً:
echo "Hello from Asam [End of message]" | write zahra
ارسال پیام به کاربر از طریق یک فایل
اگر از پیام موردنظر خود یک فایل تهیه کرده اید، می توانید این فایل را به کاربر موردنظر ارسال کنید.
به عنوان مثال یک فایل متنی جدید ایجاد کنید.
nano message.txt
متن موردنظر را به آن اضافه کنید و با کلید ترکیبی Ctrl+O و Ctrl+X، این فایل را ذخیره کرده و ببندید.
سپس با دستور cd در مسیر فایل موردنظر قرار بگیرید و اسم آن را به صورت زیر در دستور write لحاظ کنید:
Write zahra < message.txt
به این ترتیب، گیرنده پیام شما را از فایل متنی دریافت می کند و با دیدن EOF در آخر آن هم متوجه تمام شدن پیام می شود.
ارسال پیام به کاربر لینوکس در قالب فایل bash
ادغام دستور write با اسکریپت های bash می تواند کیفیت ارتباط و تعامل کاربران را ارتقا دهد.
به عنوان مثال، اسکریپت زیر را در نظر بگیرید:
#!/bin/bash
sudo apt update -y
echo "Update completed" | write zahra
sudo apt upgrade -y
echo "Upgrade completed" | write zahra
این کد را در داخل یک فایل با اسم دلخواه و پسوند sh ذخیره کنید.
nano update_and_notify.sh
با کلید ترکیبی Ctrl+O و Ctrl+X، این فایل را ذخیره کرده و ببندید.
مجوز اجرا را به این دستور بدهید:
chmod +x update_and_notify.sh
حالا می توانید آن را اجرا کنید:
./update_and_notify.sh
ابتدا دستور آپدیت ریپازیتوری سیستم اجرا می شود و پیام Update completed به zahra ارسال می شود. سپس دستور آپگرید ریپازیتوری اجرا می شود و پیام Upgrade completed به zahra ارسال می شود.
مزایای دستور write در لینوکس
- ساده و راحت
- پیام رسانی بین کاربران به صورت real time
- ارسال و دریافت پیام از طریق ترمینال
- هماهنگی وظایف و فرآیندها به صورت کاملاً ساده
- اطلاع به موقع کاربران از رویدادها و تغییرات سیستمی اخیر
- ارتباط موثر بین هم تیمی ها
- …
حالا این شما هستید که باید دست به کار شوید و برای بهره مندی از این مزایا، نحوه کار با دستور write را به صورت عملی تست کنید و ارتباطی که انتظارش را دارید را با همکاران خود برقرار کنید.
سخن آخر
دستور write در لینوکس برای ارسال پیام به کاربر یا کاربران حاضر در یک سیستم لینوکس استفاده می شود و اگر بتوانید از این دستور استفاده درستی داشته باشید، می توانید بدون نیاز به پیام رسان های خارجی، ارتباط بهینه ای با کاربران موردنظر خود برقرار کنید.