FreeBSD Daily Topics

2008年9月12日ccp(1)とlaunchy(1) - xsel(1)を使ってクイッククリップボードコピー機能を実現する方法、Python 2.4系セキュリティ対策、FreeBSD NFSサーバ構築

tips

ccp(1)

xsel(x11/xsel-conrad)はファイルの中身をXセレクションにコピーしたり、その逆を実行するための便利なコマンドですが、ラッパスクリプトを作成してGnomeやKDEから手軽に実行できるようにするとさらに便利です。

たとえば次のようなラッパスクリプトccp(1)を作成します。ccp(1)は引数に指定された名前のファイルが${HOME}/Applications/ccp/share/text/ディレクトリにあるか調べ、ある場合にはそのファイルの内容をXセレクション(プライマリ、セカンダリ、クリップボード)へコピーします。複数引数がある場合はさらにXセレクション(プライマリ、セカンダリ、クリップボード)へ追加をおこないます。直接ファイルが指定された場合にはそれをコピーします。

リスト1 ccp(1) 指定された名前のデータをXセレクション(プライマリ、セカンダリ、クリップボード)へコピーする
#!/bin/sh

if ! type xsel > /dev/null 2>&1
then
    echo "You need xsel. Please install x11/xsel-conrad." 1>&2
    exit 1
fi


textdatadir="${HOME}/Applications/ccp/share/text/"
firsttime="true"

for target in "${@:--}"
do
    if [ -f "${textdatadir}${target}" ]
    then
        targetfile="${textdatadir}${target}"
    elif [ -f "${target}" ]
    then
        targetfile="${target}"
    else
        continue
    fi

    case "${firsttime}" in
    true)
        xsel --input --primary < "${targetfile}"
        xsel --input --secondary < "${targetfile}"
        xsel --input --clipboard < "${targetfile}"
        firsttime="false"
        continue
        ;;
    esac

    xsel --append --primary < "${targetfile}"
    xsel --append --secondary < "${targetfile}"
    xsel --append --clipboard < "${targetfile}"
done

ccp(1)を実行可能にしてPATHに指定されているパスへコピーしたら、次のようにdekstopファイルを作成して、${HOME}/.local/share/applications/ccp.desktopのようにデプロイします。これでGnomeやKDEなどのアプリケーションからccpが扱えるようになります。

リスト2 ${HOME}/.local/share/applications/ccp.desktop ファイル
[Desktop Entry]
Version=1.0
Name=Clipboard Copy
Comment=Copy any data to system clipboard
Exec=ccp %u
Terminal=false
Type=Application
Icon=gnome-ccdesktop
Categories=Utility;

ここまで準備したら、あとはLaunchy((deskutils/launchy, devel/xdg-utils)などのローンチャーを使ってccp(1)を素早く実行できます。Lunchyでccpと入力すればccp.desktopファイルの記述にしたがってコマンドが展開されるため、そこでファイル名を入力すればコンソールやターミナルからccp(1)コマンドを実行したのと同じ結果が得られます。

図1 ccp(1) & launchy(1) 活用例 ccpと入力
図1 ccp(1
図2 ccp(1) & launchy(1) 活用例 Tabキーを押すとccp.desktopファイルにしたがって展開される
図2 ccp(1
図3 ccp(1) & launchy(1) 活用例 コマンドラインで実行するようにファイル名を入力してエンターキー
図3 ccp(1
図4 ccp(1)でXセレクションにコピーされた内容をペーストした例
図4 ccp(1)でXセレクションにコピーされた内容をペーストした例

ccp(1)/xsel(1)およびlaunchy(1)を組み合わせたXセレクションへのコピーはアプリケーションの種類を問わず活用できるので便利です。特に複数行の定形テキストを入力する場合に役に立ちます。

ports

lang/python24

CVE-2008-2315、CVE-2008-2316、CVE-2008-3142、CVE-2008-3144で説明されているメモリアロケーションにおける整数オーバーフローやオーバーフローチェックに関するセキュリティ脆弱性が修正されました。Python 2.4系を使っている場合にはこの最新版へのアップグレードを実施してください。

links

Setup a NFS server on FreeBSD

HowTo: Setup a NFS server on FreeBSDにおいてFreeBSDを使ってNFSサーバを構築する方法が紹介されています。基本的な設定と操作コマンドがまとめられています。NFSサーバの構築を検討している場合には最初のステップとして参考にするとよさそうです。

おすすめ記事

記事・ニュース一覧