連続したスペースで区切られたフィールドを取り出して表示する
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
数値計算をする
# 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 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
ワイルドカードを使うとファイルは昇順に結合される
アクセスするディレクトリを移動する
/home/linux に移動する
# cd /home/linux
cd コマンドだけ実行するとホームディレクトリへもどる
$ cd
↑一般ユーザ ( linux ) だと /home/linux にもどる
# cd
↑ root だと /root にもどる
ファイル,ディレクトリのアクセス権限を変える
file の所有者に読み・書き・実行権限 ( 4+2+1=7 ) を、グループとその他に読み取り権限 ( 4 ) を与える。
# chmod 744 file
オプションに -R を指定し、ファイル名にディレクトリを指定した場合には、そのディレクトリ以下の全てのファイルに対して同じ設定が行われる。
同じ拡張子のファイルをまとめて設定するには、 * を使う。
# chmod 755 *.cgi
↑拡張子が cgi のファイルを全て 755 に変更
アクセス権(パーミッション)の意味
| ファイル | ディレクトリ |
| 「r」読み(4) | ファイルの内容を表示(catコマンドなど) | ディレクトリ内のリスト表示(lsコマンドなど) |
| 「w」書き(2) | ファイルの内容を編集 | ディレクトリ内にファイル作成や削除 |
| 「x」実行(1) | 実行ファイルの実行 | そのディレクトリに移動(cdコマンド) |
ファイル,ディレクトリの所有者,グループを変更する
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 に変更する。
ファイルをコピーする
違う名前で同一ディレクトリにコピーする。(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}
フィールド,カラムを取り出して表示する
オプション
-c 位置:取り出すカラムの位置を指定する。(複数指定可、範囲指定可)
-f 位置:取り出すフィールドの位置を指定する。(複数指定可、範囲指定可)
-d 区切り文字:フィールドの区切り文字を指定する。
最初の3文字を出力する。
# cut -c1-3 list.txt
ファイルの各行のスペースで区切られた2番目のフィールドを切り出す。
# cut -d' ' -f2 list.txt
ファイルシステムのドライブ使用状況の表示
現在マウントされている全てのファイルシステムの使用状況を表示
# df -h
-h:サイズに応じた単位で表示する
--total:合計も表示する
パッケージの新規インストール
# dnf install (パッケージ名)
パッケージのアンインストール
# dnf remove (パッケージ名)
アップデート可能なパッケージの一括アップデート
# dnf -y update
パッケージグループ名を英語で一覧表示する
# LANG=C dnf group list
パッケージグループに含まれるパッケージを確認する
# dnf group info (パッケージグループ名)
グループ単位のインストール
# dnf group install (グループ名)
キーワードでパッケージを検索
# dnf search (キーワード)
ファイル名からパッケージ名を逆引き
# dnf provides (ファイル名)