لینوکس به دلیل ماهیت خط فرمانی خود، ابزارهای قدرتمندی برای مدیریت و کار با فایلهای متنی در اختیار کاربران قرار میدهد. این ابزارها برای مشاهده، ویرایش، جستجو، مقایسه و پردازش فایلهای متنی طراحی شدهاند. در این جزوه به صورت جامع، تمامی دستورات پرکاربرد و نکات مرتبط با فایلهای متنی بررسی خواهد شد.
- فرمت دستور:
```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` استفاده کنید.
- شرح: دستور `more` برای نمایش محتوای فایل به صورت صفحه به صفحه استفاده میشود. این ابزار زمانی مفید است که فایل طولانی باشد و بخواهید آن را بهصورت صفحه به صفحه مرور کنید.
- فرمت دستور:
```bash
more [نام فایل]
```
- مثالهای کاربردی:
1. نمایش محتوای فایل به صورت صفحه به صفحه:
```bash
more file.txt
```
2. شروع نمایش از خط خاصی:
```bash
more +5 file.txt
```
در اینجا، نمایش از خط پنجم فایل آغاز میشود.
- کلیدهای مهم:
- `Space`: رفتن به صفحه بعد.
- `b`: بازگشت به صفحه قبلی.
- `q`: خروج.
- شرح: دستور `less` مشابه دستور `more` است ولی قابلیتهای بیشتری برای پیمایش در فایل دارد. با `less` میتوانید هم به جلو و هم به عقب در فایل حرکت کنید.
- فرمت دستور:
```bash
less [نام فایل]
```
- مثالهای کاربردی:
1. نمایش فایل به صورت صفحه به صفحه:
```bash
less file.txt
```
2. جستجوی یک کلمه خاص:
```bash
/pattern
```
کلیدهای مهم:
- `Space`: صفحه بعد.
- `b`: صفحه قبل.
- `/`: جستجو در فایل.
- `n`: نمایش مورد بعدی جستجو.
- `q`: خروج.
۲. جستجو و فیلتر محتویات فایلهای متنی
- `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`: نمایش خطوطی که شامل الگو نیستند.
- شرح: دستور `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`: نمایش کل ردیف.
- `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`: خروج.
---
- `vim` یک ویرایشگر پیشرفته متن است که نسبت به `nano` امکانات بیشتری دارد. `vim` دو حالت اصلی دارد: حالت ویرایش و حالت دستوری.
- فرمت دستور:
```bash
vim [نام فایل]
```
- مثالهای کاربردی:
1. باز کردن یک فایل برای ویرایش:
```bash
vim file.txt
```
2. ورود به حالت ویرایش:
- `i`: ورود به حالت ویرایش.
- `Esc`: خروج از حالت ویرایش.
3. ذخیره تغییرات و خروج:
- `:w
`: ذخیره.
- `:q`: خروج.
- `:wq`: ذخیره و خروج.
- شرح: دستور `touch` برای ایجاد فایلهای خالی یا بهروزرسانی زمان آخرین ویرایش فایلها استفاده میشود.
- فرمت دستور:
```bash
touch [نام فایل]
```
- مثالهای کاربردی:
1. ایجاد یک فایل جدید:
```bash
touch newfile.txt
```
2. بهروزرسانی زمان آخرین دسترسی فایل:
```bash
touch existingfile.txt
```
- شرح: دستور `echo` برای نوشتن متن در یک فایل یا نمایش متن در خروجی ترمینال استفاده میشود.
- فرمت دستور:
```bash
echo "متن" > [نام فایل]
```
- مثالهای کاربردی:
1. نوشتن یک متن در فایل:
```bash
echo "Hello, World!" > file.txt
```
2. افزودن متن به انتهای یک فایل:
```bash
echo "New line" >> file.txt
```
دستور `head` برای نمایش خطوط ابتدایی یک فایل استفاده میشود. پیشفرض این دستور ۱۰ خط اول فایل را نمایش میدهد.
- فرمت دستور:
```bash
head [گزینهها] [نام فایل]
```
- مثالهای کاربردی:
1. نمایش ۱۰ خط اول:
```bash
head file.txt
```
2. نمایش تعداد مشخصی از خطوط:
```bash
head -n 5 file.txt
```
دستور `tail` برای نمایش خطوط انتهایی یک فایل استفاده میشود. این دستور بهصورت پیشفرض ۱۰ خط آخر فایل را نمایش میدهد، اما میتوان آن را برای نمایش تعداد خاصی از خطوط یا حتی نمایش زنده تغییرات در فایلها استفاده کرد.
- فرمت دستور:
```bash
tail [گزینهها] [نام فایل]
```
- مثالهای کاربردی:
1. نمایش ۱۰ خط آخر فایل:
```bash
tail file.txt
```
2. نمایش تعداد مشخصی از خطوط آخر:
```bash
tail -n 20 file.txt
```
این دستور ۲۰ خط آخر فایل را نمایش میدهد.
3. نمایش زنده تغییرات در فایل (معمولاً برای فایلهای log):
```bash
tail -f log.txt
```
این دستور تغییرات جدید فایل را به صورت زنده نمایش میدهد و برای نظارت بر فایلهای log بسیار مفید است.
دستور `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
```
فقط تعداد کاراکترهای فایل را نمایش میدهد.
دستور `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` شامل علامتهای `>` و `<` برای نمایش خطوطی است که در فایل اول یا فایل دوم وجود دارند.
دستور `cmp` دو فایل را به صورت بیتی مقایسه میکند و اولین تفاوت بین آنها را نمایش میدهد. برخلاف `diff` که تفاوتهای جزئی را برجسته میکند، `cmp` بهصورت بیتی بررسی میکند و تنها اولین تفاوت را گزارش میدهد.
- فرمت دستور:
```bash
cmp [فایل1] [فایل2]
```
- مثالهای کاربردی:
1. مقایسه دو فایل:
```bash
cmp file1.txt file2.txt
```
2. نمایش اولین تفاوت از نظر بایت و خط:
```bash
cmp -l file1.txt file2.txt
```
در لینوکس میتوان خروجی یک دستور را به عنوان ورودی به دستور دیگری ارسال کرد. این کار با استفاده از علامت `|` انجام میشود و به شما اجازه میدهد دستورات را به صورت سلسله مراتبی اجرا کنید.
- مثالهای کاربردی:
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"
```
تمرینات:
1. با استفاده از `cat` محتویات دو فایل را به هم بچسبانید و در یک فایل جدید ذخیره کنید.
2. در یک فایل بزرگ با استفاده از `grep` به دنبال کلمه "error" بگردید و خطوطی که شامل آن نیستند را با `sed` حذف کنید.
3. با استفاده از `awk` ستون دوم یک فایل متنی را نمایش دهید و جمع ستون سوم را محاسبه کنید.
4. دو فایل متنی را با استفاده از `diff` مقایسه کنید و تفاوتها را در یک فایل جدید ذخیره کنید.
پروژه عملی:
- پروژه: مانیتورینگ فایلهای log سرور
- هدف: با استفاده از `tail -f` و `grep`، یک اسکریپت بنویسید که فایلهای log سرور را بهصورت زنده مانیتور کرده و هر زمان که خطایی رخ داد، آن را در یک فایل جداگانه ثبت کند.
- مراحل:
1. استفاده از `tail -f` برای مانیتور کردن فایل log.
2. فیلتر کردن خطوطی که شامل "error" هستند با `grep`.
3. ذخیره خطوط خطا در یک فایل جداگانه.