در محیط خط فرمان، مشاهده محتوای فایلها و نمایش خروجیها از اساسیترین عملیاتها هستند. این بخش به ابزارهای مختلفی میپردازد که هرکدام برای سناریوهای خاصی طراحی شدهاند.
دستور cat یکی از پرکاربردترین دستورات در لینوکس است. نام آن از کلمهی "Concatenate" به معنای «به هم چسباندن» گرفته شده است. وظیفهی اصلی cat خواندن یک یا چند فایل و چاپ محتوای آنها در خروجی استاندارد (معمولاً صفحهنمایش) است.
ساختار کلی:
cat [option] [file...]
مشاهده محتوای یک فایل:
cat myfile.txt
محتوای فایل را بهصورت کامل در ترمینال نمایش میدهد.
مشاهده محتوای چند فایل بهصورت پشت سر هم:
cat file1.txt file2.txt file3.txt
محتوای هر سه فایل را یکی پس از دیگری چاپ میکند.
ایجاد یک فایل جدید (با استفاده از ورودی استاندارد):
cat > newfile.txt
پس از اجرای این دستور، هر چیزی که تایپ کنید در فایل newfile.txt ذخیره میشود. برای پایان دادن، کلید ترکیبی Ctrl+D را فشار دهید.
چسباندن محتوای دو فایل به یک فایل جدید:
cat file1.txt file2.txt > combined.txt
محتوای file1.txt و file2.txt را به ترتیب در فایل combined.txt میریزد.
افزودن محتوای یک فایل به انتهای فایل دیگر (Append):
cat file2.txt >> file1.txt
محتوای file2.txt را به انتهای file1.txt اضافه میکند.
شمارهگذاری خطوط (با گزینه -n):
cat -n myfile.txt
تمام خطوط فایل را با شماره نمایش میدهد.
نمایش خطوط غیرقابل چاپ با نشانههای خاص (با گزینه -A):
cat -A myfile.txt
کاراکترهای مخفی مانند فاصلهها، تبها (^I) و انتهای خطوط ($) را نشان میدهد. برای تشخیص کاراکترهای خاص بسیار مفید است.
فشردهسازی خطوط خالی تکراری (با گزینه -s):
cat -s myfile.txt
چندین خط خالی پشت سر هم را به یک خط خالی تبدیل میکند.
نکته مهم:
catبرای فایلهای کوچک عالی است، اما برای فایلهای بسیار بزرگ (چندین مگابایت یا بیشتر) مناسب نیست، زیرا کل فایل را یکباره در حافظه میخواند و تمام محتوا را به سرعت از صفحه عبور میدهد. در چنین مواردی باید ازlessیاmoreاستفاده کنید.
دستور less یک مشاهدهگر صفحهبهصفحه (Pager) قدرتمند برای مشاهدهی فایلهای متنی بزرگ است. نام آن برعکس more است (که در ادامه معرفی میشود) و اشاره به این دارد که برخلاف more، اجازهی اسکرول به عقب و جلو را میدهد.
ساختار کلی:
less [option] [file]
پس از اجرای less، صفحهی اول فایل نمایش داده میشود. برای حرکت در فایل از کلیدهای زیر استفاده میشود:
| کلید | عمل |
|---|---|
| Space یا Page Down | یک صفحه به جلو بروید. |
| b یا Page Up | یک صفحه به عقب برگردید. |
| ↓ یا Enter | یک خط به پایین بروید. |
| ↑ | یک خط به بالا بروید. |
| g | به ابتدای فایل بروید. |
| G | به انتهای فایل بروید. |
| /pattern | به دنبال عبارت pattern به سمت جلو بگردید. (بعد از / تایپ کنید و Enter بزنید) |
| ?pattern | به دنبال عبارت pattern به سمت عقب بگردید. |
| n | تکرار جستجوی بعدی (به همان جهت). |
| N | تکرار جستجوی قبلی (جهت مخالف). |
| v | فایل را در ویرایشگر vi (یا ویرایشگر پیشفرض) باز کند. |
| q | از برنامه خارج شوید. |
شمارهگذاری خطوط (با گزینه -N):
less -N myfile.txt
شماره خطوط را در ابتدای هر خط نمایش میدهد.
نمایش بدون قطع خطوط طولانی (با گزینه -S):
less -S myfile.txt
خطوط طولانی را نمیشکند و برای دیدن ادامهی خط، باید از کلیدهای چپ و راست (جهت اسکرول افقی) استفاده کنید.
مشاهدهی ورودی لولهشده (Pipe):
dmesg | less
خروجی دستور dmesg را بهصورت صفحهبهصفحه نمایش میدهد.
دنبال کردن فایل در حال رشد (مانند tail -f اما با قابلیت اسکرول):
less +F myfile.txt
این حالت مشابه tail -f عمل میکند و تغییرات جدید فایل را نمایش میدهد. برای خروج از این حالت و بازگشت به حالت عادی less، کلیدهای Ctrl+C را فشار دهید.
دستور more نسخهی قدیمیتر و سادهتر از less است. این دستور نیز یک مشاهدهگر صفحهبهصفحه است، اما قابلیتهای کمتری نسبت به less دارد. مهمترین محدودیت آن این است که نمیتوانید به عقب برگردید (فقط جلو میروید).
ساختار کلی:
more [option] [file]
| کلید | عمل |
|---|---|
| Space | یک صفحه به جلو بروید. |
| Enter | یک خط به پایین بروید. |
| b | یک صفحه به عقب برگردید (فقط در برخی نسخهها). |
| = | شماره خط فعلی را نمایش میدهد. |
| q | از برنامه خارج شوید. |
شمارهگذاری خطوط (با گزینه -N):
more -N myfile.txt
(مشابه less)
فشردهسازی خطوط خالی (با گزینه -s):
more -s myfile.txt
نکته: در سیستمهای مدرن،
lessتقریباً بهطور کامل جایگزینmoreشده است. پیشنهاد میشود بهجایmoreازlessاستفاده کنید.
دستور head برای نمایش خطوط ابتدایی یک فایل استفاده میشود. بهطور پیشفرض، ۱۰ خط اول فایل را نمایش میدهد.
ساختار کلی:
head [option] [file...]
نمایش ۱۰ خط اول فایل (پیشفرض):
head myfile.txt
نمایش تعداد مشخصی خط (با گزینه -n):
head -n 5 myfile.txt
نمایش ۵ خط اول فایل.
نمایش تعداد مشخصی بایت (با گزینه -c):
head -c 50 myfile.txt
نمایش ۵۰ بایت اول فایل.
نمایش چند فایل بهصورت همزمان:
head -n 3 file1.txt file2.txt
خروجی شامل هدر هر فایل به همراه ۳ خط اول آن است:
==> file1.txt <== line1 line2 line3 ==> file2.txt <== line1 line2 line3
نمایش همهی خطوط به جز چند خط آخر (استفاده از عدد منفی با -n):
head -n -5 myfile.txt
همهی خطوط به جز ۵ خط آخر را نمایش میدهد.
دستور tail متقارن head است و برای نمایش خطوط انتهایی یک فایل استفاده میشود. این دستور بهویژه برای مشاهدهی لاگهای سیستمی و فایلهایی که مدام بهروز میشوند، بسیار کاربردی است.
ساختار کلی:
tail [option] [file...]
نمایش ۱۰ خط آخر فایل (پیشفرض):
tail myfile.txt
نمایش تعداد مشخصی خط (با گزینه -n):
tail -n 15 myfile.txt
نمایش ۱۵ خط آخر فایل.
نمایش همهی خطوط به جز چند خط اول (استفاده از عدد منفی با -n):
tail -n +5 myfile.txt
همهی خطوط را از خط ۵ به بعد نمایش میدهد.
دنبال کردن یک فایل در حال رشد (با گزینه -f):
tail -f /var/log/syslog
این دستور، انتهای فایل را نمایش میدهد و سپس ترمینال را باز نگه میدارد و هر خط جدیدی که به فایل اضافه شود، بهصورت لحظهای نمایش میدهد. برای خروج از آن، کلیدهای Ctrl+C را فشار دهید.
دنبال کردن با نمایش مجدد کل فایل در صورت تغییر نام (با گزینه -F):
tail -F /var/log/syslog
مانند -f عمل میکند، اما اگر فایل حذف و دوباره ساخته شود (که در لاگهای سیستمی رایج است)، دنبال کردن را ادامه میدهد.
نمایش تعداد مشخصی بایت (با گزینه -c):
tail -c 100 myfile.txt
نمایش ۱۰۰ بایت آخر فایل.
دستور echo یکی از سادهترین و در عین حال پرکاربردترین دستورات است. وظیفهی آن، نمایش یک رشتهی متنی در خروجی استاندارد است. از این دستور در اسکریپتنویسی برای نمایش پیامها، مقدار متغیرها و تولید خروجیهای مختلف استفاده میشود.
ساختار کلی:
echo [option] [string...]
نمایش یک متن ساده:
echo "Hello World" # خروجی: Hello World
نمایش مقدار یک متغیر:
name="Ali" echo "Hello $name" # خروجی: Hello Ali
نمایش بدون رفتن به خط جدید (با گزینه -n):
echo -n "Hello" echo "World" # خروجی: HelloWorld
تفسیر کاراکترهای Escape مانند \n (خط جدید) و \t (تب) (با گزینه -e):
echo -e "Line1\nLine2\nLine3" # خروجی: # Line1 # Line2 # Line3
echo -e "Name:\tAli\tAge:\t30" # خروجی: Name: Ali Age: 30
نمایش لیستی از فایلها (با استفاده از wildcard):
echo *.txt # خروجی: file1.txt file2.txt file3.txt
نوشتن در یک فایل (با استفاده از redirection):
echo "New content" > myfile.txt
محتوای myfile.txt را با متن جدید بازنویسی میکند.
echo "More content" >> myfile.txt
متن را به انتهای myfile.txt اضافه میکند.
نکته: در برخی شلها (مثل Bash)،
echoیک دستور توکار (Built-in) است و در برخی دیگر یک برنامهی خارجی در/usr/bin/echo. رفتار آنها ممکن است کمی متفاوت باشد.
دستور printf نسخهی قدرتمندتر و استانداردتر echo است. این دستور از زبان برنامهنویسی C الهام گرفته شده است و به شما امکان میدهد خروجی را با قالببندی دقیق کنترل کنید. برخلاف echo که رفتار آن در شلهای مختلف متفاوت است، printf در همهجا رفتار یکسانی دارد.
ساختار کلی:
printf FORMAT [ARGUMENT...]
FORMAT: یک رشتهی قالبی که نحوهی نمایش آرگومانها را تعیین میکند.
ARGUMENT: مقادیری که مطابق با قالب نمایش داده میشوند.
نمایش ساده (مشابه echo):
printf "Hello World\n" # خروجی: Hello World
نمایش متغیرها با قالببندی:
name="Ali" age=30 printf "Name: %s, Age: %d\n" "$name" "$age" # خروجی: Name: Ali, Age: 30
قالببندی اعداد اعشاری:
pi=3.14159265 printf "Pi: %.2f\n" $pi # خروجی: Pi: 3.14
%.2f یعنی عدد اعشاری را با ۲ رقم اعشار نمایش بده.
چیدمان جدولی با عرض ثابت:
printf "%-10s %-10s %-10s\n" "Name" "Age" "City" printf "%-10s %-10d %-10s\n" "Ali" 30 "Tehran" printf "%-10s %-10d %-10s\n" "Sara" 25 "Shiraz"
خروجی:
Name Age City Ali 30 Tehran Sara 25 Shiraz
%-10s یعنی یک رشته با عرض ۱۰ کاراکتر که به چپ چین شده است (- یعنی چپچین).
تبدیل اعداد به مبناهای مختلف:
printf "%d\n" 255 # 255 (decimal) printf "%x\n" 255 # ff (hexadecimal) printf "%o\n" 255 # 377 (octal)
استفاده از مشخصههای قالببندی پیشرفته
printf "%'d\n" 1000000 # 1,000,000 (با جداکننده هزارگان)
| مشخصه | توضیح | مثال |
|---|---|---|
%s | رشته (String) | %s |
%d یا %i | عدد صحیح (Integer) | %d |
%f | عدد اعشاری (Floating point) | %.2f |
%x یا %X | عدد هگزادسیمال (حروف کوچک/بزرگ) | %x |
%o | عدد اکتال | %o |
%% | نمایش یک علامت درصد | %% |
\n | خط جدید | |
\t | تب | |
\\ | بکاسلش |
نکته مهم: برخلاف
echo،printfبهطور خودکار در انتهای خروجی یک خط جدید (\n) اضافه نمیکند. بنابراین اگر میخواهید خروجی به خط بعدی برود، باید خودتان\nرا در فرمت قرار دهید.
| دستور | کاربرد اصلی | چه زمانی استفاده کنیم؟ |
|---|---|---|
cat | نمایش کامل محتوا، چسباندن فایلها | فایلهای کوچک، ترکیب فایلها، ایجاد فایلهای ساده |
less | مشاهدهی صفحهبهصفحه با قابلیت اسکرول دوطرفه | فایلهای بزرگ، لاگها، هر جایی که نیاز به جستجو و اسکرول دارید |
more | مشاهدهی صفحهبهصفحه (فقط جلو) | سیستمهای قدیمی، جایگزین less نیست |
head | نمایش ابتدای فایل | مشاهدهی هدر فایلها، پیشنمایش اولیه |
tail | نمایش انتهای فایل، دنبال کردن لاگها | مشاهدهی آخرین ورودیهای لاگ، دنبال کردن فایلهای در حال رشد |
echo | نمایش متن ساده، اسکریپتنویسی | چاپ پیامها، مقادیر متغیرها، تولید خروجیهای ساده |
printf | نمایش متن با قالببندی دقیق | زمانی که نیاز به کنترل کامل روی فرمت خروجی دارید، تولید جداول |
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات