Linux'ta head, tail ve cat Komutlarını Kullanarak Dosyaları Etkili Bir Şekilde Yönetin
Dosya içeriğini görüntülemek için Linux tarafından sağlanan çeşitli komutlar ve programlar vardır. Dosyalarla çalışmak göz korkutucu görevlerden biridir; bilgisayar kullanıcılarının çoğu (yeni başlayanlar, normal kullanıcılar, ileri düzey kullanıcılar, geliştiriciler, yöneticiler vb.) bunu gerçekleştirir. Dosyalarla etkili ve verimli bir şekilde çalışmak bir sanattır.
Bugün bu yazıda head, tail ve cat olarak adlandırılan en popüler komutları tartışacağız, çoğumuz bu tür komutları zaten biliyoruz. ancak çok azımız bunu gerektiğinde uyguluyoruz.
1. baş Komuta
Head komutu herhangi bir dosya adının ilk on satırını okur. Head komutunun temel sözdizimi şöyledir:
head [options] [file(s)]
Örneğin, aşağıdaki komut '/etc/passwd' adlı dosyanın ilk on satırını görüntüleyecektir.
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
Birden fazla dosya verilmişse head her dosyanın ilk on satırını ayrı ayrı gösterecektir. Örneğin, aşağıdaki komut her dosyanın on satırını gösterecektir.
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:::
Varsayılan on satırdan daha fazla satır almak isteniyorsa, alınacak satır sayısını belirten bir tamsayı ile birlikte '-n' seçeneği kullanılır. Örneğin, aşağıdaki komut '/var/log/yum.log' dosyasındaki ilk 5 satırı görüntüleyecektir.
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
Aslında ‘-n‘ seçeneğini kullanmaya gerek yok. Yukarıdaki komutla aynı sonucu elde etmek için yalnızca kısa çizgi ve boşluksuz tamsayıyı belirtin.
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
Head komutu ayrıca '-c' seçeneğini ve ardından görüntülenecek bayt sayısını kullanarak istenen sayıda bayt görüntüleyebilir. Örneğin, aşağıdaki komut verilen dosyanın ilk 45 baytını görüntüleyecektir.
head -c45 /var/log/yum.log
Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el
2. kuyruk Komutanlığı
Tail komutu herhangi bir metin dosyasının son on satırını görüntülemenizi sağlar. Yukarıdaki head komutuna benzer şekilde, tail komutu da 'n' satır sayısı ve 'n' karakter sayısı seçeneklerini destekler.
Tail komutunun temel sözdizimi şöyledir:
tail [options] [filenames]
Örneğin, aşağıdaki komut 'access.log' adlı bir dosyanın son on satırını yazdıracaktır.
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
Birden fazla dosya sağlanmışsa, tail aşağıda gösterildiği gibi her dosyanın son on satırını yazdıracaktır.
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
Benzer şekilde, aşağıda gösterildiği gibi '-n' seçeneğini kullanarak son birkaç satırı da yazdırabilirsiniz.
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
Aşağıda gösterildiği gibi '-c' bağımsız değişkenini kullanarak karakter sayısını da yazdırabilirsiniz.
tail -c5 access.log
ymantec.com:443 - NONE/- text/html
3. kedi Komutu
'cat' komutu en yaygın kullanılan evrensel araçtır. Standart girişi standart çıktıya kopyalar. Metin dosyası geçerli ekrana sığmıyorsa komut kaydırmayı destekler.
cat komutunun temel sözdizimi şöyledir:
cat [options] [filenames] [-] [filenames]
Cat'in en sık kullanımı dosyaların içeriğini okumaktır. Bir dosyayı okumak amacıyla açmak için gereken tek şey cat yazıp ardından bir boşluk ve dosya adını yazmaktır.
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 komutu aynı zamanda birden fazla dosyayı birleştirmek için de kullanılır.
echo 'Hi Tecmint-Team' > 1
echo 'Keep connected' > 2
echo 'Share your thought' > 3
echo 'connect us [email ' > 4
cat 1 2 3 4 > 5
cat 5
Hi Tecmint-Team
Keep connected
Share your thought
connect us [email
Ayrıca dosya oluşturmak için de kullanılabilir. Bu, cat komutunun çalıştırılması ve ardından çıktı yönlendirme operatörünün ve oluşturulacak dosya adının çalıştırılmasıyla gerçekleştirilir.
cat > tecmint.txt
Tecmint is the only website fully dedicated to Linux.
'Kedi' komutu için özel sonlandırıcıya sahip olabiliriz. Burada uygulanıyor.
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
"Kedi" komutunun gücünü asla küçümsemeyin ve dosyaları kopyalamak için yararlı olabilir.
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
Peki kedinin zıttı nedir? Evet, 'tac'. 'tac' Linux altında bir komuttur. Onun hakkında konuşmaktansa 'tac'ın bir örneğini göstermek daha iyidir.
Bir satırda tek bir kelime görünecek şekilde tüm ayın adlarını içeren bir metin dosyası oluşturun.
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 komut kullanımına ilişkin daha fazla örnek için 13 cat Komut Kullanımı'na bakın.
Şimdilik bu kadar. Bilmeye değer başka bir İlginç Makaleyle tekrar karşınızda olacağım. O zamana kadar bizi izlemeye devam edin ve Tecmint'e bağlı kalın. Değerli görüşlerinizi yorum bölümümüzde bize iletmeyi unutmayın.