Linux Kabuk Komut Dosyası Oluşturma Konusunda Pratik Mülakat Soruları ve Cevapları


Herhangi bir Linux Nasıl Yapılır web sitesinde türünün ilk örneği olan Röportaj Serisi makalelerinden aldığımız büyük tepkiyle Beğeni, yorumdaki geri bildirimler ve kişisel E-posta Adresi bizi bir makaleden diğerine yönlendiriyor. madde.

linux-console.net'da daha önce yayınlanmış olan ve FTP, MySQL, Apache, Komut Dosyası Yazma, Linux Komutları vb. gibi pek çok konuyu ele aldığımız Röportaj Serisi makalelerinin bağlantısını burada bulabilirsiniz.

Yukarıdaki seriye devam ederek burada başka bir 5 harika Linux Mülakat Sorusu ve bunların cevaplarıyla geliyoruz. Başarılı olması için (linux-console.net Okuyucuları ve Sık Ziyaretçiler) desteğinize her zaman ihtiyaç vardır.

1. Geçerli tarihi, saati, kullanıcı adını ve geçerli çalışma dizinini almak için bir kabuk komut dosyası yazın.

Şimdi ‘userstats.sh’ adında bir dosya oluşturun ve bu dosyaya aşağıdaki kodu ekleyin.

#!/bin/bash 
echo "Hello, $LOGNAME" 
echo "Current date is `date`" 
echo "User is `who i am`" 
echo "Current directory `pwd`"

Yürütme iznini yerleştirin ve betiği aşağıda gösterildiği gibi çalıştırın.

chmod 755 userstats.sh 
./userstats.sh
Örnek Çıktı
Hello, avi 
Current date is Sat Jun  7 13:05:29 IST 2014 
User is avi      pts/0        2014-06-07 11:59 (:0) 
Current directory /home/avi/Desktop
2. Komut Satırı Bağımsız Değişkeni olarak sağlanmışsa iki sayıyı toplayan bir Kabuk Komut Dosyası yazın ve iki sayı girilmezse, tek satırlık nasıl kullanılır açıklamasıyla birlikte bir Hata Mesajı çıktısı verir.

Tekrar ‘two-numbers.sh’ adında bir dosya oluşturun ve aşağıdaki içeriği bu dosyaya ekleyin.

#!/bin/bash 
The Shebang

if [ $# -ne 2 ] 
If two Inputs are not received from Standard Input

then 
then execute the below statements

    echo "Usage - $0   x    y" 
    # print on standard output, how-to use the script (Usage - ./1.sh   x    y )

    echo "        Where x and y are two nos for which I will print sum" 
    # print on standard output, “Where x and y are two nos for which I will print sum ”

    exit 1 
    # Leave shell in Error Stage and before the task was successfully carried out.

fi 
End of the if Statement.

    echo "Sum of $1 and $2 is `expr $1 + $2`"
    # If the above condition was false and user Entered two numbers as a command Line Argument,   
       it will show the sum of the entered numbers.

Dosya üzerinde yürütücü iznini ayarlayın ve betiği aşağıda gösterildiği gibi çalıştırın.

chmod 755 two-numbers.sh

Durum 1: Komut satırı argümanı olarak iki sayı girmeden betiği çalıştırdığınızda aşağıdaki çıktıyı alırsınız.

Örnek Çıktı
./two-numbers.sh

Usage - ./two-numbers.sh   x    y 
        Where x and y are two nos for which I will print sum

Durum 2: Sayılar komut satırı argümanı olarak girildiğinde, gösterilen sonucu alırsınız.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Dolayısıyla yukarıdaki kabuk betiği, soruda önerilen koşulu yerine getirir.

3. Girişin yalnızca Satır Argümanı kullanılarak sağlanacağı şekilde, bir Shell betiği kullanarak belirli bir Sayıyı (örneğin 10572) ters sırada yazdırmanız gerekir. Giriş verileri Komut Satırı Argümanı olarak sağlanmadıysa, hata vermeli ve betiğin nasıl kullanılacağını önermelidir. Senaryoyu yazın ama ondan önce bana burada uygulanması gereken algoritmayı söyleyin.

Algoritma

  1. 1. Giriş Sayısı=n olsun
  2. 2. Rev=0, sd=0'ı ayarlayın (Ters ve tek haneler 0'a ayarlıdır)
  3. 3. n % 10, en soldaki tek rakamı bulur ve verir
  4. 4. Ters sayı rev * 10 + sd olarak üretilir
  5. 5. Giriş Numarasını (n) 1 azaltın.
  6. 6. eğer n > 0 ise 3. adıma gidin, aksi takdirde 7. adıma gidin
  7. 7. Revi yazdır

Şimdi tekrar 'numbers.sh' adında bir dosya oluşturun ve aşağıdaki kodu ona ekleyin.

#!/bin/bash 
if [ $# -ne 1 ] 
then 
    echo "Usage: $0   number" 
    echo "       I will find reverse of given number" 
    echo "       For eg. $0 0123, I will print 3210" 
    exit 1 
fi 

n=$1 
rev=0 
sd=0 

while [ $n -gt 0 ] 
do 
    sd=`expr $n % 10` 
    rev=`expr $rev \* 10  + $sd` 
    n=`expr $n / 10` 
done 
    echo  "Reverse number is $rev"

Dosyaya bir yürütme izni verin ve betiği aşağıda gösterildiği gibi çalıştırın.

chmod 755 numbers.h

Durum 1: Komut satırı argümanı olarak Giriş sağlanmadığında aşağıdaki çıktıyı alırsınız.

Örnek Çıktı
./numbers.sh

Usage: ./numbers.sh  number 
       I will find reverse of given number 
       For eg. ./2.sh 123, I will print 321

Durum 2: Giriş komut satırı Bağımsız Değişkeni olarak sağlandığında.

./numbers.sh 10572 

Reverse number is 27501

Yukarıdaki komut dosyası mükemmel çalıştı ve çıktı tam da ihtiyacımız olan şeydi.

4. Gerçek sayı hesaplamasını herhangi bir kabuk komut dosyasından değil, doğrudan terminalden hesaplamanız gerekir. Ne yapacaksınız (gerçek sayıların 7,56 ve 2,453 olduğunu varsayalım)?

Örneğin, gösterildiği gibi bc komutunu kullanarak sayıları gerçek zamanlı olarak hesaplamak için aşağıdaki komutu çalıştırın.

echo 7.56 + 2.453 | bc

10.013
5. Pi'nin değerini 100 ondalık basamağa kadar bulmanız gerekiyor, sonuca ulaşmanın en kolay yolu nedir?
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Açıkça! 'pi' paketinin kurulu olması gerekir. Kullandığınız dağıtıma 'pi'yi yüklemek üzere gerekli paketi almak için apt veya yum yapmanız yeterlidir.

Şimdilik bu kadar. Çok yakında yine ilginç bir yazıyla karşınızda olacağım. O zamana kadar bizi izlemeye devam edin ve linux-console.net'a bağlı kalın. Aşağıdaki yorum bölümünde bize değerli geri bildirimlerinizi sağlamayı unutmayın.