Linux7

コマンド実行結果の出力

ドル記号「$(...)」

Linuxでは、$(…)で囲んだコマンドは実行結果を出力し展開される。
使い方としては、バッククォートとほぼ同じ。
コマンドをネストする時などは$(...)のほうが便利

$ cd /home/user
$ echo "現在のディレクトリは、$(basename $(pwd))です"
現在のディレクトリは、userです

バッククォートとシングルクォートの違い

’(シングルクォート)は囲った中身を文字列として主力するのに対して、 (バッククォート)は囲った中身をコマンドとして実行しその結果を出力します。

$ echo "今日は、`date +%m月%d日`です"
今日は、12月31日です

ファイル閲覧

・ファイル閲覧するには、lessコマンドやtailコマンド、headコマンドなどが良い。

Catは長いファイルの場合はターミナルを埋め尽くしてしまい全てのファイル内容を閲覧することができないので、ファイル閲覧の用途には向いていない。

catコマンド

パイプ「|」を使ってgrepコマンドと組み合わせて使うことができる。

$ cat sample.txt | grep target

・新規ファイルを作成することもできる。
コマンドを実行すると、ファイル内容の入力状態となりCtrl + Dで入力を終了します。

$ cat > sample.txt
Hello, World. #ファイル内容を入力
# Ctrl + Dで終了

・複数のファイルを連結して標準出力に表示するのにも使えます。
連結した内容を保存も出来る。

$ cat hello.txt world.txt > hello_world.txt

ファイルの新規作成

ファイルの新規作成はtouchコマンドだが、vi ファイル名にするとすぐ編集できる。

mkdirコマンド

$ mkdir -p 新規ディレクトリ1/新規ディレクトリ2

オプションの-pをつけると、新規ディレクトリ1が無かった場合に作ってから、新規ディレクトリ2を作ってくれる。

デフォルトパーミッションは「umask」の設定と同じになります。
022の場合はrwxr-xr-x
「umask」の値を変更してしまうと、予期せずパーミッションがオープンになりすぎる危険性があります。
そのため、-mオプションを使用するか、ディレクトリ作成後にchmodコマンドでパーミッションを変更するほうが良い。

$ mkdir -m +w sample2
$ ls -l
  drwxrwxrwx 2 root root 4096  2月  4 22:37 2016 sample2

renameコマンド

ファイル名の一部を置換することができるコマンド。
一括変更に使うことが多いが、ひとつずつファイル名を変更することもできる。
$ rename 置換する文字列 置換後の文字列 ファイル名 ファイル名2 …と記述する。

$ rename 2014 2015 2014-*.txt

ファイルだけでなくディレクトリも置換対象になる

sample/ディレクトリ以下のsample.txtsample2.txtに変更しようとするとエラーとなる。
ranameコマンドは同一ディレクトリ内でのファイル名一括変更時のみに使用する。

【cp】ファイル・ディレクトリをコピーする

コピー元のファイル、ディレクトリは複数でもOK!

すでに同じ名前のファイルがあった場合は、何も聞かれず上書きしてしまう!

・オプション-r
ディレクトリの内容をコピー先に再帰的にすべてコピー

$ cp -r コピー元 コピー先

すでに同じ名前のディレクトリがあった場合、そのディレクトリの中にコピーされる。

・オプション-p
ファイルの所有者、パーミッション、タイムスタンプを保持したままコピーする。

・オプション-a
再帰的かつ所有者、パーミッション、タイムスタンプを保持したままコピーする場合。
-rpとほぼ同様の動きとなる。

【mv】ファイル・ディレクトリを移動する

・複数のファイルやディレクトリを一括で移動変更出来ないので、一括変更する場合は、renameコマンドを使う。
cpコマンドとほぼ同じ動きで、元のファイルが無くなるだけ。
cpコマンドと違い、ディレクトリの移動でもオプションはいらない。

mvコマンドを使った擬似的なゴミ箱
ゴミ箱のような機能が欲しいという場合は、任意の場所にtrashes/ディレクトリを作成し、削除したいファイルをmvコマンドでtrashes/ディレクトリに移動させる。
さらにaliasなどを設定すると便利。
容量が少なくなってきたらtrashesディレクトリ内のものを削除するか、cronなどで定期的に削除するなどすると良い。