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 lo mismo con el 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 lo mismo con el terminal?
Respuestas:
Si entiendo bien la pregunta, lo que buscas es pbcopy
y pbpaste
.
Abra una terminal y haga:
$ cat ~/Desktop/ded.html | pbcopy
Ahora ese archivo está en el portapapeles.
Para ponerlo en otro lugar, es decir, para pegarlo, haga:
$ pbpaste > ~/Documents/ded.html
Ahora debería tener una copia de ded.html en ~ / Documentos.
cat ~/.emulator_console_auth_token | auth <read_content>
?
La respuesta de Lri se dirige en la dirección correcta, pero tiene un par de fallas: no es necesario usar Finder ( the clipboard
es parte del StandardAdditions OSAX), y dar un run
controlador es una forma mucho más confiable de pasar argumentos desde la línea de comandos (desde 10.4). Realizar ambos cambios simplifica enormemente el "escape" que se debe hacer para ingresar al programa en un shell.
Aquí está mi versión (envuelta en una función de shell; puede poner esto en (por ejemplo) su .bashrc
para que esté disponible en sus shells):
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 colocado en el portapapeles con este script se puede pegar en Finder para copiar el archivo a otra carpeta.
osascript también se puede usar como intérprete de hash-bang (desde 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
Hacer el archivo ejecutable ( chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Luego ejecútelo así:
/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html
Si está almacenado en un directorio en la RUTA, puede omitir la ruta al archivo "script".
set the clipboard to {one,two}
(aunque otro programa AppleScript puede extraer la lista con éxito). Los comandos del portapapeles StandardAdditions pueden estar limitados a elementos individuales.
No hay forma de lograr lo que intenta hacer con la línea de comando. Si bien Apple ofrece las herramientas pbcopy
y pbpaste
para permitir la copia básica de texto, no puede usar estas herramientas para copiar un archivo en el sentido que está buscando.
Sin entrar en demasiados detalles técnicos, cuando 'copia' un archivo en el Finder utilizando ⌘C, en realidad no está copiando el archivo en sí mismo, solo haciendo referencia al archivo en el portapapeles y marcándolo como referencia de archivo. Cuando una aplicación recibe esta referencia cuando la pega, tiene la responsabilidad de ordenar las cosas, averiguar lo que pegó y, en última instancia, trabajar con el archivo como mejor le parezca. En esencia, cuando copia un archivo en el Finder, guarda la ruta del archivo de cierta manera en un portapapeles determinado, y cuando pega, recibe esa ruta de archivo y sabe crear un nuevo archivo utilizando el contenido del archivo. anterior (copie un archivo en el portapapeles, elimínelo, intente pegarlo en otro lugar y vea qué sucede, por ejemplo).
En este sentido de copiar y pegar, las herramientas disponibles no son suficientes para hacer lo que necesita. Como sugirió boehj, puede intentar copiar el contenido del archivo antiguo en uno nuevo, pero esto solo funcionará bien para archivos de texto. Cualquier archivo binario que obtenga se dañará (intente hacer esto con una imagen; se corrompe).
La línea de comando tradicional le fallará de esta manera, pero puede echar un vistazo si desea hacerlo en AppleScript, luego invocarlo a través de la línea de comando con osascript
.
pbcopy
y pbpaste
va a trabajar con un archivo .html, eso es sólo porque le pasa a ser un archivo de texto.
pbcopy -help
, obtendrá una línea no digna NSLog()
de producción que solo se repite 'pbcopy -help'
. Es útil ser un programador para entender esto, por eso me pareció necesario intervenir.
La siguiente función solo funciona con un solo archivo y no con varios archivos. Requiere GNU readlink
que puede instalar ejecutando brew install findutils
.
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
Editar: eliminé el tell app "Finder"
bloque.
Edición 2: se revierte a una versión que admite rutas relativas.
Aquí hay un script simple de Shell / Bash. Solo pégalo en tu .bashrc
archivo (o similar):
file-to-clipboard() {
if [ -z "$1" ]; then
echo "file path/name:"
read FILE
else
FILE="$1"
fi
pbcopy < "$FILE"
}
Con soporte de archivo relativo:
clip_img() {
osascript -e 'on run argv' \
-e 'set currentDir to do shell script "pwd"' \
-e 'set the clipboard to (read POSIX file (POSIX path of (currentDir as text & (first item of argv) )) as JPEG picture)' \
-e 'end run' "/$1"
# osascript -e 'clipboard info'
}
ejecutar clip_img path-to-file
para copiar la imagen al portapapeles, y path-to-file
podría ser relativo. El archivo puede ser jpeg o png.
Puede usar cat 'originfile'> 'destinationfile' en entornos unix;
Copie el archivo de origen archivo de destino en Windows.