• Farklı Linux ve Unix kabukları hakkında. UNIX komut kabuğu

    =====================================================

    LABORATUVAR ÇALIŞMASI No. 1 (tamamlanma süresi - 3 saat)

    Konu: ”Girişkabuk

    1. Kabuğa giriş

    Kabuk, kullanıcı ile Unix çekirdeği arasında bir arayüz görevi gören bir komut yorumlayıcısıdır (komut işlemcisi). Solaris üç ana kabuk sunar:

      Varsayılan Bourne kabuğu /sbin/sh'dir.

      C kabuğu -- /bin/csh

      Korn komut işlemcisi-- ./bin/ksh

    Listelenenlere ek olarak, Solaris ek mermiler sağlar:

      J kabuğu -- /sbin/jsh

      Kısıtlı Korn l -- / usr/ bin/rsh

      T kabuğu -- /usr/bin/tcsh

      GNU Bourne Yine -- /usr/bin/bash

      Z kabuğu - usr/bin/zsh

    Kabuk seçimi kişisel tercih meselesidir.

    2. Çalıştırma komutları

    Unix'teki herhangi bir komut, başlatılacak programın adı (komut), seçenekler (anahtarlar) ve programa iletilen bağımsız değişkenlerden oluşur. Komut satırı ayırıcıları boşluklar veya sekmelerdir.

    Örnek

    $ /bin/ping –t 10 192.168.2.13

    argüman

    kabuk istemi

    Programı başlatırken programın yolu belirtilmemişse çalıştırılabilir dosya, ardından işletim sistemi PATH değişkeninde belirtilen dizinleri sırayla tarar. Gözatılan dizinde aynı ada sahip bir program varsa, yürütülmek üzere başlatılır. PATH değişkeninde ayarlanmadıkça, programlar aranırken mevcut çalışma dizini aranmaz.

    ! Güvenlik nedeniyle, bir yöneticiye kullanıcının geçerli dizinini ve ev (kişisel) dizinlerini PATH değişkenine eklememesi önerilir.

    örnekler

    Programı tam yol ile başlatma

    $ / usr/ yerel/ çöp Kutusu/ Benim_ programı

    Bir programı daha yüksek (ana) bir dizinden başlatma

    $ ../ yerel/ çöp Kutusu/ Benim_ programı

    Programı geçerli dizinden başlatma

    $ ./ Benim_ programı

    3. Özel semboller kabukta

    Kabuktaki bazı karakterlerin özel anlamları vardır.

    3.1. Dosya adı oluşturma kalıpları

    ? (soru işareti) ilk nokta dışında herhangi bir tek karakterle eşleşir;

    (köşeli parantez) bir sembol grubu tanımlayın (gruptan bir sembol seçilir);

    - (Eksi işareti") geçerli karakter aralığını tanımlar;

    ! (Ünlem işareti) onu izleyen karakter grubunu reddeder;

    * (yıldız sembolü) ilk nokta dışında herhangi bir sayıda karakterle eşleşir.

    3.2. G/Ç yönlendirme sembolleri

    < - giriş yönlendirme;

    >, >> - çıktı yönlendirme;

    2>, 2>> - hata mesajlarını yeniden yönlendirme;

    | - konveyör.

    3.3. Joker semboller

    $variable_nameQ - değişken ikamesi;

    $(komut) veya "emir" - komut değiştirme;

    ~ - tilde değiştirme.

    4. Arama

    İçin hızlı arama dosyalar ve dizinler için whereis komutu kullanılır, daha derin bir komut için find komutu kullanılır (belirtilen gereksinimleri karşılayan dosyaları arayın;).

    5. Metin düzeltici vi

    vi metin editörü, herhangi bir Unix'te bulunan evrensel bir metin editörüdür. Metin dosyalarını düzenlemeye ek olarak, komut satırını düzenlemek için vi editörü kullanılabilir.

    vi editörünün 3 çalışma modu vardır (şekle bakın).

    vi editörüne girme

    vi'den çıkış

    İlk konumdaki ”~” (tilde) işareti, dosyanın boş (var olmayan) satırlarını işaretler.

    Ana mod, komutların belirli bir tuş dizisine basılarak girildiği komuttur (ekranda hiçbir şekilde görüntülenmezler).

    Komut modunda metinde gezinmek, oklar ve tuşlar kullanılarak gerçekleştirilir. (sol) (aşağı), (yukarı), (Sağa).

    Bazı vi komutları tabloda listelenmiştir.

    Geçerli satırı sil

    Geçerli satırı panoya kopyala

    İmleç hareketi

    İmleçle işaretlenen karakterleri arabelleğe alma

    Sokmak Yeni hat aşağıdan

    En üste yeni bir satır ekle

    İmleçten sonra ekle

    Geçerli satırdan sonra ekle

    İmlecin önüne yapıştır

    Geçerli satırdan önce ekle

    Bir karakteri klavyeden girilen bir karakterle değiştirme

    Panodan metin yapıştır

    . (nokta)

    Yürütülen son komutu yeniden yap

    Son komutu iptal et

    Geçerli satırdaki tüm değişiklikleri geri al

    İmlecin üzerindeki karakteri sil

    Giriş modunda, klavyede yazılan tüm karakterler metne eklenir.

    modunda son satır girilen komut ekranın son satırında görüntülenir.

    6. Yardım

    Unix'in komutların amacını, sözdizimini, kullanım örneklerini vb. içeren bir elektronik kılavuzu vardır. Kılavuz, man komutuyla çağrılır:

    7. Temel komutlar kabuk

    DSÖ– aktif kullanıcılar hakkında bilgi görüntüleme;

    Eko– terminale çıkış mesajları;

    afiş– mesajları terminale büyük harflerle yazdırın;

    Adam– çevrimiçi yardım sistemini aramak;

    tarih – geçerli tarihin çıktısı;

    yazmak– mesajların başka bir kullanıcının terminaline iletilmesi;

    mesaj– diğer kullanıcılardan gelen mesajları görüntüleme izni/yasağı;

    posta– posta gönderme/alma;

    haberler- sistem haberlerine aşinalık;

    pwd– geçerli çalışma dizininin mutlak yol adını görüntüler;

    CD– çalışma dizinini değiştirmek;

    ls– dizinin içeriği hakkında bilgi görüntüleme;

    mkdir- bir dizin oluşturmak;

    rmdir– bir dizini silmek;

    dokunmak– dosyanın zaman damgasının güncellenmesi;

    CP- dosyalar kopyalanıyor;

    kedi- dosyaların içeriğini birleştirme ve görüntüleme;

    Daha– dosya içeriğinin sayfalandırılması.

    mv – bir dosyayı taşımak veya yeniden adlandırmak;

    rm– bir dosyanın silinmesi;

    takma ad– bir takma isim oluşturulması;

    tr– karakter dönüşümü;

    çıkış- akımın tamamlanması kabuk-A;

    tişört– boru hattı sonuçlarının ele geçirilmesi;

    kesmek – bir diziden alan seçimi;

    grep– kalıba göre arama;

    pr– belirtilen formatta standart çıktıya dosya çıktısı;

    düzenlemek- sıralama;

    KAFA– dosyanın ilk satırlarının çıktısı;

    kuyruk- dosyanın son satırlarını yazdırın;

    WC- karakter, kelime ve satır sayısını sayma;

    Okumak, Eko - değişken değerleri okuma ve görüntüleme;

    Ölçek- ifadenin değerinin değerlendirilmesi;

    ifade, izin vermek- aritmetik ifadelerin hesaplanması;

    8. Kabuk-programlar

    Kabuk, bir dizi komutu bir dosyaya kaydetmenize ve ardından yürütmenize olanak tanır. Yürütülecek bir kabuk programıyla bir dosyayı çalıştırmak için, yürütme hakkını erişim haklarına eklemeniz gerekir:

    $ chmod +x program_file_name

    Kabuk programlarında dallanma, operatörler kullanılarak düzenlenir:

    eğer-o zaman-başka

    Döngü ifadeleri:

    EGZERSİZLER

    1. Aşağıdaki komutlardan hangisi ekranda bir karşılama mesajının görüntülenmesine neden olur? Ne değil? Neden?

    $ yankı merhaba

    $ yankı merhaba

    $ yankı MERHABA, DÜNYA

    $ afiş Merhaba

    $ Afiş MERHABA, DÜNYA

    2. Komutları kullanarak birden çok satırdan bir mesaj yazdırın Eko Ve afiş.

    3. Tarihi iki satır halinde yazdırın: ilk satırda - gün, ay, yıl, ikinci satırda - geçerli saat, çıktıyı bir yorumla sağlayın.

    4. Komut kullanma yazmak, konsola bir mesaj gönderin. Aynı anda birden fazla terminale mesaj gönderin.

    5. Komut kullanma mesaj, terminalinizde mesajlara izin verilip verilmediğini belirleyin. Mesajları devre dışı bırakın. Birisi size mesaj göndermeye çalışırsa sistemin tepkisi ne olur?

    6. Adını koy EV-katalog.

    7. Komutları kullanarak /export/home dizininden başlayarak dizinlerin alt ağacına göz atın cd, ls Ve pwd.

    8.. İçinde oluştur EV-formun dizin alt dizinleri:

    meyve çiçekleri

    elma armut üzüm gül menekşe karahindiba

    koyu yeşil

    9. İçinde olmak EV-dizin, tek bir komut satırı kullanarak aşağıdaki alt dizinleri oluşturun:

    A/B/C/D

    10. İçinde olmak EV-dizin, dizinin tüm alt dizinlerini sil A.

    11. İçeride olmak EV-dizin, bir dosya oluştur Macintosh mevcut katalogda elma ve dizinlerdeki birkaç dosya karanlık Ve yeşil. Kataloğa girin Fdüşürür. dizinde olmak Fdüşürür, tüm alt dizinleri kopyala FRuits içerdikleri dosyalarla birlikte özel oluşturulmuş bir dizine sepet.

    12. Katalogda olmak Fdüşürür, dizini kaldır FRuits.

    13. Dosyayı okuyun .profil komutları kullanma kedi Ve Daha.

    14. İçinde oluştur EV- dizin metin dosyası benim dosyam komutuyla birden çok satırdan kedi. Bir metin dosyası oluşturun MyFile, içine aynı satırları yazarak. Kaç tane dosya aldın? Neden?

    15. Görev 2.2'de oluşturulan dosyanın içeriğini görüntüleyin benim dosyam. dosyayı kopyala benim dosyam dosyalamak benim kopyam Her iki dosyanın içeriğini görüntüleyin.

    16. Dosyayı taşıyın benim kopyam kataloglamak Çiçekler.

    17. İçeride olmak EV-dizin, bir bağlantı oluştur Mybağlantı dosya başına benim kopyam dizinde bulunan Çiçekler. Bağlantı dosyasını görüntüleyin.

    18. Dosyaya bir satır ekleyin Benimbağlantı. dosyalardan hangisi Benimbağlantı, Benimkopyalamak, Benimdosya değişti mi? Neden?

    19. Bağlantı sayısını belirlemek için hangi komut kullanılabilir? Dosyalar için bağlantı sayısını belirleme Benimbağlantı, Benimkopyalamak, Benimdosya.

    Dosyayı sil benim kopyam. Bağlantı dosyasına ne oldu? Dosyalar için bağlantı sayısını belirleme Benimbağlantı, Benimdosya.

    20. Bir takma ad oluşturun yön Geçerli dizinin içeriğini genişletilmiş biçimde yazdıran bir.

    21. Çıkış yapın ve tekrar giriş yapın. Takma ad çalışıyor mu? yön? Takma adın oturumlar arasında "kaybolmaması" için ne yapılmalıdır?

    22. Bir takma ad oluşturun nokta, adları bir nokta ile başlayan çalışma dizinindeki dosyaların bir listesini yazdırır.

    23. Komut kullanma dokunmak, yeni bir dizinde aynı anda aşağıdaki adlara sahip dosyalar oluşturun:

    Şablon A* 5 dosya eşleşti;

    Şablon * A 4 dosya eşleşti;

    Şablon ??.? 3 dosya eşleşti;

    Şablon * aa* 2 dosya eşleştirildi;

    Şablon??? 1 dosya eşleşti.

    24. Aşağıdakileri yapmak için hangi komut girilmelidir:

    a) bir nokta ile başlayan tüm dosyaların adlarını görüntüleyin;

    b) ile biten tüm dosyaların adlarını görüntüleyin ".txt";

    c) sözcüğü içeren tüm dosyaların adlarını yazdırın "Benim";

    25. Belirli bir dosyada tüm küçük harfleri büyük harfe, diğerinde tüm büyük harfleri küçük harfe çevirin. Dosyadan tüm yinelenen boşlukları kaldırın.

    26. adlı bir dosya oluşturun. * . Sadece bu dosyayı silin. Dosya adı oluşturma karakterlerini kullanırken dikkatli olun!

    27. Adında boşluk karakteri olan bir dosya oluşturun. Böyle bir dosya nasıl silinir?

    28. Komut kullanma kedi orijinal içeriği aynı dosyanın sonuna ekleyerek dosyanın içeriğini ikiye katlayın. dizine git Çiçekler. dosyaya ekle liste dizin içeriğini listele Çiçekler. Bir dosyanın içeriğini görüntüleme

    29. Komutla okumayı deneyin kedi olmayan dosya Sistemin tepkisi nedir? Hata mesajlarını bir dosyaya yönlendirerek aynısını yapın benim hatam. Ekranda ne görüyorsun? Dosyayı görüntüle benim hatam.

    30. Yalnızca içinde bulunan dosyaların adlarını ve izinlerini listelemek için bir ardışık düzen oluşturun. şu ançalışma dizininizdedir.

    31. Yerleşik boru hattını, listenin bir dosyada saklanacağı şekilde değiştirin liste senin onun EV-dizin ve yalnızca listedeki dosya sayısı görüntülendi.

    32. Bir dosyanın içeriğini görüntüleyin /etc/şifre, kullanıcı adı alanına göre sıralanmıştır.

    33. Bir takma ad oluşturun oturum açmışAçık, o anda sistemde oturum açmış kullanıcıların adlarının alfabetik olarak sıralanmış bir listesini görüntüler.

    33. Komutları kullanarak geçerli tarihi büyük harflerle görüntüleyin tarih Ve afiş.

    34. Bir değişkene atama BEN Kayıt adınız. Başka bir tane çalıştır kabuk. Bu değişkeni görüyor musunuz? Oluşturulan görüntüde görmek için ne yapılması gerekiyor? kabuk? Bir değişkenin değerini değiştirme BEN oluşturulan kabuk. Çıkış doğdu kabuk. Orijinaldeki bu değişkenin değerine bakın kabuk. Sonucu açıklayın.

    35. Yaz kabuk-program bilgi kullanıcıdan bir ad, adres, gün, ay ve doğum yılı girmesini isteyecek ve bu bilgileri ters sırada görüntüleyecektir.

    36. Yaz kabuk- bir numara girmek için bir davet görüntüleyecek, girilen numarayı bir değişkende saklayacak bir program Y ve bir mesaj yazdırın “Y, 7'den büyüktür”, eğer değer Y 7'den büyük ve “YOlumsuz daha büyük hariç 7” aksi takdirde.

    37. Aşağıdaki istatistikleri gösteren bir kabuk programı yazın:

    a) adınız;

    b) başlatıldığı bağımsız değişken sayısı;

    c) bağımsız değişkenlerinin her birini ve bağımsız değişkenin uzunluğunu karakter cinsinden yazdırır;

    38. Yaz kabuk- argüman sayısını belirleyen bir program Komut satırı ve bağımsız değişken sayısı üç değilse veya bağımsız değişkenlerin sayısı üç değilse bir hata mesajı atar.

    39. Yaz kabuk- bir kullanıcı kimliğinin girilmesi için bir komut verecek, kimliğin sistemde kullanılanlarla uyumluluğunu kontrol edecek ve tam adı görüntüleyecek bir program EV-dizin veya geçersiz bir tanımlayıcı olması durumunda bir hata mesajı verin.

    40. Bir kabuk programı yazın Merhaba, komut satırı bağımsız değişkenlerine aşağıdaki yanıtı sağlar:

    Argüman "-D"- program komutu yürütecek tarih;

    Argüman “-l”- program mevcut dizinin içeriğini gösterecektir;

      komut satırında herhangi bir bağımsız değişken veya geçersiz bağımsız değişken yoksa, program seçenekleri hakkında yardım görüntüler.

    41. Bir program yazın kelimeler, kullanıcıdan bir kelime girene kadar her seferinde bir kelime girmesini isteyecektir. son. Girilen tüm kelimeleri hatırla. Kelimeyi girdikten sonra son girilen tüm kelimeleri ekranda görüntüler.

    42. Geçerli çalışma dizininin tam yol adını içerecek şekilde sistem istemini değiştirin .

    43. Bir program yaz virüs, farklı bir adla kendisinin yürütülebilir bir kopyasını oluşturur ve ardından kendini siler.

    44. Bir program yaz virüs2 geçerli dizinde komut dili programları arar ve metinlerine kelimeyi görüntülemek için bir komut ekler. enfekte!”.

    45. Bir program yaz virüs3 diğer programlara bulaşmak için bulduğu komut dili programlarına kendi kodunu ekleyen .

    46. ​​​​Program yaz virüs4 virüsünüzü, bulaştığında, bulaşan kodun bulaşan programdan kaldırılacağı şekilde değiştirerek.

    47. Bir program yaz antivirüs, virüsünüzün bulaştığı tüm kabuk programlarını bulur.

    48. Geliştirilen programı, yalnızca kendisi tarafından belirtilen dizindeki virüslü programları bulması için değil, aynı zamanda virüslü sürümü biten yeni bir dosyaya kaydederek "iyileştirmesi" için değiştirin. . vir ve böyle bir dosyadan yürütme özniteliğini kaldırma.

    49. Bir program yaz virüs5 , hangisi:

    a) geçerli dizindeki ve alt dizinlerindeki kabuk programlarına yalnızca kullanıcı komutu girerse virüs bulaştırır ls;

    b) takım gibi davranmak ls, çalışmalarının terminalinde hiçbir şey vermeden.

    50. Programlara dayalı virus6 programı yaz virüs2 -virüs5 geliştirdiğiniz program tarafından bulaşma kodu tespit edilemeyen antivirüs ve bulaşma, değişkenin herhangi bir değerinde gerçekleşir YOL.

    51. Bir program yaz süper virüs, başlatılması bir önceki görevde geliştirilen virüsü dosyalarınıza bulaştırır ve sisteme her giriş yaptığınızda, yoldaşlarınızın dosyalarına bulaştırılmaya çalışılır. programı süper virüs ilk çalıştırmadan sonra kendini siler.

    52. Bir program yaz süper antivirüs, belirtilen dizindeki ve alt dizinlerindeki tüm dosyaları gelişmiş tüm virüslerden algılar ve tamamen "iyileştirir" (ilgili seçenek belirtilirse).

    UNIX'te komut kabuğu komut satırı arayüzü Unix benzeri işletim sistemleri, yani kullanıcı tarafından verilen veya dosyalardan okunan komutları yürütür. Bu tür dosyalar kabuk komutları kabuk betikleri (komut dosyaları, programlar) olarak adlandırılır. Bu betikler derlenmez ancak kabuk tarafından yorumlanır. Bu, kabuğun betiği baştan sona, satır satır okuduğu, burada belirtilen komutları aradığı ve bunları yürüttüğü anlamına gelir; bu yaklaşımın aksine, derleyici tüm programı makine yürütmesi için uygun bir forma dönüştürür - daha sonra böyle bir koda sahip bir dosya bir kabuk komut dosyasında kullanılabilir. Özellik kabuk dili - geleneksel programlama dillerinde yerleşik olan birçok işlem, harici programlar çağrılarak gerçekleştirilir.

    Kabuğun görevlerinden biri, yapılandırma dosyaları aracılığıyla özelleştirilebilen bir kullanıcı ortamı sağlamaktır.

    Kabuk türleri

    UNIX, aralarından seçim yapabileceğiniz birkaç farklı kabuk sağlar:

    sh veya Born kabuğu ( Bourne Kabuğu), UNIX benzeri ortamlarda kullanılan ilk kabuklardan biridir. Bu, küçük ve küçük bir dizi özelliğe sahip temel bir kabuktur. Fiili standart kabuktur ve her UNIX sisteminde bulunur. Linux'ta /bin/sh, bash'a sembolik bir bağlantı olabilir. Bu, UNIX uygulamalarıyla uyumluluğu sağlamak için yapılır. darbe veya yeni Born kabuğu ( Bourne Yeniden Kabuk) standart Linux kabuğu. Çoğu Linux kullanıcısı, tam olarak kurulu standart kabuğa sahiptir. darbe. Bir şekilde darbe- bu bir üst yapı sh, bir dizi ekleme ve ek modüller. Böylece yeni Bourne kabuğu, normal Bourne kabuğuyla uyumludur: komutlar sh, da çalışacak darbe, ancak tersi zorunlu değildir. csh veya C yönelimli bir kabuk ( C Kabuk) bu kabuğun sözdizimi C programlama diline benzer.Genellikle programcılar bu kabuğu kullanır. tcsh veya geliştirilmiş bir C yönelimli sarıcı ( Turbo C Kabuğu) üst yapı csh. ksh veya Korn kabuğu ( Korn Kabuğu) 1980'lerin başında yazılmıştı ve o sırada Bourne kabuğunun ve csh'nin en iyi özelliklerinden yararlanıyordu. Bourne kabuğu için bir eklenti vardır ve Bourne kabuğu için yazılan betiklerin yürütülmesini garanti eder. POSIX standardı sınırlı Korn kabuğudur.

    /etc/shells dosyası, sistemde bulunan kabuklar hakkında bilgi içerir:

    Mia: ~> cat /etc/shells /Bin/bash /Bin/sh /Bin/tcsh /Bin/csh

    Kullanıcı kabuğu /etc/passwd dosyasında ayarlanır. Örneğin, kullanıcı dizisi mia yüklü bir kabuğu olan darbe :

    Mia: L2NOfqdlPrHwE: 504:504: Mia Maya:/home/mia:/bin/bash

    Kabuklar arasında geçiş yapma

    Kullanıcı istediği zaman başka bir kabuk başlatabilir. Örneğin, varsayılan olarak kontroller altında çalışıyorsa darbe ve kabuğun altında bazı eylemler gerçekleştirmesi onun için daha uygundur. csh, bu kabuğu başlatır

    Mia:~>csh

    Tekrar kontrol altına almak için darbeçıkış komutunu yazmanız gerekir.

      dilek (UNIX kabuğu)- Bu terimin başka anlamları da var, bkz. Dilek. dilek (Windowing Shell), X Pencere Sistemi ve Mac OS X için basit bir betikli veya etkileşimli UNIX komut kabuğudur. Kullanıcılara bileşenleri kontrol etme yeteneği sağlar ... ... Wikipedia

      komut kabuğu- İşletim sistemi kabuğu kabuk) sistem işlevleriyle kullanıcı etkileşimi için bir arabirim sağlayan bir işletim sistemi (OS) komut yorumlayıcısı. Genel olarak, mermiler iki tür arayüzle ayırt edilir ... Wikipedia

      UNIX kabuğu

      Unix kabuğu- UNIX komut kabuğu (İngilizce Unix kabuğu, genellikle yalnızca "kabuk" veya "sh") komut yorumlayıcısı, Unix Sürüm 7'de görünen Bourne kabuğuna kadar uzanan POSIX uyumlu kabuk ailesinin işletim sistemlerinde kullanılır. İçindekiler 1 ... ... Wikipedia

      Unix Kabuğu- UNIX kabuğu (İngilizce Unix kabuğu, genellikle yalnızca "kabuk" veya "sh"), Unix Sürüm 7'de görünen Bourne kabuğuna dayanan POSIX uyumlu kabuk ailesinin işletim sistemlerinde kullanılan bir komut yorumlayıcısıdır. İçindekiler 1 . .. ... Vikipedi

      Komut satırı- Komut satırı yorumlayıcı isteği buraya yönlendirilir. "Komut Satırı Tercümanı" konusunda ayrı bir makaleye ihtiyaç vardır. Dış görünüş mermiler (eng. Co ... Wikipedia

      UNIX Sistem V- System V'in birçok torunu ... Wikipedia

      Unix Sistem V- System V AT T UNIX'in birçok torunu System V, işletim sisteminin 1989'daki sürümlerinden biridir. 4 ana sürüm vardı Sürüm 1, 2, 3 ve 4. System V Sürüm 4 (SVR4) en başarılı ve popüler olanıydı ve ... ... Wikipedia için bir kaynak olarak hizmet etti

      UNIX - Soy ağacı UNIX sistemleri UNIX (Unix'i okuyun), taşınabilir, çok görevli ve çok kullanıcılı bir ailedir ... Wikipedia

      Unix- UNIX sistemlerinin soy ağacı UNIX (Unix'i okuyun), taşınabilir, çok görevli ve çok kullanıcılı bir işletim sistemleri grubudur. Birinci UNIX sistemi 1969'da AT T'nin Bell Labs bölümünde geliştirildi. O zamandan beri yaratıldı ... Wikipedia

    Kitabın

    • Kabuk betikleri. Linux, OS X ve Unix. Kılavuz, Taylor Dave. Kabuk betikleri yardımı sistem yöneticileri ve otomatikleştirmek için programcılar rutin görevlerİlk bilgisayarlar ortaya çıktığından beri. İlkinin piyasaya sürülmesinden bu yana ... 1217 UAH karşılığında satın alın (yalnızca Ukrayna)
    • Kabuk betikleri. Linux, OS X ve Unix, Taylor Dave, Perry Brandon. Kabuk betikleri, ilk bilgisayarlardan beri sistem yöneticilerinin ve programcıların rutin görevleri otomatikleştirmesine yardımcı oluyor. İlk yayından bu yana…
    • öğretici

    Makale neden ve kimin için?

    Başlangıçta bu, unix benzeri sistemlerle çalışmaya başlayan öğrenciler için bir hatırlatmaydı. Başka bir deyişle, makale, unix komut satırında daha önce deneyimi olmayan, ancak şu veya bu nedenle onunla etkili bir şekilde nasıl etkileşim kuracağını öğrenmek isteyen veya buna ihtiyaç duyan kişiler için tasarlanmıştır.

    Manaların yeniden anlatılması (belgeleme) olmayacak ve makale hiçbir şekilde onları okumayı iptal etmez veya değiştirmez. Bunun yerine unix kabuğunda çalışmanın en başından itibaren etkili ve keyifli bir şekilde çalışabilmeniz için anlamanız gereken temel şeylerden (komutlar, püf noktaları ve ilkeler) bahsedeceğim.

    Makale, tamamen işlevsel bir kabuğa (tercihen zsh veya bash) ve oldukça geniş bir standart programlar.

    kabuk nedir

    Kabuk (kabuk, diğer adıyla "komut satırı", diğer adıyla CLI, diğer adıyla "konsol", diğer adıyla "terminal", diğer adıyla "beyaz harflerle siyah pencere") ile iletişim kurmak için bir metin arayüzüdür. işletim sistemi(aslında, tam olarak söylemek gerekirse, bu programı, böyle bir arayüz sağlar, ancak şimdi bu fark önemli değildir).

    Genel olarak, kabuk üzerinde çalışmak şöyle görünür: kullanıcı (yani siz) klavyeden bir komut girer, Enter'a basar, sistem komutu yürütür, yürütmenin sonucunu ekrana yazar ve tekrar bir sonraki komutu bekler. girilecek.

    Tipik kabuk görünümü:

    Kabuk, tüm Unix benzeri sunucu sistemleriyle etkileşim kurmanın ana yoludur.

    Komut satırı sistemleri nerede bulunur?

    Bir unix kabuğunun sizi bekleyebileceği popüler seçenekler:
    • macOS (bash);
    • iş veya kişisel bir web projesi için sunucuya uzaktan erişim;
    • uzaktan erişimli ev dosya sunucusu;
    • Dizüstü/masaüstünde Ubuntu, PC-BSD - Günümüzde Unix benzeri sistemlerin kurulumu ve kullanımı kolaydır.

    Bir kabukla hangi görevleri çözmek mantıklıdır?

    Kabuğun uygun, yararlı ve vazgeçilmez olduğu doğal görevler:
    • terminalde etkileşimli çalışma:
      • make aracılığıyla işleri derlemek, çalıştırmak;
      • metin dosyalarının karşılaştırılması;
      • hızlı geçici veri analizi (günlükteki benzersiz ips sayısı, kayıtların saat/dakika olarak dağılımı, vb.);
      • tek seferlik toplu eylemler (birçok işlemi sonlandırın; bir sürüm kontrol sistemiyle çalışıyorsanız, bir grup dosyayı tersine çevirin veya çözün);
      • sistemde olup bitenlerin teşhisi (semaforlar, kilitler, süreçler, tanımlayıcılar, disk alanı vb.);
    • komut dosyası:
      • çalıştırması için diğer tercümanlara güvenemeyeceğiniz kurulum betikleri - yeni başlayanlar için değil;
      • etkileşimli kabuğu özelleştirme işlevleri (komut istemini etkileme, dizini değiştirme, ortam değişkenlerini ayarlama) - yeni başlayanlar için de pek uygun değil;
      • toplu dosya kod çevrimi gibi tek seferlik betikler;
      • makefiles.

    Kesinlikle ilk adımlar

    Başlarken: Oturum Açma ve Oturumu Kapatma

    Kabuğu nasıl başlatacağınızı ve ondan nasıl çıkacağınızı tam olarak bildiğinizden emin olun.

    Ubuntu'nun kurulu olduğu bir makinedeyseniz, Terminal programını başlatmanız gerekir. İşin sonunda pencereyi kapatabilirsiniz.

    MacOS'ta Terminal'i de başlatın.

    Uzak bir sunucuya erişmek için ssh (yerel olarak MacOS, Ubuntu veya başka bir unix benzeri sisteme sahipseniz) veya macun (Windows kullanıyorsanız) kullanın.

    Ben kimim, neredeyim?

    Aşağıdaki komutları çalıştırın:
    • ana bilgisayar adı - şu anda üzerinde bulunduğunuz makinenin (sunucunun) adını görüntüler;
    • whoami - oturum açma bilgilerinizi görüntüler (sistemdeki adınız);
    • ağaç -d / |less - makinedeki dizin ağacının sözde görüntüsü; kaydırmadan çıkış - q ;
    • pwd - içinde bulunduğunuz dizini görüntüler; komut satırında "aynen böyle" olamazsınız, mutlaka bir dizindesiniz (=geçerli dizin, çalışma dizini). Muhtemelen, mevcut çalışma dizini isteminizde (komut isteminde) görüntülenir.
    • ls - geçerli dizindeki dosyaların listesi; ls /home - belirtilen dizindeki dosyaların listesi;

    Komut geçmişi (geçmiş)

    Tam teşekküllü bir komut satırının önemli bir özelliği, komutların geçmişidir.

    Birkaç komut çalıştırın: hostname , ls , pwd , whoami . Şimdi yukarı tuşuna basın. Önceki komut giriş satırında belirdi. Tarihte ileri ve geri gitmek için yukarı ve aşağı tuşları kullanılabilir. Ana bilgisayar adına kaydırdığınızda Enter'a basın - komut yeniden yürütülecektir.

    Geçmişten gelen komutlar yalnızca yeniden yürütülemez, aynı zamanda düzenlenebilir. Tarihte ls komutuna ilerleyin, ona -l anahtarını ekleyin (ortaya çıktı ls -l , eksiden önce bir boşluk var ama sonra değil). Enter'a basın - değiştirilen komut yürütülecektir.

    Tarihte gezinme, komutları düzenleme ve yeniden çalıştırma, komut satırında çalışırken en tipik eylemlerdir, buna alışın.

    kopyala yapıştır

    Komut satırı çok metin merkezlidir: komutlar metindir, çoğu standart program için girdi verileri metindir, çalışmanın sonucu da çoğunlukla metindir.

    Metinle ilgili güzel olan şey, kopyalanıp yapıştırılabilmesi ve bu komut satırı için de geçerli.

    tarih +"%y-%m-%d, %A" çalıştırmayı deneyin
    Tamamen elle mi girdiniz yoksa makaleden mi kopyaladınız? Kopyalayabildiğinizden, terminale yapıştırabildiğinizden ve çalıştırabildiğinizden emin olun.

    man " kullanmayı öğrendikten sonra, yardımdan örnek komutları kopyalayıp çalıştırabildiğinizden emin olun. Kontrol etmek için, ÖRNEKLER bölümü için tarih programının yardımına bakın, verilen ilk örneği kopyalayıp çalıştırın (sadece durum: dolar işareti komutun bir parçası değildir, bu giriş isteminin koşullu bir görüntüsüdür).

    Metnin terminalden tam olarak nasıl kopyalanıp terminale yapıştırılacağı sisteminize ve ayarlarına bağlıdır, bu yüzden evrensel talimat ne yazık ki işe yaramayacak. Ubuntu'da şunu deneyin: kopyala sadece fare seçimidir, yapıştır orta fare düğmesidir. Çalışmazsa veya farklı bir sisteminiz varsa - İnternete bakın veya daha deneyimli arkadaşlara sorun.

    Tuşlar ve seçenekler

    Komut geçmişini araştırırken zaten ls komutunun en az iki seçeneği olduğu gerçeğiyle karşılaştınız. Aynen böyle çağırırsanız, basit bir liste yazdırır:

    [e-posta korumalı]: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
    -l anahtarını eklerseniz, her dosya için ayrıntılı bilgi görüntülenir:

    [e-posta korumalı]: ~/shell-survival-quide> ls -l toplam 332 -rw-rw-r-- 1 akira akira 198 13 Şubat 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 14 Şubat 22:26 kabuk -ilk-adımlar.md -rw-rw-r-- 1 akira akira 146226 13 Şubat 11:49 kabuk-ilk-adımlar.pdf -rw-rw-r-- 1 akira akira 16626 13 Şubat 11:45 kabuk-hayatta kalma -quide.md -rw-rw-r-- 1 akira akira 146203 13 Şubat 11:35 shell-survival-quide.pdf
    Bu çok tipik bir durumdur: Komut çağrısına özel değiştiriciler (anahtarlar, seçenekler, parametreler) eklenirse, komutun davranışı değişir. Karşılaştırın: ağaç / ve ağaç -d / , ana bilgisayar adı ve ana bilgisayar adı -f .

    Ek olarak, komutlar dosya adlarını, dizinleri veya yalnızca metin dizelerini parametre olarak alabilir. Denemek:

    ls -ld /home ls -l /home grep kökü /etc/passwd

    Adam

    man - Makinenizde bulunan komutlar ve programların yanı sıra sistem çağrıları ve C standart kitaplığı hakkında yardım.

    Deneyin: man grep , man atoi , man chdir , man man .

    İleri ve geri kaydırma “yukarı”, “aşağı”, “PageUp”, “PageDown” butonları ile, yardım görünümünden çıkış ise q butonu ile yapılır. Bir yardım makalesinde belirli bir metni arama: / (eğik çizgi) tuşuna basın, arama metnini yazın, Enter tuşuna basın. Sonraki oluşumlara git - n tuşu.

    Tüm yardım makaleleri kategorilere ayrılmıştır. En önemli:

    İsimlerin çakışması durumunda yardımın hangi kategoriden gösterilmesi gerektiğinin belirtilmesi gerekmektedir. Örneğin, man 3 printf, C standart kitaplığından bir işlevi tanımlar ve man 1 printf, aynı adlı bir konsol programını tanımlar.

    man -k komutuyla makinede bulunan tüm yardım makalelerinin bir listesini görüntüleyebilirsiniz. (nokta aynı zamanda takımın bir parçasıdır).

    az

    Çok uzun bir metnin (bir dosyanın içeriği, uzun bir adam vb.) küçük bir terminal penceresinde görüntülenmesi gerektiğinde, özel “çağrı cihazı” programları kullanılır (sayfa / sayfa kelimesinden, yani sayfalama). En popüler kaydırıcı less 'dır ve mans'ı okurken size kaydırma olanağı sağlayan da budur.

    Davranışı deneyin ve karşılaştırın:

    cat /etc/bash.bashrc cat /etc/bash.bashrc |daha az

    Dosyayı parametrelerde hemen kaydırıcıya aktarabilirsiniz:

    Daha az /etc/bash.bashrc

    Yukarı ve aşağı kaydırın - "yukarı", "aşağı", "PageUp", "PageDown" düğmeleri, çıkış - düğmesi q. Belirli metni arayın: / (eğik çizgi) tuşuna basın, arama metnini girin, Enter tuşuna basın. Sonraki oluşumlara git - n tuşu. (İnsanla ilgili talimatı biliyor musunuz? Yardımı göstermek için daha az kullanılmasına şaşmamalı.)

    Haklar

    Herhangi bir dosya veya dizinle bir dizi "hak" ilişkilendirilir: dosyayı okuma hakkı, dosyaya yazma hakkı, dosyayı çalıştırma hakkı. Tüm kullanıcılar üç kategoriye ayrılır: dosya sahibi, dosya sahibi grubu, diğer tüm kullanıcılar.

    Dosya izinlerini ls -l ile görüntüleyebilirsiniz. Örneğin:

    > ls -l Makefile -rw-r--r-- 1 akira öğrenci 198 13 Şub 11:48 Makefile
    Bu çıktı, sahibin (akira) dosyayı okuyabileceği ve yazabileceği, grubun (öğrenciler) yalnızca okuyabileceği ve kullanıcıdaki diğer herkesin de yalnızca okuyabileceği anlamına gelir.

    Çalışırken izin reddedildi mesajı alırsanız, çalışmak istediğiniz nesne üzerinde yeterli izniniz yok demektir.

    Man chmod'da daha fazlasını okuyun.

    STDIN, STDOUT, boru hatları (borular)

    Yürütülen her programın kendisiyle ilişkili 3 standart veri akışı vardır: giriş veri akışı STDIN , çıkış veri akışı STDOUT , hata akışı STDERR .

    Wc programını çalıştırın, Bugün iyi günler yazın, Enter'a basın, iyi günler yazın, Enter'a basın, Ctrl+d'ye basın. Wc programı, metninizdeki harf, kelime ve satır sayısıyla ilgili istatistikleri gösterecek ve çıkacaktır:

    > wc iyi günler bugün iyi günler 2 5 24
    İÇİNDE bu durum programın STDIN'ine iki satırlık bir metin verdiniz ve STDOUT'ta üç sayı aldınız.

    Şimdi head -n3 /etc/passwd komutunu çalıştırın, şöyle görünmelidir:

    > head -n3 /etc/passwd root:x:0:0:root:/root:/bin/bash arka plan programı:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x: 2:2:bin:/bin:/usr/sbin/nlogin
    Bu durumda, ana program STDIN'den bir şey okumadı ve STDOUT'a üç satır yazdı.

    Şöyle düşünün: Bir program, STDIN'in içeri aktığı ve STDOUT'un dışarı aktığı bir kanaldır.

    Unix komut satırının en önemli özelliği, "pipe" programlarının birbirine bağlanabilmesidir: bir programın çıktısı (STDOUT), başka bir programa girdi (STDIN) olarak iletilebilir.

    Bağlantılı programların böyle bir yapısına İngilizce boru (boru), Rusça - konveyör veya boru denir.

    Programları bir ardışık düzende birleştirmek, | sembolüyle yapılır. (dikey çubuk)

    head -n3 /etc/passwd |wc komutunu çalıştırın, şöyle bir şey elde edersiniz:

    > kafa -n3 /etc/şifre |wc 3 3 117
    İşte olanlar: ana program, STDOUT'a üç satırlık metin çıktısı verdi; bu, hemen wc programının girişine girdi ve bu da alınan metindeki karakterlerin, sözcüklerin ve satırların sayısını saydı.

    İstediğiniz kadar programı bir ardışık düzende birleştirebilirsiniz. Örneğin, önceki ardışık düzene, ilk wc'nin çıktısında kaç kelime ve harf olduğunu sayan başka bir wc programı ekleyebilirsiniz:

    > kafa -n3 /etc/şifre |wc |wc 1 3 24

    Komut satırında çalışırken ardışık düzenleri (boruları) derlemek çok yaygın bir şeydir. Bunun pratikte nasıl yapıldığına dair bir örnek için Tek Hatlı İşlem Hattı Derleme bölümüne bakın.

    G/Ç Yönlendirmesi

    Bir programın çıktısı (STDOUT) yalnızca başka bir programa aktarılamaz, aynı zamanda bir dosyaya da yazılabilir. Bu yönlendirme > (büyüktür işareti) ile yapılır:

    Tarih > /tmp/today.txt
    Bu komutu çalıştırmanın bir sonucu olarak diskte /tmp/today.txt dosyası görünecektir. İçeriğini cat /tmp/today.txt ile görüntüleyin

    Aynı ada sahip bir dosya zaten varsa, eski içeriği yok edilecektir. Dosya yoksa, oluşturulacaktır. Dosyanın oluşturulduğu dizin, komut yürütülmeden önce mevcut olmalıdır.

    Dosyanın üzerine yazmak istemiyor, ancak sonuna çıktı eklemek istiyorsanız, >> öğesini kullanın:

    Tarih >> /tmp/today.txt
    Şimdi dosyada ne yazdığını kontrol edin.

    Ayrıca STDIN yerine herhangi bir dosyayı programa iletebilirsiniz. Denemek:

    WC

    Bir şey net olmadığında ne yapmalı

    Anlamadığınız veya belirli bir sonuca ulaşmak istediğiniz ancak nasıl yapacağınızı bilmediğiniz bir sistem davranışıyla karşılaşırsanız, aşağıdaki sırayla ilerlemenizi tavsiye ederim (bu arada, bu yalnızca kabuklar için geçerli değildir):
    • soruyu veya görevi olabildiğince açık bir şekilde formüle edin - "Neyi bilmiyorum" çözmekten daha zor bir şey yoktur;
    • Aynı veya benzer bir sorunla daha önce karşılaşıp karşılaşmadığınızı unutmayın - bu durumda, geçen sefer işe yarayan çözümü denemeye değer;
    • uygun adam-ları okuyun (sizin durumunuza hangi adamların uygun olduğunu anlarsanız) - komutların, gerekli seçeneklerin veya diğer komutlara bağlantıların kullanımına ilişkin uygun örnekler bulabilirsiniz;
    • bir düşünün: görevi biraz değiştirmek mümkün mü? - belki koşulları biraz değiştirerek, zaten nasıl çözeceğinizi bildiğiniz bir sorunla karşılaşacaksınız;
    • iyi tanımlanmış sorunuzu bir arama motorunda sorun - belki yanıt Stack Overflow'ta veya diğer sitelerde bulunabilir;
    Yukarıdakilerin hiçbiri yardımcı olmadıysa - bir öğretmenden, deneyimli bir meslektaştan veya arkadaştan tavsiye alın. Ve "aptalca" sorular sormaktan korkmayın - bilmemek ayıp değil, sormamak ayıp.

    Zor bir sorunu çözdüyseniz (kendi başınıza, interneti veya diğer insanları kullanarak) - siz veya yoldaşlarınızın aynı sorunu tekrar yaşama ihtimaline karşı çözümünüzü yazın. Basit bir metin dosyasına kaydedebilir, Evernote'ta sosyal ağlarda yayınlayabilirsiniz.

    Çalışma metodları

    Kopyala ve yapıştır- man-s'den, StackOverflow'taki makalelerden vb.

    Önceki komutu geçmişten çekin, ardışık düzene başka bir komut ekleyin, çalıştırın, tekrarlayın.Santimetre. Ayrıca "Tek Hatlı İşlem Hattı Derleme" bölümüne bakın.

    Temel Komutlar

    • dizin değiştirme: cd ;
    • dosyaların içeriğini görüntüleme: cat , less , head , tail ;
    • dosya işleme: cp , mv , rm ;
    • dizin listesi: ls , ls -l , ls -lS ;
    • dizin yapısı: ağaç , ağaç -d (bir dizini parametre olarak iletebilirsiniz);
    • dosya arama: bul . -isim ... ;

    Analitik

    • wc, wc -l ;
    • sort -k - belirtilen alana göre sırala;
    • sort -n - sayısal sıralama;
    • diff - dosyaları karşılaştırın;
    • grep , grep -v , grep -w , grep "\ " , grep -E - metin ara;
    • uniq , uniq -c - benzersiz diziler;
    • awk - awk "($1 yazdır)" değişkeninde, her satırın yalnızca ilk alanını bırakmak için $1, $2 , $3 , vb. olarak değiştirilebilir;

    Sistem Teşhisi

    • ps axuww - makinede çalışan işlemler (çalışan programlar) hakkında bilgi;
    • üst - en yoğun kaynak kullanan süreçlerin etkileşimli görünümü;
    • df - kullanılmış ve boş disk alanı;
    • du - dizindeki dosyaların toplam boyutu (alt dizinlerle yinelemeli);
    • strace , ktrace - hangi sistemin çağırdığı işlemi yapıyor;
    • lsof - işlemin kullandığı dosyalar;
    • netstat -na , netstat -nap - sistemde hangi portların ve soketlerin açık olduğu.

    Bazı programlarınız olmayabilir, bunların ayrıca yüklenmesi gerekir. Ayrıca, bu programların bazı seçenekleri yalnızca ayrıcalıklı kullanıcılar tarafından kullanılabilir (kök "y").

    Toplu ve yarı otomatik yürütme

    İlk başta bu bölümü atlayın, basit kabuk komut dosyası yazmaya başladığınızda bu komutlara ve yapılara ihtiyacınız olacak.
    • test - kontrol koşulları;
    • okurken - STDIN satırları arasında geçiş yapın;
    • xargs - STDIN'den dizelerin belirtilen programın parametrelerine değiştirilmesi;
    • sıra - doğal sayı dizilerinin oluşturulması;
    • () - birkaç komutun çıktısını birleştirin;
    • ; - birbiri ardına yapın;
    • && - ilk komut başarıyla tamamlanırsa çalıştır;
    • || - ilk komut başarısız olursa çalıştır;
    • tee - program çıktısını STDOUT'a ve diskteki bir dosyaya çoğaltın.

    Çeşitli

    • tarih - geçerli tarih;
    • curl - belirtilen url'deki belgeyi indirir ve sonucu STDOUT'a yazar;
    • dokunma - dosya değişiklik tarihini güncelle;
    • öldür - sürece bir sinyal gönderin;
    • doğru - hiçbir şey yapmaz, doğru döndürür, sonsuz döngüleri düzenlemek için yararlıdır;
    • sudo - bir komutu root olarak yürütün "a.

    Tek hatlı işlem hattı derleme

    Gerçek bir görev örneğine bakalım: mevcut kullanıcı adına çalışan tüm görev-6-sunucu işlemlerini sonlandırmak istiyoruz.

    Aşama 1.
    Saf haliyle olmasa bile, hangi programın yaklaşık olarak gerekli verileri ürettiğini anlayın. Görevimiz için sistemdeki tüm süreçlerin bir listesini almaya değer: ps axuww. Koşmak.

    Adım 2
    Alınan verilere gözlerinizle bakın, gereksiz verilerin bir kısmını dışarı atacak bir filtre bulun. Genellikle bu grep veya grep -v şeklindedir. "Yukarı" tuşunu kullanarak geçmişten önceki komutu çıkarın, ona icat edilmiş bir filtre atayın ve çalıştırın.

    Ps axuww |grep `whoami`
    - yalnızca geçerli kullanıcının işlemleri.

    Aşama 3
    İstediğiniz temiz verileri elde edene kadar 2. adımı tekrarlayın.

    "
    - istenen ada sahip tüm işlemler (artı, belki vim task-6-server.c, vb. Gibi gereksiz olanlar),

    Ps axuww |grep `whoami` | grep "\ " | grep -v vim ps axuww |grep `whoami` | grep "\ " | grep -v vim | grep -v daha az
    - yalnızca istenen ada sahip işlemler

    Ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v daha az |awk "($2 yazdır)"

    Gerekli işlemlerin pid'leri, 3. adım tamamlandı

    Adım 4
    Uygun bir son işleyici uygulayın. "Yukarı" tuşunu kullanarak, geçmişten bir önceki komutu çıkarır ve sorunun çözümünü tamamlayacak işlemleri ekleriz:

    • |wc -l işlem sayısını saymak için;
    • >pid'ler bir dosyaya pid'ler yazmak için;
    • |xargs kill -9 öldürme işlemi.

    Eğitim için görevler

    Yeni beceriler uygulamak ister misiniz? Aşağıdaki görevleri deneyin:
    • ana dizininizdeki tüm dosya ve dizinlerin bir listesini alın;
    • 2. kategorideki tüm erkek makalelerinin bir listesini alın (sistem çağrıları);
    • grep man sayfasında grep kelimesinin kaç kez geçtiğini sayın;
    • şu anda kaç tane işlemin root olarak çalıştığını sayın;
    • maksimum sayıda yardım kategorisinde (man) hangi komutun oluştuğunu bulun;
    • var kelimesinin ya.ru sayfasında kaç kez geçtiğini sayın.
    İpucu: find , grep -o , awk "(print $1)" , grep , curl -s içindeki normal ifadelere ihtiyacınız olacak.

    Bundan sonra ne çalışmalı?

    Komut satırını sevmeye başlarsanız, durmayın, becerilerinizi geliştirmeye devam edin.

    Komut satırında yaşıyorsanız kesinlikle kullanışlı olacak bazı programlar:

    • karmaşık seçeneklerle bul
    • ilgili
    • bulmak
    • tel ağ
    • ağ kedisi
    • tcp dökümü
    • rsync
    • ekran
    • zgrep zsiz
    • görsel
    • crontab-e
    • posta göndermek
    Perl veya python veya hatta her ikisi gibi bir betik dilini zaman içinde öğrenmeye değer.

    Kimin ihtiyacı var?

    Bugün komut satırını ve kabuk komut dosyası oluşturmayı öğrenmeye değer mi? Kesinlikle buna değer. FB'de iş bulmak isteyen adaylar için Facebook'un gereksinimlerinden sadece birkaç örnek vereceğim.

    Dipnot: Komut kabuğu konsepti. Komut kabuklarına genel bakış. bash komut kabuğu. İşin özellikleri (komut geçmişi, operatör "!" , bir tuşa basma eylemleri ). Konsolda çoklu görev. Görevler. Görev yönetimi. Geceyarısı komutanı ortam değişkenleri

    ders ilerlemesi

    1. Linux ve Unix dünyasında, bir bilgisayarda çalışmak, kavramla ayrılmaz bir şekilde bağlantılıdır. komut kabuğu- kullanıcının komutları girerek ve yürüterek sistemle etkileşime girmesini sağlayan bir program. Yine de, komut kabuğu düzenli bir programdır. Dosyada varsayılan kabuk olarak ayarlayarak bunu kanıtlayabilirsiniz. şifre kullanıcı için başka bir program. Ancak sistemin onu bir kabuk olarak tanıması için mutlak dosya adını eklemeniz gerekir. /etc/kabuklar.

    Linux birkaç komut kabuğuyla birlikte gelir, bileşimleri dağıtıma bağlı olarak değişebilir, ancak her zaman şunları bulabilirsiniz:

    Bourne Kabuğu (sh) - en eski ve en yaygın olanı komut kabuğu Unix sistemleri için. Kullanılmadığı tek bir Unix sistemi yoktur.

    Bourne Again Shell (bash) - genişletilmiş Bourne Shell. Pek çok hoş avantajı var, bu yüzden son zamanlarda bu kadar popüler hale geldi. Neredeyse tüm Linux dağıtımları için "varsayılan" kabuktur.

    Ayrıca popüler dış görünümler şunlardır:

    csh- komut sistemi C programlama diline yakın olan kabuk

    tcsh, komut sistemi Tcl programlama diline yakın bir kabuktur.

    zsh muhtemelen en güçlü kabuktur. sh (bourne Shell) 'in bir uzantısıdır.

    Linux bash'ı "varsayılan olarak" kullandığından, bunun hakkında konuşacağız.

    2. komut kabuğu bash, başlangıçta Bourne Shell'in ücretsiz bir alternatifiydi. Daha sonra yetenekleri büyüdüğünde bağımsız bir ürün olarak görülmeye başlandı. bash'ın ana özellikleri şunlardır:

    Tablo 1.1.
    Fırsat Bir yorum
    1 Satır düzenleme Girilen komutu yeniden yazmak yerine düzenleyebilme özelliği
    2 kanal organizasyonu Fırsat G/Ç yönlendirmeleri, görevler arasında kanalları düzenleme
    3 Kullanım kolaylığı Komut takma adlarının kullanımı, komut geçmişi, otomatik tamamlama
    4 İş yönetimi Arka plan işleri oluşturma ve yönetme yeteneği
    5 Esneklik Her kullanıcı için oturum açma betiği dosyalarını ayrı ayrı kullanma, ortam değişkenleri

    G/Ç yeniden yönlendirmesi ve boru hatları Ders 8'de daha sonra ele alınacaktır. Bu nedenle, bu noktayı atlayacağız. Ama bash'ta çalışmanın özelliklerinden, sağladığı faydalardan bahsedelim.

    Bash, kullanıcı tarafından yazılan tüm komutları otomatik olarak bir dosyaya yazar. ~/.bash_history. Bu dosyayı yönetmek için history komutu kullanılır. tarih yerleşik komut bash. Yani, bu komuta karşılık gelen yürütülebilir dosya yoktur. Kendini komut kabuğu tüm işlemleri gerçekleştirir. Seçenek olmadan girildiğinde, bu dosyada saklanan tüm komutları listeler ve cat ~/.bash_history ile aynıdır.

    Komut geçmişi, sık kullanılan komutlar kümesini basitleştirmek için mevcuttur. Komutların geçmişi, tuşlarla listede sıralanabilir. <вверх>Ve<вниз> .

    Başka bir yol da yazmaktır! ve komut başlat ve basın . İlk harfleri yazılanlarla eşleşen, geçmişteki son komut yürütülür. Örneğin:

    $ !/usr /usr/bin/Perl ./ptest.pl Tamam $ !xfonts bash: !xfonts: olay bulunamadı $

    Ancak, ihtiyacımız olan komut henüz geçmişte değilse, girişi nasıl hızlandırabiliriz? Bu durumda, anahtar bize yardımcı olacaktır. . Komutun (veya dosya yolunun) ilk birkaç harfini yazdıktan sonra, Ve darbe komutunuzu (veya yol öğenizi) otomatik olarak tamamlayacaktır. Birkaç dosyanın eşleşmesi veya hiçbir dosyanın eşleşmemesi durumunda, sistem bir ses sinyali verecektir. eğer düğme birkaç dosya sığdığında tekrar basın - sistem bir liste görüntüler ve hiçbiri olmadığında - bip sesini tekrarlayın

    3. İlk dersten itibaren, Linux'un çok görevli bir ortam olduğunu hatırlamanız gerekirdi. Ancak, şimdiye kadar onun çoklu görevinden yararlanamadınız. İlk bakışta, konsolun sistemin çoklu görev yeteneklerini kullanmanıza izin vermediği ve aynı anda iki veya daha fazla programı yalnızca grafik bir ortamda çalıştırabileceğiniz görülüyor. Ama değil! Konsol aynı zamanda çoklu görevdir.

    İlk olarak, her birinde bir program açarak birden fazla konsol açabilirsiniz. Konsollar arası geçiş tuşları kullanılarak yapılacaktır. ctrl+ , Nerede X konsol numarasıdır.

    İş kontrol komutlarının yardımıyla tek bir konsolda bile, çoklu görev sisteminin tüm avantajlarından tam olarak yararlanabilirsiniz.

    - sürece yakalanamayan bir sinyal gönderen bir tuş kombinasyonu işaret durdurucu. Kontrolü komut satırına aktarma işleminin yürütülmesini durdurmanıza izin verir.

    komut & - komuttan sonraki & sembolü, onu arka planda çalıştırmanıza izin verir.

    işler - Geçerli kabuk işlerinin bir listesini görüntüler.

    bg<#j>– #j işini arka plana koyar. Bundan önce, görev tuş kombinasyonu ile durdurulmalıdır. . Şu anda tercümanın yalnızca bir görevi varsa, sayı atlanabilir.

    fg<#j>- #j işini ön plan yürütme moduna geçirir. İş bir tuş kombinasyonu ile durdurulmalıdır. veya arka planda olun. Şu anda tercümanın yalnızca bir görevi varsa, sayı atlanabilir.

    $ man bash ^Z + Durdurulmuş man bash $ vim ^Z vim + Durdurulmuş vim $ bg 1 + man bash & $ jobs + Durdurulmuş man bash + Durdurulmuş vim $ fg 2 + vim $ fg + man bash $

    4. Ortam Değişkenleri– gibi tercihlerinizi gösteren sistem bilgileri Metin düzeltici varsayılan, yürütülebilir dosyalar vb. için arama yolları ile kullanıcı, sistem ve kabuk kimlikleri gibi Kullanıcı adı, kabuk ve diğer programlar tarafından kullanılan Linux sürümü vb.

    Kullanıcı tarafından yaygın olarak kullanılan değişkenler şunlardır:

    PATH - değişken, doluysa sistemin yürütülebilir dosyaları araması gereken yolları içerir. göreceli yol onlara.

    PWD - değişken, geçerli dizinin tam adını içerir.

    HOME - değişken tam yolu içerir kullanıcı ana dizini.

    HOSTNAME - değişken, bilgisayarın adını içerir.

    LOGNAME - içerir Kullanıcı adı

    KABUK - geçerli oturumda çalışan komut kabuğunun adını içerir.

    KULLANICI - içerir Kullanıcı adıŞu anda açık olan oturum.

    Parametresiz olarak girilen export komutu ile sistemde kurulu olan değişkenlerin listesi görülebilir.

    Bash kabuğunun kendi değişkenleri vardır. Yerel değişkenlerin sistem değişkenleri haline gelmesi için, aynı export komutu kullanılarak dışa aktarılmaları gerekir.Örneğin:

    $ export beyan -x HOME="/home/gserg" beyan -x HOSTNAME="WebMedia" beyan -x LANG="en_RU.KOI8-R" beyan -x LOGNAME="gserg" beyan -x PATH="/bin: /usr/bin:/usr/local/bin:/home/gserg/bin" beyan -x PWD="/home/gserg" beyan -x KABUK="/bin/bash" beyan -x TERM="Eterm" beyan -x KULLANICI="gserg" $ EDITOR=/bin/vim $ dışa aktarma EDITOR $ dışa aktarma bildirimi -x EDITOR="/bin/vim" bildirimi -x HOME="/home/gserg" bildirimi -x HOSTNAME="WebMedia" bildirimi -x LANG="ru_RU.KOI8-R" beyan -x LOGNAME="gserg" beyan -x PATH="/bin:/usr/bin:/usr/local/bin:/home/gserg/bin:" beyan - x PWD="/home/gserg" beyan -x KABUK="/bin/bash" beyan -x TERM="Eterm" beyan -x USER="gserg" $

    Takım çöz bir sistem değişkenini siler. Örneğin:

    $ unset EDITOR $ export beyan -x HOME="/home/gserg" beyan -x HOSTNAME="WebMedia" beyan -x LANG="en_RU.KOI8-R" beyan -x LOGNAME="gserg" beyan -x PATH=" /bin:/usr/bin:/usr/local/bin:/home/gserg/bin:" beyan -x PWD="/home/gserg" beyan -x KABUK="/bin/bash" beyan -x TERM= "Eterm", -x USER="gserg" $ bildirir

    5. Bugünün dersinde, sizi biraz standart olmayan başka bir komut kabuğuyla tanıştıracağız. gece yarısı komutanı. Değil komut kabuğu her zamanki anlamda. Bu bir metin dosyası yöneticisidir - analog Norton Komutanı veya Uzak. gece yarısı komutanı mc komutu ile çalıştırın. Yetenekleri hakkında konuşacağız.

    Ekran gece yarısı komutanı" iki bölüme ayrılmıştır. Neredeyse tüm ekran alanı, bir dizin ve dosya listesi içeren iki panel tarafından işgal edilir. Varsayılan olarak, ekranın altından ikinci satır, normal kabuk komutlarını çalıştırabileceğiniz komut satırıdır ve alt satırda işlev tuşu ipuçları ( F1-F10). En üstteki sembol satırı, birçok işlevin gerçekleştirilebileceği bir menü içerir. Menüyü kullanmak için istediğiniz öğeye tıklayabilir veya tuşuna basabilirsiniz. F9 ve tuşları kullanarak imleç kontrolü istediğiniz öğeyi seçin.

    Paneller gece yarısı komutanı aynı anda iki dizinin görüntülenmesini sağlar. Panellerden biri aktiftir (kullanıcının içinde bulunan dosya ve dizinlerle belirli eylemleri gerçekleştirebilmesi anlamında). Etkin panelde, dosyalardan veya dizinlerden birinin adı vurgulanır ve üst satırdaki panelin başlığı renkli olarak vurgulanır. Başlık adı, o anda görüntülenen dizinin adıyla aynıdır. Hemen hemen tüm işlemler aktif panelde gerçekleştirilir. Aktarma gibi bazı işlemler veya dosyalar kopyalanıyor Pasif paneli kopyalamak, aktarmak vb. için bir yer olarak kullanın.

    Şimdi çalışmanıza yardımcı olacak temel klavye kısayollarından bahsedelim. Geceyarısı komutanı "ohm.

    tuşları aktif paneli değiştirmek için kullanılır veya +

    bir dosyayı işaretlemek için basın veya +

    tıklamak yardım için

    dosya görüntüleyiciyi getirecek

    kullanarak sen dosyayı düzenle

    dosyayı kopyalamanıza izin verecektir.

    dosyayı taşı veya yeniden adlandır

    dizin oluştur

    Anahtar bir dosyayı ve/veya dizini silecek

    , daha önce de belirtildiği gibi, menüye erişimi açar.

    - çıkmanıza izin verir gece yarısı komutanı.

    işaretçiyi dosya listesinin başına taşıyacak,

    - aksine - listenin sonuna kadar.

    Ve sırasıyla sayfa başına göstergenin konumunu yukarı ve aşağı değiştirir.

    Anahtar <*> ek bir klavyede dosya seçimini tersine çevirmenize izin verir (dizinleri etkilemez)

    Anahtar <+> ek klavyede, dosyaları maskeye göre işaretlemenize izin verir ve <-> dosyaların işaretini maskeye göre kaldırın.

    + - dizinin içeriğini güncelleyin (diskten veya ağdan yeniden okuyarak)

    + - sağ ve sol panelleri değiştirin.

    + - panelleri çıkarın/iade edin.

    Klavye kısayolları, işleri halletmek için en iyi araç olsa da Geceyarısı komutanı "ohm olabildiğince hızlı ve kolay, yeni başlayanlar için hepsini bir kerede öğrenmek oldukça zordur. Bu boşluğu doldurmak ve klavye kısayolları olmayan diğer özellikleri eklemek için, gece yarısı komutanı bir menüsü vardır (tarafından çağrılır) F9).

    Menü öğelerden oluşur: "Sol Panel", "Dosya", "Komut", "Ayarlar", "Sağ Panel".

    "Sol/Sağ Panel"- bu menü öğeleri tamamen aynıdır. Aralarındaki fark sadece gerçekleştirilen eylemlerin sol veya sağ panele adreslenecek olmasıdır.

    "Liste Biçimi"- dosya / dizin listesinin görüntüleneceği görünümü seçebileceğiniz bir iletişim kutusu açar. Standart, kısa ve genişletilmiş biçimler arasından seçim yapabilirsiniz. Ancak bu penceredeki kullanıcı, "Kullanıcı tanımlı" radyo düğmesini seçerek panelin görünümünü de tatmin olacağı şekilde tanımlayabilir.

    "Hızlı Görünüm"- paneli, bitişik panelde seçilen dosyaların otomatik görüntülenme moduna geçirir. Odak otomatik olarak karşı panele geçer.

    "Bilgi"- bitişik panelde vurgulanan dosya hakkında konum, erişim hakları ve sahip gibi bilgileri görüntülemek için paneli değiştirir, dosya sistemi ve bulunduğu cihaz, bu dosyayla ilişkili sabit bağlantıların sayısı ve ayrıca dosyanın bulunduğu cihaz hakkındaki bilgiler.

    "Ağaç"- çevirir gece yarısı komutanı OC Windows'tan Explorer moduna benzer bir moda. Komutun uygulandığı panelde "Ağaç", oklar kullanılarak gezinilebilen bir dizin ağacı oluşturulur imleç kontrolü, anahtarlar PageUp, PageDown, Ana Sayfa, Son. Bir sonraki panel, ağaçta vurgulanan dizinin içeriğini görüntüler.

    "Sıralama düzeni"- dosya ve dizinlerin listede sıralanacağı ad, uzantı, düzenleme zamanı, erişim zamanı, özellik değiştirme zamanı, boyut, düğüm (dosyanın bulunduğu yer) gibi bir özniteliği seçebileceğiniz bir iletişim kutusu açar ). Ayrıca dosyaları sıralanmamış bırakabilir, büyük/küçük harfe duyarlı sıralayabilir veya ters sırada sıralayabilirsiniz.

    "Filtre"- iletişim kutusuna girilen bir normal ifadeyi kullanarak panelde görüntülenecek dosya adlarını seçmenize olanak tanır.

    "FTP bağlantısı"- bu komutu kullanarak, protokolü kullanarak uzak (hatta yerel) bir bilgisayarla bağlantı kurabilirsiniz. ftp. Yalnızca uzak sunucunun adresi girilirse, o zaman gece yarısı komutanı anonim bir bağlantı kurmaya çalışacak. Düğümün belirtildiği tam satır aşağıdaki gibidir:

    ftp:username:password@server_address:port/directory_on_server

    Bağlantı kurulduktan sonra, uzak dosya sistemi yerel bir FS ile çalışmaya benzer şekilde ilerler.

    "Kabuk bağlantısı"- protokole göre bir ağ bağlantısı açmanıza izin verir BALIK (SHell üzerinden dosya aktarımı– kabuk yoluyla dosya aktarımı). BALIK protokolleri kullanır RSH (Uzak Kabuk)– uzak kabuk) veya SSH (Güvenli Kabuk)- korumalı kabuk, analog RSH, ancak iletilen verilerin şifrelenmesi desteği ile). Kullanıcının uzak ana bilgisayarı belirtebileceği tam dize şöyledir:

    sh:username@server_address:options/server_dir

    Parametre Kullanıcı adı, seçenekler ve dizin_on_server gerekli değil. Eğer Kullanıcı adı belirtilmemişse, o zaman gece yarısı komutanı yerel makinede kullanılan kullanıcı adı ile uzak sistemde oturum açmaya çalışacaktır.

    "Tekrar ziyaret et"- klavye kısayollarına benzer + - Geçerli paneldeki dosya ve dizin listesinin diskten veya ağ üzerinden yeniden okunarak güncellenmesini sağlar.

    "Dosya"- öğeleri dosya ve dizinleri işlemek için temel işlevleri sağlayan menü bölümü, örneğin:

    "Kullanıcı menüsü"- kullanıcının kendisi tarafından ayarlanan menüyü aramanıza izin verir. Anahtar tarafından da çağrılır .

    "Dosyayı görüntüle"- basıldığında gerçekleştirilen işlevin analogu . Vurgulanan dosyayı görüntülemenizi (veya bir dizin girmenizi) sağlar. Metin formatları, arşivler, Winword DOC, Linux yürütülebilir dosyaları vb. gibi birçok formatı destekler.

    "Dosyayı görüntüle..."- önceki paragrafla aynı, ancak vurgulanan dosyayı değil, iletişim kutusuna adı ve yolu girilecek olan dosyayı etkiler.

    "Ekip Görünümü"- bir komutu yürütmenizi ve görüntülemenizi sağlar standart çıkış dosya görüntüleme modunda.

    "Düzenleme"- dosyayı düzenlemek için açar. Basit satır içi Metin düzeltici yapılandırma dosyalarını, program kaynak metinlerini vb. düzenlemek için yeterli sayıda yerleşik işleve sahiptir ve yerleşik otomatik sözdizimi vurgulama düzenlemeyi daha rahat ve düzenlenebilir metinleri daha okunabilir hale getirir.

    "Kopyala"- bir dosyayı aktif panelden pasif panele kopyalar. tarafından çağrılan bir işlevin bir analogu . Varsayılan olarak, etkin panelde vurgulanan dosya (veya dosya grubu) kopyalanmış olarak kabul edilir ve hedef, pasif panelde açılan dizindir. Bu komut çağrıldıktan sonra açılan iletişim kutusundaki alanların değerleri düzeltilerek bu değiştirilebilir.

    "İzinler"- bir iletişim kutusunda bir dosyanın (veya bir dosya grubunun) izinlerini değiştirmenize olanak verir.

    "Sembolik bağlantı"- sembolik bir bağlantı oluşturur. Varsayılan olarak, aktif panelde vurgulanan dosya adreslenebilir olarak alınır ve oluşturulan bağlantı aynı ada sahip olur ve pasif panelde açılan dizinde bulunur. Kullanıcı bunu açılan iletişim kutusunda değiştirebilir.

    "Sahip/Grup"- bir dosyanın/dizinin ait olduğu sahibi ve/veya grubu değiştirir.

    "İzinler (Gelişmiş)"- aynı anda dosyaya ve sahibine ve / veya grubuna erişim haklarını değiştirmenize olanak tanır. İzinler, sahip, grup ve tüm kullanıcılar için üç rwx dizisi olarak temsil edilir.

    "Yeniden isimlendirmek"- yeniden adlandırmanızı/taşımanızı sağlar. tarafından çağrılan bir işlevin bir analogu . Varsayılan olarak, etkin panelde vurgulanan dosyanın (veya dosya grubunun) taşındığı/yeniden adlandırıldığı kabul edilir ve hedef, pasif panelde açılan dizindir. Bu komut çağrıldıktan sonra açılan iletişim kutusundaki alanların değerleri düzeltilerek bu değiştirilebilir.

    "Dizin oluştur"- bir dizin oluşturur. tarafından çağrılan bir işlevin bir analogu . Varsayılan olarak dizin, etkin panelde açılan dizinde oluşturulur. Bu, açılan iletişim kutusunda oluşturulacak dizinin tam yolu belirtilerek değiştirilebilir.

    "Silmek"- bir dosyayı/dosya/dizin grubunu siler. tarafından çağrılan bir işlevin bir analogu .

    "Dizin Değiştir"- geçerli dizini değiştirir. Bash kabuğundaki cd komutuna benzer. Diyalog kutusuna gerekli dizin girilir.

    "Grubu işaretle"- Aktif panelde açılan dizinde bir grup dosyayı maske ile işaretler. ile çağrılan bir fonksiyonun bir analogu <+> isteğe bağlı klavyede.