A maneira mais fácil e integrada de fazer isso é arrastar os itens do Finder para uma janela do Terminal . Quando você os solta, o Terminal “digita” seus nomes de caminho (escapados). Você pode usar a edição de linha de comando do seu shell para inserir o restante do comando. Ou, se estiver pensando no futuro, digite o comando primeiro e depois arraste os itens.
A versão "arrastar primeiro":
- Selecione e arraste alguns itens do Finder para uma janela do Terminal que esteja mostrando um prompt de shell. O terminal inserirá os nomes de caminho (com escape).
- Digite Control+ A(vá para o início da linha; ⌃A é o padrão, mas varia de acordo com o shell / configuração).
- Digite seu comando e um espaço (ele será inserido antes dos nomes dos caminhos).
A versão "pensando à frente":
- Em qualquer ordem, faça os dois:
- Em uma janela do Terminal , digite a parte inicial do seu comando e espaço (tudo, exceto os nomes de caminho).
- Selecione alguns itens no Finder .
- Arraste os itens selecionados do Finder para a janela Terminal onde você digitou o comando.
- Ative a janela Terminal e pressione Return.
Você pode (como outras respostas indicaram) recorrer ao AppleScript ou Automator se precisar de uma solução mais automatizada. Como as “partes móveis” extras podem adicionar alguma complexidade à solução, você terá que ponderar os benefícios do processo acima (manual, mas flexível) contra a complexidade da implementação de uma ou mais das soluções automatizadas.
Algumas das possibilidades de automação incluem:
- um aplicativo de gota AppleScript
- um programa AppleScript simples iniciado pelo menu de scripts embutido ou outro iniciador
- obter nomes de caminho da seleção do Finder
- um fluxo de trabalho do Automator, aplicativo ou plug-in do Finder
- um
.command
arquivo executável (geralmente um script de shell; abra no Finder para executá-lo no Terminal )
- obter nomes de caminho da seleção do Finder (via osascript )
- alguma ferramenta de terceiros que já fornece a funcionalidade necessária
Os serviços são como o osx lida com esse tipo de coisa.
Sob o menu do aplicativo (neste caso, 'Finder'), existe (quase) sempre uma
Services
opção de menu que fornecerá serviços que se aplicam ao aplicativo atual e seu estado atual. Normalmente, o estado é o tipo de objeto selecionado (texto, arquivos / pastas, etc.).Eles podem ser ativados, desativados e atribuídos atalhos de teclado no painel Preferências do sistema, que só faz sentido para o último dos três
Keyboard
.Para criar um serviço que aplique um script de shell a arquivos / pastas no Finder:
Inicie o automator e faça um novo
Service
tipo de documento.files or folders
)Get Selected Finder Items
ação.Run Shell Script
Deve ser algo como isto:
O automator o colocará automaticamente em sua
~/Library/Services
pasta quando você salvar, o que o tornará disponível (quase) imediatamente viaApplication -> Services
menu ou no menu contextual (clique com o botão direito do mouse).fonte
No Mac OS X, o idioma preferido do script é Applescript. Você pode criar um droplet (um script que fará algo quando você soltar alguns arquivos sobre o ícone), colocar o ícone do script (que pode ser salvo como aplicativo) na área de trabalho e arrastar e soltar os arquivos que deseja passar para o roteiro.
Como alternativa, você pode usar ações de pasta. É possível associar um script Applescript a uma pasta que será executada sempre que alguns arquivos (ou diretórios) forem descartados sobre a pasta.
fonte
Eu também queria fazer isso, mas, diferentemente das soluções acima, eu queria produzir parâmetros citados para um script de shell. Esses outros métodos são bons, mas são como sugerir "apenas comando-v no terminal" quando o que você realmente deseja é
pbpaste
.Eu queria criar uma função de shell que eu possa usar em meus scripts que se expandissem para parâmetros de arquivo para cada seleção do Finder. Eu uso a casca de peixe e isso parece funcionar um pouco:
Usado (novamente na casca do peixe) como
convert-video (selection)
.Em uma função bash, pode ser necessário citar a saída com algo como
| tr '\n' '\0' | xargs -0 printf "%q" {}
no final desse comando osascript, não tenho certeza.(nota: tudo o que eu sei sobre scripts avançados de maçãs e shell aprendi nas últimas 2 horas e esquecerei amanhã)
fonte
Com base nas respostas acima, eu construí essa coisa
https://github.com/commonpike/DropShell
Basicamente, um aplicativo AppleScript que chama um shellfile localizado no aplicativo com os arquivos descartados como argumentos. Você pode modificar o script de shell conforme necessário.
fonte
Com base na resposta do commonpike, criei um AppleScript, que redireciona todos os arquivos soltos nele, para um script de shell com o nome correspondente. Simplesmente salve como aplicativo no ScriptEditor da Apple e renomeie como script.app para corresponder ao seu script.sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt
fonte