WAVE Log
awk

連続したスペースで区切られたフィールドを取り出して表示する

awk コマンドでは連続した空白は一つの区切りとして扱われる。
3つ目の区切られているフィールドを取り出す。

# awk '{print $3}' list.txt

縦計を計算する

# cat sample.txt 1 4 2 5 3 6

1列目の合計を出す。

# awk '{s += $1} END {print s}' < sample.txt 6

1列目と2列目の合計を出す。

# awk '{a += $1; b += $2} END {print a, b}' < sample.txt 6 15

bc

数値計算をする

# echo "scale=2; 10/3 + 0.1" | bc 3.43

scale=桁:割り算で小数点以下の桁数を指定する。初期値は0。
割り算でないと桁数の指定は効かない。

# echo "scale=2; 5.432 + 3.1" | bc 8.532

# echo "scale=2; (5.432 + 3.1)/1" | bc 8.53

計算途中でも小数点以下を切り捨ててしまう。例えば、「1/2*2」の結果は1ではなく、0になる。

# echo "1/2 * 2" | bc 0

1未満の整数部分の0は表示されない。(マイナスも同様)

# echo "scale=2; 1/2" | bc .50 # echo "scale=2; -1/2" | bc -.50

0が必要ならば以下のようにする。

# echo "scale=2; 1/2" | bc |sed -e 's/^\./0\./' | sed -e 's/^-\./-0\./' 0.50

cat

内容が短いファイルの中身を表示する。

# cat file

リダイレクション

# cat file > file1

# cat file >> file1

> 標準出力をファイルにする(コピー)
>> 標準出力をファイルに追加する

ファイルを結合する

# cat test.aa test.ab test.ac > file.txt

test.aa + test.ab + test.ac の順番に結合される

# cat test.* > file.txt

ワイルドカードを使うとファイルは昇順に結合される

cd

アクセスするディレクトリを移動する

/home/linux に移動する

# cd /home/linux

cd コマンドだけ実行するとホームディレクトリへもどる

$ cd

↑一般ユーザ ( linux ) だと /home/linux にもどる

# cd

↑ root だと /root にもどる

chmod

ファイル,ディレクトリのアクセス権限を変える

file の所有者に読み・書き・実行権限 ( 4+2+1=7 ) を、グループとその他に読み取り権限 ( 4 ) を与える。

# chmod 744 file

オプションに -R を指定し、ファイル名にディレクトリを指定した場合には、そのディレクトリ以下の全てのファイルに対して同じ設定が行われる。

同じ拡張子のファイルをまとめて設定するには、 * を使う。

# chmod 755 *.cgi

↑拡張子が cgi のファイルを全て 755 に変更

アクセス権(パーミッション)の意味
ファイルディレクトリ
「r」読み(4)ファイルの内容を表示(catコマンドなど)ディレクトリ内のリスト表示(lsコマンドなど)
「w」書き(2)ファイルの内容を編集ディレクトリ内にファイル作成や削除
「x」実行(1)実行ファイルの実行そのディレクトリに移動(cdコマンド)
chown

ファイル,ディレクトリの所有者,グループを変更する

file の所有者を user1 にする。

# chown user1 file

file の所有者を user1 ,所有グループを linux にする。

# chown user1:linux file

↑所有者だけでなくグループ所有権も同時に指定する場合には、それらを : で並べる。
所有者,グループ所有権とも同じにする場合( user1 )は、下記でも可。

# chown user1: file

オプションに -R を指定し、ファイル名にディレクトリを指定した場合には、そのディレクトリ以下の全てのファイルに対して同じ所有者,グループ所有権が設定される

# chown -R root:www /var/www/html

↑/var/www/html ディレクトリ以下にある全てのファイルの所有者を root に、グループを www に変更する。

cp

ファイルをコピーする

違う名前で同一ディレクトリにコピーする。(file1 を file2 という名前で複製)

# cp file1 file2

現行ディレクトリのファイルを別のディレクトリにコピーする。(file1 → user/newdir/file1)

# cp file1 user/newdir

コピー先ファイル名を「.」にすると、現在アクセスしているディレクトリにコピーされる。

# cp /usr/local/test.txt .

↑「/usr/local/」ディレクトリにある「test.txt」ファイルが現在アクセスしているディレクトリにコピーされる。

オプション -p を使うと、ファイルの所有者,タイムスタンプ,アクセス権限などの情報もコピーされる。

ディレクトリごとコピーする

dir1 ディレクトリ以下をすべて dir2 にコピーする。

# cp -r dir1 dir2

なるべく“そっくりそのまま”コピーする

「file1」を「file2」にコピーする。ファイルの属性はなるべく保持され、シンボリックリンクはそのままコピーされる。

# cp -a file1 file2

「dir1」を「dir2」にコピーする。ディレクトリの内容もそのままコピーされる。

# cp -a dir1 dir2

file.conf.orig というファイル名のコピーを作成する。

# cp -a file.conf{,.orig}

cut

フィールド,カラムを取り出して表示する

オプション
-c 位置:取り出すカラムの位置を指定する。(複数指定可、範囲指定可)
-f 位置:取り出すフィールドの位置を指定する。(複数指定可、範囲指定可)
-d 区切り文字:フィールドの区切り文字を指定する。

最初の3文字を出力する。

# cut -c1-3 list.txt

ファイルの各行のスペースで区切られた2番目のフィールドを切り出す。

# cut -d' ' -f2 list.txt

df

ファイルシステムのドライブ使用状況の表示

現在マウントされている全てのファイルシステムの使用状況を表示

# df -h

-h:サイズに応じた単位で表示する
--total:合計も表示する

dnf

パッケージの新規インストール

# dnf install (パッケージ名)

パッケージのアンインストール

# dnf remove (パッケージ名)

アップデート可能なパッケージの一括アップデート

# dnf -y update

パッケージグループ名を英語で一覧表示する

# LANG=C dnf group list

パッケージグループに含まれるパッケージを確認する

# dnf group info (パッケージグループ名)

グループ単位のインストール

# dnf group install (グループ名)

キーワードでパッケージを検索

# dnf search (キーワード)

ファイル名からパッケージ名を逆引き

# dnf provides (ファイル名)