Closed5

SSHで接続してるRemoteにある画像ファイルをクライアントのmacos上のclipboard/それに類するどこかにcopyしてmac上でpasteできるようにしたい

名無し。名無し。

謎言語apple scriptを使えばできるらしい. これを適当な名前で保存してパスの通ったとこに保存して使ってもいいか?

文章読めてなかった。これはすでにある画像を貼り付けるスクリプトだった

#!/bin/bash
# クリップボードの内容をPNGファイルで保存するスクリプト
set -eu

dir=$HOME/org/roam
name=$(date "+%Y%m%d%H%M%S").png

osascript <<EOF
set png_data to the clipboard as «class PNGf»
set the_file to open for access POSIX path of (POSIX file "$dir/$name") with write permission
write png_data to the_file
close access the_file
EOF

echo "[[file:$name]]" | tee >(pbcopy)

コードは参考資料[1]から転載

参考資料
[1]MacOSでクリップボード上の画像を保存するスクリプト,神和電子,2021/08/31,https://巫.jp/blog/2021/08/31/mac-paste-image/

名無し。名無し。

結局bashスクリプト内にosascriptを書いてお茶を濁すことにした(表現を借りた).
以下のスクリプトをパスの通った箇所に好きな名前でおいて、chmod +x <file name>でどこからでもclipboardに画像をコピーできるようになる(はず)
自分はこれをimcbの名前でパスの通ってる箇所に保存してchmod +x path/to/imcbで権限あたえて実行できるようにした.

追記:bashの文字列の扱いに注意

#!/usr/bin/env bash
set -eu -o pipefail -o posix
IMAGE_FP=$1
FILE_TYPE=$(file --mime-type -b "${IMAGE_FP}")


if [[ "${FILE_TYPE}" = "image/png" ]]; then
    osascript -e 'set the clipboard to (read (POSIX file "'"${IMGE_FP}"'") as «class PNGf»)'
elif [[ "${FILE_TYPE}" = "image/jpeg" ]]; then
    osascript -e 'set the clipboard to (read (POSIX file "'"${IMAGE_FP}"'") as JPEG picture)'
else
    echo "Unknown image type. we supported png/jpeg now. But, got '${FILE_TYPE}'. Please check image data type"
    exit 1
fi

こんな感じ。もう少し整備して、-hオプションとかあってもいいかもだけど最低限これで動くのでここで終わりで。

名無し。名無し。

肝心の使い方を書くの忘れてた。こんな感じ

ssh <remote> "cat <path/to/image>" >> /tmp/tmp.image | imcb /tmp/tmp.image && rm /tmp/tmp.image

これもパス通ってるとこにbashスクリプトで書いておいてもいいかも。こんな感じ。認証が挟まるとそれを待つ必要がありそう。 修正した

#!/usr/bin/env bash
set -eu -o pipefail -o posix
ssh_target=$1
image_fp=$2
ssh "${ssh_target}" "cat ${image_fp}" >> /tmp/tmp.image && imcb /tmp/tmp.image && rm /tmp/tmp.image
echo "copied image '${image_fp}' from '${ssh_target}'"
このスクラップは1ヶ月前にクローズされました