
ファイルの内容を表示せずにUNIXでファイルの内容をコピーする方法。コンテンツを見るためにcatやviを使用したくありません。
Windowsメモ帳に再貼り付けできるようにクリップボードにコピーしたいと思います。
アクセス制限のため、このサーバーから別のサーバーにファイルをコピーできません。
答え1
X11
X11(既存のUnixまたはLinuxシステムで最も一般的なGUI)を使用している場合は、ファイルの内容をX11 CLIPBOARD選択にコピーする必要はありません。見せる使用するか、xclip
ユーティリティを使用できますxsel
。
xclip -sel c < file
または:
xsel -b < file
コンテンツをfile
CLIPBOARD X11選択として保存します。
コマンドの出力を保存します。
mycommand | xclip -sel c
mycommand | xsel -b
UTF-8エンコーディングを使用して保存する必要があります。そうしないと、貼り付けは正しく機能しません。別の文字セットを使用してエンコードする場合は、file
まずUTF-8に変換する必要があります。たとえば、次のようになります。
<file iconv -f latin1 -t utf8 | xclip -sel c
次にエンコードされたファイルの場合ラテン語1/ISO8859-1。
xsel
バイナリデータには機能しませんが(ヌルバイトは許可されていません)、xclip
動作します。
これをCUT_BUFFERとして保存します(たとえば、CLIPBOARDまたはPRIMARYを宣言していない場合など、一部のアプリケーションは依然としてこれらのバッファを照会します。xterm
これを使用する必要があります。
xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"
(末尾の改行を削除してくださいfile
)。
GNU画面
GNUには、ファイルの内容を自己コピー/貼り付けバッファに入れるコマンドがscreen
あります(貼り付けに使用)。だから:readbuf
^A]
screen -X readbuf file
Apple OS/X
Apple OS/XできるX11を使用してください。 X11アプリケーションを実行しない限り、デフォルトではそうではありません。 OS / XはX11 CLIPBOARDの選択をOS / Xペーストボードバッファと同期させる必要があるため、またはそれをxclip
使用できますが、xsel
そのためにX11サーバーを起動するのは少し無駄です。
OS/X では、以下を使用できます。pbcopy
任意のコンテンツを保存するコマンドカートンバッファー:
pbcopy < file
(ファイルの文字エンコードはロケールの文字エンコードと同じでなければなりません。)コマンドの出力を保存します。
mycommand | pbcopy
シェル
ほとんどのシェルには独自のコピーアンドペーストバッファがあります。 Emacsモードでは、切り取りとコピー操作はコピー/切り取りテキストをスタックに保存します。これを使用してドラッグ&ペーストし、Ctrl-Y次のように循環できます。Alt+Y
zsh CUTBUFFER/キリング
では、zsh
スタックは$killring
配列に格納され、スタックの上部は$CUTBUFFER
変数に保存されます。ただし、これらの変数はZshラインエディタ(zle)ウィジェットでのみ使用でき、一部の特殊ウィジェットはこれらの変数を操作するための好ましい方法です。
これはZLEを介してのみ使用できるため、コマンドを使用してこれを行うのは少し複雑です。
zmodload zsh/mapfile
zle-line-init() {
if [ -n "$FILE_TO_COPY" ]; then
zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
unset FILE_TO_COPY
fi
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A
特別なzle-line-init
ウィジェットは、各新しいコマンドプロンプトの起動時に一度実行されます。これは、ファイルが次のプロンプトからのみコピーされることを意味します。たとえば、次を実行する場合:
file-copy file; sleep 2
2秒後にファイルがコピーされます。
答え2
たぶんこのように聞きたいかもしれません。。ただし、読みたいファイルはシステムコールで開く必要があります。ファイルへのアクセス権がないと読み取れません。アクセスを制限するという考えだ。
答え3
私の解決策は私の設定にのみ当てはまりますが、他の人に役立つことを確認するためにここに投稿します。
ローカル(OSx)コンピュータの「クリップボード」に保存してローカルに貼り付けることができるファイルを含む(Linux)サーバーへのSSHアクセス権があります。
~から地元のマシンで次のコマンドを実行します。
$ ssh user@host 'cat /path/to/file/I/want/in/remote/system' | pbcopy
これでファイルの内容がローカルバッファにあるので、必要なアプリケーションに貼り付けることができます。これにより、ファイルの内容が画面に表示されず、コンテンツがsshを介して送信されるため、scpを介してファイルをコピーするのと同じくらい安全でなければなりません(個人情報保護/セキュリティ上の問題がある場合)。 )
答え4
xclipをインストールし、ファイル名を引数として使用する「copy」というスクリプトを作成しました。
#! /bin/sh -
exec xclip -selection clipboard -i "$@"
使用例: copy id_rsa.pub
私の公開鍵をクリップボードにコピーします。