У мене файл на робочому столі, ім'я файлу ded.html. Щоб скопіювати файл, натисніть на файл і натисніть cmd + c.
Тепер, як би я зробив те саме, використовуючи термінал?
У мене файл на робочому столі, ім'я файлу ded.html. Щоб скопіювати файл, натисніть на файл і натисніть cmd + c.
Тепер, як би я зробив те саме, використовуючи термінал?
Відповіді:
Якщо я правильно розумію питання, те, що ви хочете, це pbcopy
і є pbpaste
.
Відкрийте термінал і виконайте:
$ cat ~/Desktop/ded.html | pbcopy
Тепер цей файл знаходиться в буфері обміну.
Щоб помістити його десь в іншому місці, тобто вставити його, виконайте:
$ pbpaste > ~/Documents/ded.html
Тепер у вас повинна бути копія ded.html, що знаходиться в ~ / Документах.
cat ~/.emulator_console_auth_token | auth <read_content>
?
Відповідь Лрі спрямовується в правильному напрямку, але вона має кілька недоліків: немає необхідності використовувати Finder ( the clipboard
є частиною StandardAdditions OSAX), а надання 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 також може бути використаний як інтерпретатор хеш- бангу (починаючи з 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, ви можете опустити шлях до файлу «скрипт».
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'> 'targetfile' в unix середовищах;
Скопіювати originfile цільовий файл на Windows.