sed デタラメな複数行を小綺麗な一行に変換する話

デタラメな複数行を小綺麗な一行に変換する

他にもいっぱいやり方あるとおもう

コード表示

[oracle@centos ~]$ cat ttt
UNKO IS
  BEATIFUL
   .

UNKO IS
  TITY
   .

UNKO IS
  FUNNY .
[oracle@centos ~]$ cat -n ttt
     1	UNKO IS
     2	  BEATIFUL
     3	   .
     4	
     5	UNKO IS
     6	  TITY
     7	   .
     8	
     9	UNKO IS
    10	  FUNNY .
[oracle@centos ~]$ cat ttt | sed -e '/^$/d ' -e ':a;N;/\.$/!ba;s/\n\s\{1,\}/ /g;s/ \.$/\./'
UNKO IS BEATIFUL.
UNKO IS TITY.
UNKO IS FUNNY.

デバッグしたやつ

コード表示

[oracle@centos ~]$ cat ttt | sedsed --debug -e '/^$/d ' -e ':a;N;/\.$/!ba;s/\n\s\{1,\}/ /g;s/ \.$/\./'
PATT:UNKO IS$
HOLD:$
COMM:/^$/ d
PATT:UNKO IS$
HOLD:$
COMM::a
COMM:N
PATT:UNKO IS\n  BEATIFUL$
HOLD:$
COMM:/\.$/ !b a
COMM:N
PATT:UNKO IS\n  BEATIFUL\n   .$
HOLD:$
COMM:/\.$/ !b a
COMM:s/\n\s\{1,\}/ /g
PATT:UNKO IS BEATIFUL .$
HOLD:$
COMM:s/ \.$/\./
PATT:UNKO IS BEATIFUL.$
HOLD:$
UNKO IS BEATIFUL.
PATT:$
HOLD:$
COMM:/^$/ d
PATT:UNKO IS$
HOLD:$
COMM:/^$/ d
PATT:UNKO IS$
HOLD:$
COMM::a
COMM:N
PATT:UNKO IS\n  TITY$
HOLD:$
COMM:/\.$/ !b a
COMM:N
PATT:UNKO IS\n  TITY\n   .$
HOLD:$
COMM:/\.$/ !b a
COMM:s/\n\s\{1,\}/ /g
PATT:UNKO IS TITY .$
HOLD:$
COMM:s/ \.$/\./
PATT:UNKO IS TITY.$
HOLD:$
UNKO IS TITY.
PATT:$
HOLD:$
COMM:/^$/ d
PATT:UNKO IS$
HOLD:$
COMM:/^$/ d
PATT:UNKO IS$
HOLD:$
COMM::a
COMM:N
PATT:UNKO IS\n  FUNNY .$
HOLD:$
COMM:/\.$/ !b a
COMM:s/\n\s\{1,\}/ /g
PATT:UNKO IS FUNNY .$
HOLD:$
COMM:s/ \.$/\./
PATT:UNKO IS FUNNY.$
HOLD:$
UNKO IS FUNNY.

方針としてはまず、空行消す。ここまでが一行!みたいな終了FOOTSTAMPが検出されるまで、Nコマンドで次の入力行をPSへ改行付きで蓄積。ここでのFOOTSTAMPは「.」。で、改行と1回以上のスペースを1個のスペースに置換し、行末の「.」直前のスペースは空文字に置換。分かってくるとめちゃ楽し。

所感

sedわかってきちゃったかも。前処理だけじゃなくてsedでプログラムも書いてみたいなー。

sed 複数行を1行に置換する話

参考文献

このお方のtwwiterのシェル芸大好きです。

sedのデバッグやHTML化ができる『sedsed』  

まえがき

折角だからpythonデバッグツールあるぽいので、それでsedと仲良くなりたい。

コード表示

[oracle@centos ~]$ git clone https://github.com/aureliojargas/sedsed
[oracle@centos ~]$ sudo cp sedsed/sedsed.py /usr/local/bin/sedsed
[sudo] oracle のパスワード:
[oracle@centos ~]$ sedsed --version
sedsed v1.2-dev

複数行を1行に置換する

他にもいっぱいあるとおもう

コード表示

[oracle@centos web]$ cat ttt
a
b
c
[oracle@centos web]$ cat -n ttt
     1	a
     2	b
     3	c
[oracle@centos web]$ sed -n 'H;${x;s/\n/ /g;s/^ //;p}' ttt
a b c

デバッグしたやつ

コード表示

[oracle@centos ~]$ cat ttt | sedsed --debug -n 'H;${x;s/\n/ /g;s/^ //;p}'
PATT:a$
HOLD:$
COMM:H
PATT:a$
HOLD:\na$
COMM:$ {
PATT:a$
HOLD:\na$
PATT:b$
HOLD:\na$
COMM:H
PATT:b$
HOLD:\na\nb$
COMM:$ {
PATT:b$
HOLD:\na\nb$
PATT:c$
HOLD:\na\nb$
COMM:H
PATT:c$
HOLD:\na\nb\nc$
COMM:$ {
COMM:x
PATT:\na\nb\nc$
HOLD:c$
COMM:s/\n/ /g
PATT: a b c$
HOLD:c$
COMM:s/^ //
PATT:a b c$
HOLD:c$
COMM:p
a b c
PATT:a b c$
HOLD:c$
COMM:}
PATT:a b c$
HOLD:c$

HコマンドでPSの内容がHSへ改行付きでコピーされている。b,cも同じ様に実行されていき、HSに改行付で蓄えられている。ここまでがHコマンドの内容。xコマンドでHSの内容とPSの内容を交換している。パタンスペースに対してs/\n/ /gを実行し、改行をスペース区切りに変換した後、行頭が空白のものを空文字に置換している。で、最後にpコマンドでPSの内容を標準出力に出力している。-nオプションでデフォルトの挙動であるパタンスペースを出力する動きを抑止している。

抑止しなかったやつ。入力行ごとにグループ化されているコマンド郡は最終行「$」に対してまとまって実行されていて、a,bは最終行でないから実行されていなかったことが分かった。最終行でなくとも${は評価されているんだな。ぁぁぁ楽しい。面白い!!

コード表示

[oracle@centos ~]$ cat ttt | sedsed --debug 'H;${x;s/\n/ /g;s/^ //;p}'
PATT:a$
HOLD:$
COMM:H
PATT:a$
HOLD:\na$
COMM:$ {
PATT:a$
HOLD:\na$
a
PATT:b$
HOLD:\na$
COMM:H
PATT:b$
HOLD:\na\nb$
COMM:$ {
PATT:b$
HOLD:\na\nb$
b
PATT:c$
HOLD:\na\nb$
COMM:H
PATT:c$
HOLD:\na\nb\nc$
COMM:$ {
COMM:x
PATT:\na\nb\nc$
HOLD:c$
COMM:s/\n/ /g
PATT: a b c$
HOLD:c$
COMM:s/^ //
PATT:a b c$
HOLD:c$
COMM:p
a b c
PATT:a b c$
HOLD:c$
COMM:}
PATT:a b c$
HOLD:c$
a b c

sed 一文字ずつ切り取って後ろにくっ付ける話

参考文献

このお方のtwwiterのシェル芸大好きです。

sedのデバッグやHTML化ができる『sedsed』  

まえがき

折角だからpythonデバッグツールあるぽいので、それでsedと仲良くなりたい。

コード表示

[oracle@centos ~]$ git clone https://github.com/aureliojargas/sedsed
[oracle@centos ~]$ sudo cp sedsed/sedsed.py /usr/local/bin/sedsed
[sudo] oracle のパスワード:
[oracle@centos ~]$ sedsed --version
sedsed v1.2-dev

響け!ユーフォニアム

あるアニメのタイトルらしい。

sedは標準入力をPS(パターンスペース)に1行ずつ取り込む。pコマンドはPSにある中身を出力する。sは置換コマンドで直前のPSに対して処理する。/^ム/はムで始まるPSの意味。!付けているからムで始まらないPSをコマンドのアドレス条件に指定してる。bコマンドはアドレス条件を満たすときは指定したラベルにjumpする。ここでのラベルはaラベル。標準入力が最初1行だけだが、各スクリプトの実行結果をPSに保持して、そのPSにスクリプトを繰り返し実行し、出力しているところが面白い!!ループ処理なので、終了条件書くこと!

コード表示

[oracle@centos ~]$ echo 響け!ユーフォニアム | sed ':a;p;s/\(.\)\(.*\)/\2\1/;/^ム/!ba' | nl
     1	響け!ユーフォニアム
     2	け!ユーフォニアム響
     3	!ユーフォニアム響け
     4	ユーフォニアム響け!
     5	ーフォニアム響け!ユ
     6	フォニアム響け!ユー
     7	ォニアム響け!ユーフ
     8	ニアム響け!ユーフォ
     9	アム響け!ユーフォニ
    10	ム響け!ユーフォニア

デバッグしてみたやつ

コード表示

[oracle@centos ~]$ echo 響け!ユーフォニアム | sedsed --debug ':a;p;s/\(.\)\(.*\)/\2\1/;/^ム/!ba'
PATT:\351\237\277\343\201\221\357\274\201\343\203\246\343\203\274\343\
\203\225\343\202\251\343\203\213\343\202\242\343\203\240$
HOLD:$
COMM::a
COMM:p
響け!ユーフォニアム
PATT:\351\237\277\343\201\221\357\274\201\343\203\246\343\203\274\343\
\203\225\343\202\251\343\203\213\343\202\242\343\203\240$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\201\221\357\274\201\343\203\246\343\203\274\343\203\225\343\
\202\251\343\203\213\343\202\242\343\203\240\351\237\277$
HOLD:$
COMM:/^ム/ !b a
COMM:p
け!ユーフォニアム響
PATT:\343\201\221\357\274\201\343\203\246\343\203\274\343\203\225\343\
\202\251\343\203\213\343\202\242\343\203\240\351\237\277$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\357\274\201\343\203\246\343\203\274\343\203\225\343\202\251\343\
\203\213\343\202\242\343\203\240\351\237\277\343\201\221$
HOLD:$
COMM:/^ム/ !b a
COMM:p
!ユーフォニアム響け
PATT:\357\274\201\343\203\246\343\203\274\343\203\225\343\202\251\343\
\203\213\343\202\242\343\203\240\351\237\277\343\201\221$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\203\246\343\203\274\343\203\225\343\202\251\343\203\213\343\
\202\242\343\203\240\351\237\277\343\201\221\357\274\201$
HOLD:$
COMM:/^ム/ !b a
COMM:p
ユーフォニアム響け!
PATT:\343\203\246\343\203\274\343\203\225\343\202\251\343\203\213\343\
\202\242\343\203\240\351\237\277\343\201\221\357\274\201$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\203\274\343\203\225\343\202\251\343\203\213\343\202\242\343\
\203\240\351\237\277\343\201\221\357\274\201\343\203\246$
HOLD:$
COMM:/^ム/ !b a
COMM:p
ーフォニアム響け!ユ
PATT:\343\203\274\343\203\225\343\202\251\343\203\213\343\202\242\343\
\203\240\351\237\277\343\201\221\357\274\201\343\203\246$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\203\225\343\202\251\343\203\213\343\202\242\343\203\240\351\
\237\277\343\201\221\357\274\201\343\203\246\343\203\274$
HOLD:$
COMM:/^ム/ !b a
COMM:p
フォニアム響け!ユー
PATT:\343\203\225\343\202\251\343\203\213\343\202\242\343\203\240\351\
\237\277\343\201\221\357\274\201\343\203\246\343\203\274$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\202\251\343\203\213\343\202\242\343\203\240\351\237\277\343\
\201\221\357\274\201\343\203\246\343\203\274\343\203\225$
HOLD:$
COMM:/^ム/ !b a
COMM:p
ォニアム響け!ユーフ
PATT:\343\202\251\343\203\213\343\202\242\343\203\240\351\237\277\343\
\201\221\357\274\201\343\203\246\343\203\274\343\203\225$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\203\213\343\202\242\343\203\240\351\237\277\343\201\221\357\
\274\201\343\203\246\343\203\274\343\203\225\343\202\251$
HOLD:$
COMM:/^ム/ !b a
COMM:p
ニアム響け!ユーフォ
PATT:\343\203\213\343\202\242\343\203\240\351\237\277\343\201\221\357\
\274\201\343\203\246\343\203\274\343\203\225\343\202\251$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\202\242\343\203\240\351\237\277\343\201\221\357\274\201\343\
\203\246\343\203\274\343\203\225\343\202\251\343\203\213$
HOLD:$
COMM:/^ム/ !b a
COMM:p
アム響け!ユーフォニ
PATT:\343\202\242\343\203\240\351\237\277\343\201\221\357\274\201\343\
\203\246\343\203\274\343\203\225\343\202\251\343\203\213$
HOLD:$
COMM:s/\(.\)\(.*\)/\2\1/
PATT:\343\203\240\351\237\277\343\201\221\357\274\201\343\203\246\343\
\203\274\343\203\225\343\202\251\343\203\213\343\202\242$
HOLD:$
COMM:/^ム/ !b a
PATT:\343\203\240\351\237\277\343\201\221\357\274\201\343\203\246\343\
\203\274\343\203\225\343\202\251\343\203\213\343\202\242$
HOLD:$
ム響け!ユーフォニア

go言語いんすこ

触れてみたかった!

今年の下半期でgoで何かつくりたい。9月以降かな。それまではshell力高める。

コード表示

[oracle@centos ~]$ sudo yum install -y go
[oracle@centos ~]$ which go
/usr/bin/go
インストール:
  golang.x86_64 0:1.11.5-1.el7                                                                                                                                                                                     

[oracle@centos gooooo]$ yum provides go
golang-1.11.5-1.el7.x86_64 : The Go Programming Language
リポジトリー        : epel
一致          :
Provides    : go = 1.11.5-1.el7
[oracle@centos gooooo]$ cat hw.go
package main
 
import "fmt"
 
func main(){
  fmt.Printf("Hello World!")
}
[oracle@centos gooooo]$ go build hw.go
[oracle@centos gooooo]$ ll
合計 1880
-rwxr-xr-x. 1 oracle docker 1919238  6月 26 19:43 hw
-rw-r--r--. 1 oracle docker      74  6月 26 19:38 hw.go
[oracle@centos gooooo]$ ./hw
Hello World![oracle@centos gooooo]$ 

yumでソースコードいんすこ

参考文献

yum でソースコードをダウンロードしたい  
Linuxコマンドのソースコードを取得する方法:オリジナルコマンド作成前の勉強向け  

coreutilsためしにいれてみる

コード表示

[oracle@centos ~]$ sudo yum install -y yum-utils

[oracle@centos ~]$ which ls
alias ls='ls --color=auto'
	/usr/bin/ls

[oracle@centos ~]$ yum whatprovides /usr/bin/ls
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * centos-qemu-ev: ftp.iij.ad.jp
 * epel: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
coreutils-8.22-23.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
リポジトリー        : base
一致          :
ファイル名    : /usr/bin/ls



coreutils-8.22-23.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
リポジトリー        : @base
一致          :
ファイル名    : /usr/bin/ls



[oracle@centos ~]$ sudo yumdownloader --source coreutils-8.22-23.el7.x86_64

[oracle@centos ~]$ find / -name "*coreutils-8.22-23.el7.src.rpm*" 2>/dev/null
/home/oracle/coreutils-8.22-23.el7.src.rpm
[oracle@centos ~]$ ll
合計 380472
-rw-r--r--.  1 oracle docker 383991324  5月 24 04:19 CentOS-7-x86_64-Vagrant-1902_01.Libvirt.box
drwxr-xr-x.  2 oracle docker      4096  6月 23 08:39 Desktop
drwxr-xr-x.  2 oracle docker      4096  6月 14 09:25 Documents
drwxr-xr-x.  2 oracle docker      4096  6月 22 15:06 Downloads
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Music
drwxr-xr-x.  2 oracle docker      4096  6月 14 20:02 Pictures
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Public
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Templates
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Videos
-rw-r--r--.  1 root   root     5518732 11月 13  2018 coreutils-8.22-23.el7.src.rpm
drwxr-xr-x. 25 oracle docker      4096  5月 25 12:58 docker-images
drwxr-xr-x.  4 oracle docker      4096  6月  3 06:33 doclan
drwxr-xr-x.  7 oracle docker      4096  6月  3 22:00 ff
drwxr-xr-x.  2 oracle docker      4096  6月 14 13:18 gg
drwxr-xr-x.  3 oracle docker      4096  5月 25 15:01 jj
drwxr-xr-x.  6 oracle docker      4096  6月  6 23:23 kk
drwxr-xr-x.  9 oracle docker      4096  6月  9 18:22 pp
drwxr-xr-x. 11 oracle docker      4096  6月 23 08:00 rr
drwxr-xr-x.  2 oracle docker      4096  6月 21 07:38 tmp
drwxr-xr-x.  4 oracle docker      4096  6月  7 19:45 tt
drwxr-xr-x.  7 oracle docker      4096  6月  7 01:06 vx
drwxr-xr-x.  4 oracle docker      4096  5月 25 10:29 weban

[oracle@centos ~]$ mkdir centos_coreutils
[oracle@centos ~]$ ll
合計 380476
-rw-r--r--.  1 oracle docker 383991324  5月 24 04:19 CentOS-7-x86_64-Vagrant-1902_01.Libvirt.box
drwxr-xr-x.  2 oracle docker      4096  6月 23 08:40 Desktop
drwxr-xr-x.  2 oracle docker      4096  6月 14 09:25 Documents
drwxr-xr-x.  2 oracle docker      4096  6月 22 15:06 Downloads
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Music
drwxr-xr-x.  2 oracle docker      4096  6月 14 20:02 Pictures
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Public
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Templates
drwxr-xr-x.  2 oracle docker      4096  5月 12 16:16 Videos
drwxr-xr-x.  2 oracle docker      4096  6月 23 08:42 centos_coreutils
-rw-r--r--.  1 root   root     5518732 11月 13  2018 coreutils-8.22-23.el7.src.rpm
drwxr-xr-x. 25 oracle docker      4096  5月 25 12:58 docker-images
drwxr-xr-x.  4 oracle docker      4096  6月  3 06:33 doclan
drwxr-xr-x.  7 oracle docker      4096  6月  3 22:00 ff
drwxr-xr-x.  2 oracle docker      4096  6月 14 13:18 gg
drwxr-xr-x.  3 oracle docker      4096  5月 25 15:01 jj
drwxr-xr-x.  6 oracle docker      4096  6月  6 23:23 kk
drwxr-xr-x.  9 oracle docker      4096  6月  9 18:22 pp
drwxr-xr-x. 11 oracle docker      4096  6月 23 08:00 rr
drwxr-xr-x.  2 oracle docker      4096  6月 21 07:38 tmp
drwxr-xr-x.  4 oracle docker      4096  6月  7 19:45 tt
drwxr-xr-x.  7 oracle docker      4096  6月  7 01:06 vx
drwxr-xr-x.  4 oracle docker      4096  5月 25 10:29 weban


[oracle@centos ~]$ cd centos_coreutils
[oracle@centos centos_coreutils]$ pwd
/home/oracle/centos_coreutils


[oracle@centos centos_coreutils]$ ll
合計 5744
-rw-rw-r--. 1 oracle docker     868  6月 23 08:44 coreutils-4.5.3-langinfo.patch
-rw-rw-r--. 1 oracle docker    5427  6月 23 08:44 coreutils-6.10-configuration.patch
-rw-rw-r--. 1 oracle docker     576  6月 23 08:44 coreutils-6.10-manpages.patch
-rw-rw-r--. 1 oracle docker     617  6月 23 08:44 coreutils-7.4-sttytcsadrain.patch
-rw-rw-r--. 1 oracle docker    1471  6月 23 08:44 coreutils-8.2-uname-processortype.patch
-rw-rw-r--. 1 oracle docker    3758  6月 23 08:44 coreutils-8.22-cp-selinux.patch
-rw-rw-r--. 1 oracle docker   11416  6月 23 08:44 coreutils-8.22-cp-sparsecorrupt.patch
-rw-rw-r--. 1 oracle docker    1633  6月 23 08:44 coreutils-8.22-date-emptyTZ.patch
-rw-rw-r--. 1 oracle docker   16663  6月 23 08:44 coreutils-8.22-dd-progress.patch
-rw-rw-r--. 1 oracle docker    1575  6月 23 08:44 coreutils-8.22-df-autofs.patch
-rw-rw-r--. 1 oracle docker   18860  6月 23 08:44 coreutils-8.22-df-filtermountlistupdate.patch
-rw-rw-r--. 1 oracle docker    3651  6月 23 08:44 coreutils-8.22-df-getdisk.patch
-rw-rw-r--. 1 oracle docker    2773  6月 23 08:44 coreutils-8.22-df-stat.patch
-rw-rw-r--. 1 oracle docker    5801  6月 23 08:44 coreutils-8.22-du-bindmountcycles.patch
-rw-rw-r--. 1 oracle docker    1363  6月 23 08:44 coreutils-8.22-failingtests.patch
-rw-rw-r--. 1 oracle docker    1477  6月 23 08:44 coreutils-8.22-id-groups.patch
-rw-rw-r--. 1 oracle docker    6854  6月 23 08:44 coreutils-8.22-ls-interruption.patch
-rw-rw-r--. 1 oracle docker   14467  6月 23 08:44 coreutils-8.22-mv-hardlinksrace.patch
-rw-rw-r--. 1 oracle docker   37417  6月 23 08:44 coreutils-8.22-mv-n-noreplace.patch
-rw-rw-r--. 1 oracle docker    6740  6月 23 08:44 coreutils-8.22-newfilesystems.patch
-rw-rw-r--. 1 oracle docker   10225  6月 23 08:44 coreutils-8.22-non-defaulttests.patch
-rw-rw-r--. 1 oracle docker    1895  6月 23 08:44 coreutils-8.22-ppc64le.patch
-rw-rw-r--. 1 oracle docker    4559  6月 23 08:44 coreutils-8.22-selinux-optionsseparate.patch
-rw-rw-r--. 1 oracle docker    1145  6月 23 08:44 coreutils-8.22-sort-blanks.patch
-rw-rw-r--. 1 oracle docker     563  6月 23 08:44 coreutils-8.22-temporarytestoff.patch
-rw-rw-r--. 1 oracle docker     588  6月 23 08:44 coreutils-8.22-vxfs-noinotify.patch
-rw-rw-r--. 1 oracle docker    1226  6月 23 08:44 coreutils-8.22-xfs-tests.patch
-rw-rw-r--. 1 oracle docker    2593  6月 23 08:44 coreutils-8.22-xfsbuildfailure.patch
-rw-rw-r--. 1 oracle docker 5335124  6月 23 08:44 coreutils-8.22.tar.xz
-rw-rw-r--. 1 oracle docker     685  6月 23 08:44 coreutils-8.4-mkdir-modenote.patch
-rw-rw-r--. 1 oracle docker    5090  6月 23 08:44 coreutils-DIR_COLORS
-rw-rw-r--. 1 oracle docker    5725  6月 23 08:44 coreutils-DIR_COLORS.256color
-rw-rw-r--. 1 oracle docker    4669  6月 23 08:44 coreutils-DIR_COLORS.lightbgcolor
-rwxrwxr-x. 1 oracle docker    1741  6月 23 08:44 coreutils-colorls.csh
-rwxrwxr-x. 1 oracle docker    1606  6月 23 08:44 coreutils-colorls.sh
-rw-rw-r--. 1 oracle docker    6026  6月 23 08:44 coreutils-df-direct.patch
-rw-rw-r--. 1 oracle docker    2291  6月 23 08:44 coreutils-getgrouplist.patch
-rw-rw-r--. 1 oracle docker    2509  6月 23 08:44 coreutils-i18n-fold-newline.patch
-rw-rw-r--. 1 oracle docker    3070  6月 23 08:44 coreutils-i18n-sort-memleak.patch
-rw-rw-r--. 1 oracle docker  147328  6月 23 08:44 coreutils-i18n.patch
-rw-rw-r--. 1 oracle docker     331  6月 23 08:44 coreutils-overflow.patch
-rw-rw-r--. 1 oracle docker   19930  6月 23 08:44 coreutils-selinux.patch
-rw-rw-r--. 1 oracle docker    2249  6月 23 08:44 coreutils-selinuxmanpages.patch
-rw-rw-r--. 1 oracle docker   72699  6月 23 08:44 coreutils.spec
-rw-rw-r--. 1 oracle docker     590  6月 23 08:44 sh-utils-2.0.11-dateman.patch


[oracle@centos centos_coreutils]$ tar -xvf coreutils-8.22.tar.xz


[oracle@centos src]$ ll
合計 2808
-rw-r--r--. 1 oracle docker   8640 12月  4  2013 base64.c
-rw-r--r--. 1 oracle docker   4919 12月  4  2013 basename.c
-rw-r--r--. 1 oracle docker   5290 12月  4  2013 c99-to-c89.diff
-rw-r--r--. 1 oracle docker  22725 12月  4  2013 cat.c
-rw-r--r--. 1 oracle docker  16355 12月  4  2013 chcon.c
-rw-r--r--. 1 oracle docker   8836 12月  4  2013 chgrp.c
-rw-r--r--. 1 oracle docker  15845 12月  4  2013 chmod.c
-rw-r--r--. 1 oracle docker  17246 12月  4  2013 chown-core.c
-rw-r--r--. 1 oracle docker   2281 12月  4  2013 chown-core.h
-rw-r--r--. 1 oracle docker  10116 12月  4  2013 chown.c
-rw-r--r--. 1 oracle docker   6821 12月  4  2013 chroot.c
-rw-r--r--. 1 oracle docker   9879 12月  4  2013 cksum.c
-rw-r--r--. 1 oracle docker  12863 12月  4  2013 comm.c
-rw-r--r--. 1 oracle docker 102362 12月  5  2013 copy.c
-rw-r--r--. 1 oracle docker  10637 12月  4  2013 copy.h
-rw-r--r--. 1 oracle docker   4645 12月  4  2013 cp-hash.c
-rw-r--r--. 1 oracle docker    204 12月  4  2013 cp-hash.h
-rw-r--r--. 1 oracle docker  39399 12月  5  2013 cp.c
-rw-r--r--. 1 oracle docker  39607 12月  4  2013 csplit.c
-r--r--r--. 1 oracle docker   3209 12月 13  2013 cu-progs.mk
-rw-r--r--. 1 oracle docker  22606 12月  4  2013 cut.c
-rw-r--r--. 1 oracle docker  16993 12月  4  2013 date.c
-rwxr-xr-x. 1 oracle docker   1334 12月  4  2013 dcgen
-rw-r--r--. 1 oracle docker  72722 12月  4  2013 dd.c
-rw-r--r--. 1 oracle docker  46625 12月  4  2013 df.c
-rw-r--r--. 1 oracle docker  12875 12月  4  2013 dircolors.c
-r--r--r--. 1 oracle docker  18409 12月  9  2013 dircolors.h
-rw-r--r--. 1 oracle docker   4582 12月  4  2013 dircolors.hin
-rw-r--r--. 1 oracle docker   3188 12月  4  2013 dirname.c
-rw-r--r--. 1 oracle docker  33767 12月  4  2013 du.c
-rw-r--r--. 1 oracle docker   7630 12月  4  2013 echo.c
-rw-r--r--. 1 oracle docker   4387 12月  4  2013 env.c
-rw-r--r--. 1 oracle docker  11212 12月  4  2013 expand.c
-rw-r--r--. 1 oracle docker  21189 12月  4  2013 expr.c
-rw-r--r--. 1 oracle docker   7620 12月  4  2013 extent-scan.c
-rw-r--r--. 1 oracle docker   2099 12月  4  2013 extent-scan.h
-rw-r--r--. 1 oracle docker   4637 12月  4  2013 extract-magic
-rw-r--r--. 1 oracle docker  74954 12月  4  2013 factor.c
-rw-r--r--. 1 oracle docker     51 12月  4  2013 false.c
-rw-r--r--. 1 oracle docker   3052 12月  4  2013 fiemap.h
-rw-r--r--. 1 oracle docker   3345 12月  4  2013 find-mount-point.c
-rw-r--r--. 1 oracle docker    836 12月  4  2013 find-mount-point.h
-rw-r--r--. 1 oracle docker  28532 12月  4  2013 fmt.c
-rw-r--r--. 1 oracle docker   8195 12月  4  2013 fold.c
-r--r--r--. 1 oracle docker   3921 12月 13  2013 fs-is-local.h
-r--r--r--. 1 oracle docker   3571 12月 13  2013 fs.h
-rw-r--r--. 1 oracle docker   5221 12月  4  2013 getlimits.c
-rw-r--r--. 1 oracle docker   3121 12月  4  2013 group-list.c
-rw-r--r--. 1 oracle docker    865 12月  4  2013 group-list.h
-rw-r--r--. 1 oracle docker   3837 12月  4  2013 groups.c
-rw-r--r--. 1 oracle docker  32194 12月  4  2013 head.c
-rw-r--r--. 1 oracle docker   2355 12月  4  2013 hostid.c
-rw-r--r--. 1 oracle docker   3107 12月  4  2013 hostname.c
-rw-r--r--. 1 oracle docker  12624 12月  4  2013 id.c
-rw-r--r--. 1 oracle docker  30866 12月  4  2013 install.c
-rw-r--r--. 1 oracle docker   2710 12月  4  2013 ioblksize.h
-rw-r--r--. 1 oracle docker  32132 12月  4  2013 join.c
-rw-r--r--. 1 oracle docker   8823 12月  4  2013 kill.c
-rw-r--r--. 1 oracle docker     37 12月  4  2013 lbracket.c
-rw-r--r--. 1 oracle docker   4724 12月  4  2013 libstdbuf.c
-rw-r--r--. 1 oracle docker   2605 12月  4  2013 link.c
-rw-r--r--. 1 oracle docker  21549 12月  4  2013 ln.c
-rw-r--r--. 1 oracle docker  17421 12月  4  2013 local.mk
-rw-r--r--. 1 oracle docker   2259 12月  4  2013 logname.c
-rw-r--r--. 1 oracle docker  78147 12月  4  2013 longlong.h
-rw-r--r--. 1 oracle docker     44 12月  4  2013 ls-dir.c
-rw-r--r--. 1 oracle docker     37 12月  4  2013 ls-ls.c
-rw-r--r--. 1 oracle docker     46 12月  4  2013 ls-vdir.c
-rw-r--r--. 1 oracle docker 151003 12月  4  2013 ls.c
-rw-r--r--. 1 oracle docker    201 12月  4  2013 ls.h
-rw-r--r--. 1 oracle docker   5766 12月  4  2013 make-prime-list.c
-rw-r--r--. 1 oracle docker  24492 12月  4  2013 md5sum.c
-rw-r--r--. 1 oracle docker   9062 12月  5  2013 mkdir.c
-rw-r--r--. 1 oracle docker   4933 12月  5  2013 mkfifo.c
-rw-r--r--. 1 oracle docker   8116 12月  5  2013 mknod.c
-rw-r--r--. 1 oracle docker  10046 12月  4  2013 mktemp.c
-rw-r--r--. 1 oracle docker  16286 12月  5  2013 mv.c
-rw-r--r--. 1 oracle docker   6035 12月  4  2013 nice.c
-rw-r--r--. 1 oracle docker  16275 12月  4  2013 nl.c
-rw-r--r--. 1 oracle docker   7907 12月  4  2013 nohup.c
-rw-r--r--. 1 oracle docker   3220 12月  4  2013 nproc.c
-rw-r--r--. 1 oracle docker  41966 12月  4  2013 numfmt.c
-rw-r--r--. 1 oracle docker  57126 12月  4  2013 od.c
-rw-r--r--. 1 oracle docker   2317 12月  4  2013 operand2sig.c
-rw-r--r--. 1 oracle docker    832 12月  4  2013 operand2sig.h
-rw-r--r--. 1 oracle docker  14970 12月  4  2013 paste.c
-rw-r--r--. 1 oracle docker  11819 12月  4  2013 pathchk.c
-rw-r--r--. 1 oracle docker  14943 12月  4  2013 pinky.c
-rw-r--r--. 1 oracle docker  86849 12月  4  2013 pr.c
-r--r--r--. 1 oracle docker 104356 12月  9  2013 primes.h
-rw-r--r--. 1 oracle docker   4059 12月  4  2013 printenv.c
-rw-r--r--. 1 oracle docker  19700 12月  4  2013 printf.c
-rw-r--r--. 1 oracle docker   1174 12月  4  2013 prog-fprintf.c
-rw-r--r--. 1 oracle docker    962 12月  4  2013 prog-fprintf.h
-rw-r--r--. 1 oracle docker  69914 12月  4  2013 ptx.c
-rw-r--r--. 1 oracle docker  10591 12月  4  2013 pwd.c
-rw-r--r--. 1 oracle docker   5112 12月  4  2013 readlink.c
-rw-r--r--. 1 oracle docker   7794 12月  4  2013 realpath.c
-rw-r--r--. 1 oracle docker   3654 12月  4  2013 relpath.c
-rw-r--r--. 1 oracle docker    918 12月  4  2013 relpath.h
-rw-r--r--. 1 oracle docker  19761 12月  4  2013 remove.c
-rw-r--r--. 1 oracle docker   3015 12月  4  2013 remove.h
-rw-r--r--. 1 oracle docker  10477 12月  4  2013 rm.c
-rw-r--r--. 1 oracle docker   6786 12月  4  2013 rmdir.c
-rw-r--r--. 1 oracle docker   8035 12月  4  2013 runcon.c
-rw-r--r--. 1 oracle docker   8986 12月  4  2013 selinux.c
-rw-r--r--. 1 oracle docker   1459 12月  5  2013 selinux.h
-rw-r--r--. 1 oracle docker  18070 12月  4  2013 seq.c
-rw-r--r--. 1 oracle docker   6033 12月  4  2013 setuidgid.c
-rw-r--r--. 1 oracle docker  40495 12月  4  2013 shred.c
-rw-r--r--. 1 oracle docker  17528 12月  9  2013 shuf.c
-rw-r--r--. 1 oracle docker   3913 12月  4  2013 sleep.c
-rw-r--r--. 1 oracle docker 143380 12月  4  2013 sort.c
-rw-r--r--. 1 oracle docker  46504 12月  4  2013 split.c
-rw-r--r--. 1 oracle docker  46255 12月 13  2013 stat.c
-rw-r--r--. 1 oracle docker  10090 12月  4  2013 stdbuf.c
-rw-r--r--. 1 oracle docker  55677 12月  4  2013 stty.c
-rw-r--r--. 1 oracle docker   6726 12月  4  2013 sum.c
-rw-r--r--. 1 oracle docker   1977 12月  4  2013 sync.c
-rw-r--r--. 1 oracle docker  18060 12月  5  2013 system.h
-rw-r--r--. 1 oracle docker   5973 12月  4  2013 tac-pipe.c
-rw-r--r--. 1 oracle docker  20994 12月  4  2013 tac.c
-rw-r--r--. 1 oracle docker  69842 12月  9  2013 tail.c
-rw-r--r--. 1 oracle docker   5705 12月  4  2013 tee.c
-rw-r--r--. 1 oracle docker  22830 12月  4  2013 test.c
-rw-r--r--. 1 oracle docker  15652 12月  4  2013 timeout.c
-rw-r--r--. 1 oracle docker  13015 12月  4  2013 touch.c
-rw-r--r--. 1 oracle docker  60347 12月  4  2013 tr.c
-rw-r--r--. 1 oracle docker   2233 12月  4  2013 true.c
-rw-r--r--. 1 oracle docker  12173 12月  4  2013 truncate.c
-rw-r--r--. 1 oracle docker  14063 12月  4  2013 tsort.c
-rw-r--r--. 1 oracle docker   3054 12月  4  2013 tty.c
-rw-r--r--. 1 oracle docker     48 12月  4  2013 uname-arch.c
-rw-r--r--. 1 oracle docker     49 12月  4  2013 uname-uname.c
-rw-r--r--. 1 oracle docker   9910 12月  4  2013 uname.c
-rw-r--r--. 1 oracle docker    146 12月  4  2013 uname.h
-rw-r--r--. 1 oracle docker  15221 12月  4  2013 unexpand.c
-rw-r--r--. 1 oracle docker  18932 12月  4  2013 uniq.c
-rw-r--r--. 1 oracle docker   2392 12月  4  2013 unlink.c
-rw-r--r--. 1 oracle docker   6767 12月  4  2013 uptime.c
-rw-r--r--. 1 oracle docker   3610 12月  4  2013 users.c
-rw-r--r--. 1 oracle docker  23793 12月  4  2013 wc.c
-rw-r--r--. 1 oracle docker  22102 12月  4  2013 who.c
-rw-r--r--. 1 oracle docker   2482 12月  4  2013 whoami.c
-rw-r--r--. 1 oracle docker   2312 12月  4  2013 yes.c

gawk 5.0.0いんすこ

参考文献

configure, make, make install とは何か  
【 which 】コマンド――実行コマンドのフルパスを表示する  
GNU awk 5.0.0がリリース - 名前空間が実装されたメジャーバージョンアップ版  
https://qiita.com/ryuichi1208/items/fe625fba0afe0ec46789  
Gawk 5.0.0 released!  

実行例

コード表示

[oracle@centos rr]$ gawk --version | head -n 1
GNU Awk 4.0.2
[oracle@centos ff]$ ll
合計 0
[oracle@centos ff]$ curl -LO ftp://ftp.gnu.org/gnu/gawk/gawk-5.0.0.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5628k  100 5628k    0     0   222k      0  0:00:25  0:00:25 --:--:--  303k
[oracle@centos ff]$ ll
合計 5632
-rw-r--r--. 1 oracle docker 5763496  6月 23 13:45 gawk-5.0.0.tar.gz
[oracle@centos ff]$ tar -zxvf gawk-5.0.0.tar.gz
[oracle@centos ff]$ ll
合計 5636
drwxr-xr-x. 15 oracle docker    4096  4月 12 18:31 gawk-5.0.0
-rw-r--r--.  1 oracle docker 5763496  6月 23 13:45 gawk-5.0.0.tar.gz
[oracle@centos ff]$ cd gawk-5.0.0/
[oracle@centos gawk-5.0.0]$ pwd
/home/oracle/ff/gawk-5.0.0
[oracle@centos gawk-5.0.0]$ ll | grep conf
-rwxr-xr-x. 1 oracle docker  47840  4月 11 03:29 config.guess
-rwxr-xr-x. 1 oracle docker  18574  4月 11 03:29 config.rpath
-rwxr-xr-x. 1 oracle docker  31589  4月 11 03:29 config.sub
-rw-r--r--. 1 oracle docker  13627  4月 12 18:03 configh.in
-rwxr-xr-x. 1 oracle docker 375070  4月 12 18:03 configure
-rw-r--r--. 1 oracle docker  12818  4月 12 18:02 configure.ac

[oracle@centos gawk-5.0.0]$ ./configure
[oracle@centos gawk-5.0.0]$ make
[oracle@centos gawk-5.0.0]$ ll
合計 9684
-rw-r--r--. 1 oracle docker   94012  4月  5 16:37 ABOUT-NLS
-rw-r--r--. 1 oracle docker     495 12月 15  2017 AUTHORS
-rw-r--r--. 1 oracle docker   35147 12月 15  2017 COPYING
-rw-r--r--. 1 oracle docker     298  4月 12 18:19 ChangeLog
-rw-r--r--. 1 oracle docker  378804  4月  5 16:38 ChangeLog.0
-rw-r--r--. 1 oracle docker   15752 12月 24 05:01 INSTALL
-rw-r--r--. 1 oracle docker   42397  6月 23 13:48 Makefile
-rw-r--r--. 1 oracle docker    5841  4月  5 16:38 Makefile.am
-rw-r--r--. 1 oracle docker   43725  4月 12 18:03 Makefile.in
-rw-r--r--. 1 oracle docker    2039  4月  8 03:53 NEWS
-rw-r--r--. 1 oracle docker   85116 12月 15  2017 NEWS.0
-rw-r--r--. 1 oracle docker   18602  4月  5 16:38 NEWS.1
-rw-r--r--. 1 oracle docker    1980 12月 24 05:01 POSIX.STD
-rw-r--r--. 1 oracle docker    3852  4月 12 17:59 README
drwxr-xr-x. 2 oracle docker    4096  4月 12 18:18 README_d
-rw-r--r--. 1 oracle docker    4705  4月  5 16:38 TODO
-rw-r--r--. 1 oracle docker   42419  4月 12 18:03 aclocal.m4
-rw-r--r--. 1 oracle docker   32676  4月  5 16:38 array.c
-rw-r--r--. 1 oracle docker  137216  6月 23 13:50 array.o
-rw-r--r--. 1 oracle docker   60231  4月 11 04:06 awk.h
-rw-r--r--. 1 oracle docker  261884  4月 12 18:02 awkgram.c
-rw-r--r--. 1 oracle docker  489048  6月 23 13:50 awkgram.o
-rw-r--r--. 1 oracle docker  165324  4月  9 03:49 awkgram.y
drwxr-xr-x. 4 oracle docker    4096  6月 23 13:50 awklib
-rw-r--r--. 1 oracle docker  100458  4月  5 16:38 builtin.c
-rw-r--r--. 1 oracle docker  519832  6月 23 13:50 builtin.o
-rw-r--r--. 1 oracle docker   28915  4月  5 16:38 cint_array.c
-rw-r--r--. 1 oracle docker  103608  6月 23 13:50 cint_array.o
-rw-r--r--. 1 oracle docker    5589  4月  5 16:37 cmd.h
-rw-r--r--. 1 oracle docker  101640  4月 12 18:02 command.c
-rw-r--r--. 1 oracle docker  153760  6月 23 13:50 command.o
-rw-r--r--. 1 oracle docker   39774  4月  5 16:38 command.y
-rwxr-xr-x. 1 oracle docker    7383  4月 11 03:29 compile
-rwxr-xr-x. 1 oracle docker   47840  4月 11 03:29 config.guess
-rw-r--r--. 1 oracle docker   14345  6月 23 13:48 config.h
-rw-r--r--. 1 oracle docker  132076  6月 23 13:48 config.log
-rwxr-xr-x. 1 oracle docker   18574  4月 11 03:29 config.rpath
-rwxr-xr-x. 1 oracle docker   43287  6月 23 13:48 config.status
-rwxr-xr-x. 1 oracle docker   31589  4月 11 03:29 config.sub
-rw-r--r--. 1 oracle docker   13627  4月 12 18:03 configh.in
-rwxr-xr-x. 1 oracle docker  375070  4月 12 18:03 configure
-rw-r--r--. 1 oracle docker   12818  4月 12 18:02 configure.ac
-rw-r--r--. 1 oracle docker    2355  4月  5 16:38 custom.h
-rw-r--r--. 1 oracle docker  142002  4月  5 16:38 debug.c
-rw-r--r--. 1 oracle docker  593376  6月 23 13:50 debug.o
-rwxr-xr-x. 1 oracle docker   23568  4月 11 03:29 depcomp
drwxr-xr-x. 3 oracle docker    4096  6月 23 13:48 doc
-rw-r--r--. 1 oracle docker   43584  4月  8 03:53 eval.c
-rw-r--r--. 1 oracle docker  449304  6月 23 13:50 eval.o
-rw-r--r--. 1 oracle docker    6983  4月  5 16:38 ext.c
-rw-r--r--. 1 oracle docker   52184  6月 23 13:50 ext.o
drwxr-xr-x. 7 oracle docker    4096  6月 23 13:50 extension
drwxr-xr-x. 2 oracle docker    4096  6月 23 13:48 extras
-rw-r--r--. 1 oracle docker   43912  4月  5 16:38 field.c
-rw-r--r--. 1 oracle docker  149752  6月 23 13:50 field.o
-rw-r--r--. 1 oracle docker    3457  4月  5 16:29 floatcomp.c
-rw-r--r--. 1 oracle docker   19976  6月 23 13:50 floatcomp.o
-rw-r--r--. 1 oracle docker    1873  4月  5 16:29 floatmagic.h
-rwxr-xr-x. 1 oracle docker 2583080  6月 23 13:50 gawk
-rw-r--r--. 1 oracle docker   35948  4月  5 16:38 gawkapi.c
-rw-r--r--. 1 oracle docker   40486  4月  5 16:38 gawkapi.h
-rw-r--r--. 1 oracle docker  134312  6月 23 13:50 gawkapi.o
-rw-r--r--. 1 oracle docker    1397  4月  5 16:37 gawkmisc.c
-rw-r--r--. 1 oracle docker   37544  6月 23 13:50 gawkmisc.o
-rw-r--r--. 1 oracle docker   10478  4月  5 16:37 gettext.h
-rwxr-xr-x. 1 oracle docker   15368  4月 11 03:29 install-sh
-rw-r--r--. 1 oracle docker   20750  4月  5 16:38 int_array.c
-rw-r--r--. 1 oracle docker   76472  6月 23 13:50 int_array.o
-rw-r--r--. 1 oracle docker   36205  4月  5 16:38 interpret.h
-rw-r--r--. 1 oracle docker  112095  4月  5 16:37 io.c
-rw-r--r--. 1 oracle docker  286528  6月 23 13:50 io.o
drwxr-xr-x. 2 oracle docker    4096  4月 12 18:23 m4
-rw-r--r--. 1 oracle docker   47396  4月  8 03:53 main.c
-rw-r--r--. 1 oracle docker  188640  6月 23 13:50 main.o
-rw-r--r--. 1 oracle docker    1678  4月  5 16:37 mbsupport.h
-rwxr-xr-x. 1 oracle docker    6872 12月 24 05:01 missing
drwxr-xr-x. 2 oracle docker    4096  4月 12 18:23 missing_d
-rwxr-xr-x. 1 oracle docker    3539  4月 11 03:29 mkinstalldirs
-rw-r--r--. 1 oracle docker   39262  4月  5 16:38 mpfr.c
-rw-r--r--. 1 oracle docker   19512  6月 23 13:50 mpfr.o
-rw-r--r--. 1 oracle docker    4130  4月  5 16:37 msg.c
-rw-r--r--. 1 oracle docker   31480  6月 23 13:50 msg.o
-rw-r--r--. 1 oracle docker   24798  4月  5 16:37 node.c
-rw-r--r--. 1 oracle docker   96816  6月 23 13:50 node.o
-rw-r--r--. 1 oracle docker    2988  4月  5 16:38 nonposix.h
drwxr-xr-x. 3 oracle docker    4096  4月 12 18:23 pc
drwxr-xr-x. 2 oracle docker    4096  6月 23 13:48 po
drwxr-xr-x. 2 oracle docker    4096  4月 12 18:25 posix
-rw-r--r--. 1 oracle docker   50514  4月  5 16:38 profile.c
-rw-r--r--. 1 oracle docker  218040  6月 23 13:50 profile.o
-rw-r--r--. 1 oracle docker    4385  4月  5 16:37 protos.h
-rw-r--r--. 1 oracle docker   16272  4月  5 16:38 re.c
-rw-r--r--. 1 oracle docker   70624  6月 23 13:50 re.o
-rw-r--r--. 1 oracle docker    2879  4月  5 16:38 replace.c
-rw-r--r--. 1 oracle docker   18496  6月 23 13:50 replace.o
-rw-r--r--. 1 oracle docker      23  6月 23 13:48 stamp-h1
-rw-r--r--. 1 oracle docker   20166  4月 11 04:06 str_array.c
-rw-r--r--. 1 oracle docker   70824  6月 23 13:50 str_array.o
drwxr-xr-x. 3 oracle docker    4096  6月 23 13:50 support
-rw-r--r--. 1 oracle docker   20703  4月  5 16:38 symbol.c
-rw-r--r--. 1 oracle docker   90808  6月 23 13:50 symbol.o
drwxr-xr-x. 5 oracle docker   36864  6月 23 13:48 test
-rw-r--r--. 1 oracle docker      66  7月 19  2018 version.c
-rw-r--r--. 1 oracle docker    2408  6月 23 13:50 version.o
drwxr-xr-x. 3 oracle docker    4096  4月 12 18:22 vms
-rwxr-xr-x. 1 oracle docker    6858 12月 24 05:01 ylwrap


[oracle@centos gawk-5.0.0]$ make install
Making install in support
make[1]: ディレクトリ `/home/oracle/ff/gawk-5.0.0/support' に入ります
make[2]: ディレクトリ `/home/oracle/ff/gawk-5.0.0/support' に入ります
make[2]: `install-exec-am' に対して行うべき事はありません.
make[2]: `install-data-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/home/oracle/ff/gawk-5.0.0/support' から出ます
make[1]: ディレクトリ `/home/oracle/ff/gawk-5.0.0/support' から出ます
Making install in .
make[1]: ディレクトリ `/home/oracle/ff/gawk-5.0.0' に入ります
make[2]: ディレクトリ `/home/oracle/ff/gawk-5.0.0' に入ります
 /usr/bin/mkdir -p '/usr/local/bin'
  ./install-sh -c gawk '/usr/local/bin'
cp: 通常ファイル `/usr/local/bin/_inst.5085_' を作成できません: 許可がありません
make[2]: *** [install-binPROGRAMS] エラー 1
make[2]: ディレクトリ `/home/oracle/ff/gawk-5.0.0' から出ます
make[1]: *** [install-am] エラー 2
make[1]: ディレクトリ `/home/oracle/ff/gawk-5.0.0' から出ます
make: *** [install-recursive] エラー 1


[oracle@centos gawk-5.0.0]$ sudo make install

[oracle@centos gawk-5.0.0]$ which gawk
/usr/local/bin/gawk
[oracle@centos gawk-5.0.0]$ /usr/local/bin/gawk --version
GNU Awk 5.0.0, API: 2.0
Copyright (C) 1989, 1991-2019 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.

[oracle@centos gawk-5.0.0]$ ./gawk --version
GNU Awk 5.0.0, API: 2.0
Copyright (C) 1989, 1991-2019 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.

~/.bashrcぐらいに実行ファイルまでのエイリアス名付けておく

docにしかバージョン文言ないから嫌。あっ、だからシンボリックリンクの概念生まれたのか。。。コピーしてリネームしておけばいいのか!!

コード表示

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

alias unkommit="/usr/local/bin/unkommit.sh"
alias awk="/usr/local/bin/awk"
alias gawk="/usr/local/bin/awk"

[oracle@centos ~]$ cd /usr/local/bin/
[oracle@centos bin]$ ll
合計 20828
lrwxrwxrwx. 1 root root        4  6月 23 13:51 awk -> gawk
-rwxr-xr-x. 1 root root 16154160  5月 12 17:20 docker-compose
-rwxr-xr-x. 2 root root  2583080  6月 23 13:51 gawk
-rwxr-xr-x. 2 root root  2583080  6月 23 13:51 gawk-5.0.0
-rwxr-xr-x. 1 root root       34  4月  5 05:57 sqldeveloper
lrwxrwxrwx. 1 root root       32  6月 22 14:06 unkommit.sh -> /home/oracle/rr/.bin/unkommit.sh
[oracle@centos bin]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/oracle/.local/bin:/home/oracle/bin
[oracle@centos bin]$ ll
合計 20828
lrwxrwxrwx. 1 root root        4  6月 23 13:51 awk -> gawk
-rwxr-xr-x. 1 root root 16154160  5月 12 17:20 docker-compose
-rwxr-xr-x. 2 root root  2583080  6月 23 13:51 gawk
-rwxr-xr-x. 2 root root  2583080  6月 23 13:51 gawk-5.0.0
-rwxr-xr-x. 1 root root       34  4月  5 05:57 sqldeveloper
lrwxrwxrwx. 1 root root       32  6月 22 14:06 unkommit.sh -> /home/oracle/rr/.bin/unkommit.sh
[oracle@centos bin]$ pwd
/usr/local/bin
[oracle@centos bin]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/oracle/.local/bin:/home/oracle/bin
[oracle@centos bin]$ pwd
/usr/local/bin
[oracle@centos bin]$ ll
合計 20828
lrwxrwxrwx. 1 root root        4  6月 23 13:51 awk -> gawk
-rwxr-xr-x. 1 root root 16154160  5月 12 17:20 docker-compose
-rwxr-xr-x. 2 root root  2583080  6月 23 13:51 gawk
-rwxr-xr-x. 2 root root  2583080  6月 23 13:51 gawk-5.0.0
-rwxr-xr-x. 1 root root       34  4月  5 05:57 sqldeveloper
lrwxrwxrwx. 1 root root       32  6月 22 14:06 unkommit.sh -> /home/oracle/rr/.bin/unkommit.sh
[oracle@centos bin]$ which awk
alias awk='/usr/local/bin/awk'
	/usr/local/bin/awk
[oracle@centos bin]$ which gawk
alias gawk='/usr/local/bin/awk'
	/usr/local/bin/awk

asciiコード定義ファイルからasciiコード定義確認スクリプトを作ってみた話

まえがき

本当は自己収束型のシェルスクリプトを目指していたんだけど、脱線しすぎた。自己収束型っていうのは頭の中のイメージ。まだうまく言葉で表現できていないや。

参考文献

ASCII / ISO 8859-1 (Latin-1) Table with HTML Entity Names  

______$(echo -e ‘\U1F4A9’)______.sh

コード表示

#!/bin/bash

_insert_shebang(){
  FILE_NM=$1
  sed -i '1i#!/bin/bash\n' ${FILE_NM}
}

_grt_exec_priv(){
  FILE_NM=$1
  #echo -n "password:"
  read -s password echo ${password} | sudo -S chmod +x ${FILE_NM}
}

_exec(){
  FILE_NM=$1
  source ${FILE_NM}
}

_trap_rm_tmpdir(){
  local TMP_DIR=$1
  trap "rm -rf ${TMP_DIR}" EXIT
}

_clean(){
  local FNM=$1
  rm -f "${FNM}"
}

_def_ascii_code(){
  local FNM=$1
cat <<EOF >${FNM}
32&47
58&64
91&96
123&126
EOF
}

_def_ascii_cnst(){
  local FNM=$1
cat <<EOF >${FNM}
LNF='x0a'
SPA='x20'
ECM='x21'
DQT='x22'
NSG='x23'
DLR='x24'
PCT='x25'
AMP='x26'
SQT='x27'
LPS='x28'
RPS='x29'
AST='x2a'
PLS='x2b'
CNM='x2c'
PYN='x2d'
DOT='x2e'
SLS='x2f'
CLN='x3a'
SCN='x3b'
LTS='x3c'
EQL='x3d'
GTS='x3e'
QES='x3f'
ATM='x40'
LSB='x5b'
BSL='x5c'
RSB='x5d'
CLT='x5e'
USC='x5f'
BQT='x60'
LCB='x7b'
VTB='x7c'
RCB='x7d'
TLD='x7e'
EOF
}

_pre_prc(){
  local IPUT=$1
  sed -e '/^#!/d' -e '/^$/d' <<<${IPUT}
}

_mk_func_frame(){
  local FNM=$1
cat <<EOF >${FNM}
#!/bin/bash

source ./${SRC_FNM}

_f(){
  echo "" | awk '{
    @
  }'
}

_f
EOF
}

_mk_call_ascii_cnst(){
  local SRC_FNM=$1
  local TGT_FNM=$2
  local IPUT=$(while read LN;do
    local LFT=${LN%=*}
    _pre_prc ${LFT}
  done < <(cat ${SRC_FNM}))
  local TMP_DIR=$(mktemp -d)
  _trap_rm_tmpdir ${TMP_DIR}
  echo "${IPUT}" >${TMP_DIR}/tmp
  local BUILD_CMD=$(while read LN;do
    RN=$(echo ${LN} | sed -e 's/ .*//');
    ASCII_NM=$(echo ${LN} | sed -e 's/.* //');
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
      ASCII_NM="'${ASCII_NM}'"
      DLR="\'${DLR}'"
      SPA="\'${SPA}'"
      LCB="\'${LCB}'"
      RCB="\'${RCB}'"
      BSL="\'${BSL}'"
      EQL="\'${EQL}'"
      DQT="\'${DQT}'"
      SQT="\'${SQT}'"
      LNF="\'${LNF}'"
    }
    {
      print ASCII_NM""EQL""DQT""BSL""BSL""BSL""SQT""DLR""LCB""ASCII_NM""RCB""SQT""DQT""LNF"""print"SPA""ASCII_NM""
    }
    '
  done < <(cat ${TMP_DIR}/tmp | nl))
  BUILD_CMD=$(echo "${BUILD_CMD}" | sed ':a;N;$!ba;s/\n/@/g')
  sed -i -e 's:@:'"$BUILD_CMD"':g' ${TGT_FNM}
  cat ${TGT_FNM} | tr '@' '\n' >${TMP_DIR}/tmpp
  cp ${TMP_DIR}/tmpp ${TGT_FNM}
}

_main(){
  SRC_FNM=$1
  TGT_FNM=$2
  source ./${SRC_FNM}
  _clean ${SRC_FNM}
  _def_ascii_cnst ${SRC_FNM}
  _insert_shebang ${SRC_FNM}
  _grt_exec_priv ${SRC_FNM}
  _clean ${TGT_FNM}
  _mk_func_frame ${TGT_FNM}
  _mk_call_ascii_cnst ${SRC_FNM} ${TGT_FNM}
  _grt_exec_priv ${TGT_FNM}
  _exec ${TGT_FNM}
}

_main def_ascii_cnst.sh call_ascii_cnst.sh

実行例


[oracle@centos rr]$ ll
合計 48
-rw-r--r--. 1 oracle docker   95  6月 10 00:42 README.md
-rw-r--r--. 1 oracle docker  965  6月 14 19:49 call_ascii_cnst.sh
drwxr-xr-x. 3 oracle docker 4096  6月  9 18:28 cnst
-rw-r--r--. 1 oracle docker  353  6月 14 20:00 def_ascii_cnst.sh
drwxr-xr-x. 4 oracle docker 4096  6月  9 18:28 func
drwxr-xr-x. 2 oracle docker 4096  6月  9 18:28 iput
drwxr-xr-x. 5 oracle docker 4096  6月 10 21:26 main
-rwxr-xr-x. 1 oracle docker 1160  6月 13 07:33 t.sh
drwxr-xr-x. 5 oracle docker 4096  6月 14 14:24 test
-rwxr-xr-x. 1 oracle docker 4228  6月 14 19:50 tt.sh
drwxr-xr-x. 2 oracle docker 4096  6月 13 07:23 util
[oracle@centos rr]$ vi ______$(echo -e '\U1F4A9')______.sh
[oracle@centos rr]$ ll
合計 52
-rw-r--r--. 1 oracle docker   95  6月 10 00:42 README.md
-rw-r--r--. 1 oracle docker 2435  6月 14 20:02 ______?______.sh
-rw-r--r--. 1 oracle docker  965  6月 14 19:49 call_ascii_cnst.sh
drwxr-xr-x. 3 oracle docker 4096  6月  9 18:28 cnst
-rw-r--r--. 1 oracle docker  353  6月 14 20:00 def_ascii_cnst.sh
drwxr-xr-x. 4 oracle docker 4096  6月  9 18:28 func
drwxr-xr-x. 2 oracle docker 4096  6月  9 18:28 iput
drwxr-xr-x. 5 oracle docker 4096  6月 10 21:26 main
-rwxr-xr-x. 1 oracle docker 1160  6月 13 07:33 t.sh
drwxr-xr-x. 5 oracle docker 4096  6月 14 14:24 test
-rwxr-xr-x. 1 oracle docker 4228  6月 14 19:50 tt.sh
drwxr-xr-x. 2 oracle docker 4096  6月 13 07:23 util
[oracle@centos rr]$ ./______$(echo -e '\U1F4A9')______.sh
bash: ./______💩______.sh: 許可がありません
[oracle@centos rr]$ chmod +x ______$(echo -e '\U1F4A9')______.sh
[oracle@centos rr]$ ll
合計 52
-rw-r--r--. 1 oracle docker   95  6月 10 00:42 README.md
-rwxr-xr-x. 1 oracle docker 2435  6月 14 20:02 ______?______.sh
-rw-r--r--. 1 oracle docker  965  6月 14 19:49 call_ascii_cnst.sh
drwxr-xr-x. 3 oracle docker 4096  6月  9 18:28 cnst
-rw-r--r--. 1 oracle docker  353  6月 14 20:03 def_ascii_cnst.sh
drwxr-xr-x. 4 oracle docker 4096  6月  9 18:28 func
drwxr-xr-x. 2 oracle docker 4096  6月  9 18:28 iput
drwxr-xr-x. 5 oracle docker 4096  6月 10 21:26 main
-rwxr-xr-x. 1 oracle docker 1160  6月 13 07:33 t.sh
drwxr-xr-x. 5 oracle docker 4096  6月 14 14:24 test
-rwxr-xr-x. 1 oracle docker 4228  6月 14 19:50 tt.sh
drwxr-xr-x. 2 oracle docker 4096  6月 13 07:23 util
[oracle@centos rr]$ ./______$(echo -e '\U1F4A9')______.sh | nl
[sudo] oracle のパスワード:
[sudo] oracle のパスワード:
       
       
     1	 
     2	!
     3	"
     4	#
     5	$
     6	%
     7	&
     8	'
     9	(
    10	)
    11	*
    12	+
    13	,
    14	-
    15	.
    16	/
    17	:
    18	;
    19	<
    20	=
    21	>
    22	?
    23	@
    24	[
    25	\
    26	]
    27	^
    28	_
    29	`
    30	{
    31	|
    32	}
    33	~
[oracle@centos rr]$ 

あとがき

ファイル名にうんこが描けたのが収穫。awkはエスケープ専門で使ったらよさそうかな。使い易い。さて、ランニングするぞー!fin。

Unicodeで管理している文字集合をエンコーディング方式UTF-8で色々出力してみた話

まえがき

unicode12.0が2019年6月12日にでて、ニュースで知ったので、ちょっとだけ触れて見ることにした。文字すき。unicodeって名前かっこいい。コードポイント覚えよう。。楽しい。b^^

 

参考文献

emojiに分類名つけるのに役に立つよ

Unicode® Character Name Index  

emojiもコード化

Unicode絵文字(Emoji)  

公式ページ

The Unicode Consortium  

忘れたから調べた

ビット(bit)とバイト(Byte) 情報量の単位と2進数  

Wikiは安定

Unicode一覧 0000-0FFF  

emoji特化

Complete List of Emoji  

ここのフォントをダウンロードしてきました

Google Noto Fonts  

いんすこ時に参照

シェル上で🍣🍣(Unicode絵文字)を表示させる  

ターミナルに表示する際に参照

bashでUnicodeのコードポイントを扱う  

ここをみればビット演算周り思い出せそう

Bash $((算術式)) のすべて - A 基本編  

ダンプコマンド

od コマンド  

endianオプションなくない??

エンディアンの変更  

絵文字いんすこ

コード表示

[oracle@centos gg]$ mkdir ~/.fonts && cd ~/.fonts
[oracle@centos .fonts]$ curl -LO https://noto-website-2.storage.googleapis.com/pkgs/Noto-unhinted.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1062M  100 1062M    0     0  39.8M      0  0:00:26  0:00:26 --:--:-- 44.1M
[oracle@centos .fonts]$ ll
合計 1088444
-rw-r--r--. 1 oracle docker 1114561068  6月 14 09:11 Noto-unhinted.zip
[oracle@centos .fonts]$ unzip Noto-unhinted.zip && rm Noto-unhinted.zip
Archive:  Noto-unhinted.zip
  inflating: LICENSE_OFL.txt         
  inflating: NotoColorEmoji.ttf      
  inflating: NotoEmoji-Regular.ttf   
  inflating: NotoKufiArabic-Bold.ttf  
  inflating: NotoKufiArabic-Regular.ttf  
  inflating: NotoMono-Regular.ttf    
  inflating: NotoNaskhArabic-Bold.ttf  
  inflating: NotoNaskhArabic-Regular.ttf  
  inflating: NotoNaskhArabicUI-Bold.ttf  
  inflating: NotoNaskhArabicUI-Regular.ttf  
  inflating: NotoNastaliqUrdu-Regular.ttf  
  inflating: NotoSans-Black.ttf      
  inflating: NotoSans-BlackItalic.ttf  
  inflating: NotoSans-Bold.ttf       
  inflating: NotoSans-BoldItalic.ttf  
  inflating: NotoSans-Condensed.ttf  
  inflating: NotoSans-CondensedBlack.ttf  
  inflating: NotoSans-CondensedBlackItalic.ttf  
  inflating: NotoSans-CondensedBold.ttf  
  inflating: NotoSans-CondensedBoldItalic.ttf  
  inflating: NotoSans-CondensedExtraBold.ttf  
  inflating: NotoSans-CondensedExtraBoldItalic.ttf  
  inflating: NotoSans-CondensedExtraLight.ttf  
  inflating: NotoSans-CondensedExtraLightItalic.ttf  
  inflating: NotoSans-CondensedItalic.ttf  
  inflating: NotoSans-CondensedLight.ttf  
  inflating: NotoSans-CondensedLightItalic.ttf  
  inflating: NotoSans-CondensedMedium.ttf  
  inflating: NotoSans-CondensedMediumItalic.ttf  
  inflating: NotoSans-CondensedSemiBold.ttf  
  inflating: NotoSans-CondensedSemiBoldItalic.ttf  
  inflating: NotoSans-CondensedThin.ttf  
  inflating: NotoSans-CondensedThinItalic.ttf  
  inflating: NotoSans-ExtraBold.ttf  
  inflating: NotoSans-ExtraBoldItalic.ttf  
  inflating: NotoSans-ExtraCondensed.ttf  
  inflating: NotoSans-ExtraCondensedBlack.ttf  
  inflating: NotoSans-ExtraCondensedBlackItalic.ttf  
  inflating: NotoSans-ExtraCondensedBold.ttf  
  inflating: NotoSans-ExtraCondensedBoldItalic.ttf  
  inflating: NotoSans-ExtraCondensedExtraBold.ttf  
  inflating: NotoSans-ExtraCondensedExtraBoldItalic.ttf  
  inflating: NotoSans-ExtraCondensedExtraLight.ttf  
  inflating: NotoSans-ExtraCondensedExtraLightItalic.ttf  
  inflating: NotoSans-ExtraCondensedItalic.ttf  
  inflating: NotoSans-ExtraCondensedLight.ttf  
  inflating: NotoSans-ExtraCondensedLightItalic.ttf  
  inflating: NotoSans-ExtraCondensedMedium.ttf  
  inflating: NotoSans-ExtraCondensedMediumItalic.ttf  
  inflating: NotoSans-ExtraCondensedSemiBold.ttf  
  inflating: NotoSans-ExtraCondensedSemiBoldItalic.ttf  
  inflating: NotoSans-ExtraCondensedThin.ttf  
  inflating: NotoSans-ExtraCondensedThinItalic.ttf  
  inflating: NotoSans-ExtraLight.ttf  
  inflating: NotoSans-ExtraLightItalic.ttf  
  inflating: NotoSans-Italic.ttf     
  inflating: NotoSans-Light.ttf      
  inflating: NotoSans-LightItalic.ttf  
  inflating: NotoSans-Medium.ttf     
  inflating: NotoSans-MediumItalic.ttf  
  inflating: NotoSans-Regular.ttf    
  inflating: NotoSans-SemiBold.ttf   
  inflating: NotoSans-SemiBoldItalic.ttf  
  inflating: NotoSans-SemiCondensed.ttf  
  inflating: NotoSans-SemiCondensedBlack.ttf  
  inflating: NotoSans-SemiCondensedBlackItalic.ttf  
  inflating: NotoSans-SemiCondensedBold.ttf  
  inflating: NotoSans-SemiCondensedBoldItalic.ttf  
  inflating: NotoSans-SemiCondensedExtraBold.ttf  
  inflating: NotoSans-SemiCondensedExtraBoldItalic.ttf  
  inflating: NotoSans-SemiCondensedExtraLight.ttf  
  inflating: NotoSans-SemiCondensedExtraLightItalic.ttf  
  inflating: NotoSans-SemiCondensedItalic.ttf  
  inflating: NotoSans-SemiCondensedLight.ttf  
  inflating: NotoSans-SemiCondensedLightItalic.ttf  
  inflating: NotoSans-SemiCondensedMedium.ttf  
  inflating: NotoSans-SemiCondensedMediumItalic.ttf  
  inflating: NotoSans-SemiCondensedSemiBold.ttf  
  inflating: NotoSans-SemiCondensedSemiBoldItalic.ttf  
  inflating: NotoSans-SemiCondensedThin.ttf  
  inflating: NotoSans-SemiCondensedThinItalic.ttf  
  inflating: NotoSans-Thin.ttf       
  inflating: NotoSans-ThinItalic.ttf  
  inflating: NotoSansAdlam-Regular.ttf  
  inflating: NotoSansAdlamUnjoined-Regular.ttf  
  inflating: NotoSansAnatolianHieroglyphs-Regular.ttf  
  inflating: NotoSansArabic-Black.ttf  
  inflating: NotoSansArabic-Bold.ttf  
  inflating: NotoSansArabic-Condensed.ttf  
  inflating: NotoSansArabic-CondensedBlack.ttf  
  inflating: NotoSansArabic-CondensedBold.ttf  
  inflating: NotoSansArabic-CondensedExtraBold.ttf  
  inflating: NotoSansArabic-CondensedExtraLight.ttf  
  inflating: NotoSansArabic-CondensedLight.ttf  
  inflating: NotoSansArabic-CondensedMedium.ttf  
  inflating: NotoSansArabic-CondensedSemiBold.ttf  
  inflating: NotoSansArabic-CondensedThin.ttf  
  inflating: NotoSansArabic-ExtraBold.ttf  
  inflating: NotoSansArabic-ExtraCondensed.ttf  
  inflating: NotoSansArabic-ExtraCondensedBlack.ttf  
  inflating: NotoSansArabic-ExtraCondensedBold.ttf  
  inflating: NotoSansArabic-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansArabic-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansArabic-ExtraCondensedLight.ttf  
  inflating: NotoSansArabic-ExtraCondensedMedium.ttf  
  inflating: NotoSansArabic-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansArabic-ExtraCondensedThin.ttf  
  inflating: NotoSansArabic-ExtraLight.ttf  
  inflating: NotoSansArabic-Light.ttf  
  inflating: NotoSansArabic-Medium.ttf  
  inflating: NotoSansArabic-Regular.ttf  
  inflating: NotoSansArabic-SemiBold.ttf  
  inflating: NotoSansArabic-SemiCondensed.ttf  
  inflating: NotoSansArabic-SemiCondensedBlack.ttf  
  inflating: NotoSansArabic-SemiCondensedBold.ttf  
  inflating: NotoSansArabic-SemiCondensedExtraBold.ttf  
  inflating: NotoSansArabic-SemiCondensedExtraLight.ttf  
  inflating: NotoSansArabic-SemiCondensedLight.ttf  
  inflating: NotoSansArabic-SemiCondensedMedium.ttf  
  inflating: NotoSansArabic-SemiCondensedSemiBold.ttf  
  inflating: NotoSansArabic-SemiCondensedThin.ttf  
  inflating: NotoSansArabic-Thin.ttf  
  inflating: NotoSansArabicUI-Black.ttf  
  inflating: NotoSansArabicUI-Bold.ttf  
  inflating: NotoSansArabicUI-Condensed.ttf  
  inflating: NotoSansArabicUI-CondensedBlack.ttf  
  inflating: NotoSansArabicUI-CondensedBold.ttf  
  inflating: NotoSansArabicUI-CondensedExtraBold.ttf  
  inflating: NotoSansArabicUI-CondensedExtraLight.ttf  
  inflating: NotoSansArabicUI-CondensedLight.ttf  
  inflating: NotoSansArabicUI-CondensedMedium.ttf  
  inflating: NotoSansArabicUI-CondensedSemiBold.ttf  
  inflating: NotoSansArabicUI-CondensedThin.ttf  
  inflating: NotoSansArabicUI-ExtraBold.ttf  
  inflating: NotoSansArabicUI-ExtraCondensed.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedBold.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedLight.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansArabicUI-ExtraCondensedThin.ttf  
  inflating: NotoSansArabicUI-ExtraLight.ttf  
  inflating: NotoSansArabicUI-Light.ttf  
  inflating: NotoSansArabicUI-Medium.ttf  
  inflating: NotoSansArabicUI-Regular.ttf  
  inflating: NotoSansArabicUI-SemiBold.ttf  
  inflating: NotoSansArabicUI-SemiCondensed.ttf  
  inflating: NotoSansArabicUI-SemiCondensedBlack.ttf  
  inflating: NotoSansArabicUI-SemiCondensedBold.ttf  
  inflating: NotoSansArabicUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansArabicUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansArabicUI-SemiCondensedLight.ttf  
  inflating: NotoSansArabicUI-SemiCondensedMedium.ttf  
  inflating: NotoSansArabicUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansArabicUI-SemiCondensedThin.ttf  
  inflating: NotoSansArabicUI-Thin.ttf  
  inflating: NotoSansArmenian-Black.ttf  
  inflating: NotoSansArmenian-Bold.ttf  
  inflating: NotoSansArmenian-Condensed.ttf  
  inflating: NotoSansArmenian-CondensedBlack.ttf  
  inflating: NotoSansArmenian-CondensedBold.ttf  
  inflating: NotoSansArmenian-CondensedExtraBold.ttf  
  inflating: NotoSansArmenian-CondensedExtraLight.ttf  
  inflating: NotoSansArmenian-CondensedLight.ttf  
  inflating: NotoSansArmenian-CondensedMedium.ttf  
  inflating: NotoSansArmenian-CondensedSemiBold.ttf  
  inflating: NotoSansArmenian-CondensedThin.ttf  
  inflating: NotoSansArmenian-ExtraBold.ttf  
  inflating: NotoSansArmenian-ExtraCondensed.ttf  
  inflating: NotoSansArmenian-ExtraCondensedBlack.ttf  
  inflating: NotoSansArmenian-ExtraCondensedBold.ttf  
  inflating: NotoSansArmenian-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansArmenian-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansArmenian-ExtraCondensedLight.ttf  
  inflating: NotoSansArmenian-ExtraCondensedMedium.ttf  
  inflating: NotoSansArmenian-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansArmenian-ExtraCondensedThin.ttf  
  inflating: NotoSansArmenian-ExtraLight.ttf  
  inflating: NotoSansArmenian-Light.ttf  
  inflating: NotoSansArmenian-Medium.ttf  
  inflating: NotoSansArmenian-Regular.ttf  
  inflating: NotoSansArmenian-SemiBold.ttf  
  inflating: NotoSansArmenian-SemiCondensed.ttf  
  inflating: NotoSansArmenian-SemiCondensedBlack.ttf  
  inflating: NotoSansArmenian-SemiCondensedBold.ttf  
  inflating: NotoSansArmenian-SemiCondensedExtraBold.ttf  
  inflating: NotoSansArmenian-SemiCondensedExtraLight.ttf  
  inflating: NotoSansArmenian-SemiCondensedLight.ttf  
  inflating: NotoSansArmenian-SemiCondensedMedium.ttf  
  inflating: NotoSansArmenian-SemiCondensedSemiBold.ttf  
  inflating: NotoSansArmenian-SemiCondensedThin.ttf  
  inflating: NotoSansArmenian-Thin.ttf  
  inflating: NotoSansAvestan-Regular.ttf  
  inflating: NotoSansBalinese-Regular.ttf  
  inflating: NotoSansBamum-Regular.ttf  
  inflating: NotoSansBatak-Regular.ttf  
  inflating: NotoSansBengali-Black.ttf  
  inflating: NotoSansBengali-Bold.ttf  
  inflating: NotoSansBengali-ExtraBold.ttf  
  inflating: NotoSansBengali-ExtraLight.ttf  
  inflating: NotoSansBengali-Light.ttf  
  inflating: NotoSansBengali-Medium.ttf  
  inflating: NotoSansBengali-Regular.ttf  
  inflating: NotoSansBengali-SemiBold.ttf  
  inflating: NotoSansBengali-Thin.ttf  
  inflating: NotoSansBengaliUI-Black.ttf  
  inflating: NotoSansBengaliUI-Bold.ttf  
  inflating: NotoSansBengaliUI-ExtraBold.ttf  
  inflating: NotoSansBengaliUI-ExtraLight.ttf  
  inflating: NotoSansBengaliUI-Light.ttf  
  inflating: NotoSansBengaliUI-Medium.ttf  
  inflating: NotoSansBengaliUI-Regular.ttf  
  inflating: NotoSansBengaliUI-SemiBold.ttf  
  inflating: NotoSansBengaliUI-Thin.ttf  
  inflating: NotoSansBrahmi-Regular.ttf  
  inflating: NotoSansBuginese-Regular.ttf  
  inflating: NotoSansBuhid-Regular.ttf  
  inflating: NotoSansCJKjp-Black.otf  
  inflating: NotoSansCJKjp-Bold.otf  
  inflating: NotoSansCJKjp-DemiLight.otf  
  inflating: NotoSansCJKjp-Light.otf  
  inflating: NotoSansCJKjp-Medium.otf  
  inflating: NotoSansCJKjp-Regular.otf  
  inflating: NotoSansCJKjp-Thin.otf  
  inflating: NotoSansCJKkr-Black.otf  
  inflating: NotoSansCJKkr-Bold.otf  
  inflating: NotoSansCJKkr-DemiLight.otf  
  inflating: NotoSansCJKkr-Light.otf  
  inflating: NotoSansCJKkr-Medium.otf  
  inflating: NotoSansCJKkr-Regular.otf  
  inflating: NotoSansCJKkr-Thin.otf  
  inflating: NotoSansCJKsc-Black.otf  
  inflating: NotoSansCJKsc-Bold.otf  
  inflating: NotoSansCJKsc-DemiLight.otf  
  inflating: NotoSansCJKsc-Light.otf  
  inflating: NotoSansCJKsc-Medium.otf  
  inflating: NotoSansCJKsc-Regular.otf  
  inflating: NotoSansCJKsc-Thin.otf  
  inflating: NotoSansCJKtc-Black.otf  
  inflating: NotoSansCJKtc-Bold.otf  
  inflating: NotoSansCJKtc-DemiLight.otf  
  inflating: NotoSansCJKtc-Light.otf  
  inflating: NotoSansCJKtc-Medium.otf  
  inflating: NotoSansCJKtc-Regular.otf  
  inflating: NotoSansCJKtc-Thin.otf  
  inflating: NotoSansCanadianAboriginal-Regular.ttf  
  inflating: NotoSansCarian-Regular.ttf  
  inflating: NotoSansChakma-Regular.ttf  
  inflating: NotoSansCham-Black.ttf  
  inflating: NotoSansCham-Bold.ttf   
  inflating: NotoSansCham-ExtraBold.ttf  
  inflating: NotoSansCham-ExtraLight.ttf  
  inflating: NotoSansCham-Light.ttf  
  inflating: NotoSansCham-Medium.ttf  
  inflating: NotoSansCham-Regular.ttf  
  inflating: NotoSansCham-SemiBold.ttf  
  inflating: NotoSansCham-Thin.ttf   
  inflating: NotoSansCherokee-Black.ttf  
  inflating: NotoSansCherokee-Bold.ttf  
  inflating: NotoSansCherokee-ExtraBold.ttf  
  inflating: NotoSansCherokee-ExtraLight.ttf  
  inflating: NotoSansCherokee-Light.ttf  
  inflating: NotoSansCherokee-Medium.ttf  
  inflating: NotoSansCherokee-Regular.ttf  
  inflating: NotoSansCherokee-SemiBold.ttf  
  inflating: NotoSansCherokee-Thin.ttf  
  inflating: NotoSansCoptic-Regular.ttf  
  inflating: NotoSansCuneiform-Regular.ttf  
  inflating: NotoSansCypriot-Regular.ttf  
  inflating: NotoSansDeseret-Regular.ttf  
  inflating: NotoSansDevanagari-Black.ttf  
  inflating: NotoSansDevanagari-Bold.ttf  
  inflating: NotoSansDevanagari-Condensed.ttf  
  inflating: NotoSansDevanagari-CondensedBlack.ttf  
  inflating: NotoSansDevanagari-CondensedBold.ttf  
  inflating: NotoSansDevanagari-CondensedExtraBold.ttf  
  inflating: NotoSansDevanagari-CondensedExtraLight.ttf  
  inflating: NotoSansDevanagari-CondensedLight.ttf  
  inflating: NotoSansDevanagari-CondensedMedium.ttf  
  inflating: NotoSansDevanagari-CondensedSemiBold.ttf  
  inflating: NotoSansDevanagari-CondensedThin.ttf  
  inflating: NotoSansDevanagari-ExtraBold.ttf  
  inflating: NotoSansDevanagari-ExtraCondensed.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedBlack.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedBold.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedLight.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedMedium.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansDevanagari-ExtraCondensedThin.ttf  
  inflating: NotoSansDevanagari-ExtraLight.ttf  
  inflating: NotoSansDevanagari-Light.ttf  
  inflating: NotoSansDevanagari-Medium.ttf  
  inflating: NotoSansDevanagari-Regular.ttf  
  inflating: NotoSansDevanagari-SemiBold.ttf  
  inflating: NotoSansDevanagari-SemiCondensed.ttf  
  inflating: NotoSansDevanagari-SemiCondensedBlack.ttf  
  inflating: NotoSansDevanagari-SemiCondensedBold.ttf  
  inflating: NotoSansDevanagari-SemiCondensedExtraBold.ttf  
  inflating: NotoSansDevanagari-SemiCondensedExtraLight.ttf  
  inflating: NotoSansDevanagari-SemiCondensedLight.ttf  
  inflating: NotoSansDevanagari-SemiCondensedMedium.ttf  
  inflating: NotoSansDevanagari-SemiCondensedSemiBold.ttf  
  inflating: NotoSansDevanagari-SemiCondensedThin.ttf  
  inflating: NotoSansDevanagari-Thin.ttf  
  inflating: NotoSansDevanagariUI-Black.ttf  
  inflating: NotoSansDevanagariUI-Bold.ttf  
  inflating: NotoSansDevanagariUI-Condensed.ttf  
  inflating: NotoSansDevanagariUI-CondensedBlack.ttf  
  inflating: NotoSansDevanagariUI-CondensedBold.ttf  
  inflating: NotoSansDevanagariUI-CondensedExtraBold.ttf  
  inflating: NotoSansDevanagariUI-CondensedExtraLight.ttf  
  inflating: NotoSansDevanagariUI-CondensedLight.ttf  
  inflating: NotoSansDevanagariUI-CondensedMedium.ttf  
  inflating: NotoSansDevanagariUI-CondensedSemiBold.ttf  
  inflating: NotoSansDevanagariUI-CondensedThin.ttf  
  inflating: NotoSansDevanagariUI-ExtraBold.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensed.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedBold.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedLight.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansDevanagariUI-ExtraCondensedThin.ttf  
  inflating: NotoSansDevanagariUI-ExtraLight.ttf  
  inflating: NotoSansDevanagariUI-Light.ttf  
  inflating: NotoSansDevanagariUI-Medium.ttf  
  inflating: NotoSansDevanagariUI-Regular.ttf  
  inflating: NotoSansDevanagariUI-SemiBold.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensed.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedBlack.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedBold.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedLight.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedMedium.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansDevanagariUI-SemiCondensedThin.ttf  
  inflating: NotoSansDevanagariUI-Thin.ttf  
  inflating: NotoSansDisplay-Black.ttf  
  inflating: NotoSansDisplay-BlackItalic.ttf  
  inflating: NotoSansDisplay-Bold.ttf  
  inflating: NotoSansDisplay-BoldItalic.ttf  
  inflating: NotoSansDisplay-Condensed.ttf  
  inflating: NotoSansDisplay-CondensedBlack.ttf  
  inflating: NotoSansDisplay-CondensedBlackItalic.ttf  
  inflating: NotoSansDisplay-CondensedBold.ttf  
  inflating: NotoSansDisplay-CondensedBoldItalic.ttf  
  inflating: NotoSansDisplay-CondensedExtraBold.ttf  
  inflating: NotoSansDisplay-CondensedExtraBoldItalic.ttf  
  inflating: NotoSansDisplay-CondensedExtraLight.ttf  
  inflating: NotoSansDisplay-CondensedExtraLightItalic.ttf  
  inflating: NotoSansDisplay-CondensedItalic.ttf  
  inflating: NotoSansDisplay-CondensedLight.ttf  
  inflating: NotoSansDisplay-CondensedLightItalic.ttf  
  inflating: NotoSansDisplay-CondensedMedium.ttf  
  inflating: NotoSansDisplay-CondensedMediumItalic.ttf  
  inflating: NotoSansDisplay-CondensedSemiBold.ttf  
  inflating: NotoSansDisplay-CondensedSemiBoldItalic.ttf  
  inflating: NotoSansDisplay-CondensedThin.ttf  
  inflating: NotoSansDisplay-CondensedThinItalic.ttf  
  inflating: NotoSansDisplay-ExtraBold.ttf  
  inflating: NotoSansDisplay-ExtraBoldItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensed.ttf  
  inflating: NotoSansDisplay-ExtraCondensedBlack.ttf  
  inflating: NotoSansDisplay-ExtraCondensedBlackItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedBold.ttf  
  inflating: NotoSansDisplay-ExtraCondensedBoldItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansDisplay-ExtraCondensedExtraBoldItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansDisplay-ExtraCondensedExtraLightItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedLight.ttf  
  inflating: NotoSansDisplay-ExtraCondensedLightItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedMedium.ttf  
  inflating: NotoSansDisplay-ExtraCondensedMediumItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansDisplay-ExtraCondensedSemiBoldItalic.ttf  
  inflating: NotoSansDisplay-ExtraCondensedThin.ttf  
  inflating: NotoSansDisplay-ExtraCondensedThinItalic.ttf  
  inflating: NotoSansDisplay-ExtraLight.ttf  
  inflating: NotoSansDisplay-ExtraLightItalic.ttf  
  inflating: NotoSansDisplay-Italic.ttf  
  inflating: NotoSansDisplay-Light.ttf  
  inflating: NotoSansDisplay-LightItalic.ttf  
  inflating: NotoSansDisplay-Medium.ttf  
  inflating: NotoSansDisplay-MediumItalic.ttf  
  inflating: NotoSansDisplay-Regular.ttf  
  inflating: NotoSansDisplay-SemiBold.ttf  
  inflating: NotoSansDisplay-SemiBoldItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensed.ttf  
  inflating: NotoSansDisplay-SemiCondensedBlack.ttf  
  inflating: NotoSansDisplay-SemiCondensedBlackItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedBold.ttf  
  inflating: NotoSansDisplay-SemiCondensedBoldItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedExtraBold.ttf  
  inflating: NotoSansDisplay-SemiCondensedExtraBoldItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedExtraLight.ttf  
  inflating: NotoSansDisplay-SemiCondensedExtraLightItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedLight.ttf  
  inflating: NotoSansDisplay-SemiCondensedLightItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedMedium.ttf  
  inflating: NotoSansDisplay-SemiCondensedMediumItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedSemiBold.ttf  
  inflating: NotoSansDisplay-SemiCondensedSemiBoldItalic.ttf  
  inflating: NotoSansDisplay-SemiCondensedThin.ttf  
  inflating: NotoSansDisplay-SemiCondensedThinItalic.ttf  
  inflating: NotoSansDisplay-Thin.ttf  
  inflating: NotoSansDisplay-ThinItalic.ttf  
  inflating: NotoSansEgyptianHieroglyphs-Regular.ttf  
  inflating: NotoSansEthiopic-Black.ttf  
  inflating: NotoSansEthiopic-Bold.ttf  
  inflating: NotoSansEthiopic-Condensed.ttf  
  inflating: NotoSansEthiopic-CondensedBlack.ttf  
  inflating: NotoSansEthiopic-CondensedBold.ttf  
  inflating: NotoSansEthiopic-CondensedExtraBold.ttf  
  inflating: NotoSansEthiopic-CondensedExtraLight.ttf  
  inflating: NotoSansEthiopic-CondensedLight.ttf  
  inflating: NotoSansEthiopic-CondensedMedium.ttf  
  inflating: NotoSansEthiopic-CondensedSemiBold.ttf  
  inflating: NotoSansEthiopic-CondensedThin.ttf  
  inflating: NotoSansEthiopic-ExtraBold.ttf  
  inflating: NotoSansEthiopic-ExtraCondensed.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedBlack.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedBold.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedLight.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedMedium.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansEthiopic-ExtraCondensedThin.ttf  
  inflating: NotoSansEthiopic-ExtraLight.ttf  
  inflating: NotoSansEthiopic-Light.ttf  
  inflating: NotoSansEthiopic-Medium.ttf  
  inflating: NotoSansEthiopic-Regular.ttf  
  inflating: NotoSansEthiopic-SemiBold.ttf  
  inflating: NotoSansEthiopic-SemiCondensed.ttf  
  inflating: NotoSansEthiopic-SemiCondensedBlack.ttf  
  inflating: NotoSansEthiopic-SemiCondensedBold.ttf  
  inflating: NotoSansEthiopic-SemiCondensedExtraBold.ttf  
  inflating: NotoSansEthiopic-SemiCondensedExtraLight.ttf  
  inflating: NotoSansEthiopic-SemiCondensedLight.ttf  
  inflating: NotoSansEthiopic-SemiCondensedMedium.ttf  
  inflating: NotoSansEthiopic-SemiCondensedSemiBold.ttf  
  inflating: NotoSansEthiopic-SemiCondensedThin.ttf  
  inflating: NotoSansEthiopic-Thin.ttf  
  inflating: NotoSansGeorgian-Black.ttf  
  inflating: NotoSansGeorgian-Bold.ttf  
  inflating: NotoSansGeorgian-Condensed.ttf  
  inflating: NotoSansGeorgian-CondensedBlack.ttf  
  inflating: NotoSansGeorgian-CondensedBold.ttf  
  inflating: NotoSansGeorgian-CondensedExtraBold.ttf  
  inflating: NotoSansGeorgian-CondensedExtraLight.ttf  
  inflating: NotoSansGeorgian-CondensedLight.ttf  
  inflating: NotoSansGeorgian-CondensedMedium.ttf  
  inflating: NotoSansGeorgian-CondensedSemiBold.ttf  
  inflating: NotoSansGeorgian-CondensedThin.ttf  
  inflating: NotoSansGeorgian-ExtraBold.ttf  
  inflating: NotoSansGeorgian-ExtraCondensed.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedBlack.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedBold.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedLight.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedMedium.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansGeorgian-ExtraCondensedThin.ttf  
  inflating: NotoSansGeorgian-ExtraLight.ttf  
  inflating: NotoSansGeorgian-Light.ttf  
  inflating: NotoSansGeorgian-Medium.ttf  
  inflating: NotoSansGeorgian-Regular.ttf  
  inflating: NotoSansGeorgian-SemiBold.ttf  
  inflating: NotoSansGeorgian-SemiCondensed.ttf  
  inflating: NotoSansGeorgian-SemiCondensedBlack.ttf  
  inflating: NotoSansGeorgian-SemiCondensedBold.ttf  
  inflating: NotoSansGeorgian-SemiCondensedExtraBold.ttf  
  inflating: NotoSansGeorgian-SemiCondensedExtraLight.ttf  
  inflating: NotoSansGeorgian-SemiCondensedLight.ttf  
  inflating: NotoSansGeorgian-SemiCondensedMedium.ttf  
  inflating: NotoSansGeorgian-SemiCondensedSemiBold.ttf  
  inflating: NotoSansGeorgian-SemiCondensedThin.ttf  
  inflating: NotoSansGeorgian-Thin.ttf  
  inflating: NotoSansGlagolitic-Regular.ttf  
  inflating: NotoSansGothic-Regular.ttf  
  inflating: NotoSansGujarati-Bold.ttf  
  inflating: NotoSansGujarati-Regular.ttf  
  inflating: NotoSansGujaratiUI-Bold.ttf  
  inflating: NotoSansGujaratiUI-Regular.ttf  
  inflating: NotoSansGurmukhi-Bold.ttf  
  inflating: NotoSansGurmukhi-Regular.ttf  
  inflating: NotoSansGurmukhiUI-Bold.ttf  
  inflating: NotoSansGurmukhiUI-Regular.ttf  
  inflating: NotoSansHanunoo-Regular.ttf  
  inflating: NotoSansHebrew-Black.ttf  
  inflating: NotoSansHebrew-Bold.ttf  
  inflating: NotoSansHebrew-Condensed.ttf  
  inflating: NotoSansHebrew-CondensedBlack.ttf  
  inflating: NotoSansHebrew-CondensedBold.ttf  
  inflating: NotoSansHebrew-CondensedExtraBold.ttf  
  inflating: NotoSansHebrew-CondensedExtraLight.ttf  
  inflating: NotoSansHebrew-CondensedLight.ttf  
  inflating: NotoSansHebrew-CondensedMedium.ttf  
  inflating: NotoSansHebrew-CondensedSemiBold.ttf  
  inflating: NotoSansHebrew-CondensedThin.ttf  
  inflating: NotoSansHebrew-ExtraBold.ttf  
  inflating: NotoSansHebrew-ExtraCondensed.ttf  
  inflating: NotoSansHebrew-ExtraCondensedBlack.ttf  
  inflating: NotoSansHebrew-ExtraCondensedBold.ttf  
  inflating: NotoSansHebrew-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansHebrew-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansHebrew-ExtraCondensedLight.ttf  
  inflating: NotoSansHebrew-ExtraCondensedMedium.ttf  
  inflating: NotoSansHebrew-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansHebrew-ExtraCondensedThin.ttf  
  inflating: NotoSansHebrew-ExtraLight.ttf  
  inflating: NotoSansHebrew-Light.ttf  
  inflating: NotoSansHebrew-Medium.ttf  
  inflating: NotoSansHebrew-Regular.ttf  
  inflating: NotoSansHebrew-SemiBold.ttf  
  inflating: NotoSansHebrew-SemiCondensed.ttf  
  inflating: NotoSansHebrew-SemiCondensedBlack.ttf  
  inflating: NotoSansHebrew-SemiCondensedBold.ttf  
  inflating: NotoSansHebrew-SemiCondensedExtraBold.ttf  
  inflating: NotoSansHebrew-SemiCondensedExtraLight.ttf  
  inflating: NotoSansHebrew-SemiCondensedLight.ttf  
  inflating: NotoSansHebrew-SemiCondensedMedium.ttf  
  inflating: NotoSansHebrew-SemiCondensedSemiBold.ttf  
  inflating: NotoSansHebrew-SemiCondensedThin.ttf  
  inflating: NotoSansHebrew-Thin.ttf  
  inflating: NotoSansImperialAramaic-Regular.ttf  
  inflating: NotoSansInscriptionalPahlavi-Regular.ttf  
  inflating: NotoSansInscriptionalParthian-Regular.ttf  
  inflating: NotoSansJavanese-Regular.ttf  
  inflating: NotoSansKaithi-Regular.ttf  
  inflating: NotoSansKannada-Bold.ttf  
  inflating: NotoSansKannada-Regular.ttf  
  inflating: NotoSansKannadaUI-Bold.ttf  
  inflating: NotoSansKannadaUI-Regular.ttf  
  inflating: NotoSansKayahLi-Regular.ttf  
  inflating: NotoSansKharoshthi-Regular.ttf  
  inflating: NotoSansKhmer-Black.ttf  
  inflating: NotoSansKhmer-Bold.ttf  
  inflating: NotoSansKhmer-Condensed.ttf  
  inflating: NotoSansKhmer-CondensedBlack.ttf  
  inflating: NotoSansKhmer-CondensedBold.ttf  
  inflating: NotoSansKhmer-CondensedExtraBold.ttf  
  inflating: NotoSansKhmer-CondensedExtraLight.ttf  
  inflating: NotoSansKhmer-CondensedLight.ttf  
  inflating: NotoSansKhmer-CondensedMedium.ttf  
  inflating: NotoSansKhmer-CondensedSemiBold.ttf  
  inflating: NotoSansKhmer-CondensedThin.ttf  
  inflating: NotoSansKhmer-ExtraBold.ttf  
  inflating: NotoSansKhmer-ExtraCondensed.ttf  
  inflating: NotoSansKhmer-ExtraCondensedBlack.ttf  
  inflating: NotoSansKhmer-ExtraCondensedBold.ttf  
  inflating: NotoSansKhmer-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansKhmer-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansKhmer-ExtraCondensedLight.ttf  
  inflating: NotoSansKhmer-ExtraCondensedMedium.ttf  
  inflating: NotoSansKhmer-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansKhmer-ExtraCondensedThin.ttf  
  inflating: NotoSansKhmer-ExtraLight.ttf  
  inflating: NotoSansKhmer-Light.ttf  
  inflating: NotoSansKhmer-Medium.ttf  
  inflating: NotoSansKhmer-Regular.ttf  
  inflating: NotoSansKhmer-SemiBold.ttf  
  inflating: NotoSansKhmer-SemiCondensed.ttf  
  inflating: NotoSansKhmer-SemiCondensedBlack.ttf  
  inflating: NotoSansKhmer-SemiCondensedBold.ttf  
  inflating: NotoSansKhmer-SemiCondensedExtraBold.ttf  
  inflating: NotoSansKhmer-SemiCondensedExtraLight.ttf  
  inflating: NotoSansKhmer-SemiCondensedLight.ttf  
  inflating: NotoSansKhmer-SemiCondensedMedium.ttf  
  inflating: NotoSansKhmer-SemiCondensedSemiBold.ttf  
  inflating: NotoSansKhmer-SemiCondensedThin.ttf  
  inflating: NotoSansKhmer-Thin.ttf  
  inflating: NotoSansKhmerUI-Black.ttf  
  inflating: NotoSansKhmerUI-Bold.ttf  
  inflating: NotoSansKhmerUI-Condensed.ttf  
  inflating: NotoSansKhmerUI-CondensedBlack.ttf  
  inflating: NotoSansKhmerUI-CondensedBold.ttf  
  inflating: NotoSansKhmerUI-CondensedExtraBold.ttf  
  inflating: NotoSansKhmerUI-CondensedExtraLight.ttf  
  inflating: NotoSansKhmerUI-CondensedLight.ttf  
  inflating: NotoSansKhmerUI-CondensedMedium.ttf  
  inflating: NotoSansKhmerUI-CondensedSemiBold.ttf  
  inflating: NotoSansKhmerUI-CondensedThin.ttf  
  inflating: NotoSansKhmerUI-ExtraBold.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensed.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedBold.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedLight.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansKhmerUI-ExtraCondensedThin.ttf  
  inflating: NotoSansKhmerUI-ExtraLight.ttf  
  inflating: NotoSansKhmerUI-Light.ttf  
  inflating: NotoSansKhmerUI-Medium.ttf  
  inflating: NotoSansKhmerUI-Regular.ttf  
  inflating: NotoSansKhmerUI-SemiBold.ttf  
  inflating: NotoSansKhmerUI-SemiCondensed.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedBlack.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedBold.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedLight.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedMedium.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansKhmerUI-SemiCondensedThin.ttf  
  inflating: NotoSansKhmerUI-Thin.ttf  
  inflating: NotoSansLao-Black.ttf   
  inflating: NotoSansLao-Bold.ttf    
  inflating: NotoSansLao-Condensed.ttf  
  inflating: NotoSansLao-CondensedBlack.ttf  
  inflating: NotoSansLao-CondensedBold.ttf  
  inflating: NotoSansLao-CondensedExtraBold.ttf  
  inflating: NotoSansLao-CondensedExtraLight.ttf  
  inflating: NotoSansLao-CondensedLight.ttf  
  inflating: NotoSansLao-CondensedMedium.ttf  
  inflating: NotoSansLao-CondensedSemiBold.ttf  
  inflating: NotoSansLao-CondensedThin.ttf  
  inflating: NotoSansLao-ExtraBold.ttf  
  inflating: NotoSansLao-ExtraCondensed.ttf  
  inflating: NotoSansLao-ExtraCondensedBlack.ttf  
  inflating: NotoSansLao-ExtraCondensedBold.ttf  
  inflating: NotoSansLao-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansLao-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansLao-ExtraCondensedLight.ttf  
  inflating: NotoSansLao-ExtraCondensedMedium.ttf  
  inflating: NotoSansLao-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansLao-ExtraCondensedThin.ttf  
  inflating: NotoSansLao-ExtraLight.ttf  
  inflating: NotoSansLao-Light.ttf   
  inflating: NotoSansLao-Medium.ttf  
  inflating: NotoSansLao-Regular.ttf  
  inflating: NotoSansLao-SemiBold.ttf  
  inflating: NotoSansLao-SemiCondensed.ttf  
  inflating: NotoSansLao-SemiCondensedBlack.ttf  
  inflating: NotoSansLao-SemiCondensedBold.ttf  
  inflating: NotoSansLao-SemiCondensedExtraBold.ttf  
  inflating: NotoSansLao-SemiCondensedExtraLight.ttf  
  inflating: NotoSansLao-SemiCondensedLight.ttf  
  inflating: NotoSansLao-SemiCondensedMedium.ttf  
  inflating: NotoSansLao-SemiCondensedSemiBold.ttf  
  inflating: NotoSansLao-SemiCondensedThin.ttf  
  inflating: NotoSansLao-Thin.ttf    
  inflating: NotoSansLaoUI-Black.ttf  
  inflating: NotoSansLaoUI-Bold.ttf  
  inflating: NotoSansLaoUI-Condensed.ttf  
  inflating: NotoSansLaoUI-CondensedBlack.ttf  
  inflating: NotoSansLaoUI-CondensedBold.ttf  
  inflating: NotoSansLaoUI-CondensedExtraBold.ttf  
  inflating: NotoSansLaoUI-CondensedExtraLight.ttf  
  inflating: NotoSansLaoUI-CondensedLight.ttf  
  inflating: NotoSansLaoUI-CondensedMedium.ttf  
  inflating: NotoSansLaoUI-CondensedSemiBold.ttf  
  inflating: NotoSansLaoUI-CondensedThin.ttf  
  inflating: NotoSansLaoUI-ExtraBold.ttf  
  inflating: NotoSansLaoUI-ExtraCondensed.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedBold.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedLight.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansLaoUI-ExtraCondensedThin.ttf  
  inflating: NotoSansLaoUI-ExtraLight.ttf  
  inflating: NotoSansLaoUI-Light.ttf  
  inflating: NotoSansLaoUI-Medium.ttf  
  inflating: NotoSansLaoUI-Regular.ttf  
  inflating: NotoSansLaoUI-SemiBold.ttf  
  inflating: NotoSansLaoUI-SemiCondensed.ttf  
  inflating: NotoSansLaoUI-SemiCondensedBlack.ttf  
  inflating: NotoSansLaoUI-SemiCondensedBold.ttf  
  inflating: NotoSansLaoUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansLaoUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansLaoUI-SemiCondensedLight.ttf  
  inflating: NotoSansLaoUI-SemiCondensedMedium.ttf  
  inflating: NotoSansLaoUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansLaoUI-SemiCondensedThin.ttf  
  inflating: NotoSansLaoUI-Thin.ttf  
  inflating: NotoSansLepcha-Regular.ttf  
  inflating: NotoSansLimbu-Regular.ttf  
  inflating: NotoSansLinearB-Regular.ttf  
  inflating: NotoSansLisu-Regular.ttf  
  inflating: NotoSansLycian-Regular.ttf  
  inflating: NotoSansLydian-Regular.ttf  
  inflating: NotoSansMalayalam-Bold.ttf  
  inflating: NotoSansMalayalam-Regular.ttf  
  inflating: NotoSansMalayalamUI-Bold.ttf  
  inflating: NotoSansMalayalamUI-Regular.ttf  
  inflating: NotoSansMandaic-Regular.ttf  
  inflating: NotoSansMeeteiMayek-Regular.ttf  
  inflating: NotoSansMongolian-Regular.ttf  
  inflating: NotoSansMono-Black.ttf  
  inflating: NotoSansMono-Bold.ttf   
  inflating: NotoSansMono-Condensed.ttf  
  inflating: NotoSansMono-CondensedBlack.ttf  
  inflating: NotoSansMono-CondensedBold.ttf  
  inflating: NotoSansMono-CondensedExtraBold.ttf  
  inflating: NotoSansMono-CondensedExtraLight.ttf  
  inflating: NotoSansMono-CondensedLight.ttf  
  inflating: NotoSansMono-CondensedMedium.ttf  
  inflating: NotoSansMono-CondensedSemiBold.ttf  
  inflating: NotoSansMono-CondensedThin.ttf  
  inflating: NotoSansMono-ExtraBold.ttf  
  inflating: NotoSansMono-ExtraCondensed.ttf  
  inflating: NotoSansMono-ExtraCondensedBlack.ttf  
  inflating: NotoSansMono-ExtraCondensedBold.ttf  
  inflating: NotoSansMono-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansMono-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansMono-ExtraCondensedLight.ttf  
  inflating: NotoSansMono-ExtraCondensedMedium.ttf  
  inflating: NotoSansMono-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansMono-ExtraCondensedThin.ttf  
  inflating: NotoSansMono-ExtraLight.ttf  
  inflating: NotoSansMono-Light.ttf  
  inflating: NotoSansMono-Medium.ttf  
  inflating: NotoSansMono-Regular.ttf  
  inflating: NotoSansMono-SemiBold.ttf  
  inflating: NotoSansMono-SemiCondensed.ttf  
  inflating: NotoSansMono-SemiCondensedBlack.ttf  
  inflating: NotoSansMono-SemiCondensedBold.ttf  
  inflating: NotoSansMono-SemiCondensedExtraBold.ttf  
  inflating: NotoSansMono-SemiCondensedExtraLight.ttf  
  inflating: NotoSansMono-SemiCondensedLight.ttf  
  inflating: NotoSansMono-SemiCondensedMedium.ttf  
  inflating: NotoSansMono-SemiCondensedSemiBold.ttf  
  inflating: NotoSansMono-SemiCondensedThin.ttf  
  inflating: NotoSansMono-Thin.ttf   
  inflating: NotoSansMonoCJKjp-Bold.otf  
  inflating: NotoSansMonoCJKjp-Regular.otf  
  inflating: NotoSansMonoCJKkr-Bold.otf  
  inflating: NotoSansMonoCJKkr-Regular.otf  
  inflating: NotoSansMonoCJKsc-Bold.otf  
  inflating: NotoSansMonoCJKsc-Regular.otf  
  inflating: NotoSansMonoCJKtc-Bold.otf  
  inflating: NotoSansMonoCJKtc-Regular.otf  
  inflating: NotoSansMyanmar-Black.ttf  
  inflating: NotoSansMyanmar-Bold.ttf  
  inflating: NotoSansMyanmar-Condensed.ttf  
  inflating: NotoSansMyanmar-CondensedBlack.ttf  
  inflating: NotoSansMyanmar-CondensedBold.ttf  
  inflating: NotoSansMyanmar-CondensedExtraBold.ttf  
  inflating: NotoSansMyanmar-CondensedExtraLight.ttf  
  inflating: NotoSansMyanmar-CondensedLight.ttf  
  inflating: NotoSansMyanmar-CondensedMedium.ttf  
  inflating: NotoSansMyanmar-CondensedSemiBold.ttf  
  inflating: NotoSansMyanmar-CondensedThin.ttf  
  inflating: NotoSansMyanmar-ExtraBold.ttf  
  inflating: NotoSansMyanmar-ExtraCondensed.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedBlack.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedBold.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedLight.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedMedium.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansMyanmar-ExtraCondensedThin.ttf  
  inflating: NotoSansMyanmar-ExtraLight.ttf  
  inflating: NotoSansMyanmar-Light.ttf  
  inflating: NotoSansMyanmar-Medium.ttf  
  inflating: NotoSansMyanmar-Regular.ttf  
  inflating: NotoSansMyanmar-SemiBold.ttf  
  inflating: NotoSansMyanmar-SemiCondensed.ttf  
  inflating: NotoSansMyanmar-SemiCondensedBlack.ttf  
  inflating: NotoSansMyanmar-SemiCondensedBold.ttf  
  inflating: NotoSansMyanmar-SemiCondensedExtraBold.ttf  
  inflating: NotoSansMyanmar-SemiCondensedExtraLight.ttf  
  inflating: NotoSansMyanmar-SemiCondensedLight.ttf  
  inflating: NotoSansMyanmar-SemiCondensedMedium.ttf  
  inflating: NotoSansMyanmar-SemiCondensedSemiBold.ttf  
  inflating: NotoSansMyanmar-SemiCondensedThin.ttf  
  inflating: NotoSansMyanmar-Thin.ttf  
  inflating: NotoSansMyanmarUI-Black.ttf  
  inflating: NotoSansMyanmarUI-Bold.ttf  
  inflating: NotoSansMyanmarUI-Condensed.ttf  
  inflating: NotoSansMyanmarUI-CondensedBlack.ttf  
  inflating: NotoSansMyanmarUI-CondensedBold.ttf  
  inflating: NotoSansMyanmarUI-CondensedExtraBold.ttf  
  inflating: NotoSansMyanmarUI-CondensedExtraLight.ttf  
  inflating: NotoSansMyanmarUI-CondensedLight.ttf  
  inflating: NotoSansMyanmarUI-CondensedMedium.ttf  
  inflating: NotoSansMyanmarUI-CondensedSemiBold.ttf  
  inflating: NotoSansMyanmarUI-CondensedThin.ttf  
  inflating: NotoSansMyanmarUI-ExtraBold.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensed.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedBold.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedLight.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansMyanmarUI-ExtraCondensedThin.ttf  
  inflating: NotoSansMyanmarUI-ExtraLight.ttf  
  inflating: NotoSansMyanmarUI-Light.ttf  
  inflating: NotoSansMyanmarUI-Medium.ttf  
  inflating: NotoSansMyanmarUI-Regular.ttf  
  inflating: NotoSansMyanmarUI-SemiBold.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensed.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedBlack.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedBold.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedLight.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedMedium.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansMyanmarUI-SemiCondensedThin.ttf  
  inflating: NotoSansMyanmarUI-Thin.ttf  
  inflating: NotoSansNKo-Regular.ttf  
  inflating: NotoSansNewTaiLue-Regular.ttf  
  inflating: NotoSansOgham-Regular.ttf  
  inflating: NotoSansOlChiki-Regular.ttf  
  inflating: NotoSansOldItalic-Regular.ttf  
  inflating: NotoSansOldPersian-Regular.ttf  
  inflating: NotoSansOldSouthArabian-Regular.ttf  
  inflating: NotoSansOldTurkic-Regular.ttf  
  inflating: NotoSansOriya-Bold.ttf  
  inflating: NotoSansOriya-Regular.ttf  
  inflating: NotoSansOriyaUI-Bold.ttf  
  inflating: NotoSansOriyaUI-Regular.ttf  
  inflating: NotoSansOsage-Regular.ttf  
  inflating: NotoSansOsmanya-Regular.ttf  
  inflating: NotoSansPhagsPa-Regular.ttf  
  inflating: NotoSansPhoenician-Regular.ttf  
  inflating: NotoSansRejang-Regular.ttf  
  inflating: NotoSansRunic-Regular.ttf  
  inflating: NotoSansSamaritan-Regular.ttf  
  inflating: NotoSansSaurashtra-Regular.ttf  
  inflating: NotoSansShavian-Regular.ttf  
  inflating: NotoSansSinhala-Black.ttf  
  inflating: NotoSansSinhala-Bold.ttf  
  inflating: NotoSansSinhala-Condensed.ttf  
  inflating: NotoSansSinhala-CondensedBlack.ttf  
  inflating: NotoSansSinhala-CondensedBold.ttf  
  inflating: NotoSansSinhala-CondensedExtraBold.ttf  
  inflating: NotoSansSinhala-CondensedExtraLight.ttf  
  inflating: NotoSansSinhala-CondensedLight.ttf  
  inflating: NotoSansSinhala-CondensedMedium.ttf  
  inflating: NotoSansSinhala-CondensedSemiBold.ttf  
  inflating: NotoSansSinhala-CondensedThin.ttf  
  inflating: NotoSansSinhala-ExtraBold.ttf  
  inflating: NotoSansSinhala-ExtraCondensed.ttf  
  inflating: NotoSansSinhala-ExtraCondensedBlack.ttf  
  inflating: NotoSansSinhala-ExtraCondensedBold.ttf  
  inflating: NotoSansSinhala-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansSinhala-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansSinhala-ExtraCondensedLight.ttf  
  inflating: NotoSansSinhala-ExtraCondensedMedium.ttf  
  inflating: NotoSansSinhala-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansSinhala-ExtraCondensedThin.ttf  
  inflating: NotoSansSinhala-ExtraLight.ttf  
  inflating: NotoSansSinhala-Light.ttf  
  inflating: NotoSansSinhala-Medium.ttf  
  inflating: NotoSansSinhala-Regular.ttf  
  inflating: NotoSansSinhala-SemiBold.ttf  
  inflating: NotoSansSinhala-SemiCondensed.ttf  
  inflating: NotoSansSinhala-SemiCondensedBlack.ttf  
  inflating: NotoSansSinhala-SemiCondensedBold.ttf  
  inflating: NotoSansSinhala-SemiCondensedExtraBold.ttf  
  inflating: NotoSansSinhala-SemiCondensedExtraLight.ttf  
  inflating: NotoSansSinhala-SemiCondensedLight.ttf  
  inflating: NotoSansSinhala-SemiCondensedMedium.ttf  
  inflating: NotoSansSinhala-SemiCondensedSemiBold.ttf  
  inflating: NotoSansSinhala-SemiCondensedThin.ttf  
  inflating: NotoSansSinhala-Thin.ttf  
  inflating: NotoSansSinhalaUI-Black.ttf  
  inflating: NotoSansSinhalaUI-Bold.ttf  
  inflating: NotoSansSinhalaUI-Condensed.ttf  
  inflating: NotoSansSinhalaUI-CondensedBlack.ttf  
  inflating: NotoSansSinhalaUI-CondensedBold.ttf  
  inflating: NotoSansSinhalaUI-CondensedExtraBold.ttf  
  inflating: NotoSansSinhalaUI-CondensedExtraLight.ttf  
  inflating: NotoSansSinhalaUI-CondensedLight.ttf  
  inflating: NotoSansSinhalaUI-CondensedMedium.ttf  
  inflating: NotoSansSinhalaUI-CondensedSemiBold.ttf  
  inflating: NotoSansSinhalaUI-CondensedThin.ttf  
  inflating: NotoSansSinhalaUI-ExtraBold.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensed.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedBold.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedLight.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansSinhalaUI-ExtraCondensedThin.ttf  
  inflating: NotoSansSinhalaUI-ExtraLight.ttf  
  inflating: NotoSansSinhalaUI-Light.ttf  
  inflating: NotoSansSinhalaUI-Medium.ttf  
  inflating: NotoSansSinhalaUI-Regular.ttf  
  inflating: NotoSansSinhalaUI-SemiBold.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensed.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedBlack.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedBold.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedLight.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedMedium.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansSinhalaUI-SemiCondensedThin.ttf  
  inflating: NotoSansSinhalaUI-Thin.ttf  
  inflating: NotoSansSundanese-Regular.ttf  
  inflating: NotoSansSylotiNagri-Regular.ttf  
  inflating: NotoSansSymbols-Black.ttf  
  inflating: NotoSansSymbols-Bold.ttf  
  inflating: NotoSansSymbols-ExtraBold.ttf  
  inflating: NotoSansSymbols-ExtraLight.ttf  
  inflating: NotoSansSymbols-Light.ttf  
  inflating: NotoSansSymbols-Medium.ttf  
  inflating: NotoSansSymbols-Regular.ttf  
  inflating: NotoSansSymbols-SemiBold.ttf  
  inflating: NotoSansSymbols-Thin.ttf  
  inflating: NotoSansSymbols2-Regular.ttf  
  inflating: NotoSansSyriacEastern-Regular.ttf  
  inflating: NotoSansSyriacEstrangela-Regular.ttf  
  inflating: NotoSansSyriacWestern-Regular.ttf  
  inflating: NotoSansTagalog-Regular.ttf  
  inflating: NotoSansTagbanwa-Regular.ttf  
  inflating: NotoSansTaiLe-Regular.ttf  
  inflating: NotoSansTaiTham-Regular.ttf  
  inflating: NotoSansTaiViet-Regular.ttf  
  inflating: NotoSansTamil-Black.ttf  
  inflating: NotoSansTamil-Bold.ttf  
  inflating: NotoSansTamil-Condensed.ttf  
  inflating: NotoSansTamil-CondensedBlack.ttf  
  inflating: NotoSansTamil-CondensedBold.ttf  
  inflating: NotoSansTamil-CondensedExtraBold.ttf  
  inflating: NotoSansTamil-CondensedExtraLight.ttf  
  inflating: NotoSansTamil-CondensedLight.ttf  
  inflating: NotoSansTamil-CondensedMedium.ttf  
  inflating: NotoSansTamil-CondensedSemiBold.ttf  
  inflating: NotoSansTamil-CondensedThin.ttf  
  inflating: NotoSansTamil-ExtraBold.ttf  
  inflating: NotoSansTamil-ExtraCondensed.ttf  
  inflating: NotoSansTamil-ExtraCondensedBlack.ttf  
  inflating: NotoSansTamil-ExtraCondensedBold.ttf  
  inflating: NotoSansTamil-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansTamil-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansTamil-ExtraCondensedLight.ttf  
  inflating: NotoSansTamil-ExtraCondensedMedium.ttf  
  inflating: NotoSansTamil-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansTamil-ExtraCondensedThin.ttf  
  inflating: NotoSansTamil-ExtraLight.ttf  
  inflating: NotoSansTamil-Light.ttf  
  inflating: NotoSansTamil-Medium.ttf  
  inflating: NotoSansTamil-Regular.ttf  
  inflating: NotoSansTamil-SemiBold.ttf  
  inflating: NotoSansTamil-SemiCondensed.ttf  
  inflating: NotoSansTamil-SemiCondensedBlack.ttf  
  inflating: NotoSansTamil-SemiCondensedBold.ttf  
  inflating: NotoSansTamil-SemiCondensedExtraBold.ttf  
  inflating: NotoSansTamil-SemiCondensedExtraLight.ttf  
  inflating: NotoSansTamil-SemiCondensedLight.ttf  
  inflating: NotoSansTamil-SemiCondensedMedium.ttf  
  inflating: NotoSansTamil-SemiCondensedSemiBold.ttf  
  inflating: NotoSansTamil-SemiCondensedThin.ttf  
  inflating: NotoSansTamil-Thin.ttf  
  inflating: NotoSansTamilUI-Black.ttf  
  inflating: NotoSansTamilUI-Bold.ttf  
  inflating: NotoSansTamilUI-Condensed.ttf  
  inflating: NotoSansTamilUI-CondensedBlack.ttf  
  inflating: NotoSansTamilUI-CondensedBold.ttf  
  inflating: NotoSansTamilUI-CondensedExtraBold.ttf  
  inflating: NotoSansTamilUI-CondensedExtraLight.ttf  
  inflating: NotoSansTamilUI-CondensedLight.ttf  
  inflating: NotoSansTamilUI-CondensedMedium.ttf  
  inflating: NotoSansTamilUI-CondensedSemiBold.ttf  
  inflating: NotoSansTamilUI-CondensedThin.ttf  
  inflating: NotoSansTamilUI-ExtraBold.ttf  
  inflating: NotoSansTamilUI-ExtraCondensed.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedBold.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedLight.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansTamilUI-ExtraCondensedThin.ttf  
  inflating: NotoSansTamilUI-ExtraLight.ttf  
  inflating: NotoSansTamilUI-Light.ttf  
  inflating: NotoSansTamilUI-Medium.ttf  
  inflating: NotoSansTamilUI-Regular.ttf  
  inflating: NotoSansTamilUI-SemiBold.ttf  
  inflating: NotoSansTamilUI-SemiCondensed.ttf  
  inflating: NotoSansTamilUI-SemiCondensedBlack.ttf  
  inflating: NotoSansTamilUI-SemiCondensedBold.ttf  
  inflating: NotoSansTamilUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansTamilUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansTamilUI-SemiCondensedLight.ttf  
  inflating: NotoSansTamilUI-SemiCondensedMedium.ttf  
  inflating: NotoSansTamilUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansTamilUI-SemiCondensedThin.ttf  
  inflating: NotoSansTamilUI-Thin.ttf  
  inflating: NotoSansTelugu-Bold.ttf  
  inflating: NotoSansTelugu-Regular.ttf  
  inflating: NotoSansTeluguUI-Bold.ttf  
  inflating: NotoSansTeluguUI-Regular.ttf  
  inflating: NotoSansThaana-Bold.ttf  
  inflating: NotoSansThaana-Regular.ttf  
  inflating: NotoSansThai-Black.ttf  
  inflating: NotoSansThai-Bold.ttf   
  inflating: NotoSansThai-Condensed.ttf  
  inflating: NotoSansThai-CondensedBlack.ttf  
  inflating: NotoSansThai-CondensedBold.ttf  
  inflating: NotoSansThai-CondensedExtraBold.ttf  
  inflating: NotoSansThai-CondensedExtraLight.ttf  
  inflating: NotoSansThai-CondensedLight.ttf  
  inflating: NotoSansThai-CondensedMedium.ttf  
  inflating: NotoSansThai-CondensedSemiBold.ttf  
  inflating: NotoSansThai-CondensedThin.ttf  
  inflating: NotoSansThai-ExtraBold.ttf  
  inflating: NotoSansThai-ExtraCondensed.ttf  
  inflating: NotoSansThai-ExtraCondensedBlack.ttf  
  inflating: NotoSansThai-ExtraCondensedBold.ttf  
  inflating: NotoSansThai-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansThai-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansThai-ExtraCondensedLight.ttf  
  inflating: NotoSansThai-ExtraCondensedMedium.ttf  
  inflating: NotoSansThai-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansThai-ExtraCondensedThin.ttf  
  inflating: NotoSansThai-ExtraLight.ttf  
  inflating: NotoSansThai-Light.ttf  
  inflating: NotoSansThai-Medium.ttf  
  inflating: NotoSansThai-Regular.ttf  
  inflating: NotoSansThai-SemiBold.ttf  
  inflating: NotoSansThai-SemiCondensed.ttf  
  inflating: NotoSansThai-SemiCondensedBlack.ttf  
  inflating: NotoSansThai-SemiCondensedBold.ttf  
  inflating: NotoSansThai-SemiCondensedExtraBold.ttf  
  inflating: NotoSansThai-SemiCondensedExtraLight.ttf  
  inflating: NotoSansThai-SemiCondensedLight.ttf  
  inflating: NotoSansThai-SemiCondensedMedium.ttf  
  inflating: NotoSansThai-SemiCondensedSemiBold.ttf  
  inflating: NotoSansThai-SemiCondensedThin.ttf  
  inflating: NotoSansThai-Thin.ttf   
  inflating: NotoSansThaiUI-Black.ttf  
  inflating: NotoSansThaiUI-Bold.ttf  
  inflating: NotoSansThaiUI-Condensed.ttf  
  inflating: NotoSansThaiUI-CondensedBlack.ttf  
  inflating: NotoSansThaiUI-CondensedBold.ttf  
  inflating: NotoSansThaiUI-CondensedExtraBold.ttf  
  inflating: NotoSansThaiUI-CondensedExtraLight.ttf  
  inflating: NotoSansThaiUI-CondensedLight.ttf  
  inflating: NotoSansThaiUI-CondensedMedium.ttf  
  inflating: NotoSansThaiUI-CondensedSemiBold.ttf  
  inflating: NotoSansThaiUI-CondensedThin.ttf  
  inflating: NotoSansThaiUI-ExtraBold.ttf  
  inflating: NotoSansThaiUI-ExtraCondensed.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedBlack.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedBold.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedExtraBold.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedExtraLight.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedLight.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedMedium.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedSemiBold.ttf  
  inflating: NotoSansThaiUI-ExtraCondensedThin.ttf  
  inflating: NotoSansThaiUI-ExtraLight.ttf  
  inflating: NotoSansThaiUI-Light.ttf  
  inflating: NotoSansThaiUI-Medium.ttf  
  inflating: NotoSansThaiUI-Regular.ttf  
  inflating: NotoSansThaiUI-SemiBold.ttf  
  inflating: NotoSansThaiUI-SemiCondensed.ttf  
  inflating: NotoSansThaiUI-SemiCondensedBlack.ttf  
  inflating: NotoSansThaiUI-SemiCondensedBold.ttf  
  inflating: NotoSansThaiUI-SemiCondensedExtraBold.ttf  
  inflating: NotoSansThaiUI-SemiCondensedExtraLight.ttf  
  inflating: NotoSansThaiUI-SemiCondensedLight.ttf  
  inflating: NotoSansThaiUI-SemiCondensedMedium.ttf  
  inflating: NotoSansThaiUI-SemiCondensedSemiBold.ttf  
  inflating: NotoSansThaiUI-SemiCondensedThin.ttf  
  inflating: NotoSansThaiUI-Thin.ttf  
  inflating: NotoSansTibetan-Bold.ttf  
  inflating: NotoSansTibetan-Regular.ttf  
  inflating: NotoSansTifinagh-Regular.ttf  
  inflating: NotoSansUgaritic-Regular.ttf  
  inflating: NotoSansVai-Regular.ttf  
  inflating: NotoSansYi-Regular.ttf  
  inflating: NotoSerif-Black.ttf     
  inflating: NotoSerif-BlackItalic.ttf  
  inflating: NotoSerif-Bold.ttf      
  inflating: NotoSerif-BoldItalic.ttf  
  inflating: NotoSerif-Condensed.ttf  
  inflating: NotoSerif-CondensedBlack.ttf  
  inflating: NotoSerif-CondensedBlackItalic.ttf  
  inflating: NotoSerif-CondensedBold.ttf  
  inflating: NotoSerif-CondensedBoldItalic.ttf  
  inflating: NotoSerif-CondensedExtraBold.ttf  
  inflating: NotoSerif-CondensedExtraBoldItalic.ttf  
  inflating: NotoSerif-CondensedExtraLight.ttf  
  inflating: NotoSerif-CondensedExtraLightItalic.ttf  
  inflating: NotoSerif-CondensedItalic.ttf  
  inflating: NotoSerif-CondensedLight.ttf  
  inflating: NotoSerif-CondensedLightItalic.ttf  
  inflating: NotoSerif-CondensedMedium.ttf  
  inflating: NotoSerif-CondensedMediumItalic.ttf  
  inflating: NotoSerif-CondensedSemiBold.ttf  
  inflating: NotoSerif-CondensedSemiBoldItalic.ttf  
  inflating: NotoSerif-CondensedThin.ttf  
  inflating: NotoSerif-CondensedThinItalic.ttf  
  inflating: NotoSerif-ExtraBold.ttf  
  inflating: NotoSerif-ExtraBoldItalic.ttf  
  inflating: NotoSerif-ExtraCondensed.ttf  
  inflating: NotoSerif-ExtraCondensedBlack.ttf  
  inflating: NotoSerif-ExtraCondensedBlackItalic.ttf  
  inflating: NotoSerif-ExtraCondensedBold.ttf  
  inflating: NotoSerif-ExtraCondensedBoldItalic.ttf  
  inflating: NotoSerif-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerif-ExtraCondensedExtraBoldItalic.ttf  
  inflating: NotoSerif-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerif-ExtraCondensedExtraLightItalic.ttf  
  inflating: NotoSerif-ExtraCondensedItalic.ttf  
  inflating: NotoSerif-ExtraCondensedLight.ttf  
  inflating: NotoSerif-ExtraCondensedLightItalic.ttf  
  inflating: NotoSerif-ExtraCondensedMedium.ttf  
  inflating: NotoSerif-ExtraCondensedMediumItalic.ttf  
  inflating: NotoSerif-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerif-ExtraCondensedSemiBoldItalic.ttf  
  inflating: NotoSerif-ExtraCondensedThin.ttf  
  inflating: NotoSerif-ExtraCondensedThinItalic.ttf  
  inflating: NotoSerif-ExtraLight.ttf  
  inflating: NotoSerif-ExtraLightItalic.ttf  
  inflating: NotoSerif-Italic.ttf    
  inflating: NotoSerif-Light.ttf     
  inflating: NotoSerif-LightItalic.ttf  
  inflating: NotoSerif-Medium.ttf    
  inflating: NotoSerif-MediumItalic.ttf  
  inflating: NotoSerif-Regular.ttf   
  inflating: NotoSerif-SemiBold.ttf  
  inflating: NotoSerif-SemiBoldItalic.ttf  
  inflating: NotoSerif-SemiCondensed.ttf  
  inflating: NotoSerif-SemiCondensedBlack.ttf  
  inflating: NotoSerif-SemiCondensedBlackItalic.ttf  
  inflating: NotoSerif-SemiCondensedBold.ttf  
  inflating: NotoSerif-SemiCondensedBoldItalic.ttf  
  inflating: NotoSerif-SemiCondensedExtraBold.ttf  
  inflating: NotoSerif-SemiCondensedExtraBoldItalic.ttf  
  inflating: NotoSerif-SemiCondensedExtraLight.ttf  
  inflating: NotoSerif-SemiCondensedExtraLightItalic.ttf  
  inflating: NotoSerif-SemiCondensedItalic.ttf  
  inflating: NotoSerif-SemiCondensedLight.ttf  
  inflating: NotoSerif-SemiCondensedLightItalic.ttf  
  inflating: NotoSerif-SemiCondensedMedium.ttf  
  inflating: NotoSerif-SemiCondensedMediumItalic.ttf  
  inflating: NotoSerif-SemiCondensedSemiBold.ttf  
  inflating: NotoSerif-SemiCondensedSemiBoldItalic.ttf  
  inflating: NotoSerif-SemiCondensedThin.ttf  
  inflating: NotoSerif-SemiCondensedThinItalic.ttf  
  inflating: NotoSerif-Thin.ttf      
  inflating: NotoSerif-ThinItalic.ttf  
  inflating: NotoSerifArmenian-Black.ttf  
  inflating: NotoSerifArmenian-Bold.ttf  
  inflating: NotoSerifArmenian-Condensed.ttf  
  inflating: NotoSerifArmenian-CondensedBlack.ttf  
  inflating: NotoSerifArmenian-CondensedBold.ttf  
  inflating: NotoSerifArmenian-CondensedExtraBold.ttf  
  inflating: NotoSerifArmenian-CondensedExtraLight.ttf  
  inflating: NotoSerifArmenian-CondensedLight.ttf  
  inflating: NotoSerifArmenian-CondensedMedium.ttf  
  inflating: NotoSerifArmenian-CondensedSemiBold.ttf  
  inflating: NotoSerifArmenian-CondensedThin.ttf  
  inflating: NotoSerifArmenian-ExtraBold.ttf  
  inflating: NotoSerifArmenian-ExtraCondensed.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedBlack.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedBold.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedLight.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedMedium.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifArmenian-ExtraCondensedThin.ttf  
  inflating: NotoSerifArmenian-ExtraLight.ttf  
  inflating: NotoSerifArmenian-Light.ttf  
  inflating: NotoSerifArmenian-Medium.ttf  
  inflating: NotoSerifArmenian-Regular.ttf  
  inflating: NotoSerifArmenian-SemiBold.ttf  
  inflating: NotoSerifArmenian-SemiCondensed.ttf  
  inflating: NotoSerifArmenian-SemiCondensedBlack.ttf  
  inflating: NotoSerifArmenian-SemiCondensedBold.ttf  
  inflating: NotoSerifArmenian-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifArmenian-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifArmenian-SemiCondensedLight.ttf  
  inflating: NotoSerifArmenian-SemiCondensedMedium.ttf  
  inflating: NotoSerifArmenian-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifArmenian-SemiCondensedThin.ttf  
  inflating: NotoSerifArmenian-Thin.ttf  
  inflating: NotoSerifBengali-Bold.ttf  
  inflating: NotoSerifBengali-Regular.ttf  
  inflating: NotoSerifCJKjp-Black.otf  
  inflating: NotoSerifCJKjp-Bold.otf  
  inflating: NotoSerifCJKjp-ExtraLight.otf  
  inflating: NotoSerifCJKjp-Light.otf  
  inflating: NotoSerifCJKjp-Medium.otf  
  inflating: NotoSerifCJKjp-Regular.otf  
  inflating: NotoSerifCJKjp-SemiBold.otf  
  inflating: NotoSerifCJKkr-Black.otf  
  inflating: NotoSerifCJKkr-Bold.otf  
  inflating: NotoSerifCJKkr-ExtraLight.otf  
  inflating: NotoSerifCJKkr-Light.otf  
  inflating: NotoSerifCJKkr-Medium.otf  
  inflating: NotoSerifCJKkr-Regular.otf  
  inflating: NotoSerifCJKkr-SemiBold.otf  
  inflating: NotoSerifCJKsc-Black.otf  
  inflating: NotoSerifCJKsc-Bold.otf  
  inflating: NotoSerifCJKsc-ExtraLight.otf  
  inflating: NotoSerifCJKsc-Light.otf  
  inflating: NotoSerifCJKsc-Medium.otf  
  inflating: NotoSerifCJKsc-Regular.otf  
  inflating: NotoSerifCJKsc-SemiBold.otf  
  inflating: NotoSerifCJKtc-Black.otf  
  inflating: NotoSerifCJKtc-Bold.otf  
  inflating: NotoSerifCJKtc-ExtraLight.otf  
  inflating: NotoSerifCJKtc-Light.otf  
  inflating: NotoSerifCJKtc-Medium.otf  
  inflating: NotoSerifCJKtc-Regular.otf  
  inflating: NotoSerifCJKtc-SemiBold.otf  
  inflating: NotoSerifDevanagari-Bold.ttf  
  inflating: NotoSerifDevanagari-Regular.ttf  
  inflating: NotoSerifDisplay-Black.ttf  
  inflating: NotoSerifDisplay-BlackItalic.ttf  
  inflating: NotoSerifDisplay-Bold.ttf  
  inflating: NotoSerifDisplay-BoldItalic.ttf  
  inflating: NotoSerifDisplay-Condensed.ttf  
  inflating: NotoSerifDisplay-CondensedBlack.ttf  
  inflating: NotoSerifDisplay-CondensedBlackItalic.ttf  
  inflating: NotoSerifDisplay-CondensedBold.ttf  
  inflating: NotoSerifDisplay-CondensedBoldItalic.ttf  
  inflating: NotoSerifDisplay-CondensedExtraBold.ttf  
  inflating: NotoSerifDisplay-CondensedExtraBoldItalic.ttf  
  inflating: NotoSerifDisplay-CondensedExtraLight.ttf  
  inflating: NotoSerifDisplay-CondensedExtraLightItalic.ttf  
  inflating: NotoSerifDisplay-CondensedItalic.ttf  
  inflating: NotoSerifDisplay-CondensedLight.ttf  
  inflating: NotoSerifDisplay-CondensedLightItalic.ttf  
  inflating: NotoSerifDisplay-CondensedMedium.ttf  
  inflating: NotoSerifDisplay-CondensedMediumItalic.ttf  
  inflating: NotoSerifDisplay-CondensedSemiBold.ttf  
  inflating: NotoSerifDisplay-CondensedSemiBoldItalic.ttf  
  inflating: NotoSerifDisplay-CondensedThin.ttf  
  inflating: NotoSerifDisplay-CondensedThinItalic.ttf  
  inflating: NotoSerifDisplay-ExtraBold.ttf  
  inflating: NotoSerifDisplay-ExtraBoldItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensed.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedBlack.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedBlackItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedBold.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedBoldItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedExtraBoldItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedExtraLightItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedLight.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedLightItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedMedium.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedMediumItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedSemiBoldItalic.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedThin.ttf  
  inflating: NotoSerifDisplay-ExtraCondensedThinItalic.ttf  
  inflating: NotoSerifDisplay-ExtraLight.ttf  
  inflating: NotoSerifDisplay-ExtraLightItalic.ttf  
  inflating: NotoSerifDisplay-Italic.ttf  
  inflating: NotoSerifDisplay-Light.ttf  
  inflating: NotoSerifDisplay-LightItalic.ttf  
  inflating: NotoSerifDisplay-Medium.ttf  
  inflating: NotoSerifDisplay-MediumItalic.ttf  
  inflating: NotoSerifDisplay-Regular.ttf  
  inflating: NotoSerifDisplay-SemiBold.ttf  
  inflating: NotoSerifDisplay-SemiBoldItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensed.ttf  
  inflating: NotoSerifDisplay-SemiCondensedBlack.ttf  
  inflating: NotoSerifDisplay-SemiCondensedBlackItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedBold.ttf  
  inflating: NotoSerifDisplay-SemiCondensedBoldItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifDisplay-SemiCondensedExtraBoldItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifDisplay-SemiCondensedExtraLightItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedLight.ttf  
  inflating: NotoSerifDisplay-SemiCondensedLightItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedMedium.ttf  
  inflating: NotoSerifDisplay-SemiCondensedMediumItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifDisplay-SemiCondensedSemiBoldItalic.ttf  
  inflating: NotoSerifDisplay-SemiCondensedThin.ttf  
  inflating: NotoSerifDisplay-SemiCondensedThinItalic.ttf  
  inflating: NotoSerifDisplay-Thin.ttf  
  inflating: NotoSerifDisplay-ThinItalic.ttf  
  inflating: NotoSerifEthiopic-Black.ttf  
  inflating: NotoSerifEthiopic-Bold.ttf  
  inflating: NotoSerifEthiopic-Condensed.ttf  
  inflating: NotoSerifEthiopic-CondensedBlack.ttf  
  inflating: NotoSerifEthiopic-CondensedBold.ttf  
  inflating: NotoSerifEthiopic-CondensedExtraBold.ttf  
  inflating: NotoSerifEthiopic-CondensedExtraLight.ttf  
  inflating: NotoSerifEthiopic-CondensedLight.ttf  
  inflating: NotoSerifEthiopic-CondensedMedium.ttf  
  inflating: NotoSerifEthiopic-CondensedSemiBold.ttf  
  inflating: NotoSerifEthiopic-CondensedThin.ttf  
  inflating: NotoSerifEthiopic-ExtraBold.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensed.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedBlack.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedBold.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedLight.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedMedium.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifEthiopic-ExtraCondensedThin.ttf  
  inflating: NotoSerifEthiopic-ExtraLight.ttf  
  inflating: NotoSerifEthiopic-Light.ttf  
  inflating: NotoSerifEthiopic-Medium.ttf  
  inflating: NotoSerifEthiopic-Regular.ttf  
  inflating: NotoSerifEthiopic-SemiBold.ttf  
  inflating: NotoSerifEthiopic-SemiCondensed.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedBlack.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedBold.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedLight.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedMedium.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifEthiopic-SemiCondensedThin.ttf  
  inflating: NotoSerifEthiopic-Thin.ttf  
  inflating: NotoSerifGeorgian-Black.ttf  
  inflating: NotoSerifGeorgian-Bold.ttf  
  inflating: NotoSerifGeorgian-Condensed.ttf  
  inflating: NotoSerifGeorgian-CondensedBlack.ttf  
  inflating: NotoSerifGeorgian-CondensedBold.ttf  
  inflating: NotoSerifGeorgian-CondensedExtraBold.ttf  
  inflating: NotoSerifGeorgian-CondensedExtraLight.ttf  
  inflating: NotoSerifGeorgian-CondensedLight.ttf  
  inflating: NotoSerifGeorgian-CondensedMedium.ttf  
  inflating: NotoSerifGeorgian-CondensedSemiBold.ttf  
  inflating: NotoSerifGeorgian-CondensedThin.ttf  
  inflating: NotoSerifGeorgian-ExtraBold.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensed.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedBlack.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedBold.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedLight.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedMedium.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifGeorgian-ExtraCondensedThin.ttf  
  inflating: NotoSerifGeorgian-ExtraLight.ttf  
  inflating: NotoSerifGeorgian-Light.ttf  
  inflating: NotoSerifGeorgian-Medium.ttf  
  inflating: NotoSerifGeorgian-Regular.ttf  
  inflating: NotoSerifGeorgian-SemiBold.ttf  
  inflating: NotoSerifGeorgian-SemiCondensed.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedBlack.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedBold.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedLight.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedMedium.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifGeorgian-SemiCondensedThin.ttf  
  inflating: NotoSerifGeorgian-Thin.ttf  
  inflating: NotoSerifGujarati-Bold.ttf  
  inflating: NotoSerifGujarati-Regular.ttf  
  inflating: NotoSerifHebrew-Black.ttf  
  inflating: NotoSerifHebrew-Bold.ttf  
  inflating: NotoSerifHebrew-Condensed.ttf  
  inflating: NotoSerifHebrew-CondensedBlack.ttf  
  inflating: NotoSerifHebrew-CondensedBold.ttf  
  inflating: NotoSerifHebrew-CondensedExtraBold.ttf  
  inflating: NotoSerifHebrew-CondensedExtraLight.ttf  
  inflating: NotoSerifHebrew-CondensedLight.ttf  
  inflating: NotoSerifHebrew-CondensedMedium.ttf  
  inflating: NotoSerifHebrew-CondensedSemiBold.ttf  
  inflating: NotoSerifHebrew-CondensedThin.ttf  
  inflating: NotoSerifHebrew-ExtraBold.ttf  
  inflating: NotoSerifHebrew-ExtraCondensed.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedBlack.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedBold.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedLight.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedMedium.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifHebrew-ExtraCondensedThin.ttf  
  inflating: NotoSerifHebrew-ExtraLight.ttf  
  inflating: NotoSerifHebrew-Light.ttf  
  inflating: NotoSerifHebrew-Medium.ttf  
  inflating: NotoSerifHebrew-Regular.ttf  
  inflating: NotoSerifHebrew-SemiBold.ttf  
  inflating: NotoSerifHebrew-SemiCondensed.ttf  
  inflating: NotoSerifHebrew-SemiCondensedBlack.ttf  
  inflating: NotoSerifHebrew-SemiCondensedBold.ttf  
  inflating: NotoSerifHebrew-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifHebrew-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifHebrew-SemiCondensedLight.ttf  
  inflating: NotoSerifHebrew-SemiCondensedMedium.ttf  
  inflating: NotoSerifHebrew-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifHebrew-SemiCondensedThin.ttf  
  inflating: NotoSerifHebrew-Thin.ttf  
  inflating: NotoSerifKannada-Bold.ttf  
  inflating: NotoSerifKannada-Regular.ttf  
  inflating: NotoSerifKhmer-Black.ttf  
  inflating: NotoSerifKhmer-Bold.ttf  
  inflating: NotoSerifKhmer-Condensed.ttf  
  inflating: NotoSerifKhmer-CondensedBlack.ttf  
  inflating: NotoSerifKhmer-CondensedBold.ttf  
  inflating: NotoSerifKhmer-CondensedExtraBold.ttf  
  inflating: NotoSerifKhmer-CondensedExtraLight.ttf  
  inflating: NotoSerifKhmer-CondensedLight.ttf  
  inflating: NotoSerifKhmer-CondensedMedium.ttf  
  inflating: NotoSerifKhmer-CondensedSemiBold.ttf  
  inflating: NotoSerifKhmer-CondensedThin.ttf  
  inflating: NotoSerifKhmer-ExtraBold.ttf  
  inflating: NotoSerifKhmer-ExtraCondensed.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedBlack.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedBold.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedLight.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedMedium.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifKhmer-ExtraCondensedThin.ttf  
  inflating: NotoSerifKhmer-ExtraLight.ttf  
  inflating: NotoSerifKhmer-Light.ttf  
  inflating: NotoSerifKhmer-Medium.ttf  
  inflating: NotoSerifKhmer-Regular.ttf  
  inflating: NotoSerifKhmer-SemiBold.ttf  
  inflating: NotoSerifKhmer-SemiCondensed.ttf  
  inflating: NotoSerifKhmer-SemiCondensedBlack.ttf  
  inflating: NotoSerifKhmer-SemiCondensedBold.ttf  
  inflating: NotoSerifKhmer-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifKhmer-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifKhmer-SemiCondensedLight.ttf  
  inflating: NotoSerifKhmer-SemiCondensedMedium.ttf  
  inflating: NotoSerifKhmer-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifKhmer-SemiCondensedThin.ttf  
  inflating: NotoSerifKhmer-Thin.ttf  
  inflating: NotoSerifLao-Black.ttf  
  inflating: NotoSerifLao-Bold.ttf   
  inflating: NotoSerifLao-Condensed.ttf  
  inflating: NotoSerifLao-CondensedBlack.ttf  
  inflating: NotoSerifLao-CondensedBold.ttf  
  inflating: NotoSerifLao-CondensedExtraBold.ttf  
  inflating: NotoSerifLao-CondensedExtraLight.ttf  
  inflating: NotoSerifLao-CondensedLight.ttf  
  inflating: NotoSerifLao-CondensedMedium.ttf  
  inflating: NotoSerifLao-CondensedSemiBold.ttf  
  inflating: NotoSerifLao-CondensedThin.ttf  
  inflating: NotoSerifLao-ExtraBold.ttf  
  inflating: NotoSerifLao-ExtraCondensed.ttf  
  inflating: NotoSerifLao-ExtraCondensedBlack.ttf  
  inflating: NotoSerifLao-ExtraCondensedBold.ttf  
  inflating: NotoSerifLao-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifLao-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifLao-ExtraCondensedLight.ttf  
  inflating: NotoSerifLao-ExtraCondensedMedium.ttf  
  inflating: NotoSerifLao-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifLao-ExtraCondensedThin.ttf  
  inflating: NotoSerifLao-ExtraLight.ttf  
  inflating: NotoSerifLao-Light.ttf  
  inflating: NotoSerifLao-Medium.ttf  
  inflating: NotoSerifLao-Regular.ttf  
  inflating: NotoSerifLao-SemiBold.ttf  
  inflating: NotoSerifLao-SemiCondensed.ttf  
  inflating: NotoSerifLao-SemiCondensedBlack.ttf  
  inflating: NotoSerifLao-SemiCondensedBold.ttf  
  inflating: NotoSerifLao-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifLao-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifLao-SemiCondensedLight.ttf  
  inflating: NotoSerifLao-SemiCondensedMedium.ttf  
  inflating: NotoSerifLao-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifLao-SemiCondensedThin.ttf  
  inflating: NotoSerifLao-Thin.ttf   
  inflating: NotoSerifMalayalam-Bold.ttf  
  inflating: NotoSerifMalayalam-Regular.ttf  
  inflating: NotoSerifMyanmar-Black.ttf  
  inflating: NotoSerifMyanmar-Bold.ttf  
  inflating: NotoSerifMyanmar-Condensed.ttf  
  inflating: NotoSerifMyanmar-CondensedBlack.ttf  
  inflating: NotoSerifMyanmar-CondensedBold.ttf  
  inflating: NotoSerifMyanmar-CondensedExtraBold.ttf  
  inflating: NotoSerifMyanmar-CondensedExtraLight.ttf  
  inflating: NotoSerifMyanmar-CondensedLight.ttf  
  inflating: NotoSerifMyanmar-CondensedMedium.ttf  
  inflating: NotoSerifMyanmar-CondensedSemiBold.ttf  
  inflating: NotoSerifMyanmar-CondensedThin.ttf  
  inflating: NotoSerifMyanmar-ExtraBold.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensed.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedBlack.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedBold.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedLight.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedMedium.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifMyanmar-ExtraCondensedThin.ttf  
  inflating: NotoSerifMyanmar-ExtraLight.ttf  
  inflating: NotoSerifMyanmar-Light.ttf  
  inflating: NotoSerifMyanmar-Medium.ttf  
  inflating: NotoSerifMyanmar-Regular.ttf  
  inflating: NotoSerifMyanmar-SemiBold.ttf  
  inflating: NotoSerifMyanmar-SemiCondensed.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedBlack.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedBold.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedLight.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedMedium.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifMyanmar-SemiCondensedThin.ttf  
  inflating: NotoSerifMyanmar-Thin.ttf  
  inflating: NotoSerifSinhala-Black.ttf  
  inflating: NotoSerifSinhala-Bold.ttf  
  inflating: NotoSerifSinhala-ExtraBold.ttf  
  inflating: NotoSerifSinhala-ExtraLight.ttf  
  inflating: NotoSerifSinhala-Light.ttf  
  inflating: NotoSerifSinhala-Medium.ttf  
  inflating: NotoSerifSinhala-Regular.ttf  
  inflating: NotoSerifSinhala-SemiBold.ttf  
  inflating: NotoSerifSinhala-Thin.ttf  
  inflating: NotoSerifTamil-Black.ttf  
  inflating: NotoSerifTamil-Bold.ttf  
  inflating: NotoSerifTamil-Condensed.ttf  
  inflating: NotoSerifTamil-CondensedBlack.ttf  
  inflating: NotoSerifTamil-CondensedBold.ttf  
  inflating: NotoSerifTamil-CondensedExtraBold.ttf  
  inflating: NotoSerifTamil-CondensedExtraLight.ttf  
  inflating: NotoSerifTamil-CondensedLight.ttf  
  inflating: NotoSerifTamil-CondensedMedium.ttf  
  inflating: NotoSerifTamil-CondensedSemiBold.ttf  
  inflating: NotoSerifTamil-CondensedThin.ttf  
  inflating: NotoSerifTamil-ExtraBold.ttf  
  inflating: NotoSerifTamil-ExtraCondensed.ttf  
  inflating: NotoSerifTamil-ExtraCondensedBlack.ttf  
  inflating: NotoSerifTamil-ExtraCondensedBold.ttf  
  inflating: NotoSerifTamil-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifTamil-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifTamil-ExtraCondensedLight.ttf  
  inflating: NotoSerifTamil-ExtraCondensedMedium.ttf  
  inflating: NotoSerifTamil-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifTamil-ExtraCondensedThin.ttf  
  inflating: NotoSerifTamil-ExtraLight.ttf  
  inflating: NotoSerifTamil-Light.ttf  
  inflating: NotoSerifTamil-Medium.ttf  
  inflating: NotoSerifTamil-Regular.ttf  
  inflating: NotoSerifTamil-SemiBold.ttf  
  inflating: NotoSerifTamil-SemiCondensed.ttf  
  inflating: NotoSerifTamil-SemiCondensedBlack.ttf  
  inflating: NotoSerifTamil-SemiCondensedBold.ttf  
  inflating: NotoSerifTamil-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifTamil-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifTamil-SemiCondensedLight.ttf  
  inflating: NotoSerifTamil-SemiCondensedMedium.ttf  
  inflating: NotoSerifTamil-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifTamil-SemiCondensedThin.ttf  
  inflating: NotoSerifTamil-Thin.ttf  
  inflating: NotoSerifTelugu-Bold.ttf  
  inflating: NotoSerifTelugu-Regular.ttf  
  inflating: NotoSerifThai-Black.ttf  
  inflating: NotoSerifThai-Bold.ttf  
  inflating: NotoSerifThai-Condensed.ttf  
  inflating: NotoSerifThai-CondensedBlack.ttf  
  inflating: NotoSerifThai-CondensedBold.ttf  
  inflating: NotoSerifThai-CondensedExtraBold.ttf  
  inflating: NotoSerifThai-CondensedExtraLight.ttf  
  inflating: NotoSerifThai-CondensedLight.ttf  
  inflating: NotoSerifThai-CondensedMedium.ttf  
  inflating: NotoSerifThai-CondensedSemiBold.ttf  
  inflating: NotoSerifThai-CondensedThin.ttf  
  inflating: NotoSerifThai-ExtraBold.ttf  
  inflating: NotoSerifThai-ExtraCondensed.ttf  
  inflating: NotoSerifThai-ExtraCondensedBlack.ttf  
  inflating: NotoSerifThai-ExtraCondensedBold.ttf  
  inflating: NotoSerifThai-ExtraCondensedExtraBold.ttf  
  inflating: NotoSerifThai-ExtraCondensedExtraLight.ttf  
  inflating: NotoSerifThai-ExtraCondensedLight.ttf  
  inflating: NotoSerifThai-ExtraCondensedMedium.ttf  
  inflating: NotoSerifThai-ExtraCondensedSemiBold.ttf  
  inflating: NotoSerifThai-ExtraCondensedThin.ttf  
  inflating: NotoSerifThai-ExtraLight.ttf  
  inflating: NotoSerifThai-Light.ttf  
  inflating: NotoSerifThai-Medium.ttf  
  inflating: NotoSerifThai-Regular.ttf  
  inflating: NotoSerifThai-SemiBold.ttf  
  inflating: NotoSerifThai-SemiCondensed.ttf  
  inflating: NotoSerifThai-SemiCondensedBlack.ttf  
  inflating: NotoSerifThai-SemiCondensedBold.ttf  
  inflating: NotoSerifThai-SemiCondensedExtraBold.ttf  
  inflating: NotoSerifThai-SemiCondensedExtraLight.ttf  
  inflating: NotoSerifThai-SemiCondensedLight.ttf  
  inflating: NotoSerifThai-SemiCondensedMedium.ttf  
  inflating: NotoSerifThai-SemiCondensedSemiBold.ttf  
  inflating: NotoSerifThai-SemiCondensedThin.ttf  
  inflating: NotoSerifThai-Thin.ttf  
  inflating: README                  

ターミナル設定変更

Noto Emoji Regular に変更するんだ

fmt_clr_cnst.sh

コード表示

[oracle@centos gg]$ cat fmt_clr_cnst.sh
#!/bin/bash
NORMAL=$(tput sgr0)
FG_RED=$(tput setaf 1)
FG_GREEN=$(tput setaf 2)
FG_YELLOW=$(tput setaf 3)
FG_BLUE=$(tput setaf 4)
FG_MAGENTA=$(tput setaf 5)
FG_CYAN=$(tput setaf 6)
FG_WHITE=$(tput setaf 7)

fmt_clr_func.sh

コード表示

[oracle@centos gg]$ cat fmt_clr_func.sh
#!/bin/bash
source ./fmt_clr_cnst.sh;
fg_red(){
  echo -e "${FG_RED}$*${NORMAL}";
}
fg_green(){
  echo -e "${FG_GREEN}$*${NORMAL}";
}
fg_yellow(){
  echo -e "${FG_YELLOW}$*${NORMAL}";
}
fg_blue(){
  echo -e "${FG_BLUE}$*${NORMAL}";
}
fg_magenta(){
  echo -e "${FG_MAGENTA}$*${NORMAL}";
}
fg_cyan(){
  echo -e "${FG_CYAN}$*${NORMAL}";
}
fg_white(){
  echo -e "${FG_WHITE}$*${NORMAL}";
}

fmt_deco_func.sh

中央揃えにしようとしたなごり。(してない。)

コード表示

[oracle@centos gg]$ cat fmt_deco_func.sh
#!/bin/bash

_lpd(){
  local PD=$1
  local STR=$2
  printf "|%${PD}s|\n" ${STR};
}

_rpd(){
  local PD=$1
  local STR=$2
  printf "|%-${PD}s|\n" ${STR};
}

_aln_ctr(){
  local PD=$1
  local STR=$2
  echo "" | awk '
  {
    PD="'${PD}'"
    STR="'${STR}'"
    printf "%" int(PD+length(STR)/2) "s\n",STR
  }
  '
}

_deco_ful_pd(){
  local RPT=$1
  local MX_RPT=$2
  local ASCII=$3
  local STR=$4
  local PD=$5
  local LN=$(echo ""|awk '
  {
    RPT="'${RPT}'"
    ASCII="'${ASCII}'"
    while(RPT-- >0)printf(ASCII)
  }')
  echo "$(_lpd ${MX_RPT} ${LN})$(_rpd ${PD} ${STR})$(_rpd ${MX_RPT} ${LN})"
}

trap_get_winsize.sh

コード表示

[oracle@centos gg]$ cat trap_get_winsize.sh
#!/bin/bash

trap '_win_sz' WINCH

_win_sz(){
  WIN_Y=$(tput lines)
  WIN_X=$(tput cols)
  :
}

_win_sz

_main.sh

コード表示

[oracle@centos gg]$ cat ./_main.sh
#!/bin/bash

source ./trap_get_winsize.sh
source ./fmt_deco_func.sh
source ./fmt_clr_func.sh

_uni_str(){
  CODE_POINT=$1
  ZERO_PAD=$2
  echo -n -e \\U$(printf "%0${ZERO_PAD}x" ${CODE_POINT})
}

_turn_back(){
  STR=$1
  WID=$2
  fold -w ${WID} <<<${STR}
}

_uni_code(){
  FROM_RN=$1
  TO_RN=$2
  ZERO_PAD=$3
  while read RN;do
    _uni_str ${RN} ${ZERO_PAD}
  done < <(seq ${FROM_RN} ${TO_RN})
}

_main(){
  START_CODE_POINT=$1
  END_CODE_POINT=$2
  ZERO_PAD=$3
  FOLD=$4
  _turn_back $(_uni_code ${START_CODE_POINT} ${END_CODE_POINT} ${ZERO_PAD}) ${FOLD}
}

fg_cyan "$(_deco_ful_pd  30 30 '\\x40' 'Japanese_Hiragana' 30 )"
_main '0x3040' '0x309f' 4 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x23' 'Japanese_Katakana' 30)"
_main '0x30a0' '0x30ff' 4 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x25' 'Box_Drawing' 30)"
_main '0x2500' '0x257f' 4 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x24' 'Miscellaneous_Symbols' 30)"
_main '0x2600' '0x26ff' 4 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x3d' 'Dingbats' 30)"
_main '0x2700' '0x27ff' 4 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x2a' 'Arrows,User_Interface' 30)"
_main '0x1f300' '0x1f3ff' 5 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x26' 'Animal_Symbols' 30)"
_main '0x1f400' '0x1f4ff' 5 ${WIN_X}
fg_cyan "$(_deco_ful_pd 30 30 '\\x2b' 'Emoticons' 30)"
_main '0x1f600' '0x1f64f' 5 ${WIN_X}

実行例

いつも使っているやつだと臨場感伝わりにくいからベタって貼った。

[oracle@centos gg]$ ./_main.sh
|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@||Japanese_Hiragana             ||@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
぀ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖ゗゘゙゚゛゜ゝゞゟ
|##############################||Japanese_Katakana             ||##############################|
゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ
|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%||Box_Drawing                   ||%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|
─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳╴╵╶╷╸╹╺╻╼╽╾╿
|$||Miscellaneous_Symbols         ||$|
☀☁☂☃☄★☆☇☈☉☊☋☌☍☎☏☐☑☒☓☔☕☖☗☘☙☚☛☜☝☞☟☠☡☢☣☤☥☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽♾♿⚀⚁⚂⚃⚄⚅⚆⚇⚈⚉⚊⚋⚌⚍⚎⚏⚐⚑⚒⚓⚔⚕⚖⚗⚘⚙⚚⚛⚜⚝⚞⚟⚠⚡⚢⚣⚤⚥⚦⚧⚨⚩⚪⚫⚬⚭⚮⚯⚰⚱⚲⚳⚴⚵⚶⚷⚸⚹⚺⚻⚼⚽⚾⚿⛀⛁⛂⛃⛄⛅⛆⛇⛈⛉⛊⛋⛌⛍⛎⛏⛐⛑⛒⛓⛔⛕⛖⛗⛘⛙⛚⛛⛜⛝⛞⛟⛠⛡⛢⛣⛤⛥⛦⛧⛨⛩⛪⛫⛬⛭⛮⛯⛰⛱⛲⛳⛴⛵⛶⛷⛸⛹⛺⛻⛼⛽⛾⛿
|==============================||Dingbats                      ||==============================|
✀✁✂✃✄✅✆✇✈✉✊✋✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟✠✡✢✣✤✥✦✧✨✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❌❍❎❏❐❑❒❓❔❕❖❗❘❙❚❛❜❝❞❟❠❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱❲❳❴❵❶❷❸❹❺❻❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓➔➕➖➗➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➰➱➲➳➴➵➶➷➸➹➺➻➼➽➾➿⟀⟁⟂⟃⟄⟅⟆⟇⟈⟉⟊⟋⟌⟍⟎⟏⟐⟑⟒⟓⟔⟕⟖⟗⟘⟙⟚⟛⟜⟝⟞⟟⟠⟡⟢⟣⟤⟥⟦⟧⟨
⟩⟪⟫⟬⟭⟮⟯⟰⟱⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿
|******************************||Arrows,User_Interface         ||******************************|
🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞🌟🌠🌡🌢🌣🌤🌥🌦🌧🌨🌩🌪🌫🌬🌭🌮🌯🌰🌱🌲🌳🌴🌵🌶🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼🍽🍾🍿🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑🎒🎓🎔🎕🎖🎗🎘🎙🎚🎛🎜🎝🎞🎟🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏋🏌🏍🏎🏏🏐🏑🏒🏓🏔🏕🏖🏗🏘🏙🏚🏛🏜🏝🏞🏟🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰🏱🏲🏳🏴🏵🏶🏷🏸🏹🏺🏻🏼🏽🏾🏿
|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&||Animal_Symbols                ||&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|
🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾🐿👀👁👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼💽💾💿📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙📚📛📜📝📞📟📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📽📾📿
|++++++++++++++++++++++++++++++||Emoticons                     ||++++++++++++++++++++++++++++++|
😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏

ターミナルだとこんな感じ。伝わるかなー。

あとがき

githubで製作中のascii artはascii artじゃなくなりそうな予感。。脱線しかしなさそう。まぁ、楽しいからいいか!以上、ありがとうございました。

おまけ

カラフルうんこ基礎編。くそみたいなことに時間費やしたぜ!b^^ fin。


[oracle@centos gg]$ ./___unco___.sh
💩
💩
💩
💩
💩
💩
💩

bashメソッド抜き出しシェルスクリプトを作成した話(しかけ)

tt.shスクリプト

localをはずしてrutineが呼ばれた順にvariableが上書きされていくことを利用しています。

コード表示

[oracle@centos rr]$ cat tt.sh
#!/bin/bash

_arg_prc(){
  ARG_LZ=$1
  ARG_LZ=$(echo "" | awk '
  BEGIN{
    ARG_LZ="'${ARG_LZ}'"
  }
  {
    print ARG_LZ

  }')
  SRC_FNM=$(echo "${ARG_LZ}" | tr ' ' '\n')
}

_cp(){
  FILE_NM=$1
  echo "${FILE_NM}"
  CMD="grep \")\s*{\" "${FILE_NM}" | sed -e 's/(){//g' | xargs -I@ bash -c 'echo _test@.sh' | xargs -t -I@ bash -c 'cp ${FILE_NM} test/@'"
  eval "${CMD}"
}

_while_prc_cp(){
  SRC_FNM="$1"
  echo "${SRC_FNM}"
  echo "${SRC_FNM}" | while read F;do
    _cp "${F}" 
  done
}

_while_prc_lzup(){
  SRC_FNM="$1"
  echo "${SRC_FNM}" | while read F;do
    _lzup "${F}" 
  done
}

_lzup(){
  SRC_FNM="$1"
  TGT_FNM=$(grep ")\s*{" ${SRC_FNM} | sed -e 's/(){//g' | xargs -I@ bash -c 'echo _test@.sh')
  echo "${TGT_FNM}"
  RUTINE_NM=$(echo "${TGT_FNM//_test/}" | sed -e 's/.sh//g')
  echo "${RUTINE_NM}"
}

_arg_prc $*
_while_prc_cp "${SRC_FNM}"
_while_prc_lzup "${SRC_FNM}"

t.shスクリプト

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

_build_cmd(){
  START_RN=$1
  END_RN=$2
  FILE_NM=$3
  BUILD_CMD="sed -i -n '""${START_RN}"",""${END_RN}""p""'"" ${FILE_NM}"
}

_first_filter(){
  START_STR=$1
  END_STR=$2
  FILE_NM=$3
  GET_START_RN_CMD="sed -n '/${START_STR}/=' ${FILE_NM} | tail -n 1"
  GET_END_RN_CMD="sed -n '/${END_STR}/=' ${FILE_NM} | tail -n 1"
  START_RN=$(eval "${GET_START_RN_CMD}")
  END_RN=$(eval "${GET_END_RN_CMD}")
}

_second_filter(){
  START_STR=$1
  END_STR=$2
  FILE_NM=$3
  GET_START_RN_CMD="sed -n '/${START_STR}/=' ${FILE_NM} | tail -n 1"
  GET_END_RN_CMD="sed -n '/${END_STR}/=' ${FILE_NM} | head -n 1"
  START_RN=$(eval "${GET_START_RN_CMD}")
  END_RN=$(eval "${GET_END_RN_CMD}")
}

_exec_cmd(){
  BUILD_CMD="$1"
  eval ${BUILD_CMD}
}

_insert_shebang(){
  FILE_NM=$1
  sed -i '1i#!/bin/bash\n' ${FILE_NM}
}

_main(){
  START_STR=$1
  END_STR=$2
  FILE_NM=$3
  _first_filter ${START_STR} ${END_STR} ${FILE_NM}
  _build_cmd ${START_RN} ${END_RN} ${FILE_NM}
  _exec_cmd "${BUILD_CMD}"
  _second_filter ${START_STR} ${END_STR} ${FILE_NM}
  _build_cmd ${START_RN} ${END_RN} ${FILE_NM}
  _exec_cmd "${BUILD_CMD}"
  _insert_shebang ${FILE_NM}
}

_main $1 $2 $3

tt.sh実行

コード表示

[oracle@centos rr]$ ./tt.sh "test/make/\\x2a.sh\\x20util/\\x2a.sh"
test/make/*.sh
util/*.sh
test/make/*.sh
bash -c cp test/make/*.sh test/_test_call_dynamic_cmd.sh 
bash -c cp test/make/*.sh test/_test_cmd_test_clean.sh 
bash -c cp test/make/*.sh test/_test_grp.sh 
bash -c cp test/make/*.sh test/_test_join.sh 
bash -c cp test/make/*.sh test/_test_split.sh 
bash -c cp test/make/*.sh test/_test_replica_cmd.sh 
bash -c cp test/make/*.sh test/_test_sort_cmd_with_str.sh 
bash -c cp test/make/*.sh test/_test_sort_cmd_with_numkey.sh 
bash -c cp test/make/*.sh test/_test_replace_cmd.sh 
bash -c cp test/make/*.sh test/_test_grp_rn.sh 
bash -c cp test/make/*.sh test/_test_mk_decopd_dynamic_cmd_non_tac.sh 
bash -c cp test/make/*.sh test/_test_mk_decopd_dynamic_cmd_tac.sh 
bash -c cp test/make/*.sh test/_test_mk_pd_dynamic_cmd_tac.sh 
bash -c cp test/make/*.sh test/_test_mk_pd_dynamic_cmd_non_tac.sh 
bash -c cp test/make/*.sh test/_test_mk_ascii_dynamic_cmd.sh 
bash -c cp test/make/*.sh test/_test_mk_ascii_code_non_lf.sh 
bash -c cp test/make/*.sh test/_test_mk_ascii_code.sh 
bash -c cp test/make/*.sh test/_test_mk_ascii_char_non_lf.sh 
bash -c cp test/make/*.sh test/_test_mk_ascii_char.sh 
bash -c cp test/make/*.sh test/_test_radical_replica_str.sh 
bash -c cp test/make/*.sh test/_test_gradual_non_tac_replica_str.sh 
bash -c cp test/make/*.sh test/_test_gradual_tac_replica_str.sh 
bash -c cp test/make/*.sh test/_test_mk_pd_tac_cmd.sh 
util/*.sh
bash -c cp util/*.sh test/_test_lpd.sh 
bash -c cp util/*.sh test/_test_rpd.sh 
bash -c cp util/*.sh test/_test_deco_ful_rev.sh 
bash -c cp util/*.sh test/_test_deco_ful.sh 
bash -c cp util/*.sh test/_test_deco_ful_pd.sh 
bash -c cp util/*.sh test/_test_deco_lft_lpd.sh 
bash -c cp util/*.sh test/_test_deco_lft.sh 
bash -c cp util/*.sh test/_test_deco_rgt_rpd.sh 
bash -c cp util/*.sh test/_test_deco_rgt.sh 
_test_call_dynamic_cmd.sh
_test_cmd_test_clean.sh
_test_grp.sh
_test_join.sh
_test_split.sh
_test_replica_cmd.sh
_test_sort_cmd_with_str.sh
_test_sort_cmd_with_numkey.sh
_test_replace_cmd.sh
_test_grp_rn.sh
_test_mk_decopd_dynamic_cmd_non_tac.sh
_test_mk_decopd_dynamic_cmd_tac.sh
_test_mk_pd_dynamic_cmd_tac.sh
_test_mk_pd_dynamic_cmd_non_tac.sh
_test_mk_ascii_dynamic_cmd.sh
_test_mk_ascii_code_non_lf.sh
_test_mk_ascii_code.sh
_test_mk_ascii_char_non_lf.sh
_test_mk_ascii_char.sh
_test_radical_replica_str.sh
_test_gradual_non_tac_replica_str.sh
_test_gradual_tac_replica_str.sh
_test_mk_pd_tac_cmd.sh
_call_dynamic_cmd
_cmd_clean
_grp
_join
_split
_replica_cmd
_sort_cmd_with_str
_sort_cmd_with_numkey
_replace_cmd
_grp_rn
_mk_decopd_dynamic_cmd_non_tac
_mk_decopd_dynamic_cmd_tac
_mk_pd_dynamic_cmd_tac
_mk_pd_dynamic_cmd_non_tac
_mk_ascii_dynamic_cmd
_mk_ascii_code_non_lf
_mk_ascii_code
_mk_ascii_char_non_lf
_mk_ascii_char
_radical_replica_str
_gradual_non_tac_replica_str
_gradual_tac_replica_str
_mk_pd_tac_cmd
_test_lpd.sh
_test_rpd.sh
_test_deco_ful_rev.sh
_test_deco_ful.sh
_test_deco_ful_pd.sh
_test_deco_lft_lpd.sh
_test_deco_lft.sh
_test_deco_rgt_rpd.sh
_test_deco_rgt.sh
_lpd
_rpd
_deco_ful_rev
_deco_ful
_deco_ful_pd
_deco_lft_lpd
_deco_lft
_deco_rgt_rpd
_deco_rgt
[oracle@centos rr]$ tree test
test
├── __test.sh
├── _test_call_dynamic_cmd.sh
├── _test_cmd_test_clean.sh
├── _test_deco_ful.sh
├── _test_deco_ful_pd.sh
├── _test_deco_ful_rev.sh
├── _test_deco_lft.sh
├── _test_deco_lft_lpd.sh
├── _test_deco_rgt.sh
├── _test_deco_rgt_rpd.sh
├── _test_gradual_non_tac_replica_str.sh
├── _test_gradual_tac_replica_str.sh
├── _test_grp.sh
├── _test_grp_rn.sh
├── _test_join.sh
├── _test_lpd.sh
├── _test_mk_ascii_char.sh
├── _test_mk_ascii_char_non_lf.sh
├── _test_mk_ascii_code.sh
├── _test_mk_ascii_code_non_lf.sh
├── _test_mk_ascii_dynamic_cmd.sh
├── _test_mk_decopd_dynamic_cmd_non_tac.sh
├── _test_mk_decopd_dynamic_cmd_tac.sh
├── _test_mk_pd_dynamic_cmd_non_tac.sh
├── _test_mk_pd_dynamic_cmd_tac.sh
├── _test_mk_pd_tac_cmd.sh
├── _test_radical_replica_str.sh
├── _test_replace_cmd.sh
├── _test_replica_cmd.sh
├── _test_rpd.sh
├── _test_sort_cmd_with_numkey.sh
├── _test_sort_cmd_with_str.sh
├── _test_split.sh
├── make
│   └── mk_exe_cmd.sh
├── oput
└── tmp

3 directories, 34 files

t.sh実行

とりま一つだけ

コード表示

[oracle@centos rr]$ cat test/_test_split.sh
#!/bin/bash

_call_dynamic_cmd(){
  while read cmd;do
    eval ${cmd};
  done < <(cat $(pwd)/test/oput/mk_dynamic_cmd);
}

_cmd_test_clean(){
  rm -rf $(pwd)/test/{tmp,oput}/*
}

_grp(){
  local RN=$1
  local GRP=$2
  while read LINE;do
     echo ${LINE} | sed -e s/GRP/${GRP}/ | bash;
  done < <(seq ${RN} | xargs -I@ bash -c 'echo echo $\(\(@%GRP\)\)')
}

_join(){
  local LFT=$1
  local RGT=$2
  local TGT_FILE=$3
  paste -d ' ' ${LFT} ${RGT} > ${TGT_FILE}
}

_split(){
  local SRC_FILE=$1
  local TGT_FILE=$2
  cat ${SRC_FILE} | awk '
  BEGIN{
    TGT_FILE="'${TGT_FILE}'"
  }
  {
    print > TGT_FILE"_split_"$1
  }
  '
}

_replica_cmd(){
  local LINE_START=$1
  local LINE_END=$2
  local SRC_FILE=$3
  local TGT_FILE=$4
  seq ${LINE_START} ${LINE_END} | while read RN;do
    cat ${SRC_FILE}
  done > ${TGT_FILE}
}

_sort_cmd_with_str(){
  local SORT_KEY=$1
  local SRC_FILE=$2
  local TGT_FILE=$3
  sort -k ${SORT_KEY},${SORT_KEY} ${SRC_FILE} >> ${TGT_FILE}
}

_sort_cmd_with_numkey(){
  local SORT_KEY=$1
  local SRC_FILE=$2
  local TGT_FILE=$3
  sort -n -k ${SORT_KEY},${SORT_KEY} ${SRC_FILE} >> ${TGT_FILE}
}

_replace_cmd(){
  local LINE_START=$1
  local LINE_END=$2
  local TGT_FILE=$3
  while read F;do
    cat ${F} | nl | awk '
    BEGIN{
    }
    {
      print $3"\x20"$1"\x20"$5"\x20"$6;
    }
    '
  done < <((find $(pwd)/test/tmp -type f -name "*split*")) > ${TGT_FILE}
}

_grp_rn(){
  local LINE_START=$1
  local LINE_END=$2
  local REPLICA=$3
  local ZERO_PAD=$4
  local PLAIN_FILE=$(pwd)/test/tmp/mk_dynamic_cmd
  local POSTREPLICA_FILE=$(pwd)/test/tmp/mk_postreplica_dynamic_cmd
  local POSTSORT_FILE=$(pwd)/test/tmp/mk_postsort_dynamic_cmd
  local GRPTMP_FILE=$(pwd)/test/tmp/grptmp
  local POSTGRP_FILE=$(pwd)/test/tmp/mk_postgrp_dynamic_cmd
  local POSTREPLACE_FILE=$(pwd)/test/tmp/mk_postreplace_dynamic_cmd
  local OPUT_FILE=$(pwd)/test/oput/mk_dynamic_cmd
  _replica_cmd ${LINE_START} ${LINE_END} ${PLAIN_FILE} ${POSTREPLICA_FILE}
  _sort_cmd_with_str ${ZERO_PAD} ${POSTREPLICA_FILE} ${POSTSORT_FILE}
  printf "%0${ZERO_PAD}g\n" $(_grp $(cat ${POSTSORT_FILE} | wc -l) $(($(cat ${POSTSORT_FILE} | wc -l)/${REPLICA}))) | sort > ${GRPTMP_FILE}
  _join ${GRPTMP_FILE} ${POSTSORT_FILE} ${POSTGRP_FILE}
  _split ${POSTGRP_FILE} ${POSTGRP_FILE}
  _replace_cmd  ${LINE_START} ${LINE_END} ${POSTREPLACE_FILE}
  cp ${POSTREPLACE_FILE} ${OPUT_FILE}
}

_mk_decopd_dynamic_cmd_non_tac(){
  local LINE_START=$1
  local LINE_END=$2
  local MX_PAD=$3
  local CMD=$4
  local ASCII=$5
  local STR=$6
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
      MX_PAD="'${MX_PAD}'"
      CMD="'${CMD}'"
      ASCII="'${ASCII}'"
      STR="'${STR}'"
    }
    {
      print CMD"\x20"RN"\x20"MX_PAD"\x20\x27"STR"\x27\x20\x27"ASCII"\x27"
    }
    '
  done < <(seq ${LINE_START} ${LINE_END}) >> $(pwd)/test/oput/mk_dynamic_cmd
}

_mk_decopd_dynamic_cmd_tac(){
  local LINE_START=$1
  local LINE_END=$2
  local MX_PAD=$3
  local CMD=$4
  local ASCII=$5
  local STR=$6
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
      MX_PAD="'${MX_PAD}'"
      CMD="'${CMD}'"
      ASCII="'${ASCII}'"
      STR="'${STR}'"
    }
    {
      print CMD"\x20"RN"\x20"MX_PAD"\x20\x27"STR"\x27\x20\x27"ASCII"\x27"
    }
    '
  done < <(seq ${LINE_START} ${LINE_END} | tac) >> $(pwd)/test/oput/mk_dynamic_cmd
}

_mk_pd_dynamic_cmd_tac(){
  local LINE_START=$1
  local LINE_END=$2
  local CMD=$3
  local STR=$4
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
      CMD="'${CMD}'"
      STR="'${STR}'"
    }
    {
      print CMD"\x20"RN"\x20\x27"STR"\x27"
    }
    '
  done < <(seq ${LINE_START} ${LINE_END} | tac) >> $(pwd)/test/oput/mk_dynamic_cmd
}

_mk_pd_dynamic_cmd_non_tac(){
  local LINE_START=$1
  local LINE_END=$2
  local CMD=$3
  local STR=$4
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
      CMD="'${CMD}'"
      STR="'${STR}'"
    }
    {
      print CMD"\x20"RN"\x20\x27"STR"\x27"
    }
    '
  done < <(seq ${LINE_START} ${LINE_END}) >> $(pwd)/test/oput/mk_dynamic_cmd
}

_mk_ascii_dynamic_cmd(){
  local LINE_START=$1
  local LINE_END=$2
  local CMD=$3
  local STR=$4
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
      CMD="'${CMD}'"
      STR="'${STR}'"
    }
    {
      ASCII=sprintf("%c",strtonum(RN))
      print CMD"\x20""RNN""\x20\x27"ASCII"\x27\x20\x27"STR"\x27"
    }
    '
  done < <(seq ${LINE_START} ${LINE_END}) >> $(pwd)/test/tmp/mk_dynamic_cmd
}

_mk_ascii_code_non_lf(){
  local LINE_START=$1
  local LINE_END=$2
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
    }
    {
      printf("\\x%x",strtonum(RN))
    }
    '
  done < <(seq ${LINE_START} ${LINE_END})
}

_mk_ascii_code(){
  local LINE_START=$1
  local LINE_END=$2
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
    }
    {
      printf("\\x%x\n",strtonum(RN))
    }
    '
  done < <(seq ${LINE_START} ${LINE_END})
}

_mk_ascii_char_non_lf(){
  local LINE_START=$1
  local LINE_END=$2
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
    }
    {
      printf("%c",strtonum(RN))
    }
    '
  done < <(seq ${LINE_START} ${LINE_END})
}

_mk_ascii_char(){
  local LINE_START=$1
  local LINE_END=$2
  while read RN;do
    echo "" | awk '
    BEGIN{
      RN="'${RN}'"
    }
    {
      ASCII=sprintf("%c",strtonum(RN))
      print ASCII
    }
    '
  done < <(seq ${LINE_START} ${LINE_END})
}


_radical_replica_str(){
  local STR=$1
  local START_RN=$2
  local INTERVAL=$3
  local END_RN=$4
  local LN=$(while read RN;do
    printf "%${RN}s" ${STR};
  done < <(seq ${START_RN} ${INTERVAL} ${END_RN}))
  echo "'"${LN}"'" | sed -e 's/ //g';
}

_gradual_non_tac_replica_str(){
  local STR=$1
  local START_RN=$2
  local INTERVAL=$3
  local END_RN=$4
  while read RN;do
    TMP_LN=$(printf "%$((RN==1?1:RN))s" "@");
    REP=$(echo "${TMP_LN}" | sed -e 's/ /@/g');
    echo "'"${REP//@/${STR}}"'";
  done < <(seq ${START_RN} ${INTERVAL} ${END_RN})
}

_gradual_tac_replica_str(){
  local STR=$1
  local START_RN=$2
  local INTERVAL=$3
  local END_RN=$4
  while read RN;do
    TMP_LN=$(printf "%$((RN==1?1:RN))s" "@");
    REP=$(echo "${TMP_LN}" | sed -e 's/ /@/g');
    echo "'"${REP//@/${STR}}"'";
  done < <(seq ${START_RN} ${INTERVAL} ${END_RN} | tac)
}

_mk_pd_tac_cmd(){
  STR=$1
  START_RN=$2
  INTERVAL=$3
  END_RN=$4
  DYN_CMD=$5
  PAD_CMD=$6
  REP_CMD=$7
  while read RN;do
    TMP=$( sed -e 's/ /@/g' <<<$(${REP_CMD} ${STR} ${START_RN} ${INTERVAL} ${RN}))
    echo ${TMP}
    #TODO  --opiton -a -b -c
    #${DYN_CMD} ${START_RN} ${RN} ${PAD_CMD} ${TMP##*@} 
    #${DYN_CMD} ${START_RN} ${END_RN} ${PAD_CMD} ${TMP##*@} 
    #${DYN_CMD} ${END_RN} ${END_RN} ${PAD_CMD} ${TMP##*@} 
  done < <(seq ${START_RN} ${INTERVAL} ${END_RN})
}
[oracle@centos rr]$ ./t.sh "_split(){" "^}" "test/_test_split.sh"
[oracle@centos rr]$ cat test/_test_split.sh
#!/bin/bash

_split(){
  local SRC_FILE=$1
  local TGT_FILE=$2
  cat ${SRC_FILE} | awk '
  BEGIN{
    TGT_FILE="'${TGT_FILE}'"
  }
  {
    print > TGT_FILE"_split_"$1
  }
  '
}

bash配列の間接参照

スクリプト

インデックスに注目

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

prt_ary_ok(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(echo ${ARY} | sed -e 's/ /\n/g')
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

prt_ary_ng(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ="${ARY}"
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(echo {a..c} | sed -e 's/ /\n/g')
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

prt_ary_ng ary
prt_ary_ok ary

実行例

インデックスに注目

コード表示

[oracle@centos rr]$ ./t.sh
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
prt_ary_ng
a b c
1
a
b
c
0-->a b c
____________i_____________
prt_ary_ok
a b c
3
a
b
c
0-->a
1-->b
2-->c

こっちのほうがおしゃれかな

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

prt_ary_ok(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<$(echo ${ARY}))
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

prt_ary_ng(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ="${ARY}"
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(sed -e 's/ /\n/g' <<<$(echo {a..c}))
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

prt_ary_ng ary
prt_ary_ok ary

こっちのほうもおしゃれかな

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

prt_ary_ok(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

prt_ary_ng(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ="${ARY}"
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(sed -e 's/ /\n/g' <<<$(echo {a..c}))
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

prt_ary_ng $*
prt_ary_ok $*

[oracle@centos rr]$ ./t.sh ary
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
prt_ary_ng
a b c
1
a
b
c
0-->a b c
____________i_____________
prt_ary_ok
a b c
3
a
b
c
0-->a
1-->b
2-->c

こっちのほうもおしゃれかな

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

prt_ary_ok(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

prt_ary_ng(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ="${ARY}"
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(sed -e 's/ /\n/g' <<<"$1")
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

prt_ary_ng ary
prt_ary_ok ary
[oracle@centos rr]$ ./t.sh "$(echo {a..c})"
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
prt_ary_ng
a b c
1
a
b
c
0-->a b c
____________i_____________
prt_ary_ok
a b c
3
a
b
c
0-->a
1-->b
2-->c

こっちのほうもおしゃれかな

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

prt_ary_ok(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

prt_ary_ng(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ="${ARY}"
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(sed -e 's/ /\n/g' <<<"$2")
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

prt_ary_ng "$1" "$2"
prt_ary_ok "$1" "$2"
[oracle@centos rr]$ ./t.sh ary "$(echo {a..c})"
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
prt_ary_ng
a b c
1
a
b
c
0-->a b c
____________i_____________
prt_ary_ok
a b c
3
a
b
c
0-->a
1-->b
2-->c

こっちのほうもおしゃれかな

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

set_ary(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

call_ary(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(sed -e 's/ /\n/g' <<<"$2")
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

set_ary "$1" "$2"
call_ary "LZ"
[oracle@centos rr]$ ./t.sh ary "$(echo {a..c})"
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
set_ary
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
call_ary

0

こっちのほうもおしゃれかな

localはずすと見えるね

コード表示

[oracle@centos rr]$ cat t.sh
#!/bin/bash

set_ary(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

call_ary(){
  echo "____________i_____________"
  echo "${FUNCNAME[0]}"
  local ARYNM=$1
  eval ARY=\${$ARYNM[@]}
  local LZ=();
  while read LN;do
    LZ+=(${LN});
  done < <(sed -e 's/ /\n/g' <<<${ARY})
  echo ${LZ[@]}
  echo ${#LZ[@]}
  for i in ${LZ[@]};do
    echo $i;
  done
  for i in ${!LZ[@]};do
    echo $i'-->'${LZ[$i]};
  done
}

echo "____________e_____________"
ary=();
while read LN;do
  ary+=(${LN});
done < <(sed -e 's/ /\n/g' <<<"$2")
echo ${ary[@]}
echo ${#ary[@]}
for i in ${ary[@]};do
  echo $i;
done
for i in ${!ary[@]};do
  echo $i'-->'${ary[$i]};
done

set_ary "$1" "$2"
call_ary "LZ"
[oracle@centos rr]$ ./t.sh ary "$(echo {a..c})"
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
set_ary
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
call_ary
a b c
3
a
b
c
0-->a
1-->b
2-->c

最後に

local外したシェルスクリプトを別ファイルのshellからcallできるようになる

コード表示

[oracle@centos rr]$ cat tt.sh
#!/bin/bash

source ./t.sh ary "$(echo {a..c})"
source ./t.sh ary "$(echo {A..C})"
[oracle@centos rr]$ ./tt.sh
____________e_____________
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
set_ary
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________i_____________
call_ary
a b c
3
a
b
c
0-->a
1-->b
2-->c
____________e_____________
A B C
3
A
B
C
0-->A
1-->B
2-->C
____________i_____________
set_ary
A B C
3
A
B
C
0-->A
1-->B
2-->C
____________i_____________
call_ary
A B C
3
A
B
C
0-->A
1-->B
2-->C