Terminalde bir satır açan ve bir satır yazan bir dosya oluşturun.


1

Tıklandığında Terminal'i açan ve belirli bir satırı yazan ve yürüten bir dosya oluşturmanın bir yolu var mı? (örneğin say hello world)

Yanıtlar:


2

Basit, ama tamamen yanılabilir bir yaklaşım sadece bir kabuk betiği yazmaktır. Bunu denilen bir dosyaya kaydedin mysay.sh:

#!/bin/sh
say hello world
say number five is alive

XCode kurulu olmadığı sürece, üzerine çift tıkladığınızda Terminalde açılacak olan.

Bunu AppleScript ile de yapabilirsiniz ve biraz daha dayanıklıdır çünkü .shdosyalar için varsayılan uygulama Terminal değilse endişelenmenize gerek yoktur.

tell application "Terminal"
  set currentTab to do script "/usr/bin/say hello world"
  do script "/usr/bin/say number five is alive" in currentTab
end tell
delay 5
tell application "Terminal" to quit

Bunu AppleScript Editör'den bir Uygulama olarak kaydedin; üzerine çift tıklayabilirsiniz; Mac'iniz sizinle konuşacaktır. İsterseniz Terminal oturumunu daha sonra biraz daha AppleScript ile bekleyebilir ve kapatabilirsiniz.


Ah dostum, bu mükemmel. Çok teşekkürler. Bekleme hakkında bahsettiğiniz ve daha sonra Terminal'i kapatmaktan bahsettiğiniz ekstra adımlar bilmek harika olurdu ...
bravokiloecho

Gecikme ile.
Ian C.

İkinci yöntemi izledim ve masaüstüme kaydettim ve mükemmel çalışıyor. Ancak, kendime e-postayla göndermeyi ve sonra indirilen dosyayı açmayı denersem, "Klasik ortam artık desteklenmiyor" çünkü açamadığım hata mesajını veriyor. bunu nasıl çözeceğimize dair bir fikri olan?
bravokiloecho

Bu garip. Hangi e-posta programı? Virüs tarayıcı? Bir şey size uygulama paketi munged gibi geliyor.
Ian C.

Gmail kullanıyorum. İndirilen dosyayı açmak için Konsol Kuvveti Komut Dosyası Düzenleyicisi kullanırsam şu hata mesajını alıyorum: Komut dosyası olmadığından uygulama veya uzantı sözlüğü okunamıyor.
bravokiloecho

3

Yapmaya çalıştığınız şey, bir "kabuk betiği" yazmaktır (daha sonra google’a gitmeniz gerekebilir).

Bir kabuk betiğinin ilk satırı hangi tercümanın kullanılacağını belirtmelidir. Senin durumunda, shnormal Bourne kabuğu için kullanın . Bunu şöyle bir 'shebang' olarak adlandırılan ile yazıyorsunuz:

#!/bin/sh

bu yazdıktan sonra çalıştırmak istediğiniz komutları yazın, sizin durumunuzda say hello world. Kabuk tercümanı bunu terminale yazdığınız gibi okuyacaktır.

Senin durumunda, son dosyanız şöyle olmalı:

#!/bin/sh
say hello world

Bunu TextEdit.app dosyasına yazarsanız, düz metin modunda ( Cmd+ Shift+ ile değiştirilir T) kaydettiğinizden emin olun . Uzantı .commandveya ile kaydetmeyi seçebilirsiniz .sh.

Eğer çift tıklayarak çalıştırmak istiyorsanız .commanduzatma tavsiye ederim .

Ve bu kadar!

Olası hata: Eğer çalıştırırken şöyle bir hata mesajı alırsınız:

Uygun erişim ayrıcalıklarına sahip olmadığınız için “[dosyaadı]” dosyası çalıştırılamadı.

Kendine yürütme izni vermen gerekiyor. Bu işlemi yapmak için:

chmod u+x path/to/my/file

Dosya yolunun ne olduğunu bilmiyorsanız, sadece şunu yazın:

chmod u+x

bir boşluk bırakın ve dosyayı pencereye sürükleyin.

Merak ediyorsanız, u+xkullanıcı (sahibi) yürütme haklarını vermek anlamına gelir.


Hepsi gerçekten yardımcı oldu, çok teşekkürler. , Onları çalıştırmak zorunda kalmadan hemen çalışır Biriyle bunu e-posta eğer böylece kabuk kendisi (içinde yürütme haklarını içerecek şekilde herhangi bir yolu var mı chmod u+x?
bravokiloecho

@negatron haha, hayır, onun tavuk yumurtası tarzı bir şey, senaryoyu çalıştırmak için yürütme haklarına ihtiyacınız var; ve betiğin kendisine yürütme hakkı vermesini istiyorsanız, onu çalıştırmanız gerekir. Ayrıca, uygulama haklarını vermeniz gerekmediyse makinelere bulaşmanın ne kadar kolay olacağını hayal edin; Her şeyden önce var olmalarının bir nedeni var.
Hawken

Haklısın! Yine de benim için ayıp!
bravokiloecho

1

Bunu, yukarıda belirtildiği gibi AppleScript ile, Ian C ile de yapabilirsiniz. Ancak, tek komutu daha az satırda ve a ile yapabilirsiniz delay. İşte komutu çalıştıracak bir AppleScript, sonra 5 saniye bekledikten sonra terminalden çıkın.

tell application "Terminal" to do script "say hello world"
delay 5
tell application "Terminal" to do script "logout"
tell application "Terminal" to quit

@Ian C.'nin yöntemine göre sadece alternatif bir yöntem. Ayrıca, Ian'ın .sh dosyasını da alabilir ve XCode'unuz varsa, Terminal'de açacak ve AppleScript ile aynı şeyi gecikme olmadan yapacak şekilde, .command olarak yeniden adlandırabilirsiniz. Bu yardımcı olur umarım.


Gerçekten temiz teşekkürler. Teşekkür ederim. Sadece bir zamanlayıcıya dayanmak yerine, konuşma bittikten sonra quit komutunun yürütülmesinin bir yolu var mı?
bravokiloecho

Evet, sadece "gecikme 5" satırını silin.
ruddfawcett

Bu, Terminal uygulamasının tamamını öldüreceği için gerçekten istenmeyen bazı etkilere neden olabilir
Hawken

Komiserin idamından sonra askerin Terminal'in kapanmasını istediğini sanıyordum?
ruddfawcett
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.