Komut Satırı Öğrenci Materyali

Komut satırı, GUI olmayan bir bilgisayarı kontrol etmenin bir yoludur. Bu birimde, bilgisayarımızla etkileşim kurmak için gereken temel komutları öğreneceğiz.

Temel çıkarımlar

  • Öğrenciler komutlarıyla bilgisayarlarında hareket eder.
  • Öğrenciler dosya ve klasörleri oluşturur, taşır, kopyalar ve siler.

Komut Satırı Nedir?

Çoğu kullanıcı, bilgisayarla etkileşim kurmak için Grafik Kullanıcı Arayüzü (GUI) kullanır. GUI'ler genellikle pencereleri simge, düğme, kaydırma çubuğu vb. ile değiştirmek için bir fare veya dokunmadan yararlanır.

Komut satırı, bilgisayara alternatif bir görünümdür. Bazen "kabuk", "terminal", "bash" veya "metin arayüzü" olarak anılan komut satırı:

  • Kullanıcının komut yazdığı bir bilgisayar programıyla etkileşim kurma yöntemi. Örneğin:
open README.txt
  • Bilgisayarınızda fare olmadan gezinmenin ve çalıştırmanın bir yolu.
  • Dosya ve dizinlerinizi oluşturma, okuma, güncelleme, üzerinde çalışma ve silme konusunda grafik olmayan bir yöntem. Ör.:
mv README.txt readme.txt

GUI ve Komut Satırı aynı şeye bakıyor! Bunlar, bilgisayarla etkileşim kurmanın farklı yollarıdır.

Komut Satırını Ne Zaman Kullanıyoruz?

Komut satırı arayüzleri genellikle geliştiriciler tarafından tercih edilir:

  • Bir programı veya işletim sistemini kontrol etmek için daha kısa yöntemler sunarlar. Bunu neden yapmalısınız? Her şey aynı pencerede gerçekleştiğinden ve alıştırmalar sayesinde fareyi bulup yönetmekten daha az çaba harcarsınız.
  • Bir komutu kontrol etmek için seçenekleri kolayca gösteriyorlar. Bunu neden yapmalısınız? GUI'lerdeki menüler çok az sayıda seçenek sunar. Komut satırında yüzlerce komut vardır ve bir komuta eklenen birkaç karakter komutun birçok farklı şey yapmasını sağlayabilir. Ör.
  • ls temel liste dosyası
  • ls -a Normalde gizli dosyalar da dahil olmak üzere tüm dosyaları listeleme
  • ls -l Uzun liste, her dosya hakkında bilgi gösterir
  • ls -R Yineleniyor, dizinlerin içeriğini listeleyin
  • ls -la Tüm dosyaları uzun listele
  • Çok sayıda dosya üzerinde aynı anda karmaşık şekillerde işlem yapmayı kolaylaştırırlar.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • Bunlar, işletim sistemini (kabuk programları) programlamak için bir yöntem sunar. Örneğin, yukarıdaki örnek .png ile biten dosya adlarına sahip resimleri değiştirmek üzere tasarlanmış çok basit bir kabuk programıdır.

Komut Satırı Etkin

Komut Satırı Komutunun Parçaları

Tüm komutların üç bölümü vardır:

  • Komut (veya yardımcı program) her zaman önce gelir.
  • Kullandığınız yardımcı programa bağlı olarak flag'ler isteğe bağlıdır. İşaretler her zaman - (eksi) işaretiyle başlar.
  • Bağımsız değişkenler, komutun uygulanması gereken öğeler veya gerekli bilgilerdir. Genellikle dosya adları.

Çerçeveleme

Bağlam ve amaç

Komut satırı, fare veya GUI (Grafik Kullanıcı Arayüzü) olmadan bir bilgisayarı kontrol etmenin bir yoludur. Apple Bilgisayar, tıklayabileceğiniz simgeler ve klasörlerle makineler oluşturmaya başlamadan önce, bilgisayarınızla etkileşimde bulunmanın tek yolu komut satırını kullanmaktı.

Geliştirici olarak GUI'den çok daha hızlı ve güçlü olduğu için komut satırını kullanıyoruz. Zamanınızı boşa harcamak zorunda değilsiniz. Komut satırı, bilgisayarınızla hemen hemen her etkileşimi gerçekleştirmenize olanak tanır.

Terminal çok daha basit bir arayüz olduğundan, bir bilgisayara ağ bağlantısı üzerinden uzaktan bağlanmanız gerektiğinde GUI'ye göre çok büyük bir avantaj sağlar. Bu, örneğin seyahat eden kullanıcıların çok sık yaptığı bir işlemdir.

Bu kursta, dosya ve dizinler oluşturarak, klasörleri taşıyarak, dizinleri değiştirerek ve bir klasörün içeriğini listeleyerek bilgisayarımızla etkileşimde bulunacağımız temel komutları öğreneceğiz.

Öğrenme hedefleri

Öğrenciler şunları yapabilecek:

  • Dosya ve klasörlerde gezinmek için Terminal'i kullanın
  • Bir klasörün içeriğini listeleme
  • Komut satırında dosya ve klasör oluşturma
  • Dosya ve klasörleri taşıma
  • Dosya ve klasör kopyalama
  • Dosya ve klasör silme

Başlayın

Terminale Erişme

Bölüm çerçeveleme ve amacı

Terminal, işletim sistemine bir Komut Satırı Arayüzü (CLI) sağlar. Bu bilgisayarda bilgisayarınıza doğrudan, metin tabanlı talimatlar verebilirsiniz.

Bunu yapmak için kullandığın sisteme göre terminalini başlatmamız gerekiyor.

Terminal başlatıldığında bilgisayarınızın ana dizininde (bilgisayarınızın adı ne olursa olsun) başlar. Ana dizininiz tilde ~ ile gösterilir.

Terminal içindeki dünyamızdan bahsederken Dizinler Klasörler ile aynıdır (bazen bunlara Dizinler denir).

Dizinler Değiştiriliyor

Bölüm çerçeveleme ve amacı

Terminal'deki bilgisayarıyla konuşup ne yapmak istediğimizi söyleyebilmemiz için ortak bir dil konuşmamız gerekiyor. Komut Satırı, bash komut dosyası dilinde yazılmış komutları anlar. Komutlar, İngilizce kelimelerin kısaltması veya kısaltmasıdır.

Terminale giderken bulunduğunuz yeri bilmek önemlidir (bu da doğrudan gerçek hayatınız anlamına gelir. Bir yere gitmek istiyorsanız öncelikle mevcut konumunuzu bilmeniz gerekir).

# See your current location - abbreviation for 'print working directory'
pwd

Kullanılabilir dosyaları ve dizinleri listeleme

Çalışma dizininizin içinde, erişebileceğiniz birkaç dosya olabilir. Normalde, hangi öğelerin kullanılabilir olduğunu bize bildirmek için simgeler gibi görsel işaretlere güveniriz, ancak dosyaların ve klasörlerin nerede bulunduğunu tahmin etmemiz halinde bilgisayarda gezinmemiz zor olurdu. Komut satırında, belirli bir çalışma dizininden / belirli bir konumdan nelere erişebileceğimizi listelemek için belirli bir komut kullanırız.

Mevcut dizinimizde hangi dosyaların veya klasörlerin bulunduğunu görmek için, ls komutunu (liste ifadesinin kısaltması) kullanarak içeriğin liste görünümünü inceleyebilirsiniz.

# See files and folders in current location - abbreviation for 'list'
ls

Çalışma dizinini değiştir

Listede olmayan bir dosyaya veya dizine erişmeniz gerekiyorsa söz konusu dizine daha kolay şekilde erişebilmek için çalışma dizininizi değiştirebilirsiniz.

Komut Satırına sizi yeni bir dizine (klasör olarak da bilinir) taşımasını bildiren söz dizimi, yeni klasöre giden yolun ardından cd tarafından (aynı satırda) uygulanır.

İçinde bulunduğunuz dizinin içinde bulunan bir dizine giderseniz (yani, çalışma dizininizin alt klasörü) cd komutunu ve ardından klasörün adını kullanın.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

Ana sayfa ~ dizininden başlayarak da gezinebilirsiniz.

# Add a `~/` to begin from the home directory.
cd ~/Downloads

Dizinleri değiştirdiyseniz ancak ana dizine geri dönmeniz gerekiyorsa, ~ kullanarak doğrudan ana sayfaya geri dönün veya bir düzey yukarı gitmek için .. seçeneğini kullanın.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

cd .. Yalnızca bir düzey yukarı (geri) çıktığını unutmayın. Yani dizinleri şimdiye kadar üç kez değiştirdiyseniz (üç düzey aşağıdaysa) cd .. ana sayfasına gitmek için üç kez kullanmanız gerekir, ancak cd ~ yalnızca bir kez kullanmanız gerekir.

Mini zorluklar

  • Mevcut dizininizdeki öğeleri görmek için ls politikasını kullanın.
  • Ana dizininize geri dönün ve ana klasörünüzün içeriğini görmek için ls hizmetini kullanın.
  • Ana dizindeki klasörlerden birinin adını seçip bu yeni klasöre gidin.
  • İçinde ne olduğunu görmek için liste komutunu kullanın.

İpucu: tab ile otomatik tamamlama

cd komutuyla dizinleri değiştirirken tek bir yazım hatası, komutun doğru şekilde yürütülmesini önler. Ancak tab tuşunu kullandığınızda, mevcut dizininizin içindeki mevcut tüm dizinlerin adıyla otomatik olarak tamamlanır. Dolayısıyla, cd Documents yazmak yerine yalnızca cd Do yazıp tab tuşuna bastığınızda terminal, cd Documents/ komutunu sizin için otomatik olarak tamamlar (sondaki / isteğe bağlıdır ancak hedefin bir dizin olduğunu belirtir).

Bu otomatik tamamlama, yalnızca işe yararken zaman kazanmaz, çalışmadığında da değerli bilgiler sağlar. Sekme düğmesi otomatik olarak tamamlanmıyorsa muhtemelen üç yaygın sorundan biri vardır:

  1. Gitmek istediğiniz dizine mevcut çalışma dizininizden erişilemiyor.
  2. Benzer başlangıç adlarına sahip iki dizin var (Documents ve Downloads gibi) ve otomatik tamamlamanın hangisini istediğinizi öğrenmesi için yeterli bilgi sağlamadınız. Yazdıklarınızla eşleşebilecek dizinlerin listesini görmek için tab tuşuna tekrar basın. Ardından, biraz daha yazın (yeterlilik olması için yalnızca bir kez yeterli) ve tab tuşuna yeniden basın.
  3. Kelimenin ilk yarısında zaten bir yazım hatası yaptınız.

Komutlarınızı otomatik olarak tamamlama alışkanlığı kazandıkça, komutlarınızın çalışmadığı durumlarda rahatsız edici durumlara karşı hazırlıklı olma olasılığınız artar.

Ebeveyn ve Çocuk Dizinleri

Dizinler ve dosyalar birbirleriyle alt ve ebeveyn ilişkilerine sahip olabilir. directory_b directory_a içeriğinin içindeyse directory_b, directory_a öğesinin alt öğesi olarak belirtilir. directory_a, daha sonra directory_b adlı kullanıcının üst öğesi olarak bilinir. Üçüncü öğe (my_file) directory_b içindeyse bu öğe, directory_b alt öğesi ve büyük ton olarak directory_a kabul edilir.

Bu ilişkiler genellikle forumlarda aşağıdaki gibi bir metin şemasıyla gösterilir:

directory_a/
  directory_b/
    my_file

Dizin adlarının / ile bittiğine, dosya adlarının ise bitmediğine dikkat edin. Bu hiyerarşik kuruluş, genellikle bir dosya sisteminin ağaç yapısı olarak adlandırılır.

Kardeşleri

Aynı düzeyde birden fazla dosya veya klasör varsa bunlar kardeş olarak bilinir. Ör: directory_a içinde file_b ve file_c kardeşler.

Bu metin şeması aşağıdaki gibi olacaktır:

directory_a/
  file_b
  file_c

file_b ve file_c kardeş oldukları için girintileri aynı olmalıdır.

Dosya Yolları

Aşağıda, hem üst-alt öğe hem de kardeş ilişkiler içeren daha karmaşık bir metin şeması.

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

Bu örnekte, bir dizin adı olan new_york_city/'de, oraya nasıl ulaşılacağını açıklayan bir yol da bulunmaktadır: ~/north_america/united_states/new_york/new_york_city/.

Dizini new_york_city/, olarak değiştirmek için ad kullanarak adımlarda gezinebilir veya yolu kullanarak komutun sonuna kadar yolu tek bir komutla arayabilirsiniz.

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

Gezinme Komutlarının Özeti

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

Mini zorluklar

  • Bulunduğunuz klasörü öğrenmek için pwd ürününü kullanın.
  • Farklı bir dizine geçin ve yeni konumunuzu onaylayın.
  • Tekrar deneyin ve farklı bir klasöre gidin. Konumunuzu ve bu dizindeki dosyaları görmek için yeni komutlarınızı kullanın.

Dizine Ekleme ve Dizin Oluşturma

Bölüm çerçeveleme ve amacı

Geliştiriciler olarak kod içeren dosyalar oluşturmamız gerekir. Bu dosyaları düzenli tutmak için dosyalarımızı depolayabileceğimiz klasörler / dizinler oluşturmamız gerekir.

Dosya ve klasörlerinizi oluşturmadan önce terminalde konumunuzun farkında olun.

# See your current location.
pwd

Dosya oluşturmak için dosya adını ve ardından touch komutunu kullanın.

# `touch` creates a new file.
touch style.css

Dosya oluştururken türü belirtmek için bir dosya uzantısı ekleyin. Örnek dosya türleri:

  • .js bir JavaScript dosyası olarak oluşturulur
  • .html, HTML dosyası oluşturur
  • .css, CSS dosyası oluşturur
  • .md bir markdown dosyası oluşturur

Dosya adları boşluk içermemelidir.

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

Birden çok dosya oluşturma

Adların her biri arasına boşluk ekleyerek aynı anda birden çok dosya oluşturabilirsiniz.

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Dizin oluşturma

Bir dizin veya klasör oluşturmak için, mkdir komutunu kullanın ('dizini dizin'' anlamına gelen bir kısaltma) ve ardından klasörün adını girin.

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

Birden çok dizin oluşturma

Adların her biri arasına boşluk ekleyerek aynı anda birden çok klasör oluşturabilirsiniz.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

Mini zorluklar

  • Yeni bir dosya oluşturun.
  • Tek bir komutla birkaç dosya oluşturun.
  • Yeni bir dizin oluşturun.
  • Birkaç yeni dizin daha oluşturun. Bunun için yalnızca bir komut kullanmayı deneyin.
  • Dizinlerde gezinme ve dosya ve klasör oluşturma hakkında bildiklerinizi kullanarak dosya ve klasörleri kullanarak masaüstünüzde bir 'family_tree' oluşturun.

Taşınıyor ve kopyalanıyor

Dosyaları Taşıma ve Dizinler

Bölüm çerçeveleme ve amacı

Komut satırında bir dosyayı veya klasörü taşıyabiliriz ancak her zaman üç şey belirtmemiz gerekir:

  1. move (taşıma) ifadesinin kısaltması olan mv komutunu kullanırız.
  2. Taşımak istediğiniz dosyanın veya klasörün adıyla birlikte taşıma komutunu uygulayın.
  3. Taşımak istediğiniz hedefin bulunduğu dosyanın adını takip edin.

Örneğin, aşağıdaki gibi bir dosya yapınız varsa:

my_child_folder/
my_parent_folder/

Gördüğünüz gibi, bu cihaz, ebeveyn ve çocuk olması gerektiğinde kardeş kardeşleri. Şu komutu kullanın:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

Elde edilen yapı aşağıdaki gibi görünecektir.

my_parent_folder/
  my_child_folder/

mv komutunun diğer varyasyonları aşağıda verilmiştir:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

Uyarı: mv, mv old_name new_name söz dizimini kullanarak bir dosyayı yeniden adlandırma komutu da olur. Bu, bir dosyayı mevcut olmayan bir dizine taşıdığınızda veya hedefi yanlış yazarsanız dosyanın yerine taşınmak üzere yeniden adlandırılacağı anlamına gelir.

Mini zorluklar

  1. 5 metin (.txt) dosyası oluşturun.
  2. Yeni bir dizin oluşturun.
  3. Oluşturduğunuz 5 dosyayı klasöre taşıyın.
  4. Bir klasör oluşturun ve bu yeni klasörü başka bir klasörün içine taşıyın.

Dosyaları ve Dizinleri Kopyalama

Bölüm çerçeveleme ve amacı

Web uygulamalarımızı oluştururken bir dosyayı çoğaltmak isteyebiliriz (iki benzer web sayfası oluşturuyorsak, baştan başlamak istemeyebiliriz) ve cp (kopya) komutunun söz dizimi, mv söz dizimine çok benzer.

Dosya kopyalama

Kopyalama komutu üç bölümden oluşur:

  1. cp komutu: kopya için kısaltma
  2. Kopyalanacak dosyanın adı
  3. Kopyanın adı (aynı klasörde kalıyorsa) veya konum ve ad (farklı bir klasöre taşınırsa).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

Kopyanın orijinal ile aynı adı taşımasını istiyorsanız kopyalama konumunu dosya adı olmadan belirtebilirsiniz.

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

Aynı ada sahip çok sayıda dosyanın bulunması kafa karıştırıcı olabilir. Bu nedenle, yalnızca bu yöntemin ihtiyacınız olduğundan eminseniz bu yöntemi kullanın.

Dizin kopyalama

Bir klasörü veya dizini kopyalamak biraz daha karmaşıktır çünkü muhtemelen yalnızca klasörü değil, bunların içindeki her şeyi de kopyalamak istersiniz.

  1. cp -R komutu - kopya yineleme kısaltması: Bu alanı hem boş hem de boş olmayan klasörler için kullanın
  2. Kaynak adı (taşımak istediğimiz klasör veya dosya)
  3. Kopyanın adı (aynı klasörde kalıyorsa) veya konum ve ad (farklı bir klasöre taşınırsa).

Uyarı: Kopyanın adı belirtilirken, dosya veya klasör daha önce oluşturulmadıysa bu kopyayı oluşturduğunuzda oluşturulur. Dosya, kopyalama komutu çalıştırılmadan önce oluşturulduysa önceden dosyada bulunan her şeyin üzerine yazılacağı için dikkatli olun.

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

Not: cp -R öğesinin -R bileşenine işaretleme adı verilir. İşaretler her zaman kısa çizgiyle başlar ve ilgili komutun nasıl yürütüleceğine dair daha ayrıntılı talimatlar vermek için komutlarla birlikte kullanılır.

Mini zorluklar

  1. my_original.txt adlı bir dosya oluşturun
  2. Aynı klasörde yeni bir öğenin adı olan my_original.txt öğesinin bir kopyasını oluşturun.
  3. Yeni bir dizin oluşturun.
  4. Dizinin bir kopyasını oluşturun ancak farklı bir ad verin.
  5. Kopyalanan dosyanızın bir kopyasını oluşturun (2. adımdan) ancak kopyalanan dizine (4. adımdan) yerleştirin.

Dosyaları ve Klasörleri Kaldırma

Bölüm çerçeveleme ve amacı

Komut satırındaki dosya ve klasörleri silebiliriz ancak bu işlem kalıcıdır.

Dosya kaldırma

Bir dosyayı kaldırmak için rm komutunu (remove ifadesinin kısaltması) ve ardından dosyanın adını kullanabiliriz.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

Boş bir dizini kaldırma

Boş dizini kaldırmak için rmdir komutunu (dizini kaldır ifadesinin kısaltması) ve ardından klasörün adını kullanabiliriz.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

Boş olmayan bir dizini kaldırma

Boş olmayan bir klasörü kaldırmak için rm komutunun ardından, bilgisayara klasör içindeki içeriği silmesini söyleyen bir -R işareti (yinelenen kısaltması) yerleştirmemiz gerekir. Kısayol olarak, bazı geliştiriciler -Rf işaretini kullanarak her şeyi zorunlu olarak kaldırır (aksi halde bazı alt dosya veya klasörleri silmeyle ilgili istemler alabilirsiniz).

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

Uyarı: rm komutunun kullanılması geri dönüşüm kutusuna veya e-postanızın silinmiş bölümüne benzer. Bu dosyalar kolayca kurtarılamaz. Dosyaları bu şekilde silerken DİĞER DEĞİLLER.

Mini zorluklar

  1. 4 dosya oluşturun.
  2. İki dosyayı silin.
  3. Klasör oluşturun.
  4. Başka bir klasör oluşturun ve bu klasörün içinde bir dosya oluşturun.
  5. Her iki dizini de silin.

Bu laboratuvara ait kodu, GitHub'dan indirdiğiniz öğrenci veri deposundaki şu klasörde bulabilirsiniz: command-line/labs/around-the-world

Arka plan

Yurtdışı yurtdışınız yurtdışında ve Avrupa'daki seyahatlerinizi planlamaya başladığınız zaman...

Yaklaşan üç aylık ciddi yaşam nedeniyle, her hafta sonu gezisinden en iyi şekilde yararlanmak istersiniz.

Neyse ki sıfırdan başlamadınız ve arkadaşlarınız yurtdışından aldıkları dönemdeki favori etkinliklerinden bazılarını sağladı. Maalesef dosyaların bazıları karıştı...

Merak etmeyin, komut satırının büyüsü sayesinde bunları hemen düzeltebilirsiniz.

Görev

Her şehrin doğru ülkede olduğundan ve her şehir klasöründe doğru anıtların bulunduğundan emin olun. Amsterdam'da Galata Kulesi'ni bulmaya çalışırken dikkatli olun.

Bu konuda GERÇEK olarak hissediyorsanız GUI'nizi gizleyin ve bu meydan okumayı doğrudan komut satırından karşılayın. Bunların tümünü yaparken genel bir klasör içinde kalmalısınız. Bu, klasör ve dosyalara işaret ederken mutlak yollar kullanmak anlamına gelir!

Her şeyin doğru yerde olduğundan emin olduktan sonra, önümüzdeki birkaç ay için komut sırası size gelir. Yeni şehir, ülke ve anıtlar konusunda beyin fırtınası yapın ve bunları görmek için dosya ağacınıza ekleyin.

Tebrikler! Resmi olarak nasıl bilgisayar konuşacağınızı öğrendiniz. Bir adım daha ileri gitmeye hazır mısınız? Uzantılar hakkında konuşalım...

Uzantılar

  1. Tüm dosyalarınızı tekrar karıştırın, ardından istediğiniz bir şehre kavuşun. Bu şehirde konaklayarak dosyaları yeniden düzenleyin.
  2. Aşağıda bağlantısı verilen eğlenceli komut satırı oyunlarından birini deneyin
    Terminus Oyunu
    Gelişmiş Oyun (Google için hazır olun)
  3. Star Wars'un büyük bir hayranı mısınız? Komut satırında telnet towel.blinkenlights.nl komutunu çalıştırıp Enter tuşuna basın. (MacOS'in son sürümlerinde, telnet komutunun artık varsayılan olarak yüklenmediğini unutmayın. Bu durumda, nc towel.blinkenlights.nl 23 komutu kullanılabilir.)

Bu laboratuvara ait kodu, GitHub'dan indirdiğiniz öğrenci veri deposundaki şu klasörde bulabilirsiniz: command-line/labs/bashing-away-repetition

Tekrarı, günlük komut satırı kullanımınızı azaltmaya hazır mısınız? İyiyim!

Arka plan

Programcıların nefret ettiği bir şey varsa bu, tekrardır. Bilgisayar bilimcileri olarak işimizi, bilgisayar işimizi mümkün olduğunca çok yapmaktan alıyoruz. Bash komut dosyaları yazmak, komut satırı kullanımımızı daha verimli hale getirmemize yardımcı olur.

Öncelikle, bash komut dosyası nedir?

HARİKA soru. Neyse ki rıhtım komutanları için mükemmel bir yer olan arkadaşımız Ryan Chadwick'in bize bir cevabı var.

Bash komut dosyası, bilgisayarın daha sonra komutları kendimiz girmesine gerek kalmadan yerine getireceği bir dizi işlem tanımlamamıza olanak tanıyor. Belirli bir görev sık gerçekleştiriliyorsa veya tekrarlanıyorsa komut dosyası yararlı bir araç olabilir.

Tekrar yok mu? Konuyu açıklarım.

Eğitim

Öncelikle, komut dosyanızı çalıştırabilmek için bilgisayarınıza izin vermeniz gerekir. Bunu aşağıdaki komutu çalıştırarak yapın.

chmod 755 myScript.sh

Peki, ilk programını yazma vakti. myScript.sh cihazınıza gidin (dosyayı komut satırından açıp açamadığınızı görün). Dosyanın sonuna şunu ekleyin:

echo "Hello World"

Şimdi çalıştır:

./myScript.sh

terminalde. ** TA DA ** Terminalinizde "Hello World" yazıyor.

kutlama

Bash komut dosyanızda yazdığınız her şey, terminalinize yazmışsınız gibi çalışır. Şimdi, uzantılara geçmeden önce bir örnek daha üzerinden geçelim. İlk olarak komut dosyanız için bir dosya oluşturun. Bu dosyaya istediğiniz herhangi bir adı verebilirsiniz, ancak dosyanın uzantısı .sh olmalıdır. Ardından, chmod 755 yazıp komut dosyanızın adını terminalinize girip Enter tuşuna basarak komut dosyanızın çalıştırılmasına izin verdiğinizden emin olun. Yeni bir bash komut dosyası başlattığınızda, bu iki adımı tamamlamanız gerekir.

Giriş Sorgulaması

Şimdi yeni bir klasör oluşturan bir komut dosyası yazmayı deneyelim. Hangi komutun yeni bir klasör oluşturduğunu biliyoruz? m ile başlayıp kdir ile biten bir kelime olduğunu düşünüyorsanız doğru yoldasınız demektir. Yeni klasörünüzü oluşturacak komutu yazın ve yeni .sh dosyanızda havalı bir ad verin, ardından terminalinizde çalıştırın.

Sorun çözülmezse aşağıda listelenen diğer görevlere geçin. Hala kafanız karışdıysa, dünyanızın dört bir yanındaki laboratuvarınıza göz atmayı ve yeni ülke ile şehir klasörlerini nasıl oluşturduğunuzu düşünmeyi deneyin.

Yukarıda bağlantısı verilen eğitici içeriği kullanmaktan çekinmeyin ve en iyi Google özelliklerini kullanmaya hazır olun. Aşağıdakileri yapan komut dosyalarını yazın ve çalıştırın:

Ana Görevler

  1. Yukarıda oluşturduğunuz dosyaya, oluşturduğunuz klasöre giden bir komut ekleyin. (Dizinleri değiştirmek için hangi komutu kullanıyoruz?)
  • Yeni klasör adınızın üzerine tarih damgası ekleyin. Örneğin, programınız "2017-12-07my_super_cool_folder" adlı bir klasör oluşturmalıdır
  1. "Mevcut dizinim": &quot" ve ardından çalışma dizininiz yazdırılıyor. Bu dizindeki her şeyin listesi aşağıda verilmiştir. "geçerli dizininizin içeriğini izler.
  2. Bash komut dosyanızın nasıl girileceğini ve bu giriş dizesine göre bir dosya nasıl oluşturacağınızı öğrenin. Laboratuvarın daha önce bağlantısı verilen eğitimde, değişkenler bölümünde göz atmanız için bazı faydalı örnekler yer almaktadır.
  3. Kullanıcıdan adını sorun, ardından �Merhaba, görüşmek üzere adını buraya yazın"
  • Kullanıcınızdan daha fazla bilgi istemeyi ve ona özel bir mesaj oluşturmayı deneyin.

TESLİM AL

Komut Satırı (veya Terminal), bilgisayar İşletim Sistemi (OS) ile doğrudan etkileşim sağlar. Grafikteki kullanıcı arayüzünün (GUI) yaptığı işlemler (gezinmeden yeni dosyalar oluşturmaya ve komut dosyaları yürütmeye kadar) metin komutlarıyla yapılır. Komut satırı, dosyaları açmak ve Google App Engine kullanılırken geliştirme ortamını başlatmak için kullanılır.

Komut Satırı Etkin

Terminale Erişme

Mac Kısayolu:

  • Spotlight'ı Komut + boşluk tuşuyla açın.
  • Spotlight Arama'ya Terminal yazın.
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

Dosya &Oluşturma

Dosya Oluşturma

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Klasör Oluşturma

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

Dosyaları Taşıma ve Klasörler

Dosyaları Taşıma

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

Klasörleri Taşıyın

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

Taşıma Yeniden adlandırılıyor

Dosya veya klasörleri yeniden adlandırmak için mv komutunun aynı komutu kullandığını da unutmayın.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

Dosyaları ve Klasörleri Kopyalama

Dosyalar Kopyalanıyor

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

Klasörleri Kopyalama

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

Dosyalar &Klasörleri Silme

Dosya Silme

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

Klasörleri Silme

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

İpuçları ve Püf Noktaları

  • Gerekmediğini düşündüğünüzde bile komut satırını kullanarak alıştırma yapın. Zaman içinde bu konuda kendinizi daha iyi hale getireceksiniz.
  • tab anahtarı, dosyanızı veya klasör adınızı otomatik olarak tamamlar (büyük/küçük harfe duyarlı olabilir).
  • Eşleşen yalnızca dosya veya klasör varsa dosya otomatik olarak tamamlanır.
  • Eşleşen birden fazla dosya veya klasör varsa kalan eşleşmelerin listesini görmek için sekmeye iki kez basın.
  • Yukarı / aşağı ok, komut geçmişinizi döngüye alarak komutları tekrar yazmanıza gerek kalmaz.
  • Terminal penceresini temizlemek için clear komutunu kullanın. Bu, önceki çalışmalarınızın tümünü tutar. Görmek için yukarı kaydırın.
  • Terminali yeniden başlatmak için reset politikasını kullanın. Bu işlem, önceki çalışmalarınızı ekranda tutmaz ancak Terminal öngörülemez şekillerde davranmaya başlarsa bazı sorunları çözebilir.
  • İmleci bir kelime taşımak için option + arrow tuşlarına basın

En İyi Uygulamalar Özeti

  • cd, cd .. veya cd <folder name> kullanarak Terminal'e gidin.
  • ls kullanarak klasörlerin içeriğini görüntüleyin.
  • touch kullanarak dosya oluşturabilirsiniz. mkdir kullanarak klasör oluşturabilirsiniz.
  • Dosyaları ve klasörleri mv <item to move> <destination> kullanarak taşıyın.
  • Dosyaları ve klasörleri cp <item to copy> <destination> kullanarak kopyalayın.
  • Dosya ve klasörleri rm <item to remove> kullanarak silin.

1. Soru

Mevcut çalışma dizininizi tanımlamak için ne kullanırsınız?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

2. Soru

Mevcut çalışma dizininizden iki düzey nasıl taşınırsınız?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

3. Soru

Bir dosyayı yeniden adlandırmak için hangi komutu kullanırsınız?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

4. Soru

mv script.py komutu neden hata verir?

  1. Çünkü "script.py' geçersiz bir dosya adı.
  2. Çünkü mv komutu başka bilgiler takip edemez.
  3. Bu bir püf noktasıdır ve hataya neden olmaz.
  4. Bir dosyayı taşımak için en az iki bağımsız değişken (hedef ve hedef) gerekir

5. Soru

cd ~ komutu ne işe yarar?

  1. Çalışma dizininizi ana dizininiz olarak değiştirin.
  2. Önceki komutu tekrarlayın.
  3. Şu an için en faydalı komutu belirlemek üzere bir algoritma kullanın.
  4. Hata verme.

6. Soru

Aşağıdakilerden hangisi dosya adlarını otomatik olarak tamamlamak için sekme kullanmanın bir nedeni DEĞİLDİR?

  1. Çünkü zaman kazandırır.
  2. Yazım hatalarının ortadan kaldırılmasına yardımcı olduğu için.
  3. Çünkü işlemci gücü daha azdır.

7. Soru

Yeni bir geliştirici "my script.py" adlı bir dosya oluşturmaya çalışırsa neden touch my script.py komutu çalışmaz?

  1. touch yeni dosya oluşturamayacağı için.
  2. .py, geçerli bir dosya uzantısı olmadığı için.
  3. Çünkü biri yalnızca "my" ve diğeri "script.py" adlı iki dosya oluşturur.
  4. Komut satırından yeni dosya oluşturulması imkansız olduğundan.

1. Soru

Mevcut çalışma dizininizi tanımlamak için ne kullanırsınız?

pwd

2. Soru

Mevcut çalışma dizininizden iki düzey nasıl taşınırsınız?

cd ../.. ile iki seviye yukarı çıkacaksınız (her .. bir üst seviyeyi temsil eder).

3. Soru

Bir dosyayı yeniden adlandırmak için hangi komutu kullanırsınız?

mv bir dosyayı bir konumdan diğerine taşımak için de kullanılır ve dosya adını değiştirmek için de kullanılabilir.

4. Soru

mv script.py komutu neden hata verir?

mv komutu için iki bağımsız değişken (bir kaynak dosyası ve bir hedef dosya) gereklidir.

5. Soru

cd ~ komutu ne işe yarar?

Çalışma dizininizi ana dizininizle değiştirecek. ~ özel karakteri, geçerli kullanıcının ana dizinini tanımlamak için kullanılır. Başka bir kullanıcı adı ile birlikte de kullanılabilir: ~user2, kullanıcının ana klasörünü işaret eder.

6. Soru

Aşağıdakilerden hangisi dosya adlarını otomatik olarak tamamlamak için sekme kullanmanın bir nedeni DEĞİLDİR?

Daha az işlem gücü gerektirdiği için doğru değildir. tab, otomatik tamamlama için dosya adı arayan klasörleri taramak üzere (çoğu zaman ihmal edilebilir) bir işlem gücü gerektirir ancak bu işlem zaman kazandırır ve işlemdeki yazım hatalarını önler.

7. Soru

Yeni bir geliştirici "my script.py" adlı bir dosya oluşturmaya çalışırsa neden touch my script.py komutu çalışmaz?

Tek bir dosya yerine iki dosya oluşturulur. touch komutu yeni dosyalar oluşturur. Terminal boşlukları ayırıcıdır, dosya adına eklenecek karakterler değildir. Bu nedenle, bunlardan tamamen kaçınılması önerilir, ancak bunları kullanmanız gerekiyorsa dosya adı çift tırnak içine alınmalıdır:

touch "my script.py"

1. Soru

Dizinleri değiştirmede kullanılan terminal komutu:

  1. move
  2. mkdir
  3. pwd
  4. cd

2. Soru

Mevcut çalışma dizininizin üst klasörüne gitmek istediğinizde hangi komutu çalıştırırsınız?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

3. Soru

Dosya oluşturmak için hangi komut kullanılır?

  1. touch
  2. mkdir
  3. create
  4. pwd

4. Soru

Aşağıdaki komutlardan hangisi index.html ve style.css adlı iki dosya oluşturur?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

5. Soru

Bir dosya veya klasörü yeniden adlandırmak için hangi komutu kullanıyorsunuz?

  1. rename
  2. move
  3. mv
  4. rm

6. Soru

rm ve cp komutlarının klasörler üzerinde çalışması için hangi işaretin olması gerekir?

  1. -f
  2. -r
  3. -x
  4. -d

7. Soru

projects dosyasını ~/Documents etiketine taşıyıp Projects olarak yeniden adlandırabilmek için hangi komutun boş bırakılması gerekir?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

8. Soru

Aşağıdaki komut ne işe yarar?

rm -r projects

  1. projects adlı dosyayı sil
  2. projects adlı klasörü sil
  3. projects adlı dosyayı yeniden adlandır
  4. Geçerli dizinin içeriğinde projects araması yapın

1. Soru

Dizinleri değiştirmede kullanılan terminal komutu:

Dizinleri değiştirmek için terminal komutu cd şeklindedir. Komutun kendisi, & dizinini değiştirmek için kullanılan bir kısaltmadır.

2. Soru

Mevcut çalışma dizininizin üst klasörüne gitmek istediğinizde hangi komutu çalıştırırsınız?

Üst klasöre gitme komutu cd .. şeklindedir

3. Soru

Dosya oluşturmak için hangi komut kullanılır?

Dosya oluşturma komutu touch

4. Soru

Aşağıdaki komutlardan hangisi index.html ve style.css adlı iki dosya oluşturur?

touch index.html style.css komutu iki dosyayı oluşturur. Virgül gerekmez ve boşluk kullanılarak birbirinden istenen sayıda dosya bu şekilde oluşturulabilir.

5. Soru

Bir dosya veya klasörü yeniden adlandırmak için hangi komutu kullanıyorsunuz?

"Taşı" anlamına gelir ve dosya veya klasör taşımak için kullanılabilir ancak mv, dosya ve klasörleri yeniden adlandırmak için de kullanılabilir.

6. Soru

rm ve cp komutlarının klasörler üzerinde çalışması için hangi işaretin olması gerekir?

rm ve cp komutları, -r işaretinin klasörlerde çalışmasını gerektirir. Bunun nedeni, -r işaretinin "yinelenen" anlamına gelmesi ve içinde yer alan tüm dosya ve klasörler için komutu tekrar çalıştırmasıdır.

7. Soru

projects dosyasını ~/Documents etiketine taşıyıp Projects olarak yeniden adlandırabilmek için hangi komutun boş bırakılması gerekir?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

Ana dizinden başladığımız için son komutun doğru dizinde çalıştırılması için cd ~/Documents komutunu çalıştırmamız gerekir.

8. Soru

Aşağıdaki komut ne işe yarar?

rm -r projects

Komut, -r veya yinelenen flag'iyle çağrıldığı için bir dosyayı VEYA projects adlı bir klasörü siler. Bu komut olmadan, bu komut yalnızca aynı ada sahip bir dosyayı silmek için çalışır.