آموزش لینوکس - جلسه پنجم - دستورات کار با فایل‌های متنی در لینوکس ‏

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش لینوکس 23 اکتبر 2024
اشتراک گذاری

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

1 - دستورات نمایش محتویات فایل‌های متنی

1- ‎دستور‎ `cat`‎

‎- ‎شرح: دستور‎ `cat` ‎برای نمایش محتویات فایل‌ها، ایجاد فایل‌های جدید و ترکیب چندین فایل استفاده می‌شود. یکی از ویژگی‌های این ‏دستور، نمایش سریع فایل‌های متنی کوتاه است‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  cat ‎‏[گزینه‌ها] [نام فایل]‏

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎نمایش یک فایل‎:‎

‎     ```bash‎

‎     cat file.txt

‎     ```‎

‎  2. ‎ترکیب دو فایل و نمایش نتیجه‎:‎

‎     ```bash‎

‎     cat file1.txt file2.txt

‎     ```‎

‎  3. ‎ایجاد یک فایل متنی جدید‎:‎

‎     ```bash‎

‎     cat > newfile.txt

‎     Hello, this is a new file.‎

‎     (Ctrl + D ‎برای پایان ورودی‎)‎

‎     ```‎

‎- ‎نکته: اگر فایل بسیار بزرگ باشد، استفاده از‎ `cat` ‎باعث ایجاد شلوغی در ترمینال می‌شود. در این موارد از دستورات دیگری مانند‎ ‎‎`less` ‎یا‎ `more` ‎استفاده کنید‎.‎

2 - دستور‎ `more`‎

‎- ‎شرح: دستور‎ `more` ‎برای نمایش محتوای فایل به صورت صفحه به صفحه استفاده می‌شود. این ابزار زمانی مفید است که فایل ‏طولانی باشد و بخواهید آن را به‌صورت صفحه به صفحه مرور کنید‎.  ‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  more [‎نام فایل‎]‎

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎نمایش محتوای فایل به صورت صفحه به صفحه‎:‎

‎     ```bash‎

‎     more file.txt

‎     ```‎

‎  2. ‎شروع نمایش از خط خاصی‎:‎

‎     ```bash‎

‎     more +5 file.txt

‎     ```‎

‎  ‎در اینجا، نمایش از خط پنجم فایل آغاز می‌شود‎.‎

‎- ‎کلیدهای مهم‎:‎

‎  - `Space`: ‎رفتن به صفحه بعد‎.‎

‎  - `b`: ‎بازگشت به صفحه قبلی‎.‎

‎  - `q`: ‎خروج‎.‎

‎ 3- دستور‎ `less`‎

‎- ‎شرح: دستور‎ `less` ‎مشابه دستور‎ `more` ‎است ولی قابلیت‌های بیشتری برای پیمایش در فایل دارد. با‎ `less` ‎می‌توانید هم به جلو ‏و هم به عقب در فایل حرکت کنید‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  less [‎نام فایل‎]‎

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎نمایش فایل به صورت صفحه به صفحه‎:‎

‎     ```bash‎

‎     less file.txt

‎     ```‎

‎  2. ‎جستجوی یک کلمه خاص‎:‎

‎     ```bash‎

‎     /pattern‎

‎     ```‎

‎کلیدهای مهم‎:‎

‎  - `Space`: ‎صفحه بعد‎.‎

‎  - `b`: ‎صفحه قبل‎.‎

‎  - `/`: ‎جستجو در فایل‎.‎

‎  - `n`: ‎نمایش مورد بعدی جستجو‎.‎

‎  - `q`: ‎خروج‎.‎

‎ ‎‏۲‏‎. ‎جستجو و فیلتر محتویات فایل‌های متنی

‎ 4 - دستور‎ `grep`‎

‎- ‎ `grep` ‎ابزاری برای جستجوی الگوها‎ (Pattern) ‎در فایل‌ها یا خروجی دستورات است. این دستور بسیار قدرتمند و ‏انعطاف‌پذیر است و به شما اجازه می‌دهد به راحتی در فایل‌های بزرگ به دنبال اطلاعات خاصی بگردید‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  grep ‎‏[گزینه‌ها] "الگو" [نام فایل]‏

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎جستجوی یک کلمه در یک فایل‎:‎

‎     ```bash‎

‎     grep "error" log.txt

‎     ```‎

‎  2. ‎جستجوی کلمه بدون توجه به بزرگی یا کوچکی حروف‎:‎

‎     ```bash‎

‎     grep -i "error" log.txt

‎     ```‎

‎  3. ‎جستجوی الگو در همه فایل‌های یک دایرکتوری‎:‎

‎     ```bash‎

‎     grep -r "function" /path/to/directory

‎     ```‎

‎  4. ‎نمایش شماره خط‌ها که شامل الگو هستند‎:‎

‎     ```bash‎

‎     grep -n "error" log.txt

‎     ```‎

‎  5. ‎جستجو و شمارش تعداد تکرار یک الگو‎:‎

‎     ```bash‎

‎     grep -c "pattern" file.txt

‎     ```‎

کلیدهای مهم‎:‎

‎  - `-i`: ‎جستجو بدون توجه به بزرگی و کوچکی حروف‎.‎

‎  - `-r`: ‎جستجوی بازگشتی در دایرکتوری‌ها‎.‎

‎  - `-n`: ‎نمایش شماره خطوط‎.‎

‎  - `-v`: ‎نمایش خطوطی که شامل الگو نیستند‎.‎

5 - ‎دستور‎ `awk`‎

‎- ‎شرح: دستور‎ `awk` ‎برای پردازش و تحلیل فایل‌های متنی به کار می‌رود. با استفاده از‏‎ `awk` ‎می‌توان اطلاعات موجود در فایل‌های ‏متنی را به‌صورت جدول‌بندی شده پردازش کرد‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  awk '‎عملیات' [نام فایل]‏

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎نمایش ستون اول از یک فایل متنی‎:‎

‎     ```bash‎

‎     awk '{print $1}' file.txt

‎     ```‎

‎  2. ‎نمایش ردیف‌هایی که مقدار ستون دوم آنها برابر با یک مقدار خاص است‎:‎

‎     ```bash‎

‎     awk '$2 == "value" {print $0}' file.txt

‎     ```‎

‎  3. ‎جمع کردن اعداد موجود در ستون سوم‎:‎

‎     ```bash‎

‎     awk '{sum += $3} END {print sum}' file.txt

‎     ```‎


کلیدهای مهم‎:‎

‎  - `{print $1}`: ‎نمایش ستون اول‎.‎

‎  - `END {print}`: ‎نمایش خروجی بعد از اتمام پردازش‎.‎

‎  - `$0`: ‎نمایش کل ردیف‎.‎

6 - دستور‎ `sed`‎

‎- ‎ `sed` ‎یک ابزار ویرایشگر جریان متنی است که برای ویرایش سریع و خودکار فایل‌های متنی استفاده می‌شود. با‎ `sed` ‎می‌توان به راحتی در فایل‌ها جستجو کرده و متن‌ها را جایگزین کرد‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  sed '‎عملیات' [نام فایل]‏

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎جایگزینی یک متن با متن دیگر‎:‎

‎     ```bash‎

‎     sed 's/old-text/new-text/g' file.txt

‎     ```‎

این دستور تمامی موارد پیدا شده‎ `old-text` ‎را با‎ `new-text` ‎جایگزین می‌کند‎.‎

‎  2. ‎حذف خطوطی که شامل یک الگوی خاص هستند‎:‎

‎     ```bash‎

‎     sed '/pattern/d' file.txt

‎     ```‎

کلیدهای مهم‎:‎

‎  - `s`: ‎مشخص کننده عملیات جایگزینی‎.‎

‎  - `g`: ‎انجام جایگزینی در تمام موارد‎.‎

‎  - `d`: ‎حذف خطوط‎.‎

2 - ویرایشگر‎ `nano`‎

‎- `nano` ‎یک ویرایشگر متنی ساده و سبک است که به کاربران اجازه می‌دهد به راحتی فایل‌های متنی را ویرایش کنند‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  nano [‎نام فایل‎]‎

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎باز کردن یک فایل برای ویرایش‎:‎

‎     ```bash‎

‎     nano file.txt

‎     ```‎

‎  2. ‎ایجاد یک فایل جدید‎:‎

‎     ```bash‎

‎     nano newfile.txt

‎     ```‎

‎  3. ‎ذخیره تغییرات و خروج‎:‎

‎     - `Ctrl + O`: ‎ذخیره‎.‎

‎     - `Ctrl + X`: ‎خروج‎.‎

‎---‎


‎ 3 - ویرایشگر‎ `vim`‎

‎- `vim` ‎یک ویرایشگر پیشرفته متن است که نسبت به‎ `nano` ‎امکانات بیشتری دارد‎. `vim` ‎دو حالت اصلی دارد: حالت ‏ویرایش و حالت دستوری‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  vim [‎نام فایل‎]‎

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎باز کردن یک فایل برای ویرایش‎:‎

‎     ```bash‎

‎     vim file.txt

‎     ```‎

‎  2. ‎ورود به حالت ویرایش‎:‎

‎     - `i`: ‎ورود به حالت ویرایش‎.‎

‎     - `Esc`: ‎خروج از حالت ویرایش‎.‎

‎  3. ‎ذخیره تغییرات و خروج‎:‎

‎     - `:w‎

‎`: ‎ذخیره‎.‎

‎     - `:q`: ‎خروج‎.‎

‎     - `:wq`: ‎ذخیره و خروج‎.‎

4 - ایجاد و تغییر محتویات فایل‌های متنی

1 - دستور‎ `touch`‎

‎- ‎شرح: دستور‎ `touch` ‎برای ایجاد فایل‌های خالی یا به‌روزرسانی زمان آخرین ویرایش فایل‌ها استفاده می‌شود‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  touch [‎نام فایل‎]‎

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎ایجاد یک فایل جدید‎:‎

‎     ```bash‎

‎     touch newfile.txt

‎     ```‎

‎  2. ‎به‌روزرسانی زمان آخرین دسترسی فایل‎:‎

‎     ```bash‎

‎     touch existingfile.txt

‎     ```‎

2 - دستور‎ `echo`‎

‎- ‎شرح: دستور‎ `echo` ‎برای نوشتن متن در یک فایل یا نمایش متن در خروجی ترمینال استفاده می‌شود‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  echo "‎متن" > [نام فایل]‏

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎نوشتن یک متن در فایل‎:‎

‎     ```bash‎

‎     echo "Hello, World!" > file.txt

‎     ```‎

‎  2. ‎افزودن متن به انتهای یک فایل‎:‎

‎     ```bash‎

‎     echo "New line" >> file.txt

‎     ```‎

5 - نمایش خطوط خاص از فایل‌ها

1 - دستور‎ `head`‎

دستور‎ `head` ‎برای نمایش خطوط ابتدایی یک فایل استفاده می‌شود. پیش‌فرض این دستور ۱۰ خط اول فایل را نمایش ‏می‌دهد‎.‎

‎- ‎فرمت دستور‎:‎

‎  ```bash‎

‎  head ‎‏[گزینه‌ها] [نام فایل]‏

‎  ```‎

‎- ‎مثال‌های کاربردی‎:‎

‎  1. ‎نمایش ۱۰ خط اول‎:‎

‎     ```bash‎

‎     head file.txt

‎     ```‎

‎  2. ‎نمایش تعداد مشخصی از خطوط‎:‎

‎     ```bash‎

‎     head -n 5 file.txt

‎     ```‎

2 - دستور `‏tail‏`‏

دستور `‏tail‏` برای نمایش خطوط انتهایی یک فایل استفاده می‌شود. این دستور به‌صورت پیش‌فرض ۱۰ خط آخر فایل را ‏نمایش می‌دهد، اما می‌توان آن را برای نمایش تعداد خاصی از خطوط یا حتی نمایش زنده تغییرات در فایل‌ها استفاده کرد.‏

‏- فرمت دستور:‏

‏  ```‏bash

‏  ‏tail‏ [گزینه‌ها] [نام فایل]‏

‏  ```‏

‏- مثال‌های کاربردی:‏

‏  1. نمایش ۱۰ خط آخر فایل:‏

‏     ```‏bash

‏     ‏tail file.txt

‏     ```‏

‏  2. نمایش تعداد مشخصی از خطوط آخر:‏

‏     ```‏bash

‏     ‏tail -n 20 file.txt

‏     ```‏

‏     این دستور ۲۰ خط آخر فایل را نمایش می‌دهد.‏

‏  3. نمایش زنده تغییرات در فایل (معمولاً برای فایل‌های ‏log‏):‏

‏     ```‏bash

‏     ‏tail -f log.txt

‏     ```‏

‏ این دستور تغییرات جدید فایل را به صورت زنده نمایش می‌دهد و برای نظارت بر فایل‌های ‏log‏ بسیار مفید است.‏

3 - دستور `‏wc‏`‏

دستور `‏wc‏` مخفف "‏word count‏" است و برای شمارش خطوط، کلمات و کاراکترهای موجود در فایل‌های متنی استفاده ‏می‌شود.‏

‏- فرمت دستور:‏

‏  ```‏bash

‏  ‏wc‏ [گزینه‌ها] [نام فایل]‏

‏  ```‏

‏- مثال‌های کاربردی:‏

‏  1. شمارش خطوط، کلمات و کاراکترها:‏

‏     ```‏bash

‏     ‏wc file.txt

‏     ```‏

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

‏  2. شمارش خطوط:‏

‏     ```‏bash

‏     ‏wc -l file.txt

‏     ```‏

فقط تعداد خطوط فایل را نمایش می‌دهد.‏

‏  3. شمارش کلمات:‏

‏     ```‏bash

‏     ‏wc -w file.txt

‏     ```‏

فقط تعداد کلمات فایل را نمایش می‌دهد.‏

‏  4. شمارش کاراکترها:‏

‏     ```‏bash

‏     ‏wc -c file.txt

‏     ```‏

فقط تعداد کاراکترهای فایل را نمایش می‌دهد.‏

6 - مقایسه فایل‌های متنی

1 - دستور `‏diff‏`‏

دستور `‏diff‏` برای مقایسه دو فایل و نمایش تفاوت‌های بین آن‌ها به کار می‌رود. این ابزار می‌تواند خطوطی که در یک فایل ‏وجود دارند ولی در دیگری نیستند را نمایش دهد و تفاوت‌های بین دو نسخه فایل را برجسته کند.‏

‏- فرمت دستور:‏

‏  ```‏bash

‏  ‏diff‏ [گزینه‌ها] [فایل1] [فایل2]‏

‏  ```‏

‏- مثال‌های کاربردی:‏

‏  1. مقایسه دو فایل:‏

‏     ```‏bash

‏     ‏diff file1.txt file2.txt

‏     ```‏

‏  2. مقایسه بازگشتی دو دایرکتوری:‏

‏     ```‏bash

‏     ‏diff -r dir1/ dir2‎‏/‏

‏     ```‏

این دستور تمامی فایل‌ها و زیرپوشه‌های دو دایرکتوری را با هم مقایسه می‌کند.‏

‏  3. ذخیره خروجی تفاوت‌ها در یک فایل:‏

‏     ```‏bash

‏     ‏diff file1.txt file2.txt > differences.txt

‏     ```‏

‏- نکته: خروجی دستور `‏diff‏` شامل علامت‌های `>` و `<` برای نمایش خطوطی است که در فایل اول یا فایل دوم وجود دارند.‏

2 - دستور `‏cmp‏`‏

دستور `‏cmp‏` دو فایل را به صورت بیتی مقایسه می‌کند و اولین تفاوت بین آن‌ها را نمایش می‌دهد. برخلاف `‏diff‏` که ‏تفاوت‌های جزئی را برجسته می‌کند، `‏cmp‏` به‌صورت بیتی بررسی می‌کند و تنها اولین تفاوت را گزارش می‌دهد.‏

‏- فرمت دستور:‏

‏  ```‏bash

‏  ‏cmp‏ [فایل1] [فایل2]‏

‏  ```‏

‏- مثال‌های کاربردی:‏

‏  1. مقایسه دو فایل:‏

‏     ```‏bash

‏     ‏cmp file1.txt file2.txt

‏     ```‏

‏  2. نمایش اولین تفاوت از نظر بایت و خط:‏

‏     ```‏bash

‏     ‏cmp -l file1.txt file2.txt

‏     ```‏

7 - ترکیب دستورات (‏Piping‏)‏

در لینوکس می‌توان خروجی یک دستور را به عنوان ورودی به دستور دیگری ارسال کرد. این کار با استفاده از علامت `|` ‏انجام می‌شود و به شما اجازه می‌دهد دستورات را به صورت سلسله مراتبی اجرا کنید.‏

‏- مثال‌های کاربردی:‏

‏  1. جستجوی یک کلمه در خروجی دستور `‏cat‏`:‏

‏     ```‏bash

‏     ‏cat file.txt | grep "error‏"‏

‏     ```‏

‏  2. شمارش تعداد خطوطی که شامل یک کلمه خاص هستند:‏

‏     ```‏bash

‏     ‏grep "error" file.txt | wc -l

‏     ```‏

‏  3. فیلتر کردن خطوطی که شامل کلمه خاصی نیستند:‏

‏     ```‏bash

‏     ‏cat file.txt | grep -v "pattern‏"‏

‏     ```‏

‏  4. مشاهده فایل‌های ‏log‏ و نمایش فقط خطوطی که شامل "‏error‏" هستند:‏

‏     ```‏bash

‏     ‏tail -f /var/log/syslog | grep "error‏"‏

‏     ```‏

8 - تمرینات و پروژه‌های عملی

تمرینات:‏

‏1. با استفاده از `‏cat‏` محتویات دو فایل را به هم بچسبانید و در یک فایل جدید ذخیره کنید.‏

‏2. در یک فایل بزرگ با استفاده از `‏grep‏` به دنبال کلمه "‏error‏" بگردید و خطوطی که شامل آن نیستند را با `‏sed‏` حذف کنید.‏

‏3. با استفاده از `‏awk‏` ستون دوم یک فایل متنی را نمایش دهید و جمع ستون سوم را محاسبه کنید.‏

‏4. دو فایل متنی را با استفاده از `‏diff‏` مقایسه کنید و تفاوت‌ها را در یک فایل جدید ذخیره کنید.‏

پروژه عملی:‏

‏- پروژه: مانیتورینگ فایل‌های ‏log‏ سرور

‏  - هدف: با استفاده از `‏tail -f‏` و `‏grep‏`، یک اسکریپت بنویسید که فایل‌های ‏log‏ سرور را به‌صورت زنده مانیتور کرده و هر ‏زمان که خطایی رخ داد، آن را در یک فایل جداگانه ثبت کند.‏

‏  - مراحل:‏

‏    1. استفاده از `‏tail -f‏` برای مانیتور کردن فایل ‏log‏.‏

‏    2. فیلتر کردن خطوطی که شامل "‏error‏" هستند با `‏grep‏`.‏

‏    3. ذخیره خطوط خطا در یک فایل جداگانه.‏


نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.