はじめに
よく使うけ、ど忘れしてしまうLinux周りのコマンド集です。
※随時更新予定
grepコマンドオプション
-e:複数指定
-E:拡張正規表現
-v:指定した以外を検索
-r:ディレクトリの中も検索
-i:大文字小文字を区別しない
-o:指定した文字のみ取り出し
-B:検索でヒットした前の行を出力 ex: grep test -B 10 test.txt
-A:後の行
-C:前後の
-c:検索でヒットした行数
-n:行番号を付け出力
-w:単語の完全一致検索
-l:ファイルのリストを出力
gz形式などで圧縮されたファイルをgrepしたい場合
- zをgrepの先頭につけて実行します。
zgrep
mkdir
-p 親ディレクトリも作成
-m パーミッション指定して作成
awk
-F:区切り文字を指定
# 三項演算子 (条件 ? 条件が正の場合の値:条件が偽の場合の値)
$ seq 10 | awk '{print $1%2 ? "奇数":"偶数"}'
組み込み変数
- NR:処理中の行数を取得する
sed
- 文字の置換する場合に使用
- -E:拡張正規表現(-rでも同じ使い方ができる)
# 特定の文字を入れ替える
$ echo teet | sed 's/ee/es/'
test
# 末尾にgを付けて、一致する全ての文字を置換
$ echo teet | sed 's/e/s/g'
tsst
# &で検索対象の文字を格納
$ echo test | sed 's/test/&&/'
testtest
# \1,\2,\数字で()で指定した文字を参照する
echo test | sed -E 's/(te)(st)/\2\1/'
stte
# 末尾にpで前に指定した一致する行を出力する。
# -nオプションで各行を出力させない
$ sed -n '/\.txt$/p'
xargs
- コマンドに引数を渡すときに使用
# 後ろにコマンドを指定しないとechoを実行する
$ seq 10 | xargs
1 2 3 4 5 6 7 8 9 10
# -n数字オプションで指定した数ずつコマンドに渡す
$ seq 10 | xargs -n5
1 2 3 4 5
6 7 8 9 10
# -I@ @にxargsが受け取ったものを1つずつ格納できる(複数のファイルを作成するときなどに便利)
$ seq 10 | xargs -I@ mkdir dir_@
$ ls
dir_1 dir_10 dir_2 dir_3 dir_4 dir_5 dir_6 dir_7 dir_8 dir_9
# -P数字で並列処理を行う
# PCのcpuが分からなければnprocで調べられる。
$ seq 10 | xargs -P2 -I@ mkdir dir_@
$ seq 10 | xargs -P$(nproc) -I@ mkdir dir_@
cp
cp コピー元 コピー先
-i 上書きの場合、可否を確認
-r(R) ディレクトの中身ごとコピー
-p コピー元の日時を継承
ファイルのバックアップを取るときに下記の書き方をすればファイル名を追記せずにスマートにバックアップが取れる。
cp test.conf{,.202112bk}
mv
mv 移動したいfiledir 移動先dir
mv 名前を変更したいfiledir 変更したい名前filedir
mv file file file dir/.
┗複数のファイルを移動
-f 移動先に同名ファイルがあれば強制的に移動
-i 確認
rm
-r(R) ディレクトリを削除
-f 確認なしで削除
su
ハイフン 環境変数を引き継かず、ユーザーのホームディレクトリに移る
-c "" ""内のコマンドを実行
ssh-keygen
-t 暗号方式指定 デフォルトはrsa
-b ビット数を指定
-y OpenSSH形式の秘密鍵ファイルを読み出し、OpenSSH形式の公開鍵を標準出力に出力する
-f ファイルを指定
read
ユーザーからの入力値を受け取り、変数に格納してそれを次の処理で使用したい場合に使用
-p コメント入力
yumとrpmコマンド
インストールしたソフトウェアの一覧
yum list installed
yumリポジトリにソフトウェアがあるか確認
yum info
rpmパッケージ削除
rpm -evh soft
rpmパッケージの保存
wget xxxxx.rpm
rpmパッケージのインストール
rpm -ivh xxxx.rpm
インストールされているrpmパッケージを一覧表示
rpm -qa
パッケージからインストールされたファイルを一覧表示
rpm -ql
ポートの確認
netstat -tnlp
ssh接続コマンド
ssh -i passwd namae@domein
ターミナルショートカット
shift + ctl + PgDn 1画面移動
正規表現
. 任意の1文字
+ 直前の文字の1回以上の繰り返し
* 直前の文字の0回以上の繰り返し
? 直前の文字が0か1か
^ 先頭
$ 後方
\ 正規表現ではないことを指定
[] 中の文字のどれか1文字
ヒアドキュメント
cat >> test.txt << EOF
aa
aa
aa
EOF
上記の書き方でファイルに追記することができる。シェルスクリプト作成時に便利
シェル関連
クオートの違い
''は中の変数をただの文字列として認識
""は中の変数を変数として認識
seq
-fオプションで数字を入れて出力ができる
%g(整数)
%f(小数)
seq -f 'echo %g個; sleep 1' 10 | bash
IFS
区切り文字を指定することができる
IFS=,
tee
標準入力から受け取った内容を、標準出力とファイルに書き出すコマンド
VIM小技
複数の行末に文字の挿入
- 短形選択後に$A