Ubuntu Weekly Recipe

第640回 gioコマンドを使ってコマンドラインからリモートのファイルを制御する

この記事を読むのに必要な時間:およそ 2 分

フォルダの中身を確認する

フォルダーの中身を確認するには次のコマンドを実行します。

$ gio list (パス)

lsコマンドと類似した表示になりますが,ツリー状で表示したい場合はlistの代わりにtreeを指定してください。

ファイルを開く

ファイルを開く場合は次のコマンドを実行します。

$ gio open (パス)

gvfs-binパッケージに含まれるgvfs-openコマンドやxdg-utilsパッケージに含まれるxdg-openコマンドと同様に使用できます。なおUbuntu 20.10においてもxdg-utilsパッケージはあらかじめインストールされているため,そのまま引き続き使用することもできます。

ファイルを操作する

ファイルをコピーする場合は次のコマンドを実行します。

$ gio copy (パス) (パス)

具体例は次のとおりです。

$ gio copy smb://ds118.local/share/misc/recipe/micropc-focal.md .

このように,ファイルの場所がリモートかローカルかを問わず透過的に指定できます。

移動するときはcopyの代わりにmove,ファイル名を変更する場合はcopyの代わりにrenameを指定すると,それぞれのことが行なえます。

すべてではありませんが基本的な使い方は以上のとおりです。以降は応用的な使い方で,原則としてローカルのファイルシステムのみで有効です。

ファイルやフォルダーをゴミ箱に入れる場合は次のコマンドを実行します。

$ gio trash (パス)

ゴミ箱を空にする場合は次にコマンドを実行します。

$ gio trash --empty

コマンドからゴミ箱を制御するには,trash-cliパッケージに含まれているコマンドが便利です。gio trashコマンドではできないゴミ箱からファイルを戻すことなどができます。

デスクトップにアプリケーションの起動アイコンをコピーしてもそのまま実行できるようにはならず,右クリックして「起動を許可する」をクリックする必要があります。これをコマンドラインから行うこともできます。次のコマンドを実行してください。

$ cd ~/デスクトップ
$ gio copy /usr/share/applications/firefox.desktop .
$ gio set firefox.desktop "metadata::trusted" true
$ chmod +x firefox.desktop

無駄にgio copyコマンドを使用していますが,もちろんcpコマンドでも構いません。

gio setコマンドでファイルの属性を変更した後に実行権限を与えています。検証した限りでは順序が逆では動作しませんでした。

なおファイルの属性を表示するには次のコマンドを実行します。

$ gio info firefox.desktop

フォルダやファイルを監視する

ファイルやフォルダーの状態を監視することもできます。具体例を見ていきましょう。

$ gio monitor ~/ドキュメント

監視したフォルダーにtouchコマンドでファイルを作ると,次のように表示されます。

/home/ikuya/ドキュメント: /home/ikuya/ドキュメント/newfile: created
/home/ikuya/ドキュメント: /home/ikuya/ドキュメント/newfile: changes done
/home/ikuya/ドキュメント: /home/ikuya/ドキュメント/newfile: attributes changed

ただ,率直なところどう使えばいいのかよくわかりません。特定の変更があった場合に何かをフックするといった使い方は想定されていないようで,変更したことを眺める以外の使い方が思いつきません。もちろんそれも場合によっては有効な使いみちではあるのですが。

端末への出力結果を保存する

端末への出力を保存することもできます。こちらも具体例を示します。

$ gio list |gio save ls.txt

これでカレントフォルダーの内容をls.txtに保存できます。リダイレクトやteeコマンドでも同様のことができますが,マウント先にも保存できるのが目新しいところです。次の例を見てください。

$ gio list |gio save smb://ds118.local/share/misc/recipe/ls.txt

このようにgioコマンドはとても便利です。紹介しきれなかった機能もありますが,問題はgitコマンドと似ていて本記事の執筆中でも数回入力を誤ってしまったことでしょうか。

著者プロフィール

あわしろいくや

Ubuntu Japanese Teamのメンバー。VirtualBoxなどの翻訳を手がける。技術同人サークルteam zpn主宰。ほか原稿執筆を少々。