نظارت همزمان بر چند فایل و دستور (MultiTail)

سلام،

بعد از مدت‌ها دوباره مطلبی در مورد برنامه‌های مفید موجود در لینوکس (و یونیکس) آماده کردم. در این مطلب به معرفی دستورات head، tail و نرم‌افزار MultiTail که برای نظارت (مونیتورینگ) دستورات و فایل‌ها به کار گرفته می شوند، پرداخته ام.

دستور head

این دستور برای بدست آوردن اطلاعات ابتدایی (خطوط) بالایی فایل و خروجی های پایپ شده کاربرد دارد. دستور head به صورت پیش فرض ۱۰ خط از اطلاعات را نمایش می دهد. نحوه استفاده از این دستور به صورت زیر است:

head [options] <file_name>

و یا:

command | head

مانند:

ls -tl | head -n5
total 72
drwxr-xr-x+ 12 saeid  staff    408 Jan 15 21:22 Desktop
drwx------+  9 saeid  staff    306 Jan 15 11:23 Downloads
drwx------@ 59 saeid  staff   2006 Jan 11 23:05 Library
drwxr--r--+ 23 saeid  staff    782 Jan  4 18:52 Documents

دستور tail

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

man ls | tail -n15
SEE ALSO
     chflags(1), chmod(1), sort(1), xterm(1), compat(5), termcap(5),
     symlink(7), sticky(8)

STANDARDS
     The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

HISTORY
     An ls command appeared in Version 1 AT&T UNIX.

BUGS
     To maintain backward compatibility, the relationships between the many
     options are quite complex.

BSD                              May 19, 2002                              BSD

پارامتر -f دستور tail

پارامتر -f دستور tail باعث می شود که این دستور به صورت زنده (live) باقی مانده و اطلاعات اضافه شده به فایل را در لحظه نشان دهد. این پارامتر بیشتر در بررسی فایل های لاگ استفاده می‌شود. مانند:

tail -f -n5 /var/log/apache2/access_log
127.0.0.1 - - [15/Jan/2012:22:30:12 +0330] "GET /~saeid/ HTTP/1.1" 200 -
127.0.0.1 - - [15/Jan/2012:22:30:27 +0330] "GET /~saeid/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524
127.0.0.1 - - [15/Jan/2012:22:30:26 +0330] "GET /~saeid/phpinfo HTTP/1.1" 200 78141
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] "GET /~saeid/phpinfo HTTP/1.1" 200 78412
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] "GET /~saeid/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] "GET /~saeid/phpinfo.php?=SUHO8567F54-D428-14d2-A769-00DA302A5F18 HTTP/1.1" 200 2813

* برای خروج از tail -f از ترکیب Ctrl+C استفاده نمایید.

نرم‌افزار MultiTail

این بسته نرم‌افزاری در محیط خط فرمان اجرا شده و به منظور نظارت دستورات و فایل‌ها مورد استفاده قرار می گیرد. مهم‌ترین مزیت MultiTail امکان بررسی هم‌زمان چند فایل و دستور در یک ترمینال است.

نصب MultiTail

برای نصب در اوبونتو/دبیان دستورات زیر را در خط فرمان اجرا نمایید:

sudo apt-get update; sudo apt-get install multitail

برای نصب در مک با استفاده از MacPorts دستور زیر را وارد نمایید:

sudo port install multitail

نحوه استفاده از MultiTail

برنامه MultiTail بسیار انعطاف‌پذیر بوده و قابلیت‌های بسیاری دارد. به عنوان دستور زیر را در نظر بگیرید:

multitail -l 'ping google.com' -l 'ping zebardast.ir'

تصویر زیر خروجی این دستور را نشان می دهد:

نمایش دو دستور Ping در MultiTail

* برای خروج از MultiTail از ترکیب Ctrl+C استفاده نمایید.

حال در کنار این دو Ping یک فایل را نیز به صورت زنده (live) بررسی می کنیم:

multitail -l 'ping google.com' -l 'ping zebardast.ir' /var/log/apache2/access_log

خروجی دستور بالا:

نمایش دو دستور Ping و لاگ آپاچی در MultiTail

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

multitail -l 'ping google.com' -L 'ping zebardast.ir'
PING zebardast.ir (79.175.162.75): 56 data bytes
PING google.com (173.194.69.105): 56 data bytes
64 bytes from 79.175.162.75: icmp_seq=0 ttl=54 time=87.961 ms
64 bytes from 173.194.69.105: icmp_seq=0 ttl=41 time=456.322 ms
64 bytes from 79.175.162.75: icmp_seq=1 ttl=54 time=97.724 ms
64 bytes from 173.194.69.105: icmp_seq=1 ttl=41 time=416.464 ms
64 bytes from 79.175.162.75: icmp_seq=2 ttl=54 time=96.657 ms

از جمله ویژگی‌های MultiTail امکان فیلتر کردن نتایج است. دستور زیر همانند دستور قبلی می باشد با این تفاوت که عبارت 64 bytes from را از خروجی دستور دوم حذف می کند:

multitail -l 'ping google.com' -ke "64 bytes from" -L 'ping zebardast.ir'
PING google.com (173.194.69.105): 56 data bytes
PING zebardast.ir (79.175.162.75): 56 data bytes
64 bytes from 173.194.69.105: icmp_seq=0 ttl=41 time=463.806 ms
 79.175.162.75: icmp_seq=0 ttl=54 time=45.223 ms
64 bytes from 173.194.69.105: icmp_seq=1 ttl=41 time=442.254 ms
 79.175.162.75: icmp_seq=1 ttl=54 time=84.238 ms
64 bytes from 173.194.69.105: icmp_seq=2 ttl=41 time=442.263 ms
 79.175.162.75: icmp_seq=2 ttl=54 time=98.428 ms
64 bytes from 173.194.69.105: icmp_seq=3 ttl=41 time=400.113 ms
 79.175.162.75: icmp_seq=3 ttl=54 time=81.723 ms

پیشنهاد می‌کنم برای مشاهده مثال‌های بیشتر به صفحه Example سایت MultiTail مراجعه کنید.

پیوندها

شاد و پیروز باشید :)

برنامه تلویزیونی صفر و یک با موضوع سیستم عامل های متن باز

سلام :)

موضوع دیروز برنامه صفر و یک شبکه آموزش سیما به سیستم عامل های متن باز اختصاص داشت. مهدی حسن پور از فعالان متن باز و نماینده رسمی اوبونتو در ایران من را به عنوان کارشناس به برنامه معرفی کرده بود.

برنامه صفر و یک

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

از اینکه صدا و سیما بعد از مدت ها بحثی را در زمینه گنو لینوکس آغاز کرده خیلی خوشحالم. در طول ۴۵ دقیقه که به نظر من خیلی کم بود، سعی کردم مفاهیم اصلی و پایه ای گنو/لینوکس را توضیح بدهم.  قرار شد هفته آینده نیز موضوع سیستم عامل های متن باز و آزاد ادامه پیدا کند.

به درخواست دوستان فیلم برنامه که حدود ۴۵ دقیقه است را آپلود کردم.

من حدود ۲۵ اسلاید را برای ارائه آماده کرده بودم که شامل بسیاری از مباحث گنو/لینوکس میشد که متاسفانه بدلیل کمبود وقت فرصت ارائه آن ها را پیدا نکردم. امیدوارم که اگر فرصت دوباره ای پیدا کردم، بحث های مهم تر مانند امنیت، افکت های تصویری و مهاجرت از ویندوز را بیشتر توضیح بدهم.

لینک های مرتبط با برنامه دیروز

پی نوشت

  • فعلا اسلاید مربوط به برنامه رو آپلود نکردم ولی بزودی اون رو هم آپلود می کنم.
  • در آخر ازتون می خوام که انتقادات و پیشنهاداتتون رو بگید. مطمئنا تا وقتی این انتقادات و پیشنهادات نباشه، امکان پیشرفت واقعی هم وجود نداره ;)
  • سرورهای سایت اوبونتو ایران خراب شدن. این هم از شانس بده اوبونتو کاران

از همه دوستانی برام آرزوی موفقیت کرده بودند، خیلی تشکر می کنم 8)
شاد و موفق باشید

بروزرسانی
روز شنبه ۲۷ شهریور ۱۳۸۹ برنامه دوم با موضوع سیستم عامل های متن باز ارائه شد. متاسفانه این برنامه ضبط نشده است.

تجربیات من از ۳ سیستم عامل ویندوز، لینوکس و مک

سلام :)

بعد از مدتی کار کردن با سیستم عامل های مختلف و در آخر با Mac OS X 10.6، تصمیم گرفتم که تجربه شخصی ام را بعد از استفاده از انواع مختلف سه سیستم عامل ویندوز، لینوکس و مک در وبلاگ قرار دهم.

ویندوز

ویندوز

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

ویندوز مزایایی نیز داشت که مهمترین آنها برای من موارد زیر می باشند:

  • کاربرپسند بودن
  • وجود ابزار های بسیار و متنوع
  • وجود بازی های مختلف و زیبا :D
  • در دسترس و عمومی بودن
  • وجود درایورهای سخت افزاری و پشتیبانی از بیشتر سخت افزارها

لینوکس

گنو/لینوکس

لینوکس (اوبونتو، آرچ، دبیان، فدورا و…) مورد اطمینان ترین سیستم عاملی است که تقریبا پاسخ گوی همه نیاز های من می باشد. مزایای بسیاری دارد. مهمترین مزیت آن آزاد بودن است. شما هر تغییری که نیاز دارید، بر روی آن انجام می دهید. خط فرمان بسیار قوی آن واقعا مشکلات بسیاری را برای من حل کرده است.

البته ایراداتی نیز دارد. مهم ترین ایراد آن نبود ابزارهای گرافیکی برای انجام کارهای مختلف و یا ضعیف بودن ابزارهای موجود است. وجود باگ های مختلف در ابزارهای گرافیکی نیز باعث عدم کارایی لازم آنها می شود. مشکل جستجو و دستیابی به اطلاعات نیز نسبت به ویندوز (۷) و به خصوص نسبت به مک واقعا ضعیف است. از طرف دیگر محیط های گرافیکی موجود مانند گنوم یا کی دی ای واقعا User Friendly (کاربرپسند) نیستند. منظور من افکت های تصویری نیست! رنگ بندی، نحوه چیدمان دسکتاپ و… نسبت و ویندوز و مک ضعیف ترند.

مک

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

مک

گرافیکی فوق العاده قوی ای را در برگرفته است. مک قدرت خود را از یونیکس گرفته است و همین موضوع باعث شده است تا همه نیازهای لینوکسی من را بر طرف کند.

مک نیز مشکلاتی دارد. مثلا خیلی وقت ها شما مجبورید برای انجام دادن کارها از ماوس استفاده کنید در حالی که در ویندوز و لینوکس بسیاری از کارها براحتی با کیبورد قابل انجام می باشند. از طرفی Shortcut های مک بعضی اوقات واقعا سخت هستند. البته بعد از مدتی عادت می کنید :)

عیب دیگر آن گران بودن سخت افزارهای اپل می باشد که البته با نصب مک بر روی سیستم های x86 می توان حل کرد.

و در آخر مک برای من آن قدر مزایا دارد که بتوانم از ایرادات آن چشم پوشی کنم.

دسته بندی سیستم عامل ها و استفاده کنندگان

در صورتی که مجبور به استفاده از سیستم عامل خاصی نمی باشید، می توانید پیشنهاد من برای انتخاب سیستم عامل را در زیر مشاهده کنید:

  • برنامه نویسان
    1. مک
    2. لینوکس
    3. ویندوز
  • طراحان و گرافیست ها
    1. مک
    2. ویندوز
    3. لینوکس
  • علاقمندان به بازی های کامپیوتری
    1. ویندوز
    2. مک
    3. لینوکس
  • سیستم های نسبتا قدیمی و ضعیف تر
    1. لینوکس
    2. ویندوز
    3. مک
  • سرورها
    1. لینوکس
    2. ویندوز
    3. مک
  • سایر استفاده کنندگان عمومی دسکتاپ
    1. مک
    2. ویندوز
    3. لینوکس

پیوند ها

پی نوشت

بزودی تجربیات بیشتر خود را در مورد مک می نوسیم.

بروزرسانی
مک اونقدرها هم که فکر می کردم نتونست من رو راضی کنه. برگشتم به دنیای زیبای گنو/لینوکس :)
موفق و شاد باشید :)

آشنایی با دستور netstat

سلام :)

netstat خلاصه network statistics، ابزاری خط فرمانی می باشد که به منظور نمایش اطلاعات متنوع در زمینه شبکه مانند اتصالات، جدول routing (جداول هدایت کردن بسته‌ها ) و… را در اختیار قرار می دهد.
این ابزار برای پیدا کردن مشکلات در شبکه و برآوردگر حجم اطلاعات رد و بدل شده در شبکه به عنوان یک اندازه‌گیر عملکرد استفاده می شود.

در زیر مواردی را از استفاده از این دستور مشاهده می فرمایید:

نمایش اطلاعات پورت ها

نمایش تمامی پورت ها
# netstat -a | more
نمایش تمامی پورت های tcp
# netstat -at
نمایش پورت های udp
# netstat -au

نمایش سوکت (Socket) هایی که در وضعیت Listen هستند

لیست پورت هایی که در وضعیت listen هستند
# netstat -l
لیست پورت های tcp که در وضعیت listen هستند
# netstat -lt
لیست پورت های udp که در وضعیت listen هستند
# netstat -lu
لیست پورت های UNIX که در وضعیت listen هستند
# netstat -lx

نمایش آمار برای هر پروتکل

نمایش آمار برای تمامی پورت ها
# netstat -s
نمایش آمار برای پورت های TCP
# netstat -st
نمایش آمار برای پورت های UDP
# netstat -su

نمایش PID و نام برنامه با استفاده از پارامتر -p

پارامتر -p را می تواند با هر یک از موارد بالا ترکیب کرد. این دستور PID و نام برنامه مربوطه را در خروجی netstat چاپ می کند.

# netstat -pt

عدم نمایش نام هاست

برای نمایش آی پی هاست به جای نام آن می توانید از پارامتر -n استفاده نمایید. در صورت استفاده از این پارامتر، سرعت چاپ خروجی دستور netstat به طور محسوسی افزایش می یابد.

# netstat -ptn

نمایش ادامه دار خروجی

در صورت استفاده از پارامتر -c در کنار سایر پارامتر های netstat، بعد از اجرا و چاپ نتایج، از دستور خارج نمی شود و هر چند ثانیه یک بار دستور را دوباره اجرا کرده و خروجی را چاپ می کند. برای خروج Ctrl+c را بزنید.

# netstat -c

نمایش اطلاعات kernel routing

# netstat -r

یافتن برنامه یا پورت با ترکیب با grep

به عنوان مثال برای یافتن ssh های فعال از دستور زیر استفاده می کنیم:

# netstat -ap | grep ssh

و همچنین برای یافتن اطلاعات یک پورت از دستور زیر استفاده می نمایید:

# netstat -an | grep ':80'

نمایش interface های موجود

برای نمایش خلاصه اطلاعات interface های موجود از پارامتر -i استفاده نمایید:

# netstat -i

همچنین برای نمایش اطلاعات بیشتر به ازای هر interface از پارامتر e به همراه i استفاده کنید:

# netstat -ie

منابع
نت‌استات (ویکی پدیای فارسی)

NetStat Official website
Netstat (wikipedia)
UNIX / Linux: 10 Netstat Command Examples

موفق باشید

معرفی و راهنمای شروع به کار با vi و vim

لینوکس

لینوکس

سلام :)

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

ویرایشگر Vi

Vi  ویرایشگر متن است که اولین بار توسط بیل جوی در سال ۱۹۷۶ با زبان C برای نسخه های اولیه BSD  ها نوشته شد. ویرایشگر های دیگری نیز در سال های بعد بر اساس vi  منتشر شدند که اکثر آنها متن باز و آزاد می باشند، مانند nvi و vim. برنامه های کامپیوتری بسیاری مانند eclipse , IntelliJ IDEA, NetBeans و حتی فایرفاکس و مایکروسافت ورد قابلیت استفاده از Vi شبیه سازی شده را در دل خود دارند.

ویرایشگر Vim

Vim  نسخه توسعه یافته Vi  می باشد. مهم ترین ویژگی هایی Vim عبارتند از تکمیل کردن (completion)، مقایسه و ترکیب فایل ها، راهنمای جامع داخلی، عبارات منظم (regular expressions) توسعه یافته، ویرایش فایل های فشرده و آرشیوی gzip,  bzip2 , zip  و tar، دسترسی و ویرایش فایل ها از طریق پروتکل های SSH, FTP, HTTP، غلطیابی (spell checking) و …

نصب

ویرایشگر vi به صورت پیش فرض بر روی سیستم شما نصب می باشد. برای نصب vim با توجه به توزیع لینوکس خود از دستور مربوطه در زیر استفاده نمایید:

توزیع Arch:

# pacman -S vim

توزیع دبیان و اوبونتو:

$ sudo aptitude install vim

نوزیع فدورا، ردهت و CentOS:

# yum install vim-X11 vim-common vim-enhanced vim-minimal

توزیع جنتو:

# emerge vim

حالت ها (Modes)

منظور از حالت، وضعیت پاسخ گویی برنامه به درخواست شماست. به عنوان مثال در یک فشردن دکمه j کاراکتر j را تایپ می کند و در حالت دیگر مکان نما (cursor یا اعلان) را به خط زیر می برد.

سه حالت اول در Vim  و vi موجود می باشند ولی حالت چهارم فقط در Vim وجود دارد:

  1. حالت Insert: حالتی که در آن متن را تایپ و ویرایش می کنید
  2. حالت Command: حالت صدور فرمان که همان حالت معمولی (Normal) است
  3. حالت Ex یا Command line:  که همان حالت معروف “:” است که دستورات را در این حالت وارد می کنند.
  4. حالت Visual:  که فقط در Vim موجود است و برای highlight کردن و انتخاب کردن متن استفاده می شود.

شروع  به کار با Vim

با استفاده از دستور vim یک فایل را باز کنید:

$ vim file
  • (ورود با حالت Command) با استفاده از دکمه های l, k, j, h   مکان نما را به محل مورد نظر ببرید. لیست دکمه های بیشتر برای حرکت مکان نما در ادامه آمده است.
  • دکمه i را برای ورود به حالت Insert کنید (ورود به حالت Insert). البته برای ورود به حالت Insert می توانید از دکمه های دیگری نیز استفاده کنید که لیست آنها در ادامه آمده است.
  • متن مورد نظر را وارد کنید. دکمه Esc را برای خروج از حالت  Insert و ورود به حالت Command بزنید (ورود به حالت Command).
  • برای خروج از فایل، دکمه “:” را بزنید تا به حالت Command line بروید و سپس یکی از دستورات را وارد کنید:
    • wq ابتدا فایل را ذخیره می کند و بعد خروج از برنامه
    • w برای ذخیره تغییرات
    • !q

      برای خروج از فایل بدون ذخیره فایل و تغییرات

    • qa برای بستن همه فایل های باز

شما با موفقیت یک فایل را توسط Vim ویرایش کردید ;)

جدول دکمه های حرکت مکان نما

جدول زیر برخی از مهم ترین دستورات برای حرکت مکان نما را نمایش می دهد:

دکمهعملکرد
h/j/k/lحرکت مکان نما به راست/بالا/پایین/چپ
فاصله (spacebar)حرکت مکان نما به اندازه یک فاصله
-/+بردن مکان نما به اول خط قبلی/بعدی
Ctrl+dاسکرول کردن به پایین صفحه به اندازه نیم صفحه
Ctrl+uاسکرول کردن به بالای صفحه به اندازه نیم صفحه
Ctrl+fاسکرول کردن به صفحه بعد
Ctrl+bاسکرول کردن به صفحه قبل
Mبردن مکان نما به وسط صفحه
Hبردن مکان نما به اول صفحه
Lبردن مکان نما به آخر صفحه
W

w

5W

حرکت مکان نما به اول کلمه بعدی (جدا شده با خط فاصله)

حرکت مکان نما به اول کلمه بعدی (جدا شده با خط فاصله، نقطه، / و …)

حرکت مکان نما به اول کلمه پنجم بعدی

B

b

5b

حرکت مکان نما به اول کلمه قبلی (جدا شده با خط فاصله)

حرکت مکان نما به اول کلمه قبلی (جدا شده با خط فاصله، نقطه، / و …)

حرکت مکان نما به اول کلمه پنجم قبلی

e

5e

بردن مکان نما به آخرین کاراکتر کلمه (یا کلمه بعدی)

بردن مکان نما به آخرین کاراکتر پنجمین کلمه بعدی

0 (صفر)بردن مکان نما به اولین کاراکتر خط فعلی
$بردن مکان نما به آخرین کاراکتر خط فعلی
(بردن مکان نما به اولین کاراکتر خط فعلی
)بردن مکان نما به اولین کاراکتر خط فعلی
G

12G

بردن مکان نما به آخر فایل

بردن مکان نما به خط ۱۲

%بردن مکان نما به کروشه (bracket) ابتدایی و انتهایی فعلی (مکان نما را به داخل یک دسته از {}, [] و یا () ببرید و با استفاده از %  به کروشه ابتدایی و انتهایی بروید)
‘.بردن مکان نما آخرین محل تغییر داده شده
maعلامت گزاری محل فعلی مکان نما به عنوان a
‘aرفتن به محل علامت گزاری شده به a
‘Aرفتن به محل علامت گزاری شده با a در کلیه فایل های که در بافر هستن. علامکت گزاری شده با mA
]’بردن مکان نما به محل علامت گزاری شده بعدی
['بردن مکان نما به محل علامت گزاری شده قبلی
ZZتغییرات را ذخیره و فایل را می بندد. معادل wq در حالت Command line است.

جدول دستورات در حالت Command

جدول زیر برخی از مهم ترین دستورات حالت Command را نمایش می دهد:

دستورعملکرد
iرفتن به حالت Insert در محل مکان نما
aرفتن به حالت Insert در محل بعد از مکان نما
Aرفتن به حالت Insert در آخر خط فعلی
Escخروج از حالت Insert
uرفتن به یک مرحله قبل تر تغییرات (undo)
Uبرگرداندن تمامی تغییرات صورت گرفته بر روی خط فعلی
Ctrl+rبر عکس u عمل می کند. یعنی به جای undo کردن، redo می کند
oایجاد یک خط جدید بعد از خط فعلی و رفتن به حالت Insert
dd

3dd

پاک کردن خط فعلی

پاک کردن ۳ خط

Dپاک کردن محتویات خط فعلی از محل مکان نما تا آخر
Cپاک کردن محتویات خط فعلی و رفتن به حالت Insert برای ورود اطلاعات
dw

4dw

d0

d$

پاک کردن یک کلمه

پاک کردن ۴ کلمه

پاک کردن متن از ابتدای خط تا محل فعلی مکان نما

پاک کردن متن از محل فعلی مکان نما تا انتهای فایل (مانند D)

cwپاک کردن کلمه فعلی و رفتن به حالت Insert
xپاک کردن کاراکتر فعلی
Xپاک کردن کاراکتر قبلی
rبرای جایگزین کردن یک کاراکتر استفاده می شود. بعد از زدن r، هر کاراکتری که وارد شود جایگزین کاراکتر فعلی می شود.
Rرفتن به حالت Insert با این ویژگی که هر کاراکتری که وارد شود، جایگزین کاراکتر فعلی می شود (overwrite).
sپاک کردن کردن کاراکتر فعلی و رفتن به حالت Insert
Sپاک کردن خط فعلی و رفتن به حالت Insert
~عوض حالت کاراکتر فعلی (کوچک و بزرگ کردن کاراکتر فعلی)
Ctrl+aافزایش عدد فعلی کاراکتر (مثلا اگر کاراکتر فعلی متن عدد ۱۰۲ باشد، با این دستور، عدد در متن به ۱۰۳ افزایش می یابد)
Ctrl+xکاهش عدد فعلی کاراکتر (مثلا اگر کاراکتر فعلی متن عدد ۱۰۲ باشد، با این دستور، عدد در متن به ۱۰۱ کاهش می یابد)
/search_stringجستجوی عبارت search_string در ادامه متن
?search_stringجستجوی عبارت search_string در قبل از محل فعلی مکان نما
nرفتن به محل بعدی عبارت یافت شده از جستجو
Nرفتن به محل قبلی عبارت یافت شده از جستجو
.تکرار آخرین دستور اجرا شده

جستجو و جایگزینی (Find and Replace)

جستجو و جایگزینی در حالت Command line اجرا می شود. برای ورود به حالت Command line ابتدا با زدن Esc از حالت Insert به Command بروید و بعد با زدن “:” به Command line بروید.
در زیر چند مثال برای جستجو و جایگزینی آمده است:

دستورتوضیح
:%s/fff/rrrrr/جستجو برای fff  و جایگزینی اولین یافته در هر خط با rrrrr
:%s/fff/rrrrr/gجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr
:%s/fff/rrrrr/gcجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr. قبل از جایگزینی از شما تاییدیه (confirmation) می خواهد.
:%s/fff/rrrrr/giجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr. بدون حساسیت به کوچک یا بزرگ بودن حروف (Case insensitive)
:’a,’bs/fff/rrrrr/giجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr در بین خطوطی که با a و b علامت گزاری شده اند. بدون حساسیت به کوچک یا بزرگ بودن حروف (Case insensitive)
:%s/*$/پاک کردن کاراکتر فاصله از آخر هر خط

چند نکته و دستور

در زیر چند نکته و دستور برای استفاده بهتر از vi و vim ارائه شده است.

  1. هر دو این ویرایشگر ها به حروف کوچک و بزرگ حساس می باشند.
  2. برای تسلط بیشتر می توانید از دستور vimtutor استفاده کنید. vimtutor مرحله به مرحله استفاده از ویرایشگر را به شما آموزش می دهد.
  3. همانطور که پیش تر مشاهده کرده اید، در صورت استفاده از یک عدد قبل از دستور، باعث تکرار یک دستور به تعداد آن عدد می شود. مثلا 17j باعث می شود که ۱۷ خط به پایین بروید.
  4. به جای فشردن a یا i برای وارد کردن مطلب می توانید از دکمه Insert استفاده نمایید. این مطلب برای دکمه Delete و فرمان x نیز صادق است.

منابع و لینک های مفید

لینک های انگلیسی

لینک های فارسی

موفق باشید 8)