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.txt
をsample2.txt
に変更しようとするとエラーとなる。raname
コマンドは同一ディレクトリ内でのファイル名一括変更時のみに使用する。
ディレクトリをコピーする
【cp】ファイル・コピー元のファイル、ディレクトリは複数でもOK!
・オプション-r
ディレクトリの内容をコピー先に再帰的にすべてコピー
$ cp -r コピー元 コピー先
・オプション-p
ファイルの所有者、パーミッション、タイムスタンプを保持したままコピーする。
・オプション-a
再帰的かつ所有者、パーミッション、タイムスタンプを保持したままコピーする場合。-rp
とほぼ同様の動きとなる。
ディレクトリを移動する
【mv】ファイル・・複数のファイルやディレクトリを一括で移動変更出来ないので、一括変更する場合は、rename
コマンドを使う。
・cp
コマンドとほぼ同じ動きで、元のファイルが無くなるだけ。
・cp
コマンドと違い、ディレクトリの移動でもオプションはいらない。
mv
コマンドを使った擬似的なゴミ箱
ゴミ箱のような機能が欲しいという場合は、任意の場所にtrashes/
ディレクトリを作成し、削除したいファイルをmv
コマンドでtrashes/
ディレクトリに移動させる。
さらにalias
などを設定すると便利。
容量が少なくなってきたらtrashes
ディレクトリ内のものを削除するか、cron
などで定期的に削除するなどすると良い。