Muhtemelen hiç almadığınız en yararlı bilgisayar bilimi dersi
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
, cat
ya 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 veyal
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ırcat log.txt | head -n5
: log.txt dosyasındaki ilk 5 satırı yazdırırcat -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.
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 ekletmux 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-keygen
varsayılan olarak adında bir ortak anahtar oluşturacaktır. id_rsa.pub
ve adlı özel bir anahtar id_rsa
ve 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
, ssh
ve 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 belirtirgit commit -m 'my commit message'
: kod değişikliğini gerçekleştirirgit checkout -b dev
: 'dev' adında yeni bir dal oluşturur ve o dalı kontrol edergit 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 vegit 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 kopyalargit 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ırgit fetch; git merge;
).
👉 Gibi bir komutu çalıştırabilmeden önce
git push origin master
ssh 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 silerdd
bir satırın tamamını silerb
(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ı.
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ırk
Dosyadaki 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
<!–
->
- Bitcoin
- bizbuildermike
- blockchain
- blockchain uyumluluğu
- blockchain konferansı
- Blockchain Danışmanları
- coinbase
- zeka
- Fikir birliği
- kripto konferansı
- kripto madenciliği
- cryptocurrency
- Merkezi olmayan
- Defi
- Dijital Varlıklar
- Ethereum
- makine öğrenme
- değiştirilemez jeton
- Platon
- plato yapay zekası
- Plato Veri Zekası
- Platoblok zinciri
- PlatoVeri
- plato oyunu
- Çokgen
- hissesini kanıtı
- W3
- zefirnet