Open19

便利なLinuxコマンドまとめ

白湯白湯

ファイルを検索して別ディレクトリにコピー

find . -type f -name "ファイル名" | xargs -i cp -p {} "コピー先"

状況に応じて -maxdepth <n> -mindepth <n> などを付ける。

白湯白湯

ファイルの一部を書き換え

sed -i -e 's/書き換え前/書き換え後/' <対象ファイル>
白湯白湯

特定のディレクトリを別ディレクトリにマウント

mount -B <マウント元> <マウント先>
# 同じ
mount --bind <マウント元> <マウント先>
白湯白湯

文字化けしたディレクトリに移動する。

ls -li

cd $(find . -type d -maxdepth 1 -inum xxxx)
白湯白湯

fishshellで文字の色を変える。

-r で背景が指定色になる。
指定色は16進数でも指定可能。

スクリプトで設定すると、その後の出力がすべてその色になってしまうので、適宜set_color normal; にする必要があるっぽい。

set_color red; echo 'hoge'
白湯白湯

curlコマンドでヘッダーを付ける

curl -H 'ヘッダー' URL

basic認証をパスする

curl -u user:password URL
白湯白湯

treeコマンドの代用

pwd; find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g'
白湯白湯

patchコマンドで差分を書き込む

# oldとnewの差分を取得する
diff -u old new > hoge.patch

# バックアップ取って差分を書き込む(実行前にhoge.patchを確認して問題ないかを見ておいた方がいい)
patch -b old hoge.patch
白湯白湯

flock ってコマンドがあるみたい
ファイルをロックできるので、シェルスクリプトで安全にロック制御できるっぽい

参考 <- 後で読む

白湯白湯

scoop のアップデート

参照

# scoop 自身のアップデート
scoop update

# インストールしたパッケージのアップデート
scoop update xxx

# とりあえず全部アップデートする
scoop status | awk '{print $1}' | sed -e 's/WARN.*//' -e 's/Name.*//' -e 's/----//' | xargs scoop update
scoop status | awk 'NF{print $1}' | sed -e 's/WARN.*//' -e 's/Name.*//' -e 's/----//' -e 's/Scoop//' | xargs scoop update
scoop status | awk 'NF{print $1}' | sed -n '/----/,$p' | awk 'NR>1' | xargs scoop update
scoop status | sed -n '/----/,$p' | awk 'NR>1 {print $1}' | xargs scoop update
白湯白湯

検索対象のファイル

file.txt
hoge
fuga
piyo
piyo
hogehoge

-c は該当行数を出力するようなので、1行に2か所以上検索文字列がある場合、欲しい数と異なってしまう。

cat file.txt | grep -c "hoge"
2

-o を使うことで、該当箇所のみを取得できるので、 wc コマンドと組み合わせることにより、該当箇所の数を知ることが出来る。

cat file.txt | grep -o "hoge" | wc -l
3

Man page of GREP

白湯白湯

Data URL Scheme であそぶ

データ URL - HTTP | MDN

echo "data:image/MIME Type;base64,"`cat imagefile | base64`

# example
echo "data:image/png;base64,"`cat hoge.png | base64` => この結果をブラウザに張り付けると画像が見れる
# これで文字列
echo "data:text/plain;base64,"`echo "hoge" | base64`
// data:text/plain;base64,aG9nZQo=

# これでUTF8
echo "data:text/plain;charset=UTF8;base64,"`echo "ほげ" | base64`
// data:text/plain;charset=UTF8;base64,44G744GSCg==

# JSON
echo "data:application/json;base64,"`echo '{"hoge": "fuga", "piyo": 10}' | base64 -w 0`
// data:application/json;base64,eyJob2dlIjogImZ1Z2EiLCAicGl5byI6IDEwfQo=
白湯白湯

コアダンプファイルの配置場所
/var/lib/systemd/coredump

# 一覧
coredumpctl list

# gdb で見れる
coredumpctl gdb <上記の一覧で確認できるプロセスID?>
白湯白湯

vim

回数i文字ESC で同じ文字を指定回数入力する。

白湯白湯

証明書の有効期限を見る

openssl s_client -connect ドメイン:443 < /dev/null 2> /dev/null | openssl x509 -noout -subject -dates
白湯白湯

コンテナにあるファイルをローカルにコピー

docker cp コンテナID:コンテナ内のパス 配置先パス