警告 (2015-07-18 記載)
以下の理由から、ptrash
の利用は rm
に比べて危険で不便だと判断したため、私はすでに使っておりません。記事は残しておきますが、ptrash の利用について積極的に推奨は致しません。
- 常に
rm -rf
と同等なので、誤ってディレクトリなどを削除してしまう可能性がある。 - 常に
rm -rf
と同等なので、権限不足で削除できなかった場合にもエラーメッセージが表示されない。 - 誤って削除した場合、後述の通り 復元できないことがある。
導入
ptrash は、Fedora に公式採用されているごみ箱送りコマンドです。rmコマンドはファイルやディレクトリをそのまま削除しますが、ptrash
コマンドは~/.trash
に移動します。1
Fedoraの一部となっているptrashですが、CentOSの標準のYumリポジトリなどには存在しません。そこで、Fedoraの標準のYumリポジトリからソースRPMパッケージを取得し、CentOS上でビルドしてRPMパッケージを作成します。実運用環境と同じバージョンのOSがインストールされている開発環境があれば、ビルドまでは開発環境で行い、作成したRPMパッケージを実運用環境にアップロードしてインストールすると良いでしょう。
リポジトリ定義ファイル (*.repo) のシンタックスハイライト
CentOS標準のYumリポジトリで提供されているテキストエディタのうちvi・Vim以外のエディタは、初期状態で.repo
ファイルのシンタックスハイライトが機能しません。以下のように設定ファイルの編集などを行い、シンタックスハイライトを有効にします。
gedit
ファイル名が.repo
で終わるファイルをINIファイルとして開くようにし、一行コメントアウト開始文字に#
を追加します。
<!--##############
## 以上省略 ##
##############-->
<metadata>
<property name="mimetypes">text/x-ini-file;application/x-ini-file</property>
<property name="globs">*.ini;*.repo</property><!-- *.repo を追加 -->
<property name="line-comment-start">;</property>
</metadata>
<!--##############
## 中略 ##
##############-->
<definitions>
<context id="line-comment" style-ref="comment" end-at-line-end="true">
<start>;</start>
</context>
<!-- ここから -->
<context id="bash-line-comment" style-ref="comment" end-at-line-end="true">
<start>#</start>
</context><!-- ここまで -->
<context id="group" style-ref="keyword">
<start>^\[</start>
<end>\]$</end>
</context>
<!--##############
## 中略 ##
##############-->
<context id="ini">
<include>
<context ref="line-comment"/>
<context ref="bash-line-comment"/><!-- 追加 -->
<context ref="group"/>
<context ref="non-standard-key"/>
<context ref="language"/>
<context ref="variable"/>
<context ref="boolean-value"/>
<context ref="single-quoted-string"/>
<context ref="double-quoted-string"/>
<context ref="decimal-number"/>
<context ref="integer"/>
</include>
</context>
</definitions>
</language>
nano
Arch Linuxのnano-syntax-highlighting-gitパッケージを利用します。2 3
# INIファイルのシンタックスハイライトを行う設定ファイルをダウンロード
wget https://github.com/scopatz/nanorc/raw/master/ini.nanorc
# .repo で終わるファイルをINIファイルとして扱うようにする
sed --in-place 's/)\$/|repo)$/' ini.nanorc
# シンタックスハイライトを行う設定ファイル保管場所に移動
sudo mv ini.nanorc /usr/share/nano/
# nanoの個人設定ファイルから読み込むようにする
echo $'\n\n'## INI files$'\n'include "/usr/share/nano/ini.nanorc" >> ~/.nanorc
Emacs
個人設定ファイルを新規作成 (または追記) し、ファイル名が.repo
で終わるファイルをconf-mode
で開くようにする設定を追加します。4
;; .repo ファイルを Conf モードで開く
(add-to-list 'auto-mode-alist '("\\.repo$" . conf-mode))
[Kate](http://ja.wikipedia.org/wiki/Kate "Kate とは KDE のテキストエディタである。頭字語 "Kate" は "KDE advanced text editor" の略である。Kate は KDE リリース 2.2(2002年8月15日)から kdebase パッケージの一部となっている。KDE の一部となっている KParts の機能により、他の KDE アプリケーションに編集コンポーネントとして Kate を組み込むことができる。統合開発環境 KDevelop やウェブ開発環境 Quanta Plus は編集コンポーネントとして Kate を利用している主要な KDE アプリケーションである。")
ファイル名が.repo
で終わるファイルをINIファイルとして開くようにします。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc;*.repo" mimetype="" version="1.1" kateversion="2.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL"> <!-- extensions属性値に *.repo を追加 -->
<!--##############
## 以下省略 ##
##############-->
Fedoraのソースリポジトリを追加
まずFedora Project - GPG 鍵の一覧から、Fedoraの最新安定版 (2014-08-12現在 Fedora 20) のバージョン番号に対応する公開鍵のURLを捜し、取り込みます。
# Fedora20の公開鍵を取り込む
sudo rpm --import https://fedoraproject.org/static/246110C1.txt
以下のようにリポジトリ定義ファイルを新規作成 (または追記) し、リポジトリを追加します。
[fedora-source-20]
name=Fedora 20 - $basearch - Source
# baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/20/Everything/source/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-20&arch=$arch
failovermethod=priority
enabled=0
ビルド
ビルドの際、コマンドが見つからなかったりビルドに失敗するようであれば、rpmbuildコマンドやGCCをインストールします。
sudo yum install rpm-build gcc
途中、rpm
コマンドで署名を検証しています。ptrash-1.0-8.fc20.src.rpm: rsa sha1 (md5) pgp md5 OK
などと表示されれば問題ありません。署名の検証ができなかったときは、pgp
が返りません。5
# ソースRPMパッケージの取得
yumdownloader --source --enablerepo=fedora-source-20 ptrash --destdir ~/rpmbuild/SRPMS
# 署名の検証
rpm --checksig ~/rpmbuild/SRPMS/ptrash-*.src.rpm
# ビルドに必要なパッケージのインストール
sudo yum-builddep ~/rpmbuild/SRPMS/ptrash-*.src.rpm
# ビルド
rpmbuild --rebuild --clean ~/rpmbuild/SRPMS/ptrash-*.src.rpm
インストール
# インストール
sudo rpm --upgrade --verbose --hash $(ls -v --reverse ~/rpmbuild/RPMS/*/ptrash-[0-9]*.rpm | head --lines=1)
# ソースRPMパッケージの削除
ptrash ~/rpmbuild/SRPMS/ptrash-*.src.rpm
RPMパッケージ (*.rpm) をアップロードし、実運用環境にもインストールします。
ptrashコマンドの使い方
ptrash
コマンドは、rm
コマンドと同様に、複数のファイルを指定したりワイルドカードを利用することができます。
コマンド | 効果 |
---|---|
ptrash file1 |
ファイル、またはディレクトリfile1 を~/.trash に移動します。rm -rf file1 (rm --recursive --force file1 ) と同等で、ディレクトリの場合や書き込み権限が無い場合でも警告なしに移動します。 ごみ箱 (~/.trash ) に同名のファイルが存在する場合は上書きされ、同名のディレクトリが存在する場合は統合されます。
|
sudo ptrash file2 |
親ディレクトリに書き込み権限が無い場合、sudo コマンドを使って、rootユーザーとして削除することが多いと思います。CentOSの初期設定ではsudoersの always_set_home フラグが on となっているため、この場合削除したファイル・ディレクトリは/root/.trash に移動されることになります。 |
ptrash -i file1 |
file1 がファイルの場合に、移動するか問い合わせます (プロンプトを表示します)。rm -di (rm --dir --interactive=always ) などとは異なり、file1 がディレクトリの場合は問い合わせずに移動します。 |
ptrash -r file1 ptrash --restore file1
|
~/.trash/.trashdb に記録されている情報をもとに、ごみ箱 (~/.trash ) 内のファイル・ディレクトリfile1 を元の場所に戻します。 前述のとおりディレクトリを統合したりしているため、精度は期待できません。
|
ptrash -d file1 ptrash --delete file1
|
ごみ箱 (~/.trash ) 内のファイル・ディレクトリfile1 を削除します。 |