Bir dosyayı (örn.bir .sh betiği) yürütülebilir hale getirme, böylece bir terminalden çalıştırılabilir hale getirme

Bende bir tane var. script.sh dosya ve bu dosyanın türü shellscript dosyasıdır. Bu dosyayı application / x yürütülebilir dosyası olarak yapmak istiyorum. Bunu nasıl yapabilirim?

Dosyayı yürütülebilir olarak işaretleyebilirsiniz:

chmod +x filename.sh

Daha sonra bu şekilde yürütebilirsiniz:

./filename.sh

Başlatmak için farklı bir komut kullanmak isterseniz, bir takma ad ekleyebilirsiniz:

gedit ~/.bashrc

Bunu dosyanın sonuna ekleyin:

alias <new name>='/home/<full path to script>/filename.sh'

Yeni bir terminal oturumu açın veya yazın source ~/.bashrc başvurmak için terminalinizde.Ardından, komut dosyasını başlatmak için yeni adı kullanmanız yeterlidir.

Bir dosyayı yürütülebilir hale getirmenin iki yolu vardır:

GUI Yöntemi:

Dosyayı sağ tıklatın ve Özellikler'i seçin.İzinler sekmesine gidin ve kutuyu işaretleyin Execute: [ ] Allow executing file as program veya Nautilus'ta Program: [ ] Allow this file to run as a program Thunar içinde.

Terminal / Komut yöntemi:

Her ikisini de kullanabilirsiniz:

cd /to/my/required/directory

Sonra koş

chmod +x filename.extension

Ya da sadece koş:

chmod +x /path/to/your/filename.extension

chmod ayrıca bazı daha gelişmiş seçenekler var mı:

Boşluklar ayrıldığını göstermek içindir.: - rwx --- ---

İlk set --- kullanıcıdır. İkincisi Gruptur ve sonuncusu Diğeridir (başkası)

r okuma, w yazma ve x yürütme anlamına gelir.

Herkes tek Grup okumak, ama Kullanıcı yürütmek ve okuma yazma (ama nedense değil yürütme) izin vermek olurdu yani :

-rw- rx- r-- Ancak bu, komuta şu şekilde eklenecektir:

chmod +rw-rx-r-- /path/to/file.extension

chmod bunu sayılarla da yapabilirsiniz. İkili (1,2 ve 4 olduğu için sanırım) dayanmaktadır.

Yani bu sayılar var:

Kullanıcı tarafından çalıştır 100.Gruba göre çalıştır 010.Diğer tarafından yürütülür 001.

Kullanıcı tarafından yazma 200.Gruba göre yaz 020.Başkaları tarafından yazmak 002.

Kullanıcı tarafından okunan 400.Gruba göre oku 040.Başkaları tarafından okunan 004.

Ardından istediğiniz kombinasyonu elde etmek için bunları bir araya getirirsiniz.

Herkes tek Grup okumak, ama Kullanıcı çalıştırıp (ama nedense yürütmek değil) yazmak için izin vermek olurdu yani :

400 + 040 + 004 ve 010 ve 200

Bu kadar ekler 600 + 050 + 004 = 654.

Daha sonra komutu çalıştırabilirsiniz.

chmod +654 /path/to/file.extension bunu ayarlamak için.

Ve yazabileceğiniz tüm izinleri ayarlamak için:

chmod +rwxrwxrwx /path/to/file.extension

Veya (bu yazmak biraz daha kolay, ancak her birini hatırlamak daha zor):

chmod +777 /path/to/file.extension

Son olarak, şunları yapabilirsiniz:

chmod -777 /path/to/file.extension

Tüm izinleri herkesten almak için.

Ve:

chmod +300 /path/to/file.extension

Başka izinleri etkilemeden (örn. Yürütme izinleri) kullanıcı için okuma ve yazma eklemek için kullanılır.

Bu web sitesi istediğiniz seçenekleri işaretleyebileceğiniz çok kullanışlı küçük bir ızgara onay kutusu var ve size komutu veriyor:

enter image description here

Bununla birlikte, olası tüm kombinasyonların kullanılması mantıklı değildir; kullanılan başlıca kombinasyonlar şunlardır:

755 - Owner her şeye sahiptir ve Group ve Other okuyabilir ve yürütebilir

700 - Owner tüm

644 - Owner okuyabilir ve yazabilir ve Group ve Other okuyabilir

600 - Owner okuma yazma

Ve önemsiz olmayan kullanıcı grupları kullanıyorsanız:

775 - Owner okuyabilir ve yazabilir ve Group ve Other okuyabilir

770 - Owner ve Group hepsine sahip ol ve Other okuyabilir ve yürütebilir

750 - Owner her şeye sahiptir ve Group okuyabilir ve yürütebilir

664 - Owner ve Group okuyabilir ve yazabilir ve Other sadece okuyabilir

660 - Owner ve Group okuma yazma

640 - Owner okuyabilir ve yazabilir ve Group okuyabilir

ın / tmp dışında 777 ve 666 nadiren kullanılır.

Teşekkürler Ilmari Karonen için işaret etmek ortak kullanımda olanlar!

Koşmak:

chmod +x /path/to/file.sh

Çalıştırılamaz hale getirmek için şunu çalıştırın:

chmod -x /path/to/file.sh

Örneğin ben yarattım .sh dosya:

vi tester12.sh

Vi editörüne kod yazdıktan sonra, vi editöründen çıkacağım:

:wq!chmod +x tester12.sh./tester12.sh

Tüm kullanıcıların komut dosyanızı çalıştırmasına izin verin

Belirtildiği gibi, dosyanın yürütme bitini çalıştırılabilir hale getirmek için ayarlayabilirsiniz chmod +x. Ama aynı zamanda kullanabilirsiniz chmod a+x:

$ ll file_command.txt-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt$ chmod a+x file_command.txt$ ll file_command.txt-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*

notlar:

  • Bir senaryo ile bitmek zorunda değildir .sh sonunda olabilir .txt burada gösterilen veya hiç bir uzantısı var.
  • Sadece yerine +x (yalnızca komut dosyasını çalıştırabilirsiniz), kullan a+x böylece tüm kullanıcılar komut dosyasını çalıştırabilir.
  • Dosya adı bir * yürütülebilir olduğunu belirtmek için eklenir. Ayrıca dosya adı çoğu sistemde rengi yeşile çevirir.

make script executable


Bir komut dosyasını çalıştırılabilir hale getirmeden çalıştırma

Bash betiğini çalıştırılabilir hale getirmeden yine de çalıştırabilirsiniz. Örneğin:

$ echo "echo Hello World" > file_command.txt$ cat file_command.txtecho Hello World$ bash file_command.txtHello World

notlar:

  • Önce aşağıdakileri içeren bir komut dosyası oluşturuyoruz echo Hello World.
  • Sonra çağrılan betiği onaylıyoruz file_command.txt doğru.
  • Son olarak, komut dosyasını arayarak çalıştırıyoruz bash ve ona senaryo adını iletiyorum. Bu bashkomut aslında şu şekilde saklanır /bin/bash ve tüm Ubuntu sistemlerinde çalıştırılabilir.
  • Komut dosyası oluşturmak, komut dosyasını eklemekten kurtarır. bar #!/bin/bash bir senaryonun ilk satırı olarak.
  • Bir komut dosyası oluşturmak sizi çalıştırılabilir hale getirmekten kurtarır chmod +x veya chmod a+x.

ilgili Terminalde .sh dosyalarını nasıl çalıştırabilirim?

[ .sh dosyalarını nasıl çalıştırabilirim?] (command line - How do I run .sh scripts? - Ask Ubuntu )

Bu bir kopya değil, çünkü özellikle application / x-çalıştırılabilir hale getirilmesini istedim. Diğer soru sadece terminalde sh dosyasını açmak için sorar.