備忘録として学んだことを書いていきます。
間違いや書きたいことがあれば適宜修正・加筆します。
今週はLinuxの基本事項について学びました。
Linuxの主要なディレクトリについて
-
/
:ルートディレクトリ
↓ ルートディレクトリの下に重要なディレクトリがたくさん ↓
-
/bin
:コマンドの実行ファイル(最低限必要なもの)を格納 -
/dev
:デバイスファイル(Linux特有の機能で、ハードウェアをファイルとして扱ったもの)を格納 -
/etc
:設定ファイルを格納 -
/home
:ユーザごとに割り当てる個人用ディレクトリなどを格納 -
/sbin
:実行ファイルを格納(管理ユーザ向け) -
/tmp
:一時的なファイルを格納(定期的に削除される可能性あり) -
/usr
:各種アプリケーションと付随するファイルを格納 -
/var
:変化するデータを格納(アプリ動作時に作成されたログなど)
Shellコマンド集
忘れないであろうコマンド達
cd:ディレクトリ移動
../
でひとつ前のディレクトリ
~
でホームディレクトリ(/home/ユーザ名
)←移動先を指定しなかったときもこれ
touch:空ファイルの作成
mkdir:空ディレクトリの作成
ls:ファイルやディレクトリをリストで表示
pwd:今いる場所(カレントディレクトリ)を表示
cat:ファイルの内容を標準出力
複数行になる場合はless
のほうが優秀
mv:ファイルやディレクトリの移動・リネーム
rm:ファイルやディレクトリの削除
ディレクトリの削除時は-r
で再帰的に削除する必要がある
cp:ファイルやディレクトリのコピー
ディレクトリのコピー時は-r
で再帰的にコピー
-p
オプションでタイムスタンプやパーミッションを保持した状態でコピー
ps:プロセスの監視
-
-a
:すべてのユーザを表示 -
-u
:詳細な情報を表示 -
-x
:すべてのプロセスを表示
全部合わせてps -aux
と書いたりする
kill:プロセスやジョブを殺す(本来はシグナルを送信するコマンド)
kill %<ジョブID>
:ジョブ(ひとまとまりのプロセス)をキルする
kill <プロセスID>
:プロセスをキルする
whoami:自分自身のユーザ名を確認
sudo:super userとして実行
man:コマンドのマニュアルを表示
man -k xxxx
で特定のワードxxxx
に引っかかったコマンドを検索できる!
忘れそうなコマンド達
awk:文字列を受け取り、列に対して何らかの処理をする
# aaa.txt内の文字列をカンマ区切りで列に分けて、その1列目($1)だけ表示
awk -F',' '{print $1}' aaa.txt
grep:入力の中で指定された文字列に一致する行を出力
# bananaが含まれる行だけが出力される
grep 'banana' aaa.txt
パイプライン|
で使用することが多い
# ps -aux の結果のうち、tanaka が含まれる行だけ出力
ps -aux | grep tanaka
sed:指定したファイルをコマンドに従って処理して標準出力
s
:ファイルの内容を置換
# aabb.txtのaaaの部分をbbbに置換する
# 最後のgは「同じ行に複数回出現した場合、すべて置換」を意味する
sed 's/aaa/bbb/g' aabb.txt
パイプライン|
の例
# ㎰の出力のうちrootをROOTに置換する(1行につき1つだけ置換)
ps -aux | sed 's/root/ROOT/'
その他機能sedの参考リンク
cut:各行から指定した部分だけを切り出す
-c
:文字数で指定
# 3文字目から10文字目を取り出す
cut -c 3-10 file.txt
# 3文字目から末尾までを取り出す
cut -c 3- file.txt
-b
:バイト数で指定
# 4バイト目から末尾までを取り出す
cut -b 4- file
head / tail:先頭/末尾から指定した行数だけ取得
# -nで行数指定
head -n 5 file.txt
# デフォルトでは10行出力
head file.txt
tail
と組み合わせて、好きな範囲の行を取り出せる
# 7行目から10行目までを取り出す
head -n 10 file.txt | tail -n 3
find:ファイルやディレクトリを検索
find text.txt
その他機能:findの参考リンク
fg / bg:ジョブをフォアグラウンド(fg) / バックグラウンド(bg)で動かす
fg %<ジョブID>
bg %<ジョブID>
uniq:重複している行を取り除く
# file.txtから重複している行を取り除いた結果を出力
uniq file.txt
# ソートして重複行を取り除く
sort file.txt | uniq
crontab:cronを設定
crontab -e
でcronの設定ファイルを編集
cron(クロン)は定期的にコマンドを実行してくれるデーモンプロセスというやつ
クロン設定ファイルの書き方
分 時 日 月 年 <コマンド>
の順に、実行時間と実行コマンドを書く(*
を使って省略も可能)
例:毎月11日の22時33分にHelloと出力
33 22 11 * * echo Hello
/
を使うと間隔を指定可能
例:5分おきにpingを実行
/5 * * * * ping -c 1 10.10.10.10
sort:ファイルの内容を並び替える
文字とみなして辞書順に並び替える
-r
:逆順に並び替える
-n
:数字とみなして並び替える
-n
をつけないと辞書順なので、数字は「1→100→11」などの順番になってしまう
less:スクロールできる形でファイルの内容を表示
スクロール表示中のコマンド
-
Space
/f
:1画面下 -
b
:1画面上 -
j
:1行下 -
k
:1行上 -
q
:終了 -
/ 文字列
:下方向に文字列を検索 -
? 文字列
;上方向に文字列を検索 - n:検索中に使える。次の検索結果へ
- N:検索中に使える。前の検索結果へ
標準出力に返していないので、パイプライン|
で使えない
ln:リンクを貼る
デフォルトでハードリンクを貼る
-s
でシンボリックリンクを貼る
ハードリンクは実態に別の名前を付けてるイメージで、元ファイルを削除しても消えない。
シンボリックリンクはリンク先のパスで実体を参照するので、元ファイルがなくなると壊れる。