Komut satırını kullanmayı gerçekten biliyor musunuz bilmiyorum ama bunu artık test edebileceksiniz. Commandline Challenge uygulaması sayesinde bilgi düzeyinizin ne seviye de olduğunu rahatlıkla keşfedebileceksiniz. Lafı fazla uzatmadan uygulamanın adresini verelim: cmdchallenge.com
Bu adrese girdiğiniz sizi bir komut satırı ekranı karşılayacak. Bu ekranda görevler yazacak ve sizden bu görevi yapmanız istenecek. Sayfanın altında yapacağınız görevlere dair bir liste mevcut. Liste şu şekilde:
Şimdi her bir görevi tek tek paylaşıyorum ve kullanmanız gereken komutu da anlatıyorum.
hello_world/ – “hello world” Yazdır
1 2 3 4 5 6 7 |
# Print "hello world". # Hint: There are many ways to print text on # the command line, one way is with the 'echo' # command. # # Try it below and good luck! # |
Sizden ekrana “hello world” yazdırmanızı istiyor. Kullanmanız gereken komut echo komutudur. Kullanımı aşağıdaki gibidir:
1 |
echo "hello world" |
current_working_directory/ – İçinde bulunduğun dizini yazdır
1 |
# Print the current working directory. |
Yeni görevimiz bu. İçinde bulunduğumuz klasörün adını istiyor. Bunu bize $PWD değişkeni verecektir. $PWD değişkeni POSIX uyumlu bütün kabuklarda çalışır. Daha detaylı bilgi için şu adresi ziyaret edebilirsiniz: pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
Cevabımız şu şekilde olacaktır:
1 |
echo $PWD |
list_files/ – Her satırda tek dosya olacak şekilde dosyaları listele
1 2 |
# List names of all the files in the current # directory, one file per line. |
İçinde bulunduğunuz dizindeki dosyaları alt alta listelemeniz isteniyor. Burada kullanacağımız komut
1 |
ls |
komutudur. Fakat tek başına
1 |
ls |
komutu işimize yaramayacaktır. Çünkü her satıra bir dosya çıktısı vermez. Her satırda bir dosya adı kullanmak istiyorsanız
1 |
ls -1 |
kullanmalısınız. Detaylı bilgi için: docs.oracle.com/cd/E53394_01/html/E54763/ls-1b.html
Cevabını şu olmalı:
1 |
ls -1 |
print_file_contents/ – “access.log” dosyasının içeriğini yazdırın
1 2 |
# There is a file named "access.log" in the # current directory. Print the contents. |
İçinde bulunduğunuz dizinde bulunan acccess.log dosyasının içeriğini ekrana yazdırmak için
1 |
tail |
komutunu kullanıyoruz:
1 |
tail access.log |
last_lines/ – “access.log” dosyasının son 5 satırını yazdırın
1 |
# Print the last 5 lines of "access.log". |
Bu dosyanın son 5 satırını yazdırmak için yine
1 |
tail |
komutunu kullanıyoruz fakat bu sefer
1 |
-5 |
diye belirterek:
1 |
tail -5 access.log |
find_string_in_a_file/ – İçinde “GET” yazan satırları yazdırın
1 2 3 |
# There is a file named "access.log" in the # current working directory. Print all lines # in this file that contains the string "GET". |
Bizden istediği yine “access.log” dosyamızın içeriğini yazdırmamız fakat bu sefer sadece içinde “GET” yazan satırları yazdıracağız. GET yazısını yakalamak için
1 |
grep |
komutunu kullanacağız:
1 |
grep GET access.log |
find_tabs_in_a_file/ – Tab içeren kaç tane satır var
1 2 3 |
# How many lines contain tab characters in # the file named "file-with-tabs.txt" in the # current directory. |
Bu görevi yerine getirmek için iki komut kullanıyoruz. İlkinde tab içeren satırları bulup ikincisinde bu satır sayısını sayıyoruz. Yine
1 |
grep |
kullanıyoruz ve satırları saymak için
1 |
wc |
kullanıyoruz.
1 |
grep "$(printf '\t')" file-with-tabs.txt | wc -l |
search_for_files_containing_string/ – İçinde “500” yazan bütün dosyaları listele
1 2 3 |
# Print all files in the current directory, # one per line (not the path, just the filename) # that contain the string "500". |
İçinde bulunduğunuz klasörde “500” terimini içeren dosyaları listelemeniz isteniyor. Bunun çözümü:
1 |
grep -lR 500 * |
Aslında bu listenin daha devamı var fakat oldukça uzun bir yazı olacağa benziyor. Bu nedenle bir anda hepsini birden işleme almayacağım. Fakat süreç içerisinde geri kalan görevleri de paylaşacağım.
Sizlerde yorumlar başarılı bir şekilde çözdüğünüz görevleri paylaşabilirsiniz.
Yorumlar