Command line 如何运行applescript以输入终端命令

Command line 如何运行applescript以输入终端命令,command-line,terminal,applescript,Command Line,Terminal,Applescript,我一直在胡乱处理语音命令,但遇到了一个障碍。我正在尝试运行一个终端命令,但它不起作用。该命令使星号“雪花”落下。 这就是我目前所拥有的 tell application "Terminal" activate run script "ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=["2743".to_i(16)].pack("U*");a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;

我一直在胡乱处理语音命令,但遇到了一个障碍。我正在尝试运行一个终端命令,但它不起作用。该命令使星号“雪花”落下。 这就是我目前所拥有的

tell application "Terminal"
activate
run script "ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=["2743".to_i(16)].pack("U*");a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"};$stdout.flush;sleep 0.1}'"
end tell

我得到的只是错误

使用
do shell脚本
命令执行的命令行脚本。字符串转义可能会变得有点粗糙,因此也要小心。下面是一个简单的例子:

do shell script "say \"Today is `php -r \"echo date('l');\"`\""
编辑:

好的,我刚刚意识到您的脚本实际上取决于要在其中运行的终端窗口,所以通常的
do shell script
方法在这里不起作用

Applescript中仍然有很多未替换的引号,但我认为,与其修复这些引号,不如将整个ruby脚本放在一个独立的文件中,并将其传递给终端

stars.rb

#!/usr/bin/ruby

C=`stty size`.scan(/\d+/)[1].to_i;
S=["2743".to_i(16)].pack("U*");
a={};
puts "\033[2J";
loop {
  a[rand(C)]=0;
  a.each {
    |x,o|;
    a[x]+=1;
    print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"
  };
  $stdout.flush;
  sleep 0.1
}
AppleScript

tell application "Terminal"
   activate
   do script "~/stars.rb"
end tell

使用
do shell脚本
命令执行命令行脚本。字符串转义可能会变得有点粗糙,因此也要小心。下面是一个简单的例子:

do shell script "say \"Today is `php -r \"echo date('l');\"`\""
编辑:

好的,我刚刚意识到您的脚本实际上取决于要在其中运行的终端窗口,所以通常的
do shell script
方法在这里不起作用

Applescript中仍然有很多未替换的引号,但我认为,与其修复这些引号,不如将整个ruby脚本放在一个独立的文件中,并将其传递给终端

stars.rb

#!/usr/bin/ruby

C=`stty size`.scan(/\d+/)[1].to_i;
S=["2743".to_i(16)].pack("U*");
a={};
puts "\033[2J";
loop {
  a[rand(C)]=0;
  a.each {
    |x,o|;
    a[x]+=1;
    print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"
  };
  $stdout.flush;
  sleep 0.1
}
AppleScript

tell application "Terminal"
   activate
   do script "~/stars.rb"
end tell

使用
do shell脚本
命令执行命令行脚本。字符串转义可能会变得有点粗糙,因此也要小心。下面是一个简单的例子:

do shell script "say \"Today is `php -r \"echo date('l');\"`\""
编辑:

好的,我刚刚意识到您的脚本实际上取决于要在其中运行的终端窗口,所以通常的
do shell script
方法在这里不起作用

Applescript中仍然有很多未替换的引号,但我认为,与其修复这些引号,不如将整个ruby脚本放在一个独立的文件中,并将其传递给终端

stars.rb

#!/usr/bin/ruby

C=`stty size`.scan(/\d+/)[1].to_i;
S=["2743".to_i(16)].pack("U*");
a={};
puts "\033[2J";
loop {
  a[rand(C)]=0;
  a.each {
    |x,o|;
    a[x]+=1;
    print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"
  };
  $stdout.flush;
  sleep 0.1
}
AppleScript

tell application "Terminal"
   activate
   do script "~/stars.rb"
end tell

使用
do shell脚本
命令执行命令行脚本。字符串转义可能会变得有点粗糙,因此也要小心。下面是一个简单的例子:

do shell script "say \"Today is `php -r \"echo date('l');\"`\""
编辑:

好的,我刚刚意识到您的脚本实际上取决于要在其中运行的终端窗口,所以通常的
do shell script
方法在这里不起作用

Applescript中仍然有很多未替换的引号,但我认为,与其修复这些引号,不如将整个ruby脚本放在一个独立的文件中,并将其传递给终端

stars.rb

#!/usr/bin/ruby

C=`stty size`.scan(/\d+/)[1].to_i;
S=["2743".to_i(16)].pack("U*");
a={};
puts "\033[2J";
loop {
  a[rand(C)]=0;
  a.each {
    |x,o|;
    a[x]+=1;
    print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"
  };
  $stdout.flush;
  sleep 0.1
}
AppleScript

tell application "Terminal"
   activate
   do script "~/stars.rb"
end tell

转义AppleScript的shell命令的一种简单方法是将命令保存在文本文件中。运行下面的脚本并复制结果

set myText to read (choose file) as «class utf8»

转义AppleScript的shell命令的一种简单方法是将命令保存在文本文件中。运行下面的脚本并复制结果

set myText to read (choose file) as «class utf8»

转义AppleScript的shell命令的一种简单方法是将命令保存在文本文件中。运行下面的脚本并复制结果

set myText to read (choose file) as «class utf8»

转义AppleScript的shell命令的一种简单方法是将命令保存在文本文件中。运行下面的脚本并复制结果

set myText to read (choose file) as «class utf8»

非常感谢,但由于某些原因,我想要运行的脚本仍然给我错误,但它在终端中运行良好。我已经编辑了我的答案-请看一看,并让我知道它是否有帮助。啊哈!一直以来,我都在把它们寄给寻找者。谢谢-我将编辑我的答案。非常感谢,但由于某些原因,我想运行的脚本仍然给我错误,但它在终端中运行良好。我编辑了我的答案-请看一看,并让我知道它是否有帮助。啊哈!一直以来,我都在把它们寄给寻找者。谢谢-我将编辑我的答案。非常感谢,但由于某些原因,我想运行的脚本仍然给我错误,但它在终端中运行良好。我编辑了我的答案-请看一看,并让我知道它是否有帮助。啊哈!一直以来,我都在把它们寄给寻找者。谢谢-我将编辑我的答案。非常感谢,但由于某些原因,我想运行的脚本仍然给我错误,但它在终端中运行良好。我编辑了我的答案-请看一看,并让我知道它是否有帮助。啊哈!一直以来,我都在把它们寄给寻找者。谢谢-我会编辑我的答案。