در محیط خط فرمان، مشاهده محتوای فایلها و نمایش خروجیها از اساسیترین عملیاتها هستند. این بخش به ابزارهای مختلفی میپردازد که هرکدام برای سناریوهای خاصی طراحی شدهاند.
cat (Concatenate)
دستور 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
دستور less یک مشاهدهگر صفحهبهصفحه (Pager) قدرتمند برای مشاهدهی فایلهای متنی بزرگ است. نام آن برعکس more است (که در ادامه معرفی میشود) و اشاره به این دارد که برخلاف more، اجازهی اسکرول به عقب و جلو را میدهد.
ساختار کلی:
less [option] [file]
نحوهی کار با less
پس از اجرای 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
دستور more نسخهی قدیمیتر و سادهتر از less است. این دستور نیز یک مشاهدهگر صفحهبهصفحه است، اما قابلیتهای کمتری نسبت به less دارد. مهمترین محدودیت آن این است که نمیتوانید به عقب برگردید (فقط جلو میروید).
ساختار کلی:
more [option] [file]
نحوهی کار با more
| کلید | عمل |
|---|---|
| Space | یک صفحه به جلو بروید. |
| Enter | یک خط به پایین بروید. |
| b | یک صفحه به عقب برگردید (فقط در برخی نسخهها). |
| = | شماره خط فعلی را نمایش میدهد. |
| q | از برنامه خارج شوید. |
گزینههای مفید
-
شمارهگذاری خطوط (با گزینه
-N):more -N myfile.txt
(مشابه
less) -
فشردهسازی خطوط خالی (با گزینه
-s):more -s myfile.txt
نکته: در سیستمهای مدرن،
lessتقریباً بهطور کامل جایگزینmoreشده است. پیشنهاد میشود بهجایmoreازlessاستفاده کنید.
head
دستور 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
دستور 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 یکی از سادهترین و در عین حال پرکاربردترین دستورات است. وظیفهی آن، نمایش یک رشتهی متنی در خروجی استاندارد است. از این دستور در اسکریپتنویسی برای نمایش پیامها، مقدار متغیرها و تولید خروجیهای مختلف استفاده میشود.
ساختار کلی:
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
دستور 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 (با جداکننده هزارگان)
مشخصههای قالببندی رایج در printf
| مشخصه | توضیح | مثال |
|---|---|---|
%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 | نمایش متن با قالببندی دقیق | زمانی که نیاز به کنترل کامل روی فرمت خروجی دارید، تولید جداول |
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات