シェルコマンド
適宜追加予定
xargs の -I オプション
後続のコマンドに対して値を渡すことができる。
カレントディレクトリに、File_A, File_B, File_C が存在する場合。
code:shell
$ ls | xargs -I FILE echo "FILE exists."
./ exist.
./ exist.
File_A exists.
File_B exists.
File_C exists.
ls | xargsに、-I FILEを渡すと、後続のechoの中でFILEと記載した部分に、
実際のファイル名が代入されて表示される。
code:shell
ls | xargs -I <変数名> echo "<変数名> exists."
引用:https://qiita.com/YumaInaura/items/fc79ce003978596db976
cut
文字列を何らかの区切り文字で分割し、そのどれかを抽出する。
code:sh
$ echo http://example.com/api/v1/calc | cut -d '/' -f 3
# example.com
-dで区切り文字を指定する。
-fで分割した後の何番目の文字を取得するかを指定する。
上の例で1を指定すると、http:が取得できる。
4を指定すると、apiが取得できる。
cutで区切られた文字はそれぞれ配列に入っているような状態と考えて、番号を指定すると良い。
ただし、添え字は1から始まるので、0を指定することはできない。
配列の添え字の最大値と思われる数値より大きな値を入れてもエラーにならず、空白が返ってくる。
この場合、7以降の数値を指定してもエラーにならない。
code:sh
$ echo http://example.com/api/v1/calc | cut -d '/' -f 3
# http:, , example.com, api, v1, calc みたいなイメージ
# 0 -> エラー、1 -> http:、2 -> 空文字、3 -> example.com、4 -> api、5 -> v1、6 -> calc
# 7以降 -> 空文字
uniq, sort
uniqは重複を排除するコマンド。
sortは並び替えのコマンド。
code:example.txt
aaa
bbb
aaa
aaa
ccc
bbb
これにuniqを適用する。
code:sh
$ uniq example.txt
# aaa
# bbb
# aaa
# ccc
# bbb
このようになるが、重複が排除できてないやん!と思う。
uniqだけだと、離れた行に書かれている重複が排除されない。
これを避けるために、sortと併用する。
code:sh
$ sort example.txt | uniq
# aaa
# bbb
# ccc
これで重複が排除され、一つだけ残してくれる。
uniq -cとすると、重複分を含めていくつあったかを示してくれる。
code:sh
$ sort example.txt | uniq -c
# 3 aaa
# 2 bbb
# 1 ccc
参考
https://uxmilk.jp/53546
rsync
あるストレージAとストレージBの内容を同期する。
今回、古いNASから新しいNASへ内容をコピーする際に利用した。
こういう利用方法の場合に、他に何か良い方法があれば教えて欲しい・・・
code:sh
$ rsync -h
# 使ったオプション
# -a, --archive archive mode; same as -rlptgoD (no -H)
# -v, --verbose increase verbosity
# -n, --dry-run show what would have been transferred
# -e, --rsh=COMMAND specify the remote shell to use
# -e "ssh -p 2222" とすると、sshのポート指定ができる
# --ignore-existing skip updating files that already exist on receiver
参考
https://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html
https://qiita.com/shnagai/items/7403411b4aa193d0fa0d
https://www.pistolfly.com/weblog/2008/04/rsync-ssh-1.html
https://yiskw713.hatenablog.com/entry/2021/05/31/190000
https://qiita.com/bezeklik/items/22e791df7187958d76c1
#Shell芸
#shellscript
#linux