Я получил файл на рабочем столе, имя файла ded.html. Чтобы скопировать файл, я нажимаю на файл и нажимаю cmd + c.
Теперь, как бы я сделал то же самое, используя терминал?
Я получил файл на рабочем столе, имя файла ded.html. Чтобы скопировать файл, я нажимаю на файл и нажимаю cmd + c.
Теперь, как бы я сделал то же самое, используя терминал?
Ответы:
Если я правильно понял вопрос, то, что вы ищете, pbcopy
и pbpaste
.
Откройте терминал и выполните:
$ cat ~/Desktop/ded.html | pbcopy
Теперь этот файл находится в буфере обмена.
Чтобы поместить его в другое место, то есть вставить его, выполните:
$ pbpaste > ~/Documents/ded.html
Теперь у вас должна быть копия файла ded.html в ~ / Documents.
cat ~/.emulator_console_auth_token | auth <read_content>
?
Ответ Лри направлен в правильном направлении, но у него есть пара недостатков: нет необходимости использовать Finder ( the clipboard
является частью OSAX StandardAdditions ), а предоставление run
обработчика является гораздо более надежным способом передачи аргументов из командной строки. (с 10.4). Выполнение обоих этих изменений значительно упрощает «экранирование», которое необходимо выполнить для входа в программу в оболочке.
Вот моя версия (обернутая в функцию оболочки - вы можете поместить ее (например, в свою), .bashrc
чтобы сделать ее доступной в ваших оболочках):
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
Файл, который был помещен в буфер обмена с помощью этого сценария, затем можно вставить в Finder, чтобы скопировать файл в другую папку.
osascript также может использоваться в качестве интерпретатора hash-bang (начиная с 10.5). Поместите это в файл (например file-to-clipboard
)
#!/usr/bin/osascript
on run args
set the clipboard to POSIX file (first item of args)
end
Сделайте файл исполняемым ( chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Затем запустите его так:
/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html
Если он хранится в каталоге в PATH, вы можете пропустить путь к файлу «script».
set the clipboard to {one,two}
(хотя другая программа AppleScript может успешно извлечь список). В StandardAdditions буфер команды могут быть ограничены отдельными деталями.
Нет способа достичь того, что вы пытаетесь сделать, используя командную строку. Хотя Apple предлагает pbcopy
и pbpaste
инструменты , чтобы основное копирование текста, вы не можете использовать эти инструменты , чтобы скопировать файл в том смысле , что вы ищете.
Не вдаваясь в технические подробности, когда вы «копируете» файл в Finder ⌘C, вы на самом деле не копируете сам файл, а просто делаете ссылку на файл в буфере обмена и помечаете его как ссылку на файл. Когда приложение получает эту ссылку при вставке, оно отвечает за сортировку, выяснение того, что вы вставили, и, в конечном счете, за работу с файлом по своему усмотрению. По сути, когда вы копируете файл в Finder, он сохраняет путь к файлу определенным образом в определенном буфере обмена, а при вставке он получает этот путь к файлу и знает, как создать новый файл, используя содержимое файла. старый (скопируйте файл в буфер обмена, удалите его, попробуйте вставить его в другое место и посмотрите, что происходит, например).
В этом смысле копирования и вставки доступных инструментов недостаточно, чтобы делать то, что вам нужно. Как и предположил boehj, вы можете попытаться скопировать содержимое старого файла в новый, но это будет хорошо работать только для текстовых файлов. Любые двоичные файлы, которые вы получите, будут повреждены (попробуйте сделать это с изображением - оно станет поврежденным).
Традиционная командная строка провалит вас таким образом, но вы можете посмотреть, хотите ли вы сделать это в AppleScript, а затем вызвать это через командную строку с помощью osascript
.
pbcopy
и pbpaste
будет работать с файлом .html, это только потому, что это просто текстовый файл.
pbcopy -help
, вы получите непроизводительную NSLog()
строку, просто повторяющуюся 'pbcopy -help'
. Это помогает быть программистом, чтобы понять это, поэтому я чувствовал, что необходимо вмешаться.
Функция ниже работает только с одним файлом, а не с несколькими файлами. Требуется GNU, readlink
который вы можете установить, запустив brew install findutils
.
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
Изменить: я снял tell app "Finder"
блок.
Редактировать 2: Возврат к версии, которая поддерживает относительные пути.
Вот простой скрипт Shell / Bash. Просто вставьте его в свой .bashrc
файл (или тому подобное):
file-to-clipboard() {
if [ -z "$1" ]; then
echo "file path/name:"
read FILE
else
FILE="$1"
fi
pbcopy < "$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'
}
запустить, clip_img path-to-file
чтобы скопировать изображение в буфер обмена, и path-to-file
может быть относительным. Файл может быть в формате JPEG или PNG.
Вы можете использовать cat 'originfile'> 'destinationfile' в среде unix;
скопировать файл оригинала на Windows.