اطلاعیه

بستن
هنوز اعلام نشده است.

مدیریت موثر فایل ها در linux با استفاده از دستورات head , tail و cat

بستن
X
  • فیلتر کردن
  • زمان
  • نمایش
پاک کردن همه
پست های جدید

  • مدیریت موثر فایل ها در linux با استفاده از دستورات head , tail و cat

    چندین برنامه و دستور برای نمایش محتویات فایل در لینوکس موجود است. کار با فایل ها یکی از task های دلهره آور برای اغلب کاربران کامپیوتر چه مبتدی یا کاربر متوسطه، کاربر پیشرفته، برنامه نویس، ادمین و غیره میباشد و در حقیقت کار کردن با فایلها به صورت مفید و موثر یک هنر است.
    امروز در این مقاله درباره رایج ترین دستورات به نام head , tail و cat که اغلب ما آنها را میشناسیم اما تعداد کمی در صورت نیاز از آنها استفاده میکنیم بحث خواهیم کرد.
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: linux-zone-post-logo-2.png
مشاهده: 1
حجم: 24.4 کیلو بایت

    1 - دستور head :
    دستور head ده (10) خط اول از یک فایل را میخواند. ساختار اصلی دستور head به شرح زیر میباشد :
    کد PHP:
    head [options] [file(s)] 
    برای مثال دستور زیر 10 خط اول فایل /etc/passwd/ را نمایش خواهد داد :
    کد PHP:
    # 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 از هر فایل 10 خط به صورت مجزا نمایش میدهد. برای مثال دستور زیر 10 خط از هر فایل را نمایش میدهد :
    کد PHP:
    # 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::: 
    اگر بخواهیم که تعداد بیشتری از میزان خطوط پیشفرض این دستور (10 خط) ببینیم باید از گزینه n- که به همراه آن از یک عدد که مشخصه تعداد خطوط هست باید استفاده کنیم. برای مثال دستور زیر 5 خط اول فایل /var/log/yum.log را نمایش خواهد داد :
    کد PHP:
    # head -n5 /var/log/yum.log

    Jan 10 00:06:49 Updatedopenssl-1.0.1e-16.el6_5.4.i686
    Jan 10 00
    :06:56 Updatedopenssl-devel-1.0.1e-16.el6_5.4.i686
    Jan 10 00
    :11:42 Installedperl-Net-SSLeay-1.35-9.el6.i686
    Jan 13 22
    :13:31 Installedpython-configobj-4.6.0-3.el6.noarch
    Jan 13 22
    :13:36 Installedterminator-0.95-3.el6.rf.noarch 
    در حقیقت حتی نیاز نیست که از گزینه n- استفاده کنیم میتوانیم تنها از - (دش) و عدد مورد نظر بلافاصله بعد از دش (بدون اسپیس) استفاده کنیم و نتیجه یکسان با دستور بالا داشته باشیم :
    کد PHP:
    # head  -5 /var/log/yum.log

    Jan 10 00:06:49 Updatedopenssl-1.0.1e-16.el6_5.4.i686
    Jan 10 00
    :06:56 Updatedopenssl-devel-1.0.1e-16.el6_5.4.i686
    Jan 10 00
    :11:42 Installedperl-Net-SSLeay-1.35-9.el6.i686
    Jan 13 22
    :13:31 Installedpython-configobj-4.6.0-3.el6.noarch
    Jan 13 22
    :13:36 Installedterminator-0.95-3.el6.rf.noarch 
    دستور head همچنین میتواند هر تعداد دلخواه byte (کاراکتر) از فایل را با استفاده از گزینه c- نمایش دهد. برای مثال دستور زیر 45 byte از اول فایل داده شده را نمایش میدهد :
    کد PHP:
    # head -c45 /var/log/yum.log

    Jan 10 00:06:49 Updatedopenssl-1.0.1e-16.el 
    2 - دستور tail :
    دستور tail ده (10) خط آخر از فایل را نمایش میدهد. مشابه دستور head دستور tail هم گزینه n را ساپورت میکند. ساختار اصلی این دستور به شرح ذیل میباشد :
    کد PHP:
    # tail [options] [filenames] 
    برای مثال دستور زیر 10 خط آخر فایل access.log را نمایش میدهد :
    کد PHP:
    # 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 
    اگر بیشتر از یک فایل در نظر بگیریم 10 خط آخر هر فایل را به صورت مجزا نمایش میدهد :
    کد PHP:
    # 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] [noticeDigestgenerating secret for digest authentication ...
    [
    Sun Mar 30 03:16:03 2014] [noticeDigestdone
    [Sun Mar 30 03:16:03 2014] [noticeApache/2.2.15 (UnixDAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations 
    همانطور که گفتیم همچنین میتوان با گزینه n- تعداد خطوط کمتری را از آخر فایل مشاهده کرد :
    کد PHP:
    # 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- مشخص کنیم :
    کد PHP:
    # tail -c5 access.log

    ymantec.com:443 NONE/- text/html 
    3 - دستور cat :
    دستور cat یکی از پر کاربرد ترین دستورها و همچنین ابزار جهانی میباشد. این دستور standard input را در standard output کپی میکند. همچنین اگر فایل متنی طولانی باشد و در یک صفحه جا نشود این دستور scrolling را پشتیبانی میکند یعنی فایل را صفحه، صفحه میکند. ساختار اصلی این دستور به شرح ذیل میباشد :
    کد PHP:
    # cat [options] [filenames] [-] [filenames] 
    رایج ترین استفاده از دستور cat خواندن محتوای فایل ها است. تمای چیزی که برای باز کردن یک فایل به منظور خواندن آن نیاز داریم نوشتن دستور cat و سپس یک اسپیس (space) و به دنبال آن نام فایل میباشد :
    کد PHP:
    # 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 همچنین برای به هم پیوستن تعدادی از فایل ها به همدیگر مورد استفاده قرار میگیرد :
    کد PHP:
    # echo 'Hi linux-zone' > 1 
    # echo 'Keep connected' > 2 
    # echo 'Share your thought' > 3 
    # echo 'connect us habili@linux-zone.org' > 4 

    کد PHP:
    # cat 1 2 3 4 > 5 
    کد PHP:
    # cat 5 

    Hi linux-zone 
    Keep connected 
    Share your thought 
    connect us habili
    @linux-zone.org 
    همچنین برای ایجاد یک فایل هم مفید میباشد. برای ساختن فایل دستور cat را به همراه redirect کردن خروجی به یک نام فایل استفاه میکنیم :
    کد PHP:
    # cat > tecmint.txt

    Tecmint is the only website fully dedicated to Linux
    همچنین میتوانیم در پایان یک فایل end قرار دهیم. همانطور که میبینید در مثال زیر انجام شده است :
    کد PHP:
    # cat > test.txt << end 

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

    I am Avishek 
    Here i am writing this post 
    Hope your are enjoying 
    هرگز قدرت بی نظیر دستور cat در کپی کردن فایل ها از خاطر نبرید :
    کد PHP:
    # cat avi.txt

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

    I am a Programmer by birth and Admin by profession 
    و اکنون متضاد cat چیست؟ بله tac است. tac یک دستور تحت لینوکس است بهتر است به جای اینکه درباره آن چیزی بگوییم یک مثال عملی نشان تان بدهیم.
    فایل متنی شامل نام همه ماه های سال که هر ماه به صورت مجزا در یک خط باشد را ایجاد میکنیم :
    کد PHP:
    # cat month

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

    کد PHP:
    # tac month

    December
    November
    October
    September
    August
    July
    June
    May
    April
    March
    February
    January 
    برای مثال های بیشتری از دستور cat به لینک 13 کاربرد کامند cat مراجعه کنید.

    برمیگردم با یه مقاله جالب و با ارزش و خوشحال میشیم نظرات ارزنده شما را بشنویم.
    همچنان با ما باشید.

    با تشکر
    محمد هابیلی
    ویرایش توسط Habili : http://linux-zone.org/forums/member/5-habili در ساعت 05-16-2015, 07:51 PM
پردازش ...
X
کانال تلگرام منطقه لینوکسی ها