ターミナルを使用してファイルをクリップボードにコピーする


159

デスクトップにファイルがあります。ファイル名はded.htmlです。ファイルをコピーするには、ファイルをクリックしてcmd + cを押します。

ターミナルを使用して同じことをどのように行うのでしょうか?


2
内容を貼り付けることができるように、ファイルをコピーするのですか、それともファイルの内容をコピーするのですか?
user151019

回答:


237

質問を正しく理解している場合、あなたが求めているのはpbcopypbpasteです。

ターミナルを開き、以下を実行します。

$ cat ~/Desktop/ded.html | pbcopy

これで、そのファイルはクリップボードに入れられました。

別の場所に配置する、つまり貼り付けるには、次のようにします。

$ pbpaste > ~/Documents/ded.html

これで、〜/ Documentsにded.htmlのコピーがあるはずです。


3
これはテキストファイルでの作業には最適ですが、バイナリでタスクを実行しようとすると失敗します。画像でこれを試して、意味を確認してください。
板井ファーバー

7
$ cat〜/ Desktop / ded.htmlと入力した後| pbcopy cmd + vを使用してファイルを貼り付けることができません。$ pbpaste>〜/ Documents / ded.htmlが仕事をしましたが。
怒っているキウイ

Finderメニューの[ 編集 ] > [クリップボードの表示 ] (Yosemiteでテスト済み)を使用して、OSXクリップボードのファイルの内容を表示することもできます。
ダニー

ありがとう、どうやってそれを読んで次のコマンドに渡すのですか?例えばcat ~/.emulator_console_auth_token | auth <read_content>
ドミニク

これにより、ファイルの内容はコピーされますが、ファイル自体はコピーされません。
vy32

20

Lriの答えは正しい方向に向かっていますが、いくつかの欠点があります:FinderStandardAdditions OSAXのthe clipboard一部です)を使用する必要はなく、ハンドラーを与えることはコマンドラインから引数を渡すより信頼性の高い方法です(10.4以降)。これらの両方の変更を行うと、シェルにプログラムを入力するために必要な「エスケープ」が大幅に簡素化されます。run

これが私のバージョンです(シェル関数にラップされています。これを(たとえば)に入れて、シェル.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内のディレクトリに保存されている場合、「スクリプト」ファイルへのパスを省略できます。


@Lri:Finderは明白なことを理解していませんset the clipboard to {one,two}(ただし、別のAppleScriptプログラムはリストを正常に抽出できます)。StandardAdditionsは、コマンドは、単一の項目に限定することができるクリップボード。
クリスジョンセン

1
複数のファイルで機能しますか?
VitalyB

注:指定するパスは、スクリプトが機能するための絶対パスである必要があります。
レオ

8

コマンドラインを使用して何をしようとしているかを達成する方法はありません。Appleはテキストの基本的なコピーを可能にするツールpbcopypbpasteツールを提供していますが、これらのツールを使用して目的のファイルをコピーすることはできません。

技術的な詳細をあまり説明しなくても、を使用してFinderでファイルを「コピー」するとC、実際にファイル自体をコピーするのではなく、クリップボード上のファイルへの参照を作成し、ファイル参照としてマークします。貼り付けたときにアプリケーションがこの参照を受け取ると、アプリケーションは物事を整理し、貼り付けたものを把握し、最終的には適切と思われるファイルを操作する責任があります。本質的に、Finderでファイルをコピーすると、特定のクリップボードに特定の方法でファイルへのパスが保存され、貼り付けると、そのファイルパスが受信され、ファイルの内容を使用して新しいファイルを作成する古いファイル(ファイルをクリップボードにコピーして削除し、別の場所に貼り付けて、何が起こるかを確認します)。

このコピーと貼り付けという意味では、手元にあるツールでは必要なことを行うのに十分ではありません。boehjが示唆したように、古いファイルの内容を新しいファイルにコピーしようとすることができますが、これはテキストファイルに対してのみ有効です。取得したバイナリファイルは破損します(イメージでこれを試してください-破損します)。

従来のコマンドラインではこのように失敗しますが、AppleScriptでこれを実行したい場合は、コマンドラインからを使用して呼び出してosascriptください。


あなたは画像などについて正しいです。私はそれを考えませんでした。私はもののので、私は、質問を誤解してきたと思いますpbcopyし、pbpaste.htmlのファイルで動作します、単なるテキストファイルであることを起こるので、それだけです。
boehj

いいえ、あなたは質問を正しく理解しました。これらのツールが正常に機能していると仮定しただけで、そうではありません。それらはバグが多く、その方法で動作することすら意図されていませんが、Appleはドキュメンテーションに関して非常に悪い仕事をしました。入力するとpbcopy -help、本番に値しないNSLog()行が繰り返し表示され'pbcopy -help'ます。それは私がチャイムすることが必要と感じた理由である、これを理解するために、プログラマことに役立ちます。
板井ファーバー

1
はい、問題ありません。;)
イタイファーバー

1
いくつかの注意を引くためpbcopyたい人には、無料の開発者アカウントを取得していないし、いくつかのバグファイルかもしれない- bugreport.apple.comを -それが役立つという保証を、それが十分な人々がまだ気にしている場合、これらのもので動作する時間を得るために、エンジニアのレバレッジを提供します。
bmike

1
OPは、CLIでAppleScriptを使用して必要なものを達成できますか?

7

以下の機能は、単一のファイルでのみ機能し、複数のファイルでは機能しません。readlinkを実行してインストールできるGNU が必要ですbrew install findutils

copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}

編集:tell app "Finder"ブロックを削除しました。

編集2:相対パスをサポートするバージョンに戻しました。


2
これは実際に動作します!
ベンムー

6

pbcopy < filenameターミナルでコマンドを実行すると、という名前のファイルの内容がコピーされfilenameます。


3

ファイルを宛先にコピーするには、cpコマンドを使用します。

cp /path/to/file /path/to/destination

詳細についてはman cp、を参照してください。


2
これは、ターゲットの場所としてクリップボードを参照する質問に対する答えではありません。
ケリーフィフ

2

簡単なシェル/バッシュスクリプトを次に示します。あなたの.bashrcファイルにそれを貼り付けてください(または同様):

file-to-clipboard() {
    if [ -z "$1" ]; then
        echo "file path/name:"
        read FILE
    else
        FILE="$1"
    fi
    pbcopy < "$FILE"
}

0

相対ファイルのサポート:

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ファイルです。


-2

UNIX環境では、cat 'originfile'> 'destinationfile'を使用できます。

Windowsでoriginfile destinationfileをコピーします。


2
これはどのようにファイルをクリップボードに配置しますか?
GRGの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.