como posso executar um aplicativo com argumentos de linha de comando no mac os
<p>existe alguma maneira fácil de adicionar argumentos de linha de comando a um aplicativo em um mac? por exemplo, para executar o opera no modo de quiosque ou para usar um perfil diferente no firefox, posso digitar</p><pre><code>$ /applications/opera.app/contents/macos/opera -kioskmode $ /applications/firefox.app/contents/macos/firefox -p profilename -no-remote </code></pre><p>no windows, posso anexar os argumentos às propriedades de atalho, mas como os macs não usam atalhos por si só e executam os aplicativos diretamente, isso não é possível.</p><p>eu descobri que o lançamento dos aplicativos através do bash ou do applescript funciona parcialmente:</p><pre><code># bash #!/bin/sh /applications/firefox.app/contents/macos/firefox -p default -no-remote # applescript do shell script "exec /applications/opera.app/contents/macos/opera -kioskmode" </code></pre><p>eu posso fazer isso executável e atribuir um ícone e tudo funciona muito bem, exceto que quando eu executo um desses pseudo programas, uma janela de terminal ou um ícone do applescript permanece aberto enquanto o aplicativo estiver aberto. presumivelmente, usar o comando applescript <code>open</code> evitaria isso, mas como não estou executando o aplicativo como está empacotado (apenas <code>/applications/firefox</code>), ele não funciona.</p><p>então, existe uma maneira melhor de executar aplicativos com argumentos de linha de comando? caso contrário, existe uma maneira de impedir que uma sessão de terminal persistente ou ícone do applescript permaneça aberto enquanto o aplicativo estiver aberto?</p><p><strong> editar </strong></p><p>de acordo com a <a href="https://wiki.mozilla.org/mailnews:logging#mac">página do mozilla</a> , é melhor usar um script para executar o aplicativo com argumentos. adicionar um <code>&amp;</code> ao final do script mata a janela do terminal persistente. o único aborrecimento agora é que ele abre uma janela de terminal morta e desconectada (que é melhor que a persistente, mas ainda assim ...)</p><pre><code>#!/bin/sh /applications/firefox.app/contents/macos/firefox -p default -no-remote &amp; </code></pre>
<p>aqui está a minha melhor solução: crie um applescript com:</p><pre><code>do shell script "/applications/firefox.app/contents/macos/firefox -p default -no-remote &amp; killall firefox.app" </code></pre><p>e <strong>salve como um aplicativo</strong>.</p><p>você pode colocar qualquer aplicativo com qualquer args na primeira parte. a parte depois do <code>&amp;</code> precisa matar o que você nomeou seu script + .app. você verá o aplicativo de script aparecer no banco dos réus, mas ele desaparecerá.</p><p>nota: o script não funcionará corretamente quando executado a partir do editor de script, somente quando executado a partir do aplicativo de script criado.</p>
<p>se bem entendi, você deseja enviar dados para um programa em execução dentro de uma sessão de tela. você pode fazer isso com o comando <code>stuff</code> da tela. use a tela <code>-x</code> opção para executar um comando em uma sessão de tela sem anexar a ela.</p><pre><code>screen -s sessionname -p windowname -x stuff 'command1 command2 ' </code></pre><p>se você quiser ver a saída do programa, consulte os comandos <code>hardcopy</code>, <code>log</code> e <code>logfile</code>.</p> olá, recomendo que você altere os atalhos nas preferências do seu navegador:   

https://help.opera.com/en/latest/shortcuts/ acabamos de achar o con/aux do linux?

estranho que tentei reproduzir o erro com:

$ touch opera+\'\$\'\\275\'\'+\'\$\'\\372\'\'o\ 17\ 05\ 2019.mp4

$ ls opera*

'opera+'\''$'\''\275'\'''\''+'\''$'\''\372'\'''\''o 17 05 2019.mp4'

$ rm -i opera+\'\$\'\\275\'\'+\'\$\'\\372\'\'o\ 17\ 05\ 2019.mp4

rm: re… Esta é uma questão bastante ampla, como aplicações de programação GUI no Windows pode ser feito de muitas maneiras.


Há duas partes principais para o desenvolvimento de qualquer aplicativo GUI: o **idioma** ea **API / quadro** . Considerando que você está interessado em aprender a criar aplicativos do Windows GUI, a língua não é realmente um ponto de foco para você. Portanto, você deve escolher um idioma que você já conhece e trabalho com um quadro ou API que pode ser aproveitada por idioma escolhido.


Se você quiser usar C você está praticamente restrita a lidar com a API Win32-se, no caso de leitura que [Petzold](http://rads.stackoverflow.com/amzn/click/157231995X) ou [Richter](http://rads.stackoverflow.com/amzn/click/0735624240) seria ótimos lugares para começar. A API Win32 pode ser muito assustador, mas vale bem a pena o esforço para aprender (IMHO). Há uma abundância de tutoriais sobre Win32 na web, e há sempre [MSDN](http://msdn.microsoft.com/) , com uma referência / guia completo para a API Win32. Certifique-se de não cobrir apenas o API, mas outras áreas como recursos / diálogos como eles são blocos de construção para a sua aplicação Win32.


Se você quiser usar C ++ você tem todas as opções que você tem quando se utiliza C mais alguns outros. Eu recomendo ir com a API Win32 diretamente, e, em seguida, avançar para um quadro conhecido como MFC, Qt, wxWindows ou GTK para que você possa gastar menos tempo trabalhando com código clichê e em vez disso se concentrar em escrever a lógica do aplicativo. Os últimos 3 opções Eu apenas listados têm a vantagem de ser multi-plataforma, assim você não precisa se preocupar muito com as questões específicas da plataforma. Dado que você disse que quer trabalhar com o Windows, eu vou assumir que você está interessado em se concentrar no que ao invés de multi-plataforma - para ir com MFC, mas passar algum tempo com a API Win32 primeiro a se familiarizar com alguns dos os conceitos.


Ao lidar com MFC e Win32 API, é uma boa idéia para tentar obter uma sólida compreensão da terminologia antes de escrever código. Por exemplo, você precisa entender o que a [bomba de mensagem](http://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows) é, e como ele funciona. Você precisa saber sobre conceitos como " [desenho proprietário](http://www.codeproject.com/KB/buttons/nativewin32xpthemes.aspx) controles", e [subclasses](http://msdn.microsoft.com/en-us/library/ms997565.aspx) . Quando você entender essas coisas (e mais), você vai encontrá-lo mais fácil trabalhar com MFC, porque ele usa a terminologia similar em suas interfaces de classe (por exemplo. Você precisa saber o que "traduzir mensagens" significa antes que você possa compreender como e quando usar [PreTranslateMessage](http://msdn.microsoft.com/en-us/library/kkbhxcs2(VS.80).aspx) ).


Você também pode usar Managed C ++ para escrever aplicações GUI .NET, mas eu li em alguns lugares que Managed C ++ realmente não estava destinado a ser usado dessa maneira. Em vez disso, deve ser usado como um gateway entre código nativo / gerenciado e código gerenciado. Se você estiver usando .NET é melhor usar uma linguagem .NET como VB.NET ou C # para construir suas GUIs.


Então, se você *está* indo para usar NET, você tem atualmente a escolha do [WinForms](http://msdn.microsoft.com/en-us/netframework/aa497342.aspx) biblioteca, ou [WPF](http://en.wikipedia.org/wiki/Windows_Presentation_Foundation) . Pessoalmente, sinto que você estaria perdendo tempo aprendendo a construir aplicações WinForms dado que WPF é projetado para substituí-lo. Ao longo do tempo WPF se tornará mais prevalente e WinForms muito provavelmente vai morrer. WPF tem um conjunto API muito mais rica, e não sofre de muitas das limitações que Winforms faz. Se você escolher esse caminho, no entanto, você vai sem dúvida tem que aprender [XAML](http://msdn.microsoft.com/en-us/library/ms752059.aspx) , que é uma linguagem de marcação que impulsiona aplicativos WPF. Esta tecnologia é vinda de idade, e há muitos ótimos lugares para aprender sobre ele. Primeiro, existem sites como o [LearnWPF](http://learnwpf.com/) e [DrWPF](http://www.drwpf.com/) que têm alguns realmente grandes artigos. Em segundo lugar, há [uma abundância](http://rads.stackoverflow.com/amzn/click/0321374479) de [qualidade](http://rads.stackoverflow.com/amzn/click/0596510373)  [livros](http://rads.stackoverflow.com/amzn/click/0672328917) sobre o [tema](http://rads.stackoverflow.com/amzn/click/1590599551) .


Então, para resumir, uma vez que você escolheu seu idioma e tecnologia, o caminho é realmente muito fácil. Basta pegar um livro ou dois, ler alguns blogs, entrar em algumas amostras de código .. eo mais importante ... escrever código. Continue escrevendo, continuar a fazer erros, e continuar a aprender com eles.


Como nota final ...



> 
> Em outras palavras, Silverlight. Se você não quiser ir a rota MS que você pode dar de Adobe Flash / Flex um olhar ver. Ambos Silverlight e Flash / Flex construir RIA. Que eu acho que é para onde estamos indo. Eles dias do Office como aplicativos são numerados
> 
> 
> 


Não estou de acordo em tudo. Silverlight não é o mesmo que WPF. Silverlight é específica da web, e tem apenas um subconjunto de recursos do WPF. Dado que a questão pede para aplicativos do Windows GUI, Flash / Flex RIA Apps não são realmente uma sugestão de ajuste. Eu também não concordo que os dias de aplicativos rich client (como o Office) estão contados em tudo.


Espero que ajude. Boa sorte :) <p>enviar uma nova linha <code>\n</code> executará o comando. <code>.end()</code> sairá do shell.</p><p>modifiquei o exemplo para trabalhar com o bash enquanto estou no osx.</p><pre><code>var terminal = require('child\_process').spawn('bash'); terminal.stdout.on('data', function (data) { console.log('stdout: ' + data); }); terminal.on('exit', function (code) { console.log('child process exited with code ' + code); }); settimeout(function() { console.log('sending stdin to terminal'); terminal.stdin.write('echo "hello $user. your machine runs since:"\n'); terminal.stdin.write('uptime\n'); console.log('ending terminal session'); terminal.stdin.end(); }, 1000); </code></pre><p>a saída será:</p><pre><code>sending stdin to terminal ending terminal session stdout: hello root. your machine runs since: stdout: 9:47 up 50 mins, 2 users, load averages: 1.75 1.58 1.42 child process exited with code 0 </code></pre> <p>o operador <a href="http://php.net/manual/en/language.operators.errorcontrol.php"><code>@</code></a> tells php para suprimir mensagens de erro, para que elas não sejam mostradas.</p><p>por exemplo, usando:</p><pre><code>$result = mysql\_query("this is an invalid query"); </code></pre><p>resultaria em um aviso sendo mostrado, informando que a consulta mysql é inválida, enquanto</p><pre><code>$result = @mysql\_query("this is still an invalid query"); </code></pre><p>não faria.</p><p>note, no entanto, que esta é uma prática de programação muito ruim, pois não faz com que o erro desapareça, apenas os esconde e torna a depuração muito pior, já que você não consegue ver o que está realmente errado com seu código.</p><p>em vez de usar <code>@</code>, você deve desativar <s><code>error\_reporting</code> e <code>display\_errors</code></s> apenas <code>display\_errors</code> em <a href="http://no.php.net/manual/en/errorfunc.configuration.php">php.ini</a> </p> crie um método público no seu form principal e faça a chamada de onde quiser.procedure fechar();begin if( application.messagebox(deseja sair?, sair, mb\_yesno+mb\_iconquestion) = id\_yes) then ... <p><code>#pragma comment</code> é uma diretiva de compilador que indica o visual c++ para deixar um comentário no arquivo de objeto gerado. o comentário pode ser lido pelo vinculador quando ele processa arquivos de objeto.</p><p><code>#pragma comment(lib, libname)</code> informa ao vinculador para adicionar a biblioteca 'libname' à lista de dependências da biblioteca, como se você tivesse adicionado nas propriedades do projeto em <code>linker-&gt;input-&gt;additional dependencies</code></p><p>veja <a href="http://msdn.microsoft.com/en-us/library/7f0aews7(v=vs.120).aspx">#pragma comment</a> no msdn</p> <p>alguns pensamentos:</p><ol> <li><strong>os ícones garantem confundir a maioria das pessoas quando usados ​​isoladamente</strong>. adoro completamente a maneira como os ícones do firefox têm texto quando há espaço para tê-los. portanto, tente pensar um pouco mais sobre se há alguma maneira de ter um rótulo de texto ao lado do ícone.</li> <li>quanto ao ícone, que tal três ícones de filtro sobrepostos?</li> <li>mas, dando um passo atrás, <strong>você pode dividir a tarefa em duas operações</strong> - <strong>selecionar tudo</strong> então <strong>aplicar filtros selecionados</strong>? não sei o contexto do seu trabalho, mas se você puder selecionar mais de um filtro, isso poderá funcionar bem. certamente muitos aplicativos fazem isso.</li> </ol> <p>ainda outra solução usando as sugestões anteriores, mas com o erro de análise &quot;correto&quot; de <code>argparse</code>:</p><pre><code>def str2bool(v): if v.lower() in ('yes', 'true', 't', 'y', '1'): return true elif v.lower() in ('no', 'false', 'f', 'n', '0'): return false else: raise argparse.argumenttypeerror('boolean value expected.') </code></pre><p>isso é muito útil para fazer comutadores com valores padrão; por exemplo</p><pre><code>parser.add\_argument("--nice", type=str2bool, nargs='?', const=true, default=nice, help="activate nice mode.") </code></pre><p>permite-me usar:</p><pre><code>script --nice script --nice &lt;bool&gt; </code></pre><p>e ainda usar um valor padrão (específico para as configurações do usuário). uma desvantagem (indiretamente relacionada) com essa abordagem é que os 'narjos' podem pegar um argumento posicional - veja <a href="https://stackoverflow.com/questions/26985650/argparse-do-not-catch-positional-arguments-with-nargs">esta questão relacionada</a> e <a href="http://bugs.python.org/issue9338">este relatório de bug argparse</a> .</p>