Komut satırı, bilgisayarı GUI olmadan kontrol etmenin bir yoludur. Bu ünitede, bilgisayarımızla etkileşim kurmak için kullanılan temel komutları öğreneceğiz.
Temel çıkarımlar
- Öğrenciler, komutlarla bilgisayarlarında hareket eder.
- Öğrenciler dosya ve klasör oluşturma, taşıma, kopyalama ve silme işlemlerini yapabilir.
Komut Satırı Nedir?
Çoğu kullanıcı, bilgisayarla etkileşim kurmak için genellikle grafik kullanıcı arayüzü (GUI) kullanır. GUI'ler genellikle simgeler, düğmeler, kaydırma çubukları vb. içeren pencereleri kullanmak için fareye veya dokunmaya dayanır.
Komut satırı, bilgisayarın alternatif bir görünümüdür. Bazen "kabuk", "terminal", "bash" veya "metin arayüzü" olarak da adlandırılan komut satırı:
- Kullanıcının komutları yazdığı bir bilgisayar programıyla etkileşim kurma yöntemi. Örneğin:
open README.txt
- Bilgisayarınızda fare olmadan gezinmenin ve bilgisayarınızı kullanmanın bir yolu.
- Dosya ve dizinlerinizi oluşturmak, okumak, güncellemek, üzerinde işlem yapmak ve silmek için kullanılan grafik içermeyen bir yöntemdir. Örneğin:
mv README.txt readme.txt
GUI ve komut satırı aynı şeyi gösteriyor. Bunlar, bilgisayarla etkileşim kurmanın farklı yollarıdır.
Komut Satırını Ne Zaman Kullanırız?
Geliştiriciler genellikle komut satırı arayüzlerini tercih eder:
- Programları veya işletim sistemlerini kontrol etmek için daha kısa bir yol sunar. Neden? Her şey aynı pencerede gerçekleştiği için ve pratikle birlikte fareyle öğeleri bulup değiştirmekten daha az çaba gerektirir.
- Komutları kontrol etme seçeneklerini kolayca gösterirler. Neden? 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. Örneğin:
ls
Temel liste dosyalarıls -a
Normalde gizli olan dosyalar da dahil olmak üzere tüm dosyaları listelels -l
Her dosya hakkında bilgi gösteren uzun listels -R
Yinelemeli olarak dizinlerin içeriklerini listelemels -la
Tüm dosyaları uzun listede göster- Karmaşık işlemleri tek seferde birçok dosyada kolayca yapabilirsiniz.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- İşletim sistemini (kabuk programları) programlamanın bir yolunu sunarlar. Örneğin, yukarıdaki örnek, dosya adları
.png
ile biten resimleri değiştirmek için tasarlanmış çok basit bir kabuk programıdır.
Komut Satırının İşleyiş Şekli
Komut Satırı Komutunun Bölümleri
Tüm komutlar üç bölümden oluşur:
- Komut (veya yardımcı program) her zaman önce gelir.
- İşaretler, kullandığınız yardımcı programa bağlı olarak isteğe bağlıdır. İşaretler her zaman - (eksi) ile başlar.
- Bağımsız değişkenler, komutun üzerinde işlem yapacağı şeyler veya gerekli bilgilerdir. Genellikle dosya adları.
Çerçeveleme
Bağlam ve amaç
Komut satırı, bilgisayarı fare veya GUI (grafik kullanıcı arayüzü) olmadan kontrol etmenin bir yoludur. Apple Computer, tıklayabileceğiniz simgeler ve klasörler içeren makineler üretmeye başlamadan önce bilgisayarınızla etkileşim kurmanın tek yolu komut satırını kullanmaktı.
Geliştiriciler olarak komut satırını kullanıyoruz. Çünkü komut satırı, GUI'den çok daha hızlı ve güçlüdür. Bu nedenle, tıklayarak zaman kaybetmenize gerek kalmaz. Komut satırı, bilgisayarınızla yaptığınız etkileşimlerin neredeyse tamamını gerçekleştirmenize olanak tanır.
Terminal çok daha basit bir arayüz olduğundan, bir ağ bağlantısı üzerinden bir bilgisayara uzaktan bağlanmanız gerektiğinde GUI'ye göre büyük bir avantajı vardır. Bu, geliştiricilerin çok sık yaptığı bir şeydir (ör. seyahat ederken).
Bu derste, dosya ve dizin oluşturma, klasör taşıma, dizin değiştirme ve klasör içeriğini listeleme gibi işlemlerle bilgisayarımızla etkileşim kurmak için kullanılan temel komutları öğreneceğiz.
Öğrenme hedefleri
Öğrenciler şunları yapabilir:
- Dosyalarda ve klasörlerde gezinmek için Terminal'i kullanma
- Klasör içeriğini listeleme
- Komut satırında dosya ve klasör oluşturma
- Dosyaları ve klasörleri taşıma
- Dosyaları ve klasörleri kopyalama
- Dosya ve klasörleri silme
Başlarken
Terminale erişme
Bölümün çerçevesi ve amacı
Terminal, işletim sistemine bir komut satırı arayüzü (KSA) sağlar. Bu araçla bilgisayarınıza doğrudan metin tabanlı talimatlar verebilirsiniz.
Bunu yapabilmemiz için kullandığınız sisteme göre terminalinizi başlatmamız gerekir.
Terminal başlatıldığında bilgisayarınızın ana dizininde (bilgisayarınıza verdiğiniz ad) başlar. Ana dizininiz tilde ~
ile gösterilir.
Terminaldeki dünyamızdan bahsederken Dizinler, Klasörler ile aynıdır (bazen bunlara Dizinler diyebiliriz).
Dizinleri değiştirme
Bölümün çerçevesi ve amacı
Terminal'de bilgisayarımızla konuşup ne yapmak istediğimizi söylemek için ortak bir dil kullanmamız gerekir. Komut satırı, bash komut dosyası dilinde yazılan komutları anlar. Komutlar, İngilizce kelimelerin kısaltmalarıdır.
Print Working Directory (Çalışma Dizini Yazdırma) (pwd
)
Terminalinizde gezinirken nerede olduğunuzu bilmeniz önemlidir (Bu, gerçek hayatta da geçerlidir. Bir yere gitmek istiyorsanız önce bulunduğunuz konumu bilmeniz gerekir).
# See your current location - abbreviation for 'print working directory'
pwd
Kullanılabilir dosya ve dizinleri listeleme
Çalışma dizininizde erişebileceğiniz birkaç dosya olabilir. Normalde, neyin kullanılabildiğini anlamak için simgeler gibi görsel ipuçlarından yararlanırız. Ancak dosyaların ve klasörlerin nerede bulunduğunu tahmin ederek bilgisayarımızda gezinmek zor olurdu. Komut satırında, belirli bir çalışma dizininden / konumdan erişebileceklerimizi listelemek için belirli bir komut kullanacağız.
Geçerli dizinimizde hangi dosya veya klasörlerin olduğunu görmek için ls
komutunu (list kelimesinin kısaltması) kullanarak içeriklerin liste görünümünü inceleyin.
# See files and folders in current location - abbreviation for 'list'
ls
Çalışma dizinini değiştirme
Listede bulunmayan bir dosyaya veya dizine erişmeniz gerekiyorsa daha kolay erişmek için çalışma dizininizi değiştirebilirsiniz.
Komut satırına sizi yeni bir dizine (klasör olarak da bilinir) taşımasını söylemek için kullanılan söz dizimi, cd
komutunun (aynı satırda) yeni klasörün yoluyla birlikte kullanılmasıdır.
Şu anda bulunduğunuz dizinin içindeki bir dizine (ör. çalışma dizininizin bir alt klasörü) gidiyorsanız 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
Ayrıca, ana ~ 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 ~
simgesini kullanarak doğrudan ana dizine geri dönün veya ..
simgesini kullanarak bir üst düzeye gidin.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
cd ..
yalnızca bir seviye yukarı (geri) gider. Bu nedenle, şu ana kadar dizinleri üç kez değiştirdiyseniz (üç seviye aşağı) ana sayfaya gitmek için cd ..
simgesini üç kez kullanmanız gerekir. Ancak cd ~
simgesini yalnızca bir kez kullanmanız yeterlidir.
Mini yarışmalar
- Mevcut dizininizde neler olduğunu görmek için
ls
komutunu kullanın. - Ana dizininize geri dönün ve ana klasörünüzün içeriğini görmek için
ls
komutunu kullanın. - Ana dizinde bulunan klasörlerden birinin adını seçin ve bu yeni klasöre gidin.
- İçeride neler olduğunu görmek için liste komutunu kullanın.
İpucu: tab
ile otomatik tamamlama
cd
komutuyla dizin değiştirirken tek bir yazım hatası, komutun doğru şekilde yürütülmesini engeller. Ancak tab
tuşunu kullandığınızda, geçerli dizininizdeki kullanılabilir dizinlerin adları otomatik olarak tamamlanır. Bu nedenle, cd Documents
yazmak yerine yalnızca cd Do
yazıp tab
tuşuna basın. 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 özelliği, çalıştığı zaman zamandan tasarruf etmenizi sağlamanın yanı sıra çalışmadığı zaman da değerli bilgiler sunar. Sekme düğmesi otomatik tamamlama yapmıyorsa büyük ihtimalle üç yaygın sorundan birini yaşıyorsunuzdur:
- Gitmek istediğiniz dizine mevcut çalışma dizininizden erişilemiyor.
- Benzer başlangıç adlarına sahip iki dizin var (ör.
Documents
veDownloads
) ve otomatik tamamlama özelliğinin hangisini istediğinizi bilmesi için yeterli bilgi sağlamadınız. Yazdıklarınızla eşleşebilecek dizinlerin listesini görmek içintab
tuşuna tekrar basın. Ardından biraz daha yazın (yalnızca bir eşleşme olacak kadar) vetab
tuşuna tekrar basın. - Kelimenin ilk yarısında zaten yazım hatası var.
Komutlarınızı otomatik tamamlamak için sekme tuşunu kullanma alışkanlığını ne kadar erken kazanırsanız komutlarınızın çalışmadığı durumlarda sorunları çözme olasılığınız o kadar artar.
Üst ve Alt Dizinler
Dizinler ve dosyalar arasında alt ve üst ilişkileri olabilir. directory_b
, directory_a
'ün içindeyse directory_a
directory_b
, directory_a
'ün alt öğesi olarak adlandırılır. Bu durumda directory_a
, directory_b
öğesinin üst öğesi olarak bilinir. directory_b
içinde üçüncü bir öğe (my_file
) varsa bu öğe, directory_b
öğesinin alt öğesi ve directory_a
öğesinin torunu olarak 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ğini, dosya adlarının ise bu karakterle bitmediğini unutmayın. Bu hiyerarşik düzen genellikle 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şler olarak bilinir. Ör. file_b
ve file_c
, directory_a
içinde yer alıyorsa bunlar kardeş olur.
Bu metin şeması şöyle görünür:
directory_a/ file_b file_c
file_b
ve file_c kardeş öğeler olduğundan aynı miktarda girintilendiğini unutmayın.
Dosya Yolları
Aşağıda hem üst-alt hem de kardeş ilişkilerini içeren daha karmaşık bir metin diyagramı verilmiştir.
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 new_york_city/
bir dizin adıdır ancak aynı zamanda yol bilgisi de içerir. Bu yol, dizine nasıl ulaşılacağını ayrıntılı olarak açıklar: ~/north_america/united_states/new_york/new_york_city/
.
Dizini new_york_city/,
olarak değiştirmek için adları kullanarak adım adım gidebilir veya yolu kullanarak tek bir komutla doğrudan gidebilirsiniz.
# 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 yarışmalar
- İçinde bulunduğunuz klasörü öğrenmek için
pwd
simgesini 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.
Dosya ve dizin oluşturma
Bölümün çerçevesi ve amacı
Geliştiriciler olarak kod içeren dosyalar oluşturmamız gerekir. Bu dosyaları düzenli tutmak için dosyalarımızı saklayabileceğimiz klasörler / dizinler oluşturmamız gerekir.
Dosya ve klasörlerinizi oluşturmadan önce terminaldeki konumunuzu kontrol edin.
# See your current location.
pwd
Dosya oluşturmak için touch
komutunu ve ardından dosya adını kullanın.
# `touch` creates a new file.
touch style.css
Dosya oluştururken türü belirtmek için dosya uzantısı ekleyin. Örnek dosya türleri:
.js
JavaScript dosyası olarak oluşturun..html
HTML dosyası oluşturun.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 fazla dosya oluşturma
Adların arasına boşluk ekleyerek tek seferde birden fazla 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
Dizin / klasör oluşturmak için mkdir
komutunu kullanın. Bu komut, "make directory" (dizin oluştur) ifadesinin kısaltmasıdır ve ardından klasörün adı gelir.
# 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 fazla dizin oluşturma
Adların arasına boşluk bırakarak aynı anda birden fazla klasör oluşturabilirsiniz.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
Mini yarışmalar
- Yeni bir dosya oluşturun.
- Tek bir komutla birkaç dosya oluşturun.
- Yeni bir dizin oluşturun.
- Birkaç yeni dizin daha oluşturun. Bunu yapmak için yalnızca tek bir komut kullanmayı deneyin.
- Dizinlerde gezinme, dosya ve klasör oluşturma hakkındaki bilgilerinizi kullanarak masaüstünüzde dosya ve klasörleri kullanarak "aile_ağacı" oluşturun.
Taşıma ve Kopyalama
Dosyaları ve dizinleri taşıma
Bölümün çerçevesi ve amacı
Komut satırında bir dosyayı veya klasörü taşıyabiliriz ancak her zaman üç şeyi belirtmemiz gerekir:
mv
komutunu kullanıyoruz. Bu komut, taşıma işleminin kısaltmasıdır.- Taşıma komutunu, taşımak istediğiniz dosyanın veya klasörün adıyla birlikte kullanın.
- Dosyanın adını, taşımak istediğiniz hedefle birlikte girin.
Örneğin, dosya yapınız şu şekildeyse:
my_child_folder/ my_parent_folder/
Bu durumda, olması gerektiği gibi düzenlenmediğini görebilirsiniz. Yani, üst ve alt hesap olması gereken yerlerde kardeş hesaplar vardır. Ş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ünür.
my_parent_folder/ my_child_folder/
mv
komutunun diğer bazı varyasyonları şunlardır:
# 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 olabilir. Bu nedenle, bir dosyayı mevcut olmayan bir dizine taşırsanız veya hedefi yanlış yazarsanız dosya taşınmak yerine yeniden adlandırılır.
Mini yarışmalar
- 5 metin (.txt) dosyası oluşturun.
- Yeni bir dizin oluşturun.
- Oluşturduğunuz 5 dosyayı klasöre taşıyın.
- Bir klasör oluşturun ve bu yeni klasörü başka bir klasörün içine taşıyın.
Dosya ve dizin kopyalama
Bölümün çerçevesi ve amacı
Web uygulamalarımızı oluştururken bir dosyayı kopyalamak isteyebiliriz (iki benzer web sayfası oluşturuyorsak sıfırdan başlamak istemeyebiliriz). cp
(kopyalama) komutunun söz dizimi, mv
söz dizimine çok benzer.
Dosya kopyalama
Kopyalama komutu üç bölümden oluşur:
cp
komutu (kopyalama kısaltması)- Kopyalanacak dosyanın adı
- Kopyanın adı (aynı klasörde kalıyorsa) veya konumu ve adı (farklı bir klasöre taşınıyorsa).
# 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 orijinaliyle aynı adı korumasını istiyorsanız dosya adı olmadan kopya konumunu 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 dosya olması kafa karıştırıcı olabilir. Bu nedenle, bu yöntemi yalnızca ihtiyacınız olduğundan eminseniz kullanın.
Dizin kopyalama
Bir klasörü veya dizini kopyalamak biraz daha karmaşıktır. Çünkü büyük olasılıkla yalnızca klasörü değil, içindeki her şeyi de kopyalamak istersiniz.
cp -R
komutu (copy recursive kısaltması) hem boş hem de boş olmayan klasörler için kullanılır.- Kaynak adı (taşımak istediğimiz klasör veya dosya)
- Kopyanın adı (aynı klasörde kalıyorsa) veya konumu ve adı (farklı bir klasöre taşınıyorsa).
Uyarı: Kopyanın adını belirtirken dosya veya klasör daha önce oluşturulmamışsa kopyayı oluşturduğunuzda oluşturulur. Dosya, kopyalama komutunu çalıştırmadan önce oluşturulduysa daha önce dosyada bulunan her şeyin üzerine yazılır. Bu nedenle 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şaret adı verilir. İşaretler her zaman tireyle başlar ve komutların nasıl yürütüleceğiyle ilgili daha ayrıntılı talimatlar vermek için komutlarla birlikte kullanılır.
Mini yarışmalar
my_original.txt
adlı bir dosya oluşturun.- Aynı klasörde
my_original.txt
dosyasının yeni bir adla kopyasını oluşturun. - Yeni bir dizin oluşturun.
- Bu dizinin bir kopyasını oluşturun ancak farklı bir ad verin.
- Kopyaladığınız dosyanın (2. adım) bir kopyasını oluşturun ancak bunu kopyalanan dizine (4. adım) yerleştirin.
Dosya ve Klasörleri Kaldırma
Bölümün çerçevesi ve amacı
Komut satırında dosya ve klasörleri silebiliriz ancak bu işlem kalıcıdır.
Dosya kaldırma
Bir dosyayı kaldırmak için rm
(kaldır kelimesinin kısaltması) komutunu 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 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
komutundan sonra -R
işaretini (recursive kısaltması) eklememiz gerekir. Bu işaret, bilgisayara klasörün içindeki içerikleri silmesini söyler. Bazı geliştiriciler, kısayol olarak -Rf
işaretini kullanır. Bu işaret, her şeyi zorla kaldırır (aksi takdirde, alt dosyalardan veya klasörlerden bazılarının silinmesiyle 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
komutunu kullanmak, e-postanızın silinenler bölümü veya geri dönüşüm kutusunu kullanmaya benzemez. Bu dosyalar kolayca kurtarılamaz. Bu şekilde dosya silerken ÇOK DİKKATLİ olun.
Mini yarışmalar
- 4 dosya oluşturun.
- Dosyalardan 2'sini silin.
- Klasör oluşturun.
- Başka bir klasör oluşturun ve bu klasörün içinde bir dosya oluşturun.
- Dizinlerin ikisini de silin.
Bu laboratuvarın kodunu, GitHub'dan indirdiğiniz öğrenci deposunun içindeki şu klasörde bulabilirsiniz: command-line/labs/around-the-world
Arka plan
Yurt dışındaki döneminiz yaklaşıyor ve Avrupa seyahatlerinizi planlamaya başlamanız gerekiyor...
Yakın gelecekte üç ay boyunca yaşamaya odaklanacağınız için her hafta sonu gezisinden tam olarak yararlanmak istiyorsunuz.
Neyse ki sıfırdan başlamıyorsunuz ve arkadaşlarınız, yurt dışındaki dönemlerinde en sevdikleri aktivitelerden bazılarını sizinle paylaştı. Maalesef bazı dosyalar karışmış...
Üzülmeyin, komut satırının sihirli gücüyle bu sorunları kısa sürede 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. Dikkatli olun, aksi takdirde Eyfel Kulesi'ni ararken Amsterdam'da bulabilirsiniz!
Bu konuda kendinize GERÇEKTEN güveniyorsanız GUI'nizi gizleyin ve bu zorluğun üstesinden doğrudan komut satırından gelin. Tüm bunları yaparken genel dünya turu klasöründe kalmanız gerekir. Bu nedenle, klasör ve dosyalara referans verirken mutlak yollar kullanmanız gerekir.
Her şeyin doğru yerde olduğundan emin olduğunuzda, önümüzdeki birkaç ayın kontrolünü ele alma sırası sizde. Görmeniz GEREKEN yeni şehirler, ülkeler ve anıtlar için beyin fırtınası yapın ve bunları dosya ağacınıza ekleyin.
Tebrikler! Artık bilgisayarla konuşmayı resmen öğrendiniz. Bir adım daha ileri gitmeye hazır mısınız? Uzantılardan bahsedelim...
Uzantılar
- Tüm dosyalarınızı tekrar karıştırın ve istediğiniz şehre gidin. O şehirde kalarak dosyaları tekrar düzenleyin.
- Aşağıda bağlantısı verilen eğlenceli komut satırı oyunlarından birini deneyin
Terminus Game
Advanced Game (Google'da arama yapmaya hazır olun) - Yıldız Savaşları'nın büyük bir hayranı mısınız? Komut satırınızda
telnet towel.blinkenlights.nl
komutunu çalıştırıp Enter tuşuna basmayı deneyin. (MacOS'in son sürümlerindetelnet
komutunun artık varsayılan olarak yüklenmediğini unutmayın. Bu durumda bunun yerinenc towel.blinkenlights.nl 23
komutu kullanılabilir.)
Bu laboratuvarın kodunu, GitHub'dan indirdiğiniz öğrenci deposunun içindeki şu klasörde bulabilirsiniz: command-line/labs/bashing-away-repetition
Günlük komut satırı kullanımınızdaki tekrarları ortadan kaldırmaya hazır mısınız? Harika, ben de!
Arka plan
Programcıların nefret ettiği bir şey varsa o da tekrardır. Bilgisayar bilimcileri olarak, bilgisayarın işimizin mümkün olduğunca büyük bir kısmını yapmasını sağlamak bizim görevimizdir. Bash komut dosyaları yazmak, komut satırı kullanımımızı daha verimli hale getirmemize yardımcı olur.
Öncelikle, Bash komut dosyası nedir?
ÇOK İYİ bir soru. Neyse ki komut satırı eğitimleri bulabileceğiniz bu harika yerdeki arkadaşımız Ryan Chadwick bu sorunun cevabını biliyor.
Bash komut dosyası, bilgisayarın komutları kendimiz girmemize gerek kalmadan gerçekleştireceği bir dizi işlem tanımlamamıza olanak tanır. Belirli bir görev sık sık yapılıyorsa veya tekrarlanıyorsa komut dosyası yararlı bir araç olabilir.
Tekrar yok mu? İşte bundan bahsediyorum.
Eğitim
Her şeyden önce, komut dosyanızı çalıştırabilmek için bilgisayarınıza izin vermeniz gerekir. Bunun için aşağıdaki komutu çalıştırın.
chmod 755 myScript.sh
Şimdi ilk programınızı yazma zamanı. myScript.sh
bölümüne gidin (Dosyayı komut satırından açıp açamadığınıza bakın). Dosyanın sonuna şunu ekleyin:
echo "Hello World"
Şimdi şu komutu çalıştırın:
./myScript.sh
terminalinizde çalıştırın. ** TA DA ** Terminalinizde "Hello World" (Merhaba Dünya) ifadesinin yazdırıldığını görmelisiniz.
Bash komut dosyanıza yazdığınız her şey, terminalinize yazmışsınız gibi çalışır. Uzantılara geçmeden önce bir örneğe daha göz atalım. Öncelikle komut dosyanız için bir dosya oluşturun. Bu dosya istediğiniz şekilde adlandırılabilir ancak .sh
uzantılı olmalıdır. Ardından, terminalinize chmod 755
yazıp komut dosyanızın adını girerek ve Enter tuşuna basarak komut dosyanızın çalıştırılmasına izin verin. Yeni bir bash komut dosyası başlattığınızda bu iki adımı tamamladığınızdan emin olmalısınız.
Tanıtım Yarışması
Şimdi yeni bir klasör oluşturan bir komut dosyası yazmayı deneyelim. Yeni bir klasör oluşturmak için hangi komutu kullanırız? m
ile başlayıp kdir
ile biten bir kelime düşünüyorsanız doğru yoldasınız. Yeni .sh
dosyanızda yeni klasörünüzü oluşturacak ve klasörünüze havalı bir ad verecek komutu yazın, ardından terminalinizde çalıştırın.
Çalışırsa aşağıda listelenen diğer zorluklara geçin. Hâlâ kafanız karışıksa Dünyayı Gezinme laboratuvarınıza dönüp yeni ülke ve şehir klasörlerini nasıl oluşturduğunuzu hatırlamaya çalışın.
Yukarıda bağlantısı verilen eğiticiden yararlanmaktan çekinmeyin ve en iyi Google arama becerilerinizi kullanmaya hazır olun. Aşağıdaki işlemleri yapan komut dosyaları yazın ve çalıştırın:
Ana görevler
- Yukarıda oluşturduğunuz dosyaya, oluşturduğunuz klasöre giden bir komut ekleyin. (Dizinleri değiştirmek için hangi komutu kullanırız?)
- Yeni klasör adınıza tarih damgası ekleyin. Örneğin, programınız "
2017-12-07my_super_cool_folder
" adlı bir klasör oluşturmalıdır.
- "My current directory is: " (Mevcut dizinim:) ve ardından çalışma dizininiz ile "Here is a list of everything in this directory! " ve ardından geçerli dizininizin içeriği.
- Bash komut dosyanıza nasıl giriş vereceğinizi öğrenin ve bu giriş dizesine dayalı bir dosya oluşturun. Laboratuvarın başında bağlantısı verilen eğitimde, değişkenler bölümünde inceleyebileceğiniz harika örnekler var.
- Kullanıcının adını isteyin, ardından "Merhaba, tanıştığımıza memnun oldum insert their name here" ifadesini yazdırın.
- Kullanıcınızdan daha fazla bilgi isteyebilir ve ona özel bir mesaj oluşturabilirsiniz.
CONTEXT
Komut satırı (veya Terminal), bilgisayarın işletim sistemiyle (OS) doğrudan etkileşim kurmanızı sağlar. Grafik kullanıcı arayüzünün (GUI) yaptığı her şeyi (gezinme, yeni dosya oluşturma, komut dosyası çalıştırma vb.) metin komutlarıyla yapabilirsiniz. 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ının İşleyiş Şekli
Terminale erişme
Mac kısayolu:
- Command + boşluk tuşlarına basarak Spotlight'ı açın.
- Spotlight Arama'ya Terminal yazın.
Terminalde gezinme
# 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 ve Klasör 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
Dosya ve Klasörleri Taşıma
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şıma
# 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ırma İşlemidir
mv
simgesinin, dosya veya klasörleri yeniden adlandırmak için de kullanılan komut olduğunu unutmayın.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
Dosya ve Klasör Kopyalama
Dosya Kopyalama
# 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
Dosya ve Klasör Silme
Dosyaları 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ı
- İhtiyacınız olmadığını düşündüğünüzde bile komut satırını kullanma alıştırması yapın. Zamanla bu konuda daha iyi olacaksınız.
tab
tuşu, dosya veya klasör adınızı otomatik olarak tamamlar (büyük/küçük harfe duyarlı olabilir).- Eşleşen tek bir dosya veya klasör kalırsa otomatik tamamlama yapılır.
- Birden fazla eşleşen dosya veya klasör varsa kalan eşleşmelerin listesini görmek için Sekme tuşuna iki kez basın.
- Yukarı / aşağı ok tuşları, komutları yeniden yazmak zorunda kalmamanız için komut geçmişinizde gezinmenizi sağlar.
- Terminal penceresini temizlemek için
clear
komutunu kullanın. Bu sayede önceki tüm çalışmalarınız korunur. Önceki çalışmalarınızı görmek için yukarı kaydırın. - Terminali yeniden başlatmak için
reset
komutunu kullanın. Bu işlem, önceki çalışmalarınızı ekranda tutmaz ancak Terminal beklenmedik şekilde davranmaya başlarsa çeşitli sorunları çözebilir. - İmleci bir kelime hareket ettirmek için
option
+arrow
tuşlarına basın
En İyi Uygulamalar Özeti
cd
,cd ..
veyacd <folder name>
tuşlarını kullanarak Terminal'de gezinin.ls
simgesini kullanarak klasörlerin içeriğini görüntüleyin.touch
komutunu kullanarak dosya,mkdir
komutunu kullanarak klasör oluşturun.mv <item to move> <destination>
simgesini kullanarak dosya ve klasörleri taşıyın.cp <item to copy> <destination>
kullanarak dosya ve klasörleri kopyalayın.rm <item to remove>
kullanarak dosya ve klasörleri silin.
1. Soru
Mevcut çalışma dizininizi tanımlamak için ne kullanırsınız?
pwd
ls
cd
mkdir
touch
2. Soru
Mevcut çalışma dizininizden iki seviye yukarı nasıl çıkarsınız?
mv ~
cd ../..
mv up/up
cd ^(2)
3. Soru
Bir dosyayı yeniden adlandırmak için hangi komutu kullanırsınız?
mv
cd
ls
python
rename
4. Soru
Neden mv script.py
komutu hata veriyor?
- "
script.py
" geçersiz bir dosya adı olduğundan. - Çünkü
mv
komutundan sonra başka bilgi girilemez. - Bu bir tuzak sorudur ve hata vermez.
- Çünkü bir dosyayı taşımak için en az iki bağımsız değişken (hedef ve varış noktası) gerekir.
5. Soru
cd ~
komutu ne işe yarar?
- Çalışma dizininizi ana dizininizle değiştirin.
- Önceki komutu tekrarlayın.
- Şu anda en faydalı komutu belirlemek için bir algoritma kullanın.
- Hata oluşturur.
6. Soru
Aşağıdakilerden hangisi, dosya adlarını otomatik tamamlamak için sekme tuşunu kullanmanın nedenlerinden biri DEĞİLDİR?
- Çünkü zaman kazandırır.
- Yazım hatalarını ortadan kaldırmaya yardımcı olduğu için.
- Çünkü daha az işlem gücü gerektirir.
7. Soru
Yeni bir geliştirici "my script.py
" adlı bir dosya oluşturmaya çalıştığında neden touch my script.py
komutu çalışmaz?
- Çünkü
touch
yeni dosya oluşturamıyor. - Çünkü
.py
geçerli bir dosya uzantısı değil. - Çünkü tek bir dosya yerine "
my
" ve "script.py
" adlı iki dosya oluşturur. - Çünkü komut satırından yeni dosya oluşturmak mümkün değildir.
1. Soru
Mevcut çalışma dizininizi tanımlamak için ne kullanırsınız?
pwd
2. Soru
Mevcut çalışma dizininizden iki seviye yukarı nasıl çıkarsınız?
cd ../..
ile iki seviye yükselirsiniz (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 kullanılır ve dosya adını değiştirmek için de kullanılabilir.
4. Soru
Neden mv script.py
komutu hata veriyor?
mv
komutu için iki bağımsız değişken (kaynak dosya ve hedef dosya) gerekir.
5. Soru
cd ~
komutu ne işe yarar?
Bu komut, çalışma dizininizi ana dizininizle değiştirir. ~ özel karakteri, geçerli kullanıcının ana dizinini tanımlamak için kullanılır. Ayrıca, ana klasörünü göstermek için farklı bir kullanıcı adıyla birlikte de kullanılabilir: ~user2.
6. Soru
Aşağıdakilerden hangisi, dosya adlarını otomatik tamamlamak için sekme tuşunu kullanmanın nedenlerinden biri DEĞİLDİR?
Daha az işlem gücü gerektirdiği için ifadesi doğru değildir. tab
, klasörleri tarayarak dosya adını otomatik tamamlama için ararken (genellikle ihmal edilebilir) bir miktar işlem gücü gerektirir ancak bu işlem zaman kazandırır ve yazım hatalarını önler.
7. Soru
Yeni bir geliştirici "my script.py
" adlı bir dosya oluşturmaya çalıştığında neden touch my script.py
komutu çalışmaz?
Tek bir dosya yerine iki dosya oluşturulur. touch
komutu yeni dosyalar oluşturur. Terminalde boşluklar ayırıcıdır, dosya adına dahil edilecek karakterler değildir. Bu karakterlerden tamamen kaçınmak en iyisidir. 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ştirmek için kullanılan terminal komutu:
move
mkdir
pwd
cd
2. Soru
Mevcut çalışma dizininizin üst klasörüne gitmek istiyorsanız hangi komutu çalıştırırsınız?
cd up
cd .
cd ..
cd ~
3. Soru
Dosya oluşturmak için hangi komut kullanılır?
touch
mkdir
create
pwd
4. Soru
Aşağıdaki komutlardan hangisi index.html
ve style.css
adlı iki dosya oluşturur?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
5. Soru
Dosya veya klasörleri yeniden adlandırmak için hangi komutu kullanırsınız?
rename
move
mv
rm
6. Soru
rm
ve cp
komutlarının klasörlerde çalışması için hangi işaret gerekir?
-f
-r
-x
-d
7. Soru
projects
öğesini ~/Documents
konumuna taşımak ve Projects
olarak yeniden adlandırmak için boşluğa hangi komut yazılmalıdır?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
8. Soru
Aşağıdaki komut ne yapar?
rm -r projects
projects
adlı dosyayı silmeprojects
adlı klasörü silprojects
adlı dosyayı yeniden adlandırın.- Geçerli dizinin içeriğinde
projects
ifadesini arayın.
1. Soru
Dizinleri değiştirmek için kullanılan terminal komutu:
Dizinleri değiştirmek için kullanılan terminal komutu cd
'dır. Komutun kendisi "change directory" (dizini değiştir) ifadesinin kısaltmasıdır.
2. Soru
Mevcut çalışma dizininizin üst klasörüne gitmek istiyorsanız hangi komutu çalıştırırsınız?
Üst klasöre gitme komutu cd ..
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 kullanmanız gerekmez. Bu şekilde, boşluklarla ayrılmış olarak istediğiniz sayıda dosya oluşturabilirsiniz.
5. Soru
Dosya veya klasörleri yeniden adlandırmak için hangi komutu kullanırsınız?
"Taşı" anlamına gelse ve dosyaları veya klasörleri taşımak için kullanılabilse de mv
dosyaları ve klasörleri yeniden adlandırmak için de kullanılabilir.
6. Soru
rm
ve cp
komutlarının klasörlerde çalışması için hangi işaret gerekir?
rm
ve cp
komutlarının klasörlerde çalışması için -r
işareti gerekir. Bunun nedeni, -r
işaretinin "özyinelemeli" anlamına gelmesi ve komutu, içerideki tüm dosya ve klasörler için yeniden çalıştırmasıdır.
7. Soru
projects
öğesini ~/Documents
konumuna taşımak ve Projects
olarak yeniden adlandırmak için boşluğa hangi komut yazılmalıdır?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Ana dizinde başladığımız için nihai komutun doğru dizinde çalıştırılması amacıyla cd ~/Documents
komutunu çalıştırmamız gerekir.
8. Soru
Aşağıdaki komut ne yapar?
rm -r projects
Komut, projects
adlı bir dosyayı VEYA klasörü -r
ya da yinelemeli işaretle çağrıldığı için siler. Bu işaret olmadan, bu komut yalnızca o ada sahip bir dosyayı silmek için çalışır.