解説CoreUtils 読んだメモ

第7開発セクションさんの解説CoreUtilsを読んだメモです。

個人的に便利そうとか知らなかったとこのメモです。

オプションの無効化

--オプションのあとは、オプションが無効になる。変な名前のファイル作っちゃった時とか便利〜。

[root@9e6dee81cf2f /]# ls -l # "-l"と言う名前のちょっと厄介なファイルができています
total 56
-rw-r--r--   1 root root     0 Mar 17 07:39 -l
-rw-r--r--   1 root root 11958 Nov 28 16:08 anaconda-post.log
lrwxrwxrwx   1 root root     7 Nov 28 16:07 bin -> usr/bin
drwxr-xr-x   5 root root   340 Mar 17 07:33 dev
drwxr-xr-x   1 root root  4096 Mar 17 07:37 etc
drwxr-xr-x   2 root root  4096 Nov  5  2016 home
lrwxrwxrwx   1 root root     7 Nov 28 16:07 lib -> usr/lib
lrwxrwxrwx   1 root root     9 Nov 28 16:07 lib64 -> usr/lib64
drwxr-xr-x   2 root root  4096 Nov  5  2016 media
drwxr-xr-x   2 root root  4096 Nov  5  2016 mnt
drwxr-xr-x   2 root root  4096 Nov  5  2016 opt
dr-xr-xr-x 163 root root     0 Mar 17 07:33 proc
dr-xr-x---   2 root root  4096 Nov 28 16:08 root
drwxr-xr-x   1 root root  4096 Mar 17 07:39 run
lrwxrwxrwx   1 root root     8 Nov 28 16:07 sbin -> usr/sbin
drwxr-xr-x   2 root root  4096 Nov  5  2016 srv
dr-xr-xr-x  13 root root     0 Mar 17 07:33 sys
drwxrwxrwt   1 root root  4096 Mar 17 07:37 tmp
drwxr-xr-x   1 root root  4096 Nov 28 16:07 usr
drwxr-xr-x   1 root root  4096 Nov 28 16:07 var

[root@9e6dee81cf2f /]# ls -l -- -l # "--"以降はオプションが無効になるので"-l"はオプションとして認識されません
-rw-r--r-- 1 root root 0 Mar 17 07:39 -l
[root@9e6dee81cf2f /]#

標準入力を待つ

-。オプションではない。Ctr+dが入力されるまで標準出力を受け付ける。

[root@9e6dee81cf2f /]# sort -
d
c
b
a
# ここでCtr-d を入力
a
b
c
d

tac

tacは上下逆に表示するコマンド。catの反対だからtac

微妙に使う時があるかも。

[root@9e6dee81cf2f ~]# echo -e "a\nb\\nc"
a
b
c
[root@9e6dee81cf2f ~]# echo -e "a\nb\\nc" | tac
c
b
a

rev

1行分の並びを逆にする。

[root@9e6dee81cf2f ~]# echo -e "2 9 4\n7 5 3\n6 1 8"
2 9 4
7 5 3
6 1 8
[root@9e6dee81cf2f ~]# echo -e "2 9 4\n7 5 3\n6 1 8" | rev
4 9 2
3 5 7
8 1 6

base64

意外と使ったことなかった。base64にエンコード/デコードできる。

[root@9e6dee81cf2f ~]# base64 -
hoge
fuga
aG9nZQpmdWdhCg==
[root@9e6dee81cf2f ~]# base64 - | base64 --decode
hoge
fuga
hoge
fuga

fmt

文字列をいい感じに折り返してくれる。デフォルトは75文字で、-w <文字数>で指定できる。

[root@9e6dee81cf2f ~]# cat test.txt
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur dignissim
venenatis pede. Quisque dui dui, ultricies ut, facilisis non, pulvinar non. Duis quis arcu a purus volutpat iaculis. Morbi id dui in diam ornare
dictum. Praesent consectetuer vehicula ipsum. Praesent tortor massa, congue et,
ornare in, posuere eget, pede.

Vivamus rhoncus. Quisque lacus. In hac habitasse platea dictumst. Nullam mauris
tellus, sollicitudin non, semper eget, sodales non, pede. Phasellus varius
ullamcorper libero. Fusce ipsum lorem, iaculis nec, vulputate vitae, suscipit
vel, tortor. Cras varius.

Nullam fringilla pellentesque orci. Nulla eu ante pulvinar velit rhoncus
lacinia. Morbi fringilla lacus quis arcu. Vestibulum sem quam, dapibus in,
fringilla ut, venenatis ut, neque.
[root@9e6dee81cf2f ~]# fmt test.txt
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur
dignissim venenatis pede. Quisque dui dui, ultricies ut, facilisis non,
pulvinar non. Duis quis arcu a purus volutpat iaculis. Morbi id dui
in diam ornare dictum. Praesent consectetuer vehicula ipsum. Praesent
tortor massa, congue et, ornare in, posuere eget, pede.

Vivamus rhoncus. Quisque lacus. In hac habitasse platea dictumst. Nullam
mauris tellus, sollicitudin non, semper eget, sodales non, pede. Phasellus
varius ullamcorper libero. Fusce ipsum lorem, iaculis nec, vulputate
vitae, suscipit vel, tortor. Cras varius.

Nullam fringilla pellentesque orci. Nulla eu ante pulvinar velit rhoncus
lacinia. Morbi fringilla lacus quis arcu. Vestibulum sem quam, dapibus
in, fringilla ut, venenatis ut, neque.

fold

空気を読まないfmt

[root@9e6dee81cf2f ~]# fold -w 75 test.txt
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur digniss
im
venenatis pede. Quisque dui dui, ultricies ut, facilisis non, pulvinar non.
 Duis quis arcu a purus volutpat iaculis. Morbi id dui in diam ornare
dictum. Praesent consectetuer vehicula ipsum. Praesent tortor massa, congue
 et,
ornare in, posuere eget, pede.

Vivamus rhoncus. Quisque lacus. In hac habitasse platea dictumst. Nullam ma
uris
tellus, sollicitudin non, semper eget, sodales non, pede. Phasellus varius
ullamcorper libero. Fusce ipsum lorem, iaculis nec, vulputate vitae, suscip
it
vel, tortor. Cras varius.

Nullam fringilla pellentesque orci. Nulla eu ante pulvinar velit rhoncus
lacinia. Morbi fringilla lacus quis arcu. Vestibulum sem quam, dapibus in,
fringilla ut, venenatis ut, neque.

sort

ソートするだけじゃなかった。結合もできるし、ソートされているかのチェックもできる。

[root@9e6dee81cf2f ~]# head even.txt odd.txt
==> even.txt <==
0
2
4
6
8
10

==> odd.txt <==
1
3
5
7
9

[root@9e6dee81cf2f ~]# sort -n even.txt odd.txt
0
1
2
3
4
5
6
7
8
9
10

チェックは-cオプション。

[root@9e6dee81cf2f ~]# sort -R even.txt odd.txt | tee test.txt
6
5
3
9
0
7
2
10
4
1
8
[root@9e6dee81cf2f ~]# sort -c test.txt
sort: test.txt:2: disorder: 5

tr

割と使う気がする。文字列の置換と削除を行う。

[root@9e6dee81cf2f ~]# cat test.txt
6
5
3
9
0
7
2
10
4
1
8
[root@9e6dee81cf2f ~]# tr 123 abc < test.txt # 1->a, 2->b, 3->cに置換
6
5
c
9
0
7
b
a0
4
a
8
[root@9e6dee81cf2f ~]# tr -d '\n' < test.txt # 改行を削除
653907210418

pv

進行状況が見られる。便利〜。

(CentOS7ならEPELからインストールする。)

[root@9e6dee81cf2f ~]# pv even.txt > even2.txt
  13 B 0:00:00 [67.5kiB/s] [===============================================>] 100%

truncate

ファイルのサイズを任意のサイズに増減できる。 ファイルサイズ増やすと、nullで埋められるっぽい。

[root@9e6dee81cf2f ~]# truncate -s 10M test.txt
[root@9e6dee81cf2f ~]# ls -lh
-rw-r--r-- 1 root root  10M Mar 17 09:15 test.txt
[root@9e6dee81cf2f ~]# tail test.txt |od -a
0000000   3  nl   9  nl   0  nl   7  nl   2  nl   1   0  nl   4  nl   1
0000020  nl   8  nl nul nul nul nul nul nul nul nul nul nul nul nul nul
0000040 nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul
*
47777760 nul nul nul nul nul nul nul nul nul nul nul nul
47777774
[root@9e6dee81cf2f ~]#

nproc

スマートなCPUのコア数の確認方法。

[root@9e6dee81cf2f ~]# nproc
2

感想

知らない/使ったことないコマンドが結構ありました。シェル芸が捗りそうです。

カテゴリー tech

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です