Ho un file sul desktop, il nome del file è ded.html. Per copiare il file, faccio clic sul file e premo cmd + c.
Ora come farei la stessa cosa usando il terminale?
Ho un file sul desktop, il nome del file è ded.html. Per copiare il file, faccio clic sul file e premo cmd + c.
Ora come farei la stessa cosa usando il terminale?
Risposte:
Se ho la comprensione del diritto domanda, che cosa siete dopo è pbcopy
e pbpaste
.
Apri un terminale ed esegui:
$ cat ~/Desktop/ded.html | pbcopy
Ora quel file è negli appunti.
Per metterlo altrove, cioè per incollarlo, fai:
$ pbpaste > ~/Documents/ded.html
Ora dovresti avere una copia di ded.html in ~ / Documents.
cat ~/.emulator_console_auth_token | auth <read_content>
.
La risposta di Lri è orientata nella giusta direzione, ma presenta un paio di difetti: non è necessario utilizzare Finder ( the clipboard
fa parte di StandardAdditions OSAX) e fornire un run
gestore è un modo molto più affidabile per passare argomenti dalla riga di comando (dal 10.4). Apportare entrambe queste modifiche semplifica notevolmente la "fuga" che deve essere fatta per entrare nel programma in una shell.
Ecco la mia versione (racchiusa in una funzione shell: potresti metterla in (es.) Your .bashrc
per renderla disponibile nelle tue shell):
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 file che è stato inserito negli Appunti con questo script può quindi essere incollato nel Finder per copiare il file in un'altra cartella.
osascript può anche essere usato come interprete hash-bang (dal 10.5). Metti questo in un file (ad es. file-to-clipboard
)
#!/usr/bin/osascript
on run args
set the clipboard to POSIX file (first item of args)
end
Rendi il file eseguibile ( chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Quindi eseguilo in questo modo:
/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html
Se è memorizzato in una directory nel PERCORSO, è possibile omettere il percorso del file "script".
set the clipboard to {one,two}
(anche se un altro programma AppleScript può estrarre correttamente l'elenco). I comandi degli Appunti di StandardAdditions possono essere limitati a singoli elementi.
Non è possibile ottenere ciò che si sta tentando di fare utilizzando la riga di comando. Mentre Apple offre gli strumenti pbcopy
e pbpaste
per consentire la copia di base del testo, non puoi utilizzare questi strumenti per copiare un file nel senso che stai cercando.
Senza entrare in troppi dettagli tecnici, quando 'copi' un file nel Finder utilizzando ⌘C, non stai effettivamente copiando il file stesso, facendo semplicemente un riferimento al file negli Appunti e contrassegnandolo come riferimento al file. Quando un'applicazione riceve questo riferimento quando si incolla, ha la responsabilità di ordinare le cose, capire cosa hai incollato e, in definitiva, lavorare con il file come meglio crede. In sostanza, quando copi un file nel Finder, salva il percorso del file in un certo modo in un determinato appunti e, quando lo incolla, riceve quel percorso del file e sa di creare un nuovo file usando il contenuto del quello vecchio (copia un file negli appunti, eliminalo, prova a incollarlo da qualche altra parte e vedi cosa succede, per esempio).
In questo senso di copia e incolla, gli strumenti disponibili non sono sufficienti per fare ciò di cui hai bisogno. Come suggerito boehj, puoi provare a copiare il contenuto del vecchio file in uno nuovo, ma funzionerà bene solo per i file di testo. Tutti i file binari che otterrai saranno danneggiati (prova a farlo con un'immagine: si corrompe).
La riga di comando tradizionale non ti guiderà in questo modo, ma puoi dare un'occhiata se desideri farlo in AppleScript, quindi invocarlo tramite la riga di comando con osascript
.
pbcopy
e pbpaste
funzionerà con un file .html, questo è solo perché sembra essere un file di testo.
pbcopy -help
, si ottiene una NSLog()
riga non di produzione che si ripete 'pbcopy -help'
. È utile essere un programmatore per capire questo, motivo per cui ho ritenuto necessario intervenire.
La funzione seguente funziona solo con un singolo file e non con più file. Richiede GNU readlink
che è possibile installare eseguendo brew install findutils
.
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
Modifica: ho rimosso il tell app "Finder"
blocco.
Modifica 2: ripristinato a una versione che supporta percorsi relativi.
Ecco un semplice script Shell / Bash. Basta incollarlo nel tuo .bashrc
file (o simili):
file-to-clipboard() {
if [ -z "$1" ]; then
echo "file path/name:"
read FILE
else
FILE="$1"
fi
pbcopy < "$FILE"
}
Con il supporto del relativo file:
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'
}
eseguito clip_img path-to-file
per copiare l'immagine negli appunti e path-to-file
potrebbe essere relativo. Il file potrebbe essere jpeg o file png.
Puoi usare cat 'originfile'> 'destinationfile' su ambienti unix;
copia il file di destinazione originfile su windows.