Komut satırı sihirbazı nasıl olunur

Muhtemelen hiç almadığınız en yararlı bilgisayar bilimi dersi

Şununla oluşturulan resim: Kararlı Difüzyon

OKariyerim boyunca sürekli olarak gözlemlediğim şey, en üretken veri bilimcileri ve mühendislerinin genellikle ortak bir noktasının olduğudur: Onlar komut satırı sihirbazları. Bilgisayarlarının dosya sisteminde gezinebilir, günlük dosyalarındaki kalıpları arayabilir ve işleri, kaynak kodunu ve sürüm kontrolünü yönetebilir; bunların tümünü, fare ve grafiksel kullanıcı arayüzleriyle yavaş gezinmeye ihtiyaç duymadan komut satırından gerçekleştirebilirler.

Ancak bu komut satırı 'sihirbazlığı', kabuk araçlarına aşina olmayan birine görünebileceği gibi, genellikle standart bilgisayar bilimi müfredatının bir parçası değildir. Bir MIT kursu komut satırınızda ustalaşmanın etrafında uygun bir şekilde "adlandırılmıştır"Bilgisayar Bilimleri Eğitiminizin Eksik Dönemi anlayışının sonucu olarak, buzdolabında iki üç günden fazla durmayan küçük şişeler elinizin altında bulunur.

Bu yazı benim kişisel, 10 derslik 'komut satırı sihirbazlığı 101' sınıfımdır ve komut satırıyla daha fazla, grafiksel kullanıcı arayüzleriyle daha az çalışmak isteyen okuyucuları hedef alır. Kabuk ve yol değişkeni, takma adlar, dosya izinleri, akış ve yönlendirme, verimli iş yönetimi, tmux, ssh, git ve vim ile ilgili temel bilgileri ele alacağız.

Başlayalım. CLW 101'e hoş geldiniz.

1. Deniz kabuğu

Terminalinizi açtığınızda, bir şeye bakıyorsunuz. kabukbash (yeniden taşınan kabuk) veya ZSH (z-kabuk) gibi. Kabuk, dosya sistemi gezinmesine ve veri manipülasyonuna izin veren belirli standart programlara erişimi olan eksiksiz bir programlama dilidir. Hangi kabuğu çalıştırdığınızı yazarak öğrenebilirsiniz:

echo $ SHELL

Bash'ta, her yeni kabuk başlattığınızda, kabuk, içinde belirtilen bir dizi komutu yükler. .bashrc Genellikle ana dizininizde bulunan dosya (Mac kullanıyorsanız genellikle bir .bash_profile bunun yerine dosya). Bu dosyada, yol değişkeniniz veya takma adlarınız gibi yararlı şeyleri belirtebilirsiniz (hangileri hakkında daha fazla bilgi aşağıdadır).

2. Yol değişkeni

Belirli programların adını kabuğunuza yazdığınızda, örneğin python, catya da ls, kabuk bu programı nereden alacağını nasıl biliyor? amacı bu yol değişkeni. Bu değişken, kabuğun programları aradığı tüm yolların iki nokta üst üste ile ayrılmış bir listesini saklar. Yol değişkeninizi şunu yazarak inceleyebilirsiniz:

yankı $ YOL

Bu komutla yol değişkeninize ek dizinler ekleyebilirsiniz:

PATH'i dışa aktar = "my_new_path: $PATH"

Bu komutu bashrc dosyanıza eklemek en iyisidir, böylece yeni bir kabuk başlattığınızda ek dizininiz her zaman yolunuzda olur.

3. takma adlar

Takma adlar Uzun komutları tekrar tekrar yazmaktan kaçınmak için tanımlayabileceğiniz özel komutlardır, örneğin:

takma ad ll = "ls -lah"
takma ad gs = "git durumu"
takma ad gp = "git push orijin yöneticisi"

Takma adlar, geliştirme iş akışınız için koruma önlemleri oluşturmak amacıyla da kullanılabilir. Örneğin, tanımlayarak

takma ad mv="mv -i"

Taşımak üzere olduğunuz dosya yeni dizinde zaten mevcutsa terminaliniz sizi uyaracaktır, böylece yanlışlıkla üzerine yazmak istemediğiniz dosyaların üzerine yazmazsınız.

Bu takma adları bashrc dosyanıza eklediğinizde, yeni bir kabuk başlattığınızda bunlar her zaman kullanılabilir durumdadır.

4. Dosya izinleri ve sudo

Birden fazla kullanıcı bir makineyi paylaştığında, dosya izinleri Hangi kullanıcının hangi veriler üzerinde hangi işlemleri gerçekleştirebileceğini belirler. Yazarken ls -l, geçerli dizininizdeki dosyaları izinleriyle birlikte aşağıdaki biçimde göreceksiniz:

-rwxrwxrwx

Burada,

  • rwx sırasıyla okuma, yazma ve yürütme haklarını temsil eder
  • 3 rwx bloklar (1) kullanıcı, (2) kullanıcı grubu ve (3) diğer herkes içindir. Verilen örnekte, bu varlıkların 3'ünün de okuma, yazma ve yürütme izinleri vardır.
  • tire bunun bir dosya olduğunu gösterir. Çizgi yerine bir de görebilirsiniz. d dizin için veya l sembolik bir bağlantı için.

Dosya izinlerini şununla düzenleyebilirsiniz: chmod. Örneğin, bir dosyayı kendiniz için yürütülebilir hale getirmek istiyorsanız şunu yazarsınız:

chmod u+x my_program.py

👉Eğer bir dosya çalıştırılabilirse, kabuk onu nasıl çalıştıracağını nasıl biliyor? Bu, dosyanın ilk satırında bir 'hashbang' ile belirtilir, örneğin #!/bin/bash bir bash betiği için veya #!/bin/python bir python betiği için.

Son olarak, tüm dosyalara ilişkin tüm izinlere sahip olan özel bir 'süper kullanıcı' vardır. Süper kullanıcı yazarken herhangi bir komutu çalıştırabilirsiniz. sudo bu komutun önünde. Ayrıca aşağıdaki komutu çalıştırarak bağımsız bir Sudo kabuğu başlatabilirsiniz.

sudo su

⚠️ Sudo'yu dikkatli kullanın. Sudo ile bilgisayarınızın donanımını kontrol eden kodda değişiklik yapabilirsiniz ve yapılacak bir hata makinenizi kullanılamaz hale getirebilir. Unutmayın, büyük güç, büyük sorumluluk getirir.

5. Akış ve borulama

The akış Şebeke > çıktıyı bir programdan bir dosyaya yönlendirir. >> aynı şeyi yapar, ancak zaten varsa, üzerine yazmak yerine mevcut bir dosyaya ekleniyor. Bu, aşağıdaki gibi kendi programlarınızı günlüğe kaydetmek için kullanışlıdır:

python my_program.py > günlük dosyası

Bir diğer faydalı kavram ise borular: x | y x programını çalıştırır ve çıktıyı x'ten y programına yönlendirir. Örneğin:

  • cat log.txt | tail -n5 : log.txt dosyasındaki son 5 satırı yazdırır
  • cat log.txt | head -n5 : log.txt dosyasındaki ilk 5 satırı yazdırır
  • cat -b log.txt | grep error : log.txt dosyasında 'hata' dizesini içeren tüm satırları satır numarasıyla (-b) birlikte gösterir

6. İşleri yönetmek

Komut satırınızdan bir program çalıştırıyorsanız (örn. python run.py), program varsayılan olarak ön planve program bitene kadar başka bir şey yapmanızı engeller. Program ön planda çalışırken şunları yapabilirsiniz:

  • programa bir SIGINT (sinyal kesme) sinyali gönderecek ve makineye programı hemen kesmesi talimatını verecek olan control+C yazın (programın bu sinyalleri dahili olarak işlemesi için bir yol olmadığı sürece).
  • programı duraklatacak olan control+Z yazın. Duraklattıktan sonra program ön plana getirilerek devam ettirilebilir (fg) veya arka plana göndererek (bg).

Komutunuzu hemen arka planda başlatmak için, & Şebeke:

python run.py &

👉Arka planda hangi programların çalıştığını nasıl anlarsınız? Komutu kullanın jobs. Bu, çalışan işlerin adlarının yanı sıra işlem kimliklerini (PID'ler) görüntüler.

Son olarak,kill arka planda çalışan programlara sinyal gönderen bir programdır. Örneğin,

  • kill -STOP %1 1. programı duraklatarak bir STOP sinyali gönderir.
  • kill -KILL %1 KILL sinyali göndererek program 1'i kalıcı olarak sonlandırır.
Kişisel Macbook'umun tmux terminalindeki dört terminal bölmesi (yazarın görüntüsü).

7. tmux

tmux ("terminal çoklayıcı") kolayca yeni terminaller oluşturmanıza ve bunlar arasında gezinmenize olanak tanır. Bu son derece yararlı olabilir; örneğin dosya sisteminizde gezinmek için bir terminali, işleri yürütmek için ise başka bir terminali kullanabilirsiniz. Hatta tmux ile bunların her ikisine de yan yana sahip olabilirsiniz.

👉 Tmux'u öğrenmenin bir başka nedeni de uzaktan geliştirmedir: Uzaktaki bir makineden (isteyerek veya kazara) çıkış yaptığınızda, kabuğunuzun içinde aktif olarak çalışan tüm programlar otomatik olarak sonlandırılır. Öte yandan, programlarınızı bir tmux kabuğu içinde çalıştırıyorsanız, tmux penceresini kolayca çıkarabilir, oturumu kapatabilir, bilgisayarınızı kapatabilir ve daha sonra sanki hiç çıkış yapmamışsınız gibi o kabuğa geri dönebilirsiniz.

Tmux'u kullanmaya başlamanıza yardımcı olacak bazı temel komutlar şunlardır:

  • tmux new -s run 'run' adında yeni bir terminal oturumu oluşturur
  • control-BD: bu pencereyi ayır
  • tmux a : en son pencereye ekle
  • tmux a -t run : 'çalıştır' adı verilen pencereye ekleyin
  • control-B“ : aşağıya başka bir terminal bölmesi ekleyin
  • control-B% : sağa başka bir terminal bölmesi ekleyin
  • control-B➡️ : terminal bölmesinde sağa doğru hareket eder (sola, yukarıya, aşağıya benzer)

8. SSH ve anahtar çiftleri

ssh uzak makinelere giriş yapmak için bir programdır. Uzak makinelerde oturum açmak için, bir kullanıcı adı ve şifre sağlamanız veya bir genel anahtar (her iki makinenin de erişebildiği) ve bir özel anahtardan (yalnızca kendi makinenizin erişebildiği) oluşan bir anahtar çifti kullanmanız gerekir. erişimi vardır).

ssh-keygen böyle bir anahtar çifti oluşturmaya yönelik bir programdır. Eğer koşarsan ssh-keygenvarsayılan olarak adında bir ortak anahtar oluşturacaktır. id_rsa.pub ve adlı özel bir anahtar id_rsave her ikisini de cihazınıza yerleştirin ~/.ssh dizin. Genel anahtarı uzaktaki makineye eklemeniz gerekecek; şimdiye kadar bildiğiniz gibi, bunları birbirine bağlayarak yapabilirsiniz. cat, sshve bir akış operatörü:

kedi .ssh/id_rsa.pub | ssh user@remote 'kedi >> ~/.ssh/yetkili_anahtarlar'

Artık yalnızca özel anahtarınızı sağlayarak ssh'yi uzaktan kumandada kullanabileceksiniz:

ssh uzaktan -i ~/.ssh/id_rsa

Daha da iyi bir uygulama, bir dosya oluşturmaktır ~/.ssh/config tüm ssh kimlik doğrulama yapılandırmalarınızı içerir. Örneğin, eğer config dosya aşağıdaki gibidir:

Ana bilgisayar geliştiricisi
Ana BilgisayarAdı uzak
KimlikDosyası ~/.ssh/id_rsa

Daha sonra basitçe yazarak uzaktan oturum açabilirsiniz. ssh dev.

9. git

git kodunuzun sürüm oluşturma geçmişinde ve dallarında komut satırından verimli bir şekilde gezinmenize olanak tanıyan bir sürüm kontrol sistemidir.

👉 Şuna dikkat edin git GitHub ile aynı değil: git GitHub, kodunuzu uzaktan barındırabileceğiniz bir yerdir; yerel dizüstü bilgisayarınızdaki kodunuzun sürümlerini yönetebilen bağımsız bir programdır.

İşte bazı temel git komutları:

  • git add : bir sonraki işleme hangi dosyaları dahil etmek istediğinizi belirtir
  • git commit -m 'my commit message' : kod değişikliğini gerçekleştirir
  • git checkout -b dev : 'dev' adında yeni bir dal oluşturur ve o dalı kontrol eder
  • git merge dev : dev'i geçerli dalla birleştirir. Bu, birleştirme çakışmaları yaratıyorsa, bu çakışmaları manuel olarak düzeltmeniz ve ardından çalıştırmanız gerekir. git add file_that_changed; git merge --continue
  • git stash : tüm değişiklikleri geri alır ve git stash pop onları geri getirir. Bu, ana dalda değişiklik yaptıysanız ve daha sonra bu değişikliklerin gerçekten ayrı bir dal olmasını istediğinize karar verdiyseniz kullanışlıdır.
  • git reset --hard : tüm değişiklikleri kalıcı olarak geri alır

Uzak bir ana bilgisayarla (örn. GitHub) ilgilenmek için bazı temel git komutları şunlardır:

  • git clone : kod deposunun bir kopyasını yerel makinenize kopyalar
  • git push origin master : değişiklikleri uzaktaki ana bilgisayara aktarır (örn. GitHub)
  • git pull : Uzaktan kumandadan en son sürümü çeker. (Bu koşmakla aynıdır git fetch; git merge;).

👉 Gibi bir komutu çalıştırabilmeden önce git push origin masterssh anahtar çifti ile kimlik doğrulaması yapmanız gerekecektir (bkz. Ders 8). GitHub kullanıyorsanız ortak anahtarı profil ayarlarınıza yapıştırmanız yeterlidir.

10. vim

Vim, güçlü bir komut satırı tabanlı metin düzenleyicisidir. Vim'deki en azından temel komutları öğrenmek iyi bir fikirdir:

  • arada bir uzaktaki bir makineye giriş yapıp orada kod değişikliği yapmanız gerekebilir. vim standart bir programdır ve bu nedenle genellikle üzerinde çalıştığınız herhangi bir makinede bulunur.
  • koşarken git commit, git varsayılan olarak bir taahhüt mesajı yazmak için vim'i açar. Yani en azından bir dosyayı nasıl yazacağınızı, kaydedeceğinizi ve kapatacağınızı bilmek isteyeceksiniz.

Vim hakkında anlaşılması gereken en önemli şey farklı çalışma modlarının olmasıdır. Vim'i başlattığınızda içeridesiniz navigasyon moduDosyada gezinmek için kullandığınız . Tip i başlatmak için düzenleme modu, dosyada değişiklik yapabileceğiniz yer. Yaz Esc Düzenleme modundan çıkmak ve navigasyon moduna geri dönmek için tuşuna basın.

Gezinme modunun yararlı yanı, klavyenizle dosyada hızlı bir şekilde gezinebilmeniz ve dosyayı değiştirebilmenizdir, örneğin:

  • x bir karakteri siler
  • dd bir satırın tamamını siler
  • b (geri) önceki kelimeye gider, n (sonraki) sonraki kelimeye gider
  • :wq değişikliklerinizi kaydeder ve dosyayı kapatır
  • :q! değişikliklerinizi yok sayar ve dosyayı kapatır

Daha fazla (çok daha fazlası!) vim klavye kısayolları için şuraya göz atın: bu vim hile sayfası.

Fotoğraf Vasili Koloda on Unsplash

Nihai düşünceler

Tebrikler, 'komut satırı sihirbazlığı 101'i tamamladınız. Ancak burada sadece yüzeyini çizdik. İlham almak için aşağıdaki sorunu göz önünde bulundurun:

“Bir metin dosyası ve bir tamsayı verildiğinde k, yazdır kDosyadaki en yaygın kelimeler (ve bunların oluşum sayısı) azalan sıklıkta."

Bir veri bilimci olarak ilk dürtüm bir jüpyter not defteri başlatmak, verileri pandalara yüklemek ve ardından pandas gibi bir işlevi kullanmak olabilir. agg. Ancak deneyimli bir komut satırı sihirbazı için, bu tek satırlık bir yazı:

tr -cs A-Za-z '' | tr A'dan Az'a | sıralama | benzersiz -c | sırala -rn | sed ${1}q

Bu, Stabil Difüzyon'un bu makalenin başında gösterilen hayal gücünden çok da farklı görünmüyor. Aslında büyücülük.

Komut satırı sihirbazı nasıl olunur Kaynak https://towardsdatascience.com/how-to-become-a-command-line-wizard-5d78d75fbf0c?source=rss—-7f60cf5620c9—4 adresinden https://towardsdatascience aracılığıyla yeniden yayınlandı. com/feed

<!–

->

Zaman Damgası:

Den fazla Blockchain Danışmanları