إدارة الملفات بفعالية باستخدام أوامر head و tail و cat في Linux

هناك العديد من الأوامر والبرامج التي توفرها لينكس لعرض محتوى الملف. العمل مع الملفات هو إحدى المهام الصعبة، يقوم بها معظم مستخدمي الكمبيوتر سواء كانوا مبتدئين أو مستخدمين عاديين أو مستخدمين متقدمين أو مُطوِّرين أو مسؤولين، العمل بفعالية وبكفاءة مع الملفات هو فن.

Manage Files in Linux

اليوم، في هذه المقالة سنناقش الأوامر الأكثر شهرة ويُدعى بها head و tail و cat، معظمنا يعرف بالفعل مثل هذه الأوامر، ولكن القليل جدًا منا يقوم بتنفيذها عند الحاجة.

1. الأمر head

يقرأ الأمر head أول عشرة أسطر من أي ملف مُعطى بالاسم. الصيغة الأساسية لأمر head هي:

head [options] [file(s)]

على سبيل المثال، سيقوم الأمر التالي بعرض العشرة أسطر الأولى من الملف المسمى ‘ /etc/passwd ‘.

# head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

إذا تم إعطاء أكثر من ملف واحد، سيُظهر head العشرة أسطر الأولى من كل ملف بشكل منفصل. على سبيل المثال، سيُظهر الأمر التالي عشرة أسطر من كل ملف.

# head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

إذا كانت هناك رغبة في استرداد عدد أكبر من الأسطر من العشرة الافتراضية، ثم يُستخدم خيار ‘-n‘ مع عدد صحيح يحدد عدد الأسطر التي يجب استردادها. على سبيل المثال، سيقوم الأمر التالي بعرض أول 5 أسطر من الملف ‘ /var/log/yum.log ‘.

# head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

في الواقع، لا حاجة لاستخدام خيار ‘-n‘. فقط الشرطة وتحديد العدد الصحيح دون فراغات للحصول على نتيجة نفسها كالأمر السابق.

# head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

يمكن لأمر الرأس أيضًا عرض أي عدد مطلوب من البايتات باستخدام الخيار ‘-c‘ تليه عدد البايتات التي يجب عرضها. على سبيل المثال، سيقوم الأمر التالي بعرض أول 45 بايتًا من الملف المعطى.

# head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. أمر الذيل

يسمح أمر الذيل بعرض آخر عشر سطور من أي ملف نصي. بشكل مماثل لأمر الرأس أعلاه، يدعم أمر الذيل أيضًا الخيارات ‘n’ عدد السطور و ‘n’ عدد الأحرف.

الصيغة الأساسية لأمر الذيل هي:

# tail [options] [filenames]

على سبيل المثال، سيقوم الأمر التالي بطباعة آخر عشرة سطور من ملف يسمى ‘access.log’.

# tail access.log 

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 
1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

إذا تم توفير أكثر من ملف، سيقوم الذيل بطباعة آخر عشرة سطور من كل ملف كما يظهر أدناه.

# tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

بالمثل، يمكنك أيضًا طباعة السطور القليلة الأخيرة باستخدام الخيار ‘-n’ كما يظهر أدناه.

# tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

يمكنك أيضًا طباعة عدد الأحرف باستخدام الوسيطة ‘-c’ كما يظهر أدناه.

# tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. أمر القط

الأمر ‘cat’ هو الأداة الأكثر استخداما، والأداة العالمية. يقوم بنسخ المدخلات القياسية إلى المخرج القياسي. يدعم الأمر التمرير، إذا لم يتناسب ملف النص الحالي مع الشاشة الحالية.

الصيغة الأساسية لأمر ‘cat’ هي:

# cat [options] [filenames] [-] [filenames]

أكثر استخدام شائع للأمر ‘cat’ هو قراءة محتويات الملفات. كل ما يلزم فتح ملف للقراءة هو كتابة ‘cat’ تتبعها مسافة واسم الملف.

# cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
…

يُستخدم أمر ‘cat’ أيضًا لدمج عدد من الملفات معًا.

# echo 'Hi Tecmint-Team' > 1 
# echo 'Keep connected' > 2 
# echo 'Share your thought' > 3 
# echo 'connect us [email protected]' > 4
# cat 1 2 3 4 > 5
# cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email protected]

يمكن أيضًا استخدامه لإنشاء ملفات أيضًا. يتم تحقيق ذلك عن طريق تنفيذ أمر cat متبوعًا بعامل توجيه الإخراج واسم الملف الذي سيتم إنشاؤه.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

يمكننا إنشاء مؤشر نهاية مخصص لأمر ‘cat’. هنا تم تنفيذه.

# cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

لا تستهين بقوة أمر ‘cat’ ويمكن أن يكون مفيدًا لنسخ الملفات.

# cat avi.txt

I am a Programmer by birth and Admin by profession
# cat avi.txt > avi1.txt
# cat avi1.txt

I am a Programmer by birth and Admin by profession

الآن ما هو العكس من ‘cat’؟ نعم هو ‘tac‘. ‘tac‘ هو أمر تحت Linux. من الأفضل عرض مثال على ‘tac’ بدلاً من التحدث عنه.

إنشاء ملف نصي يحتوي على أسماء جميع الشهور بحيث تظهر كل كلمة على سطر.

# cat month

January
February
March
April
May
June
July
August
September
October
November
December
# tac month

December
November
October
September
August
July
June
May
April
March
February
January

لمزيد من أمثلة استخدام أمر cat ، راجع توجيه 13 استخدام لأمر cat

هذا كل شيء للآن. سأكون هنا مرة أخرى مع مقال آخر مثير للاهتمام، يستحق المعرفة. حتى ذلك الحين، تابع وتواصل مع Tecmint . لا تنسى أن تزودنا بتعليقاتك القيمة في قسم التعليقات الخاص بنا.

Source:
https://www.tecmint.com/view-contents-of-file-in-linux/