Linux ごった煮
.bashrc
と .bash_profile
は微妙に違う
-
.bash_profile
は、ログインシェル起動時にのみ読み込まれる -
.bashrc
は、 (bash
コマンドなどで)bashを起動するたびに読み込まれる
ユーザー個別の設定ファイルは、ホームディレクトリ直下に作成される。
全ユーザー共通設定は、 /etc/bashrc
と src/profile
に記述する。
some command
をバッククォートでくくると、 $(some command)
と同じ動作をする
alias エイリアス名
で、 エイリアス名の詳細を確認できる。
$ alias ls
alias ls='ls --color=auto'
./sample.sh
と実行する場合、 sample.sh には r-x
権限が必要。
bash sample.sh
と実行する場合、 sample.sh には r--
権限が必要で十分。
なお、バイナリファイルは、 実行権限さえあれば実行できる。
理由は推測の域を出ない
$0
は実行ファイル名。
コマンドライン引数は、 $1
以降に設定される
ls -l
の先頭一文字目の意味
-
-
... 通常のファイル -
d
... ディレクトリ -
l
... シンボリックリンク -
c
キャラクタ型デバイスファイル- キーボードなど
-
b
ブロック型デバイスファイル- ストレージなど
test -f file
は、 file
が通常ファイル(つまり、 ls -l
の先頭が -
の場合)に trueとなる。
read コマンドに、複数の変数名が指定された場合、末尾の変数は、残り全部の文字が代入される。
$ read a b c <<< "1 2 3 4 5 6"
$ echo $c
3 4 5 6
seq コマンドなるものがある。
一定のルールに従った数列を作成可能。
$ seq 5
1
2
3
4
5
$ seq 10 -3 3
10
7
4
seq 終了値
seq 初期値 終了値
seq 初期値 増分値 終了値
など
wsl にて
$cat /etc/wsl.conf
[boot]
systemd=true
上記設定を書き込むと、 systemd
が起動するようになる。
特に、 docker daemon が自動で立ち上がるのはありがたい(今まで sudo service docker start
を毎度実行していた)
$ man yes
NAME
yes - output a string repeatedly until killed
パイプにて、他のコマンドと組み合わせて使う。
y/n
を連続で聞いてくる処理を、自動化できる。
第二引数に文字列を指定できる。
指定すると、対象の文字列をひたすら標準出力する。
$ yes no
no
no
no
no
...
shell script で引数を二つずつ処理する方法
関数に引数を全部渡す。
あとは shift
キーワードで引数をずらしていく。
logのローテンションに使用できる、 logrotate
コマンドが存在する。
このコマンド(仕組み?)を活用できれば、logをローテーションする仕組みを自作しなくて済む。
◇参考文献
ulimit
コマンド
Linux ユーザが使用できるマシンリソースを制限できる。
lsof
コマンド
開いているファイルの一覧を表示できる。
PIDやユーザ名も併記されるので、「どのファイル」を、「どのプロセス」が開いているか、といった調査が可能。
「list open files」の略。
/etc/nologin
ファイル
このファイルが存在すると、rootユーザ以外ログインできなくなる。
◇関連
...
# Disallows other than root logins when /etc/nologin exists
# (Replaces the `NOLOGINS_FILE' option from login.defs)
auth requisite pam_nologin.so
...
現在、 net-tools
パッケージは非推奨。
代わりに、 iproute2
の使用を推奨。
◇参考文献
シェルの関数宣言
function
キーワードは必須ではない。
function
または ()
のいずれかが書かれていれば良い(両方書いてもよい)。
◇OK
function sample { ... }
sample() { ... }
function sample() { ... }
timezone 情報は、 /etc/localtime
に存在する。
そして、 /etc/localtime
はシンボリックリンク。
$ ll /etc/localtime
lrwxrwxrwx 1 root root 30 Aug 19 09:51 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
本体は、/usr/share/zoneinfo/
内に存在する。
$ ls /usr/share/zoneinfo
Africa Asia CET
...
at
コマンド
指定した時間に、任意のコマンドやプログラムを実行できる。
cron
が定期実行だとすれば、 at
は一度きりの実行。
crtl + D
入力を終了するショートカット。
ログインシェルからログアウトすることもできる。
chage
コマンド
パスワード関連情報を表示・編集できる。
chage
は、CHange password AGE の略らしい。