Tengo un archivo en el escritorio, el nombre del archivo es ded.html. Para copiar el archivo, hago clic en el archivo y presiono cmd+c.
Ahora, ¿cómo haría yo lo mismo usando la terminal?
Tengo un archivo en el escritorio, el nombre del archivo es ded.html. Para copiar el archivo, hago clic en el archivo y presiono cmd+c.
Ahora, ¿cómo haría yo lo mismo usando la terminal?
Si entiendo bien la pregunta, lo que buscas es pbcopy
y pbpaste
.
Abre una terminal y hazlo:
$ cat ~/Desktop/ded.html | pbcopy
Ahora ese archivo está en el portapapeles.
Para ponerlo en otro lugar, es decir, para pegarlo, hazlo:
$ pbpaste > ~/Documents/ded.html
Ahora deberías tener una copia de ded.html en ~/Documentos.
La respuesta de Lri se dirige en la dirección correcta, pero tiene un par de defectos: no hay necesidad de usar Buscador ( the clipboard
es parte de la StandardAdditions OSAX), y dar un run
es una forma mucho más fiable de pasar argumentos desde la línea de comandos (desde 10.4). Realizar ambos cambios simplifica enormemente la "fuga" que hay que hacer para entrar en el programa en un shell.
Aquí está mi versión (envuelta en una función de la concha - podrías poner esto en (por ejemplo) tu .bashrc
para que esté disponible en sus conchas):
file-to-clipboard() {
osascript \
-e 'on run args' \
-e 'set the clipboard to POSIX file (first item of args)' \
-e end \
"$@"
}
file-to-clipboard ~/Desktop/ded.html
Un archivo que se ha puesto en el portapapeles con este script puede entonces ser pegado en Buscador para copiar el archivo a otra carpeta.
osascript también puede utilizarse como intérprete de hash-bang (desde el 10.5). Ponga esto en un archivo (por ejemplo. file-to-clipboard
)
#!/usr/bin/osascript
on run args
set the clipboard to POSIX file (first item of args)
end
Haga el archivo ejecutable ( chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Entonces hazlo así:
/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html
Si se almacena en un directorio del PATH, entonces puede omitir la ruta del archivo "script".
No hay manera de lograr lo que está tratando de hacer usando la línea de comando. Mientras que Apple ofrece la pbcopy
y pbpaste
herramientas para permitir la copia básica de texto, no puedes usar estas herramientas para copiar un archivo en el sentido que estás buscando.
Sin entrar en demasiados detalles técnicos, cuando "copias" un archivo en el Finder usando ⌘C no estás copiando el archivo en sí, sólo haces una referencia al archivo en el portapapeles y lo marcas como una referencia de archivo. Cuando una aplicación recibe esta referencia al pegar, tiene la responsabilidad de ordenar las cosas, averiguar lo que ha pegado y, en última instancia, trabajar con el archivo como considere oportuno. En esencia, cuando se copia un archivo en el Finder, guarda la ruta del archivo de una determinada manera en un determinado portapapeles, y cuando se pega, recibe esa ruta de archivo y sabe crear un nuevo archivo utilizando el contenido del anterior (copiar un archivo en el portapapeles, borrarlo, intentar pegarlo en otro lugar y ver qué pasa, por ejemplo).
En este sentido de copiar y pegar, las herramientas disponibles a mano no son suficientes para hacer lo que se necesita. Como sugirió Boehj, puedes intentar copiar el contenido del archivo antiguo en uno nuevo, pero esto sólo funcionará bien para los archivos de texto. Cualquier archivo binario que obtenga estará corrompido (intente hacerlo con una imagen - se corromperá).
La línea de comandos tradicional te fallará de esta manera, pero puedes echar un vistazo si quieres hacer esto en AppleScript, y luego invocarlo a través de la línea de comandos con osascript
.
Edición: este script ahora usa un controlador de ejecución y no depende del Finder. También he añadido un hack para que funcione con rutas relativas.
copy() {
osascript - "$@" <<'END' 2> /dev/null
on run {a}
set the clipboard to POSIX file (POSIX path of ((POSIX file a) as alias))
end
END
}
No conozco ninguna manera de copiar varios archivos sin embargo.
Cuando una ruta relativa se convierte en un alias, hay una advertencia como CFURLGetFSRef was passed this URL which has no scheme
en 10.8. Puede ser simplemente ignorado, por lo que el script redirige a STDERR.
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.