Linux コマンド集
コンピュータ系
ディストリビューションのバージョンを確認する
Debian でマイナーバージョンまで知りたかったら以下が使える模様。(Ubuntu だと意味不明な文字列が返ってくる)
| $cat /etc/debian_version
12.9
|
IP アドレスを取得する
| $ ip add show eth0 | grep -oE '(192\.168\.[0-9]+\.[0-9]+)?' | sed -n 1P
192.168.XX.X
$ ip add show eth0 | grep -oE '(192\.168\.[0-9]+\.[0-9]+)?'
192.168.XX.X
192.168.YY.YYY
|
CPU を消費しているプロセスを確認する
syslog を監視する
| ```bash
$ tail -f /var/log/syslog
|
PATH を確認する
| $ env | grep PATH
$ sudo env | grep PATH
|
sudo 時と通常時は PATH が異なる。sudo visudoで以下のように変更すれば同じに出来る。
| # Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults env_keep += "PATH"
|
検索系
ファイルをファイル名で検索する
ファイルをファイル名で検索する(エラーを出力しない)
| $ find / -name "main.hex" 2>/dev/null
|
ファイル内を文字列で検索する
ストレージ系
ディスク一覧を確認する
ストレージ容量を確認する
ストレージ全体の空き容量を確認する
| $ df -h --total
Filesystem Size Used Avail Use% Mounted on
# 略
total 1.9T 9.9G 1.7T 1% -
|
ディレクトリサイズを確認する
シンボリックリンクを作成する
| $ ln -s /path/to/file file
|
標準出力をファイルに書き出す
| $ sudo apt update | tee result_`date +%Y%m%d%H%M%S`.txt
|
ダウンロード系
curl
ファイル・ディレクトリ系
複数階層のディレクトリを一度に作成する、存在する場合エラーを無視する
| $ mkdir -p temp/aaa/bbb/ccc
|
リネームする
ディレクトリ内のファイル名をまとめて変更(連番付与)する - Qiita
| # 期待結果を確認する
$ ls | awk '{ printf "mv %s test%03d.png\n", $0, NR }'
mv 0-9876589.png test001.png
mv 0987654678.png test002.png
mv 234567.png test003.png
mv 32456789654.png test004.png
# 実行する
$ ls | awk '{ printf "mv %s test%03d.png\n", $0, NR }' | sh
|
awk コマンドでテキスト加工をしてファイル名変更用のコマンドを生成する。
mv %s test%03d.png¥n %sは文字列、%03dは3桁 0 埋めの数値文字列
$0でlsの表示結果(元のファイル名)
NRはawkの組込変数で現在処理しているレコード番号
ディレクトリ構成をツリー形式で出力する
| $ sudo apt install tree
$ tree
# node_modulesディレクトリを無視する
$ tree -I node_modules
# 複数のディレクトリを無視する
$ tree -I "node_modules|cdk.out|__pycache__"
|
その他
sudo のパスワード入力を省略する
sudo 時のパスワード入力を省略する【ubunutu/CentOS】 - F27P
| $ sudo visudo
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# 以下を追加する
{ユーザー名} ALL=NOPASSWD: ALL
|
yyyymmddhhmmss
| $ date "+%Y%m%d%H%M%S"
20230128131449
|
UUID を生成させる
| # 1個
$ cat /proc/sys/kernel/random/uuid
# たくさん
$ for((i=0; i<10; i++)); do cat /proc/sys/kernel/random/uuid; done
|
標準出力をファイル出力させる
| $ python main.py | tee logs/`date +%Y%m%d%H%M%S`.log
|
optipng で一括処理させる
| $ find -name "*.png" | sort | xargs optipng -o7
|
途中でバックグラウンド処理に切り替える
シェルのバックグラウンド実行って後だしできるって知ってました? #Linux コマンド - Qiita
1
2
3
4
5
6
7
8
9
10
11
12
13 | # なんか時間のかかるコマンド
$ sleep 10
# ここでCtrl+Z
^Z
[1]+ Stopped sleep 10
$ bg
[1]+ sleep 10 &
# しばらく待ったあとEnterを押すなりで行を送る
$
[1]+ Done sleep 10
|
ディレクトリ下を絶対パスで再帰的に取得する
| # ls -1d $(find ${path})
$ ls -1d $(find path/to)
path/to
path/to/file
|
SCP
| # ダウンロード
$ scp -P {ポート番号} {サーバーのユーザー名}@{サーバーのIPアドレス}:{ダウンロードしたいファイルのパス} {ダウンロード先のパス}
# アップロード
$ scp -P {ポート番号} {アップロードしたいファイルのパス} {サーバーのユーザー名}@{サーバーのIPアドレス}:{アップロード先のパス}
|
1 行ずつ取り出して引数に渡す
| $ cat data | xargs -I {} echo "Hi, {}"
Hi, aaa
Hi, bbb
Hi, ccc
|