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

اليوم، في هذه المقالة سنناقش الأوامر الأكثر شهرة ويُدعى بها 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/