Linux コマンド Tips

Last Change: 13-Mar-2016.
author : qh73xe

このページには Linux コマンドに関するメモ書きを残しておきます. 基本的には私がよく使うコマンドをメモしているだけですので, 網羅的な内容ではありません.

open コマンド

mac の open コマンド, cygwin の cyg-start コマンドに相当するコマンドに関してですが, gnome では gnome-open が有名でした. しかし,最近ではこのコマンドはおすすめされず,gvfs-open になっているようです.

例えば現在のディレクトリを開く場合は以下のようにします.

$ gvfs-open ./

あるディレクトリのファイルを一括で処理する

for 文を使用します.

私の場合,あるディレクトリを一括で作業する際には shell の方で制御することが多いので, スクリプティングを行う際には 1入力, 1出力のみを考えるようにしています.

サンプル

任意のディレクトリの .tiff という拡張子のファイルを .tif という拡張子に変更する.

for i in *.tiff; do
   mv $i ${i%.tiff}.tif;
done

注釈

上記の例は for 文のサンプルとしては美しくないかもしれません. ${i%hogehoge}.tif の部分は本例とは関係のない知識が必要です.

これは 変数 i の %hogehoge 以外の部分を展開するという意味です. 変数 i には 現在のディレクトリに含まれる .tiff という拡張子を持つファイル名が入るので, ${i%tiff} には拡張子を除くファイル名の部分が展開されます.

連番のファイルを作成したい

一方単純な連番ファイルを扱う場合,以下のような書き方も可能です.

touch foo_{1..30}.txt
  • touch コマンドは新規の空ファイルを作成します.

shell コマンドの終了を確認する

コマンドを実行した直後に $0 とすると そのコマンドが無事終了したか否かを確認できます.

$ command
$ echo $?

ちなみに コマンドが終了した場合のみ別のコマンドを実行したいのみだったら 以下のように && で繋げればよいです.

$ command1 && command2

相対パスから絶対パスを取得する

ある任意のファイルを確認するとき、 相対パスを記述するのは結構容易ですが、絶対パスを取得するのは面倒な場合があります。 しかし、あるファイルのパスを絶対パスでハードコードしたい場合(例えば .desktop ファイルを作成する場合) なんというか面倒くさいです。

簡単にググってみた感じでは割と複雑な shell コマンドになりそうなのですが、 凄く簡単な方法を見つけたので紹介します。

readlink コマンドを使う方法です。 このコマンドの使用目的は基本的にあるリンクファイルの対象のパスを取得することなのですが、 オプションに -f をつけることで、相対パスを受け取り絶対パスを返すことが可能です。

$ readlink ~/Documents