Terminal'de bir .sh veya .command dosyasını nasıl çalıştırabilirim


87

Her zaman doğrudan Finder'dan çevrimiçi olarak indirdiğim bir komut dosyasını çalıştırabilmek istedim ancak dosyayı çift tıklatmak işe yaramıyor.

Yanıtlar:


103

Terminal'i açın, yazın sh /path/to/fileve enter tuşuna basın.

Daha hızlı yazmak, shbir boşluk bırakmak ve dosyayı pencereye sürüklemek ve simgeyi pencerenin herhangi bir yerinde bırakmaktır.


3
Eğer kabuk betiği tcsh, zsh veya ksh gibi başka bir kabuğun sözdiziminde yazılmışsa ne olacağını düşünüyorsunuz? Sonek sh, "betiği bu kabukta çalıştırma" değil bir kabuk betiğini belirtir.
fd0

3
@ fd0 Shebang hattı bununla ilgilenecek.
user14492

4
@ user14492- Bir kabuk betiğini çağırdığınızda, shebang shell shell_scriptsatırı yok sayılır. Kabuk ilk satırı bir yorum olarak okur.
fd0

@ fd0, anlamıyorum. sh /path/to/fileAnlamsal olarak alternatiflerden herhangi biri nasıl farklı /path/to/file.sh?
Pacerier

2
@ Pacerier- İlk formda, çağıran kullanıcının dosyayı okuyabilmesi ve hangi tercümanın dosyayı okuyacağını seçmesi gerekir. İkinci formda, dosyanın izinleri çağıran kullanıcı için okunmalı ve yürütülmelidir ve yorumlayıcı, betiğin ilk satırındaki karma çarpması ile belirlenir. Her iki durumda da, çekirdek dosyadaki soneki yorumlamaz.
fd0

12

Alternatif olarak, aynı zamanda yapabilirsiniz

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

Ayrıca çalıştırılabilir dosyayı belirtilen kabuğu ile çalıştıracak (eğer shebang'da belirtilmişse) #!/bin/(shell)


1
Soruda "çevrimiçi indirdiğim bir komut dosyasını çalıştırın" yazıyor. İnternetten indirilen dosyalar genellikle 644 olarak ayarlanmış izinlere sahiptir.
nohillside

@patrix sadece internet değil, hesabınızdaki varsayılan maske nedeniyle başka bir dosya sisteminden kendinize kopyalanan her dosya olduğunu düşünüyorum.
rwenz3l

8
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

~/.bash_profileaşağıdaki satırı düzenleyin ve ekleyin:

alias myfile=./myfile.sh

aşağıdaki komut satırını yürütün:

source ~/.bash_profile

o zaman dosyanızı bir program olarak çalıştırabilirsiniz

$ myfile


Ubuntu senin yolunda herhangi bir komut dosyası sahip olduğunuz sürece infaz edilebilir #~/bin/shiken, OSXolması gereken komut .shuzantısı ve bir aliasonların her biri için. : -O
Fabrizio Bertoglio

6

Komut dosyalarını çalıştırmak için aşağıdaki adımları izleyin:

  1. .Sh dosyasına sağ tıklayın.

  2. Birlikte Aç seçeneğinin üzerine gelin .

  3. Seç Diğer ... .

  4. Uygulamalar klasöründe olmalısınız . Utilities klasörünü açın ve Terminal.app seçeneğini seçin.

  5. Eğer Terminal.app seçemiyorsanız, etkinleştirilmiş uygulamaları değiştirmek Önerilen Uygulamalar için Tüm Uygulamalar . Pencerenin altındadır.

  6. Her .shdosyayı Terminal.app ile açmak istiyorsanız , Her Zaman Birlikte Aç'ı işaretleyin .

  7. Pencerenin sağ alt köşesindeki düğmesine basın .


3

İndirdikten sonra çalışmamasının nedeni dosya izinlerinin izin vermemesidir. Yürütme izinlerini etkinleştirmek için Terminal'i açın ve yazın chmod 755 /path/to/script. Tam yolu yazmak yerine, komut dosyasını Finder'dan Terminal penceresine sürükleyebilirsiniz. Ardından, yürütmek için, sadece girin /path/to/script. Yine, dosyayı sürükleyip Terminal penceresine bırakabilirsiniz. Bu sözdizimi, betiğin ilk satırında tanımlandığı gibi doğru kabuğu kullanarak betiği çalıştırmalıdır.


Dosyam .sh, dosyayı oluşturduğum metin düzenleyicide açılır. Bunun yerine Terminal'de nasıl açabilirim? Doğru izinleri belirledim.
bart

(bart) doğrudan bulucu içinde bir betiği çalıştırmak için .com komut uzantısını eklemeniz gerekir.
rwenz3l
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.