دستور cat
این دستور یکی از متداول ترین دستورات خط فرمان و برگرفته از عبارت concatenate می باشد. مهتمرین عملکرد دستور cat ، نمایش محتوای فایلهای متنی می باشد. کاربرد های این دستور را با بیان مثالهایی بررسی می کنیم.
* نمایش محتوای یک فایل با کمک دستور cat
& با استفاده از دستور زیر محتوای فایل linux.txt در خروجی نمایش داده می شود.
cat linux.txt
Linux Was Created In 1991 By Linus Torvalds.
Linux Kernel Is Written In The C programming Language.
Linux Is Open Source Operating System.
Popular Linux Distributions Include Debian , Fedora And Ubuntu.
Linux Is Multi Task & Multi User.
& دستور زیر محتوا فایل passwd را از مسیر etc/ نمایش می دهد. (فایل passwd شامل اطلاعاتی در خصوص کاربران سیستم می باشد)
cat /etc/passwd
* نمایش محتوای چند فایل با دستور cat
& برای نمایش محتویات دو یا چند فایل بصورت همزمان ، می توان اسامی فایلها را بعد از دستور cat وارد نمود.
cat linux.txt city.txt
Linux Was Created In 1991 By Linus Torvalds.
Linux Kernel Is Written In The C programming Language.
Linux Is Open Source Operating System.
Popular Linux Distributions Include Debian , Fedora And Ubuntu.
Linux Is Multi Task & Multi User.
tehran
AMOL
shiraz
Gorgan
pardis
& با دستور زیر محتوای همه فایلهای مسیر جاری نمایش داده می شود.
cat *
& برای نمایش محتوای فایلهای مسیر etc/ که دارای پسوند conf. میباشند ، بصورت زیر عمل می شود.
cat /etc/*.conf
* ساخت فایل با استفاده از دستور cat
cat > country.txt
& با اجرای دستور بالا ، خط فرمان در حالتی قرار می گیرد که کاربر می تواند ، متن خود را تایپ نموده و در انتها با استفاده از کلیدهای Ctrl+d فایل را ذخیره نماید. (کلید های Ctrl+u ، خط فعلی را پاک می کند)
* ایجاد نسخه کپی از فایل با دستور cat
cat linux.txt > linux_copy.txt
& دستور بالا از فایل linux.txt یک کپی با نام linux_copy.txt ایجاد می کند.
* ادغام چند فایل با استفاده از دستور cat
& با دستور زیر محتوای فایل های linux.txt , city.txt , country.txt در قالب یک فایل با نام test_full.txt تجمیع می شوند.
cat linux.txt city.txt country.txt > test_full.txt
* افزودن عبارت متنی به انتهای یک فایل با دستور cat
& برای این کار میتوان از کاراکتر << استفاده کرد. با اجرای دستور زیر ، خط فرمان در حالتی قرار می گیرد که کاربر می تواند ، متن خود را تایپ نموده و در انتها با استفاده از کلیدهای Ctrl+d فایل را ذخیره نماید.
cat >> city.txt
& میتوان محتوای یک فایل را در انتهای فایلی دیگر درج نمود. با دستور زیر محتوای فایل test.txt به انتهای فایل city.txt افزوده می شود.
cat test.txt >> city.txt
* درج شماره خطوط در نمایش محتوای فایل با دستور cat
& این کار توسط سوییچ n قابل انجام می باشد.
cat -n city.txt
1 tehran
2 AMOL
3 shiraz
4
5 Gorgan
6 pardis
7 noor
نکته : با اجرای دستور بالا ، تغییری در محتوای فایل city.txt ایجاد نمیشود. و فقط بر روی خروجی دستور ، بنوعی فیلتر درج شماره اعمال می گردد.
نکته : همانطور که در خروجی مشخص است ، به ازای هر خط یک شماره اختصاص می یابد. (حتی خط خالی) . با استفاده از سوییچ b میتوان از درج شماره خطوط خالی صرف نظر کرد.
cat -b city.txt
1 tehran
2 AMOL
3 shiraz
4 Gorgan
5 pardis
6 noor
* نمایش محتوای فایلهای حجیم با دستور cat
& با استفاده از pipe و گزینه less میتوان فایلهای حجیم بیش از یک صفحه را پیمایش نمود.
cat /var/log/messages | less
نکته : با استفاده از گزینه less ، کاربر قادر خواهد بود تا فایل را بصورت خط به خط ، صفحه به صفحه و در هر چهار جهت پیمایش نماید. برای خروج از این حالت میتوان از کلید q استفاده کرد. همچنین عمل جستجو ، با استفاده کارکتر / و تایپ عبارت مورد نظر امکانپذیر می باشد. دستور بالا را بصورت زیر نیز می توان بکار برد.
less /var/log/messages
& برای پیمایش فایلهای حجیم از گزینه more نیز میتوان استفاده کرد.
cat /var/log/messages | more
نکته : در این حالت پیمایش رو به پایین انجام می گیرد. دستور بالا بصورت زیر نیز قابل استفاده بوده ، که در این حالت ، میزان پیمایش در انتهای صفحه با درصد مشخص می گردد.
more /var/log/messages
* ارسال فایل به چاپگر جهت چاپ با دستور cat
& چاپ فایل city.txt با دستور زیر قابل انجام می باشد.
cat city.txt | lpr
* مرتب سازی خروجی اجرای دستور cat
& با استفاده از pipe و گزینه sort ، محتوای فایلها در خروجی بصورت مرتب شده نمایش داده می شوند.
cat city.txt | sort
AMOL
Gorgan
noor
pardis
shiraz
tehran
نکته : در این حالت تغییری در فایل ایجاد نمی گردد و فقط خروجی بصورت مرتب شده نمایش داده می شود.
* جستجو در محتوای یک فایل با دستور cat
& برای جستجوی یک عبارت در محتوای یک فایل ، میتوان از گزینه grep بهره برد. (سوییچ n سبب درج شماره می شود)
cat -n city.txt | grep noor
7 noor
* نمایش دو خط ابتدای یک فایل با دستور cat
& از فیلتر head برای این کار میتوان استفاده نمود.
cat -n city.txt | head -2
1 tehran
2 AMOL
* نمایش سه خط انتهای یک فایل با دستور cat
& با استفاده از گزینه tail این تغییر در خروجی ایجاد می شود.
cat -n city.txt | tail -3
5 Gorgan
6 pardis
7 noor
& برای نمایش خطوط دو و سه میتوان از ترکیب فیلترهای tail , head استفاده کرد.
cat -n city.txt | head -3 | tail -2
2 AMOL
3 shiraz
* نمایش محتوای یک فایل بجز خطوط دو ، سه و چهار با دستور cat
& از گزینه sed برای عدم نمایش این خطوط استفاده می شود.
cat -n city.txt | sed 2,4d
1 tehran
5 Gorgan
6 pardis
7 noor
* نمایش محتوای فایل بصورت حروف بزرگ با دستور cat
& با استفاده از دستور زیر ، خروجی با حروف بزرگ نشان داده می شود.
cat city.txt | tr a-z A-Z
TEHRAN
AMOL
SHIRAZ
GORGAN
PARDIS
NOOR
* نمایش محتوای فایل بهمراه تغییر یک عبارت با دستور cat
& در خروجی عبارت FARS جایگزین AMOL می شود.
cat city.txt | tr -s AMOL FARS
tehran
FARS
shiraz
Gorgan
pardis
noor
* حذف چند کاراکتر در نمایش محتوای فایل با دستور cat
& در اجرای دستور زیر ، کاراکترهای AL از خروجی حذف می شوند.
cat city.txt |tr -d AL
tehran
MO
shiraz
Gorgan
pardis
noor
* نمایش محتوای فایل از انتها به ابتدا با دستور cat
& برای اینکار میتوان از دستور زیر استفاده نمود.
cat -n city.txt | tac
7 noor
6 pardis
5 Gorgan
4
3 shiraz
2 AMOL
1 tehran
* نمایش محتوای فایل بصورت برعکس با دستور cat
& با استفاده از گزینه rev میتوان فایلها را در خروجی بصورت برعکس نمایش داد.
cat city.txt | rev
narhet
LOMA
zarihs
nagroG
sidrap
roon
* شمارش محتوای یک فایل با دستور cat
& با استفاده از فیلتر wc بترتیب تعداد خط ، کلمه و کاراکتر های یک فایل بدست می آید.
cat linux.txt | wc
7 39 239
* مثال :
& لیست IP هایی که به سیستم وصل شدهاند را مشخص نمایید.
cat -n /var/log/audit/audit.log | grep USER_LOGIN | grep res=success | tac | tr a-z A-Z > /home/masih/LoginList.txt
cat /home/masih/LoginList.txt
25945 TYPE=USER_LOGIN MSG=AUDIT(1566976562.033:1082455): PID=24835 UID=0 AUID=0 SES=177551 SUBJ=SYSTEM_U:SYSTEM_R:SSHD_T:S0-S0:C0.C1023 MSG='OP=LOGIN ID=0 EXE="/USR/SBIN/SSHD" HOSTNAME=10.47.52.25 ADDR=192.168.20.20 TERMINAL=/DEV/PTS/2 RES=SUCCESS'
25843 TYPE=USER_LOGIN MSG=AUDIT(1566975293.580:1082353): PID=22654 UID=0 AUID=0 SES=177538 SUBJ=SYSTEM_U:SYSTEM_R:SSHD_T:S0-S0:C0.C1023 MSG='OP=LOGIN ID=0 EXE="/USR/SBIN/SSHD" HOSTNAME=10.47.52.25 ADDR=192.168.25.30 TERMINAL=/DEV/PTS/1 RES=SUCCESS'
25812 TYPE=USER_LOGIN MSG=AUDIT(1566975156.390:1082322): PID=22556 UID=0 AUID=0 SES=177537 SUBJ=SYSTEM_U:SYSTEM_R:SSHD_T:S0-S0:C0.C1023 MSG='OP=LOGIN ID=0 EXE="/USR/SBIN/SSHD" HOSTNAME=10.47.52.25 ADDR=192.168.50.33 TERMINAL=/DEV/PTS/0 RES=SUCCESS'
توضیح دستور :
سوییچ n : شماره خطوط در خروجی درج می شود.
فایل audit.log : تراکنش های مربوط به ورود به سیستم در این فایل قرار دارد.
grep USER_LOGIN : این فیلتر خطوطی که دارای عبارت USER_LOGIN هستند را در خروجی قرار می دهد.
grep res=success : توسط این فیلتر فقط Login موفق در خروجی قرار می گیرد.
tac : این گزینه سبب نمایش خروجی بصورت انتها به ابتدا می شود. (در مرور تراکنش ها، بررسی آخرین تراکنش ها در اولویت می باشد)
tr a-z A-Z :خروجی را به حروف بزرگ تبدیل می نماید.
نهایتا خروجی دستور در مسیر /home/masih/ و با نام LoginList.txt ذخیره می شود.