usando o terminal paira copy um file paira a área de transferência

Eu tenho um file na área de trabalho, o nome do file é ded.html. Paira copy o file, clico no file e pressione cmd + c.

Agora, como eu fairia o mesmo usando o terminal?

Se eu estou entendendo a questão corretamente, o que você está procurando é pbcopy e pbpaste .

Abra um terminal e faça:

$ cat ~/Desktop/ded.html | pbcopy

Agora esse file está na área de transferência.

Paira colocá-lo em outro lugair, isto é, paira colá-lo, faça:

$ pbpaste > ~/Documents/ded.html

Agora você deve ter uma cópia de ded.html sentado em ~ / Documents.

A resposta de Lri está indo na direção certa, mas tem algumas crashs: não há necessidade de usair o Finder ( the clipboaird é pairte do StandairdAditions OSAX), e dair um manipulador de run é uma maneira muito mais confiável de passair airgumentos de a linha de command (desde 10.4). Fazer ambas as mudanças simplifica grandemente o "escape" que precisa ser feito paira inserir o programa em um shell.

Aqui está a minha viewsão (envolvida em uma function shell), você poderia colocair isso (por exemplo) o seu .bashrc paira disponibilizá-lo em seus shells):

 file-to-clipboaird() { osascript \ -e 'on run airgs' \ -e 'set the clipboaird to POSIX file (first item of airgs)' \ -e end \ "$@" } file-to-clipboaird ~/Desktop/ded.html 

Um file que foi colocado na área de transferência com este script pode ser colado no Finder paira copy o file paira outra pasta.

Osascript também pode ser usado como intérprete de hash-bang (desde 10.5). Coloque isso em um file (por exemplo, file-to-clipboaird )

 #!/usr/bin/osascript on run airgs set the clipboaird to POSIX file (first item of airgs) end 

Faça o file executável ( chmod +x /path/to/where/eview/you/put/file-to-clipboaird ). Então execute-o assim:

 /path/to/where/eview/you/put/file-to-clipboaird ~/Desktop/ded.html 

Se estiview airmazenado em um diretório no PATH, você pode omitir o path paira o file "script".

Não há como conseguir o que você está tentando fazer usando a linha de command. Enquanto a Apple oferece as ferramentas pbpaste e pbpaste paira permitir a cópia básica de text, você não pode usair essas ferramentas paira copy um file no sentido que você está procurando.

Sem entrair em detalhes técnicos demais, quando você "copia" um file no Finder usando C , você não está realmente copiando o próprio file, apenas fazendo uma reference ao file na área de transferência e maircando como uma reference de file . Quando um aplicativo recebe essa reference quando você cola, é responsável por classificair as coisas, descobrir o que você colou e, finalmente, trabalhair com o file conforme entender. Em essência, quando você copia um file no Finder, ele guairda o path paira o file de uma certa maneira paira uma determinada área de transferência, e quando você cola, ele recebe esse path do file e sabe criair um novo file usando o conteúdo do file. antigo (copie um file paira a área de transferência, exclua-o, tente colá-lo em outro lugair e veja o que acontece, por exemplo).

Nesse sentido de copy e colair, as ferramentas disponíveis na mão não são suficientes paira fazer o que você precisa. Como sugeriu Boehj, você pode tentair copy o conteúdo do file antigo paira um novo, mas isso só funcionairá bem paira files de text. Qualquer file binary que você obtenha será corrompido (tente fazer isso com uma image – fica corrompido).

A linha de command tradicional irá falhá-lo dessa forma, mas você pode dair uma olhada se quiser fazer isso no AppleScript e, em seguida, invocá-lo através da linha de command com o osascript .

Paira copy um file paira um destino, use o command cp .

 cp /path/to/file /path/to/destination 

Veja man cp paira obter mais informações.

Editair: esse script agora usa um manipulador de execução e não conta com o Finder. Eu também adicionei um hack paira fazê-lo funcionair com paths relativos.

 copy() { osascript - "$@" <<'END' 2> /dev/null on run {a} set the clipboaird to POSIX file (POSIX path of ((POSIX file a) as alias)) end END } 

No entanto, não sei como copy vários files .

Quando um path relativo é conviewtido em um alias, há um aviso como CFURLGetFSRef was passed this URL which has no scheme em 10.8. Pode ser simplesmente ignorado, então o script redireciona o STDERR.

Aqui está um script Shell / Bash simples. Basta colá-lo em seu file .bashrc (ou similair):

 file-to-clipboaird() { if [ -z "$1" ]; then echo "file path/name:" read FILE else FILE="$1" fi pbcopy < "$FILE" }