javalangの特定のクラスからメタ情報をクロステーブル形式で標準出力に出力するコマンドつくってみた

すっかり放置していたブログに書いてみる。クラスのメタ定義情報のうち参照しそうな列情報はほぼ決め打ちなので、クロス形式で出力してみた。フルスクラッチなので、クロス形式の実装のえぐみはすごいがリファクタリングしていく布石にはなったとおもう。表頭と表側に分けて考えるのがいいのか。どんなメソッド使えるのかAPIドキュメントを参照してもいいけど、クラス名が分かっていて、手元にjdkあるなら、ファイル化できてデータベースなりにぶち込んでから、じっくりみたりとかそういったのがハンディになると思った。gitに自作コマンドとして公開してみた。
java class dump(jazdump)  

epelレポからpython3.6.8 install

動機

bashでwebサイト作成してあと、pythonでもつくろうとおもっているから、install。

参考文献

CentOS に Python2.7, Python3を入れたメモ  
ファイルの圧縮、解凍方法  
pyenvで3.7系のインストールに失敗したときのメモ  
Pythonの対話モードの履歴と矢印キー  
PythonのインタプリタでCtrl-Lや矢印が使えないときの解決方法  

パッケージのダウンロード

コード表示

[oracle@centos unko]$ python --version
Python 2.7.5
[oracle@centos unko]$ which python
/usr/bin/python
[oracle@centos unko]$ curl -LO https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.3M  100 16.3M    0     0  1820k      0  0:00:09  0:00:09 --:--:-- 2117k
[oracle@centos unko]$ ll
合計 16732
-rw-r--r--. 1 oracle docker 17131432  7月 23 22:33 Python-3.7.4.tar.xz
[oracle@centos unko]$ tar -xvf Python-3.7.4.tar.xz
[oracle@centos unko]$ ll
合計 16736
drwxr-xr-x. 18 oracle docker     4096  7月  9 03:31 Python-3.7.4
-rw-r--r--.  1 oracle docker 17131432  7月 23 22:33 Python-3.7.4.tar.xz

makeする

エラーになった。

コード表示

[oracle@centos unko]$ cd Python-3.7.4
[oracle@centos Python-3.7.4]$ ll
合計 1060
-rw-r--r--.  1 oracle docker    631  7月  9 03:03 CODE_OF_CONDUCT.rst
drwxr-xr-x. 18 oracle docker   4096  7月  9 03:31 Doc
drwxr-xr-x.  2 oracle docker   4096  7月  9 03:03 Grammar
drwxr-xr-x.  3 oracle docker   4096  7月  9 03:03 Include
-rw-r--r--.  1 oracle docker  12769  7月  9 03:03 LICENSE
drwxr-xr-x. 33 oracle docker   4096  7月  9 03:03 Lib
drwxr-xr-x.  8 oracle docker   4096  7月  9 03:03 Mac
-rw-r--r--.  1 oracle docker  63658  7月  9 03:03 Makefile.pre.in
drwxr-xr-x.  2 oracle docker   4096  7月  9 03:31 Misc
drwxr-xr-x. 13 oracle docker   4096  7月  9 03:03 Modules
drwxr-xr-x.  4 oracle docker   4096  7月  9 03:03 Objects
drwxr-xr-x.  6 oracle docker   4096  7月  9 03:03 PC
drwxr-xr-x.  2 oracle docker   4096  7月  9 03:03 PCbuild
drwxr-xr-x.  2 oracle docker   4096  7月  9 03:03 Parser
drwxr-xr-x.  2 oracle docker   4096  7月  9 03:03 Programs
drwxr-xr-x.  3 oracle docker   4096  7月  9 03:03 Python
-rw-r--r--.  1 oracle docker  10113  7月  9 03:03 README.rst
drwxr-xr-x. 23 oracle docker   4096  7月  9 03:03 Tools
-rw-r--r--.  1 oracle docker  10953  7月  9 03:03 aclocal.m4
-rwxr-xr-x.  1 oracle docker  44166  7月  9 03:03 config.guess
-rwxr-xr-x.  1 oracle docker  36251  7月  9 03:03 config.sub
-rwxr-xr-x.  1 oracle docker 503641  7月  9 03:03 configure
-rw-r--r--.  1 oracle docker 167840  7月  9 03:03 configure.ac
-rwxr-xr-x.  1 oracle docker   7122  7月  9 03:03 install-sh
drwxr-xr-x.  2 oracle docker   4096  7月  9 03:03 m4
-rw-r--r--.  1 oracle docker  43204  7月  9 03:03 pyconfig.h.in
-rw-r--r--.  1 oracle docker 103776  7月  9 03:03 setup.py
[oracle@centos Python-3.7.4]$ ./configure --with-ensurepip
Traceback (most recent call last):
  File "/home/oracle/unko/Python-3.7.4/Lib/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/oracle/unko/Python-3.7.4/Lib/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/oracle/unko/Python-3.7.4/Lib/ensurepip/__main__.py", line 5, in 
    sys.exit(ensurepip._main())
  File "/home/oracle/unko/Python-3.7.4/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/home/oracle/unko/Python-3.7.4/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/home/oracle/unko/Python-3.7.4/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/__init__.py", line 40, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/cli/autocompletion.py", line 8, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/cli/main_parser.py", line 12, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/commands/__init__.py", line 6, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/commands/completion.py", line 6, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/cli/base_command.py", line 20, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/download.py", line 37, in 
  File "/tmp/tmp0ezzadqo/pip-19.0.3-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in 
  File "/home/oracle/unko/Python-3.7.4/Lib/ctypes/__init__.py", line 7, in 
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
make: *** [install] エラー 1

libffi-develいんすこ

コード表示

[oracle@centos Python-3.7.4]$ sudo yum install -y libffi-devel

再いんすこ

alias python=”/usr/local/bin/python3″を追加。~/.bashrcに。

コード表示

[oracle@centos Python-3.7.4]$ make
[oracle@centos Python-3.7.4]$ sudo make install
Looking in links: /tmp/tmpdo_t739u
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-19.0.3 setuptools-40.8.0
[oracle@centos Python-3.7.4]$ ls -l /usr/bin/ | grep python2.7
lrwxrwxrwx.   1 root root           9  7月  1 21:58 python2 -> python2.7
lrwxrwxrwx.   1 root root          16  7月  1 21:58 python2-config -> python2.7-config
-rwxr-xr-x.   1 root root        7216  6月 21 05:28 python2.7
-rwxr-xr-x.   1 root root        1835  6月 21 05:27 python2.7-config
[oracle@centos Python-3.7.4]$ ls -l /usr/local/bin/ | grep python
lrwxrwxrwx. 1 root root        9  7月 23 22:53 python3 -> python3.7
lrwxrwxrwx. 1 root root       16  7月 23 22:53 python3-config -> python3.7-config
-rwxr-xr-x. 2 root root 13988344  7月 23 22:53 python3.7
lrwxrwxrwx. 1 root root       17  7月 23 22:53 python3.7-config -> python3.7m-config
-rwxr-xr-x. 2 root root 13988344  7月 23 22:53 python3.7m
-rwxr-xr-x. 1 root root     2902  7月 23 22:53 python3.7m-config
[oracle@centos Python-3.7.4]$ cat ~/.bashrc
# .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"
alias python="/usr/local/bin/python3"
alias la="ls -la"
LANG=ja_JP.utf8


[oracle@centos Python-3.7.4]$ . ~/.bashrc

[oracle@centos Python-3.7.4]$ python --version
Python 3.7.4

動作確認

CTRL+Dでinteractiveモード抜ける。

コード表示

[oracle@centos ~]$ python
Python 3.7.4 (default, Jul 23 2019, 22:53:28) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('unko')
unko

追記

6.51.1. Python 3 のインストール

pipというパッケージ管理用コマンドが入っていなかったため、再実行

コード表示

[oracle@centos Python-3.7.4]$ sudo yum -y install openssl
[oracle@centos Python-3.7.4]$ openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
[oracle@centos Python-3.7.4]$ ./configure --prefix=/usr                   --enable-shared                 --with-system-expat             --with-system-ffi               --with-ensurepip=yes
[oracle@centos Python-3.7.4]$ make
[oracle@centos Python-3.7.4]$ sudo make install
[oracle@centos bin]$ pwd
/usr/bin
[oracle@centos bin]$ ll | grep pip
-rwxr-xr-x.   1 root root        2291  7月 31  2015 lesspipe.sh
-rwxr-xr-x.   1 root root       11424  2月 26  2014 mispipe
-rwxr-xr-x.   1 root root         281  6月 15  2016 pip
-rwxr-xr-x.   1 root root         283  6月 15  2016 pip2
-rwxr-xr-x.   1 root root         287  6月 15  2016 pip2.7
lrwxrwxrwx.   1 root root           6  7月 24 06:50 pip3 -> pip3.7
-rwxr-xr-x.   1 root root         217  7月 24 06:43 pip3.7
[oracle@centos Python-3.7.4]$ pip -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
[oracle@centos Python-3.7.4]$ sudo chmod -v 755 /usr/lib/libpython3.7m.so
[sudo] oracle のパスワード:
`/usr/lib/libpython3.7m.so' のモードを 0555 (r-xr-xr-x) から 0755 (rwxr-xr-x) へ変更しました
[oracle@centos Python-3.7.4]$ sudo chmod -v 755 /usr/lib/libpython3.so
`/usr/lib/libpython3.so' のモードを 0555 (r-xr-xr-x) から 0755 (rwxr-xr-x) へ変更しました
[oracle@centos Python-3.7.4]$ sudo ln -sfv pip3.7 /usr/bin/pip3
`/usr/bin/pip3' -> `pip3.7'
[oracle@centos bin]$ vi ~/.bashrc
[oracle@centos bin]$ cat ~/.bashrc
# .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"
alias python="/usr/local/bin/python3"
alias pip="/usr/bin/pip3.7"
alias la="ls -la"
LANG=ja_JP.utf8
[oracle@centos bin]$ . ~/.bashrc

よくわからんところ

コード表示

[oracle@centos bin]$ pwd
/usr/bin
[oracle@centos bin]$ pip3.7 -V
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
[oracle@centos bin]$ /usr/bin/pip3.7 -V
/usr/bin/python3.7: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
[oracle@centos ~]$ pip3 -V
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
[oracle@centos ~]$ pip3.7 -V
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
[oracle@centos ~]$ pip -V
/usr/bin/python3.7: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

make install時にこのログでた。あとで見直す。

コード表示

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_curses               _curses_panel         _dbm               
_gdbm                 _hashlib              _sqlite3           
_ssl                  readline                                 
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc                  atexit                pwd                
time                                                           

めんど臭くなってepelレポからいれちゃいました。

CentOS7でpython3をepelから入れる
コード表示

[root@centos Python-3.7.4]# yum info python36
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * centos-qemu-ev: ftp.tsukuba.wide.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
利用可能なパッケージ
名前                : python36
アーキテクチャー    : x86_64
バージョン          : 3.6.8
リリース            : 1.el7
容量                : 67 k
リポジトリー        : epel/x86_64
要約                : Interpreter of the Python programming language
URL                 : https://www.python.org/
ライセンス          : Python
説明                : Python is an accessible, high-level, dynamically typed, interpreted programming
                    : language, designed with an emphasis on code readability.
                    : It includes an extensive standard library, and has a vast ecosystem of
                    : third-party libraries.
                    : 
                    : The python36 package provides the "python3" executable: the reference
                    : interpreter for the Python language, version 3.
                    : The majority of its standard library is provided in the python36-libs package,
                    : which should be installed automatically along with python36.
                    : The remaining parts of the Python standard library are broken out into the
                    : python36-tkinter and python36-test packages, which may need to be installed
                    : separately.
                    : 
                    : Documentation for Python is provided in the python36-docs package.
                    : 
                    : Packages containing additional libraries for Python are generally named with
                    : the "python36-" prefix.
[root@centos Python-3.7.4]# yum install python36 python36-devel python36-libs

[root@centos Python-3.7.4]# python36 --version
Python 3.6.8

[oracle@centos ~]$ python36 --version
Python 3.6.8
[oracle@centos ~]$ python --version
Python 3.6.8


[oracle@centos ~]$ python
Python 3.6.8 (default, Apr 25 2019, 21:02:35) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
[oracle@centos ~]$ su root
パスワード:

[root@centos oracle]# python3 -m ensurepip
Looking in links: /tmp/tmpciyoe1tb
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2


[root@centos oracle]# pip3 install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/62/ca/94d32a6516ed197a491d17d46595ce58a83cbb2fca280414e57cd86b84dc/pip-19.2.1-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 6.9MB/s 
Installing collected packages: pip
  Found existing installation: pip 18.1
    Uninstalling pip-18.1:
      Successfully uninstalled pip-18.1
Successfully installed pip-19.2.1

[root@centos oracle]# pip3 list
Package    Version
---------- -------
pip        19.2.1 
setuptools 40.6.2 
[root@centos oracle]# 

[oracle@centos ~]$ pip list
Package    Version
---------- -------
pip        19.2.1 
setuptools 40.6.2 

[oracle@centos ~]$ pip -V
pip 19.2.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
[oracle@centos ~]$ python -V
Python 3.6.8

[oracle@centos ~]$ cat ~/.bashrc
# .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"
alias python="/usr/bin/python3.6"
alias pip="/usr/local/bin/pip3.6"
alias la="ls -la"
LANG=ja_JP.utf8

R言語インストール centos7

動機

dplyrパッケージを使ってみたいからいんすこした。

エラーおきたw

同一ファイルが2つのパッケージから提供されて競合。

コード表示

Transaction check error:
  file /usr/include/unicode/regex.h from install of libicu-devel-50.1.2-17.el7.x86_64 conflicts with file from package libicu57-devel-57.1-8.el7.x86_64

片方リム

りむる

コード表示

[oracle@centos ~]$ yum list libicu57-devel-57.1-8.el7.x86_64
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * centos-qemu-ev: ftp-srv2.kddilabs.jp
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
インストール済みパッケージ
libicu57-devel.x86_64                                                                                       57.1-8.el7                                                                                        @okay
[oracle@centos ~]$ sudo yum remove libicu57-devel.x86_64
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libicu57-devel.x86_64 0:57.1-8.el7 を 削除
--> 依存性の処理をしています: pkgconfig(icu-uc) のパッケージ: harfbuzz-devel-1.7.5-2.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ harfbuzz-devel.x86_64 0:1.7.5-2.el7 を 削除
--> 依存性の処理をしています: pkgconfig(harfbuzz) のパッケージ: pango-devel-1.42.4-2.el7_6.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ pango-devel.x86_64 0:1.42.4-2.el7_6 を 削除
--> 依存性の処理をしています: pango-devel >= 1.20.0-1 のパッケージ: gtk2-devel-2.24.31-1.el7.x86_64
--> 依存性の処理をしています: pkgconfig(pango) のパッケージ: gtk3-devel-3.22.30-3.el7.x86_64
--> 依存性の処理をしています: pkgconfig(pango) のパッケージ: gtk2-devel-2.24.31-1.el7.x86_64
--> 依存性の処理をしています: pkgconfig(pangocairo) のパッケージ: gtk3-devel-3.22.30-3.el7.x86_64
--> 依存性の処理をしています: pkgconfig(pangocairo) のパッケージ: gtk2-devel-2.24.31-1.el7.x86_64
--> 依存性の処理をしています: pkgconfig(pangoft2) のパッケージ: gtk3-devel-3.22.30-3.el7.x86_64
--> 依存性の処理をしています: pkgconfig(pangoft2) のパッケージ: gtk2-devel-2.24.31-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ gtk2-devel.x86_64 0:2.24.31-1.el7 を 削除
---> パッケージ gtk3-devel.x86_64 0:3.22.30-3.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

===================================================================================================================================================================================================================
 Package                                               アーキテクチャー                              バージョン                                              リポジトリー                                     容量
===================================================================================================================================================================================================================
削除中:
 libicu57-devel                                        x86_64                                        57.1-8.el7                                              @okay                                           5.1 M
依存性関連での削除をします:
 gtk2-devel                                            x86_64                                        2.24.31-1.el7                                           @base                                            22 M
 gtk3-devel                                            x86_64                                        3.22.30-3.el7                                           @base                                            30 M
 harfbuzz-devel                                        x86_64                                        1.7.5-2.el7                                             @base                                           1.5 M
 pango-devel                                           x86_64                                        1.42.4-2.el7_6                                          @updates                                        3.2 M

トランザクションの要約
===================================================================================================================================================================================================================
削除  1 パッケージ (+4 個の依存関係のパッケージ)

インストール容量: 61 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : gtk2-devel-2.24.31-1.el7.x86_64                                                                                                                                                    1/5 
  削除中                  : gtk3-devel-3.22.30-3.el7.x86_64                                                                                                                                                    2/5 
  削除中                  : pango-devel-1.42.4-2.el7_6.x86_64                                                                                                                                                  3/5 
  削除中                  : harfbuzz-devel-1.7.5-2.el7.x86_64                                                                                                                                                  4/5 
  削除中                  : libicu57-devel-57.1-8.el7.x86_64                                                                                                                                                   5/5 
  検証中                  : gtk3-devel-3.22.30-3.el7.x86_64                                                                                                                                                    1/5 
  検証中                  : harfbuzz-devel-1.7.5-2.el7.x86_64                                                                                                                                                  2/5 
  検証中                  : pango-devel-1.42.4-2.el7_6.x86_64                                                                                                                                                  3/5 
  検証中                  : libicu57-devel-57.1-8.el7.x86_64                                                                                                                                                   4/5 
  検証中                  : gtk2-devel-2.24.31-1.el7.x86_64                                                                                                                                                    5/5 

削除しました:
  libicu57-devel.x86_64 0:57.1-8.el7                                                                                                                                                                               

依存性の削除をしました:
  gtk2-devel.x86_64 0:2.24.31-1.el7                  gtk3-devel.x86_64 0:3.22.30-3.el7                  harfbuzz-devel.x86_64 0:1.7.5-2.el7                  pango-devel.x86_64 0:1.42.4-2.el7_6                 

完了しました!

再いんすこ

コード表示

[oracle@centos ~]$ sudo yum install -y R --enablerepo=epel

いんすこ確認

コード表示

[oracle@centos ~]$ sudo yum install -y R --enablerepo=epel
[oracle@centos ~]$ R --version
R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.
[oracle@centos ~]$ which R
/usr/bin/R

動作確認

インタラクティブモードの終了はCTRL+Dを2回。

コード表示

[oracle@centos ~]$ R

R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。 
一定の条件に従えば、自由にこれを再配布することができます。 
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 

R は多くの貢献者による共同プロジェクトです。 
詳しくは 'contributors()' と入力してください。 
また、R や R のパッケージを出版物で引用する際の形式については 
'citation()' と入力してください。 

'demo()' と入力すればデモをみることができます。 
'help()' とすればオンラインヘルプが出ます。 
'help.start()' で HTML ブラウザによるヘルプがみられます。 
'q()' と入力すれば R を終了します。 

> x<-data.frame(Titanic)
> x
   Class    Sex   Age Survived Freq
1    1st   Male Child       No    0
2    2nd   Male Child       No    0
3    3rd   Male Child       No   35
4   Crew   Male Child       No    0
5    1st Female Child       No    0
6    2nd Female Child       No    0
7    3rd Female Child       No   17
8   Crew Female Child       No    0
9    1st   Male Adult       No  118
10   2nd   Male Adult       No  154
11   3rd   Male Adult       No  387
12  Crew   Male Adult       No  670
13   1st Female Adult       No    4
14   2nd Female Adult       No   13
15   3rd Female Adult       No   89
16  Crew Female Adult       No    3
17   1st   Male Child      Yes    5
18   2nd   Male Child      Yes   11
19   3rd   Male Child      Yes   13
20  Crew   Male Child      Yes    0
21   1st Female Child      Yes    1
22   2nd Female Child      Yes   13
23   3rd Female Child      Yes   14
24  Crew Female Child      Yes    0
25   1st   Male Adult      Yes   57
26   2nd   Male Adult      Yes   14
27   3rd   Male Adult      Yes   75
28  Crew   Male Adult      Yes  192
29   1st Female Adult      Yes  140
30   2nd Female Adult      Yes   80
31   3rd Female Adult      Yes   76
32  Crew Female Adult      Yes   20
> summary(x)
  Class       Sex        Age     Survived      Freq       
 1st :8   Male  :16   Child:16   No :16   Min.   :  0.00  
 2nd :8   Female:16   Adult:16   Yes:16   1st Qu.:  0.75  
 3rd :8                                   Median : 13.50  
 Crew:8                                   Mean   : 68.78  
                                          3rd Qu.: 77.00  
                                          Max.   :670.00  

大量データ扱う時のレスポンスとか気になる

sqlみたいで楽しい。楽でいいな。

qiitaのストック記事が500件だった

こういうのをスクレイピングと呼ぶのかわからないが楽しい

grep -Pだとパール正規表現使えるぽい。u-link-no-underlineの指定を汎用的にかきたいね。ハイフン以外の文字列とハイフンで指定するのかな??

コード表示

curl -s https://qiita.com/ukijumotahaneniarukenia/like?page={1..25} | grep -o "\<a class=\"u-link-no-underline\" .*" | grep -o "href.*" | grep -oP ".*(?=</a)" | sed -e 's/href="//' -e 's/\">/\t/' | awk '{print "https://qiita.com"$1"\t"}{$1="";print $0" ""UNKO"}' | sed ':a;N;/UNKO/!ba;s/\n\{1,\}/ /g;s/UNKO//g;' | nl

generate-script.awkなるものを読んで思った所感

参考文献

 

参考にしたコマンド

上田さんのシェルこうそく開発手法にopenコマンド出て来て、それはmacだったので、linuxだとxdg-openにあたるぽい。徐にソースコードを落として適当に漁った。面白くて楽しい本!第2版も買いたいんだよなー。

フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門  
コード表示

[oracle@centos scripts]$ xdg-open --version
xdg-open 1.1.0 rc1
[oracle@centos scripts]$ yum provides xdg-open | grep -B 4 "$(which xdg-open)"
xdg-utils-1.1.0-0.17.20120809git.el7.noarch : Basic desktop integration
                                            : functions
リポジトリー        : base
一致          :
ファイル名    : /usr/bin/xdg-open
--
xdg-utils-1.1.0-0.17.20120809git.el7.noarch : Basic desktop integration
                                            : functions
リポジトリー        : @anaconda
一致          :
ファイル名    : /usr/bin/xdg-open

ソースコードダウンロード

こういうのは規格とか調べないと汎用的なものは作れなそう

コード表示

[oracle@centos src]$ cat install.sh
#!/bin/bash

sudo yumdownloader --source xdg-utils-1.1.0-0.17.20120809git.el7.noarch

rpmdev-extract xdg-utils-1.1.0-0.17.20120809git.el7.src.rpm

cd xdg-utils-1.1.0-0.17.20120809git.el7.src

tar -xvf xdg-utils-1.1.0-20120809git.tar.gz

適当にファイル用意した

外部ファイルをgetlineでパス指定して読み込むんかーと。マークをsedで削除しちゃっているけど。ちなみにANKOはあんこじゃない。あんこの絵文字ない。

コード表示

[oracle@centos awk]$ ll ANKO UNKO gen.awk exclude.sed in out
-rwxr-xr-x. 1 oracle docker  72  7月 14 10:20 ANKO
-rwxr-xr-x. 1 oracle docker  72  7月 14 10:20 UNKO
-rw-r--r--. 1 oracle docker  16  7月 14 10:30 exclude.sed
-rwxr-xr-x. 1 oracle docker 172  7月 14 10:19 gen.awk
-rwxr-xr-x. 1 oracle docker  60  7月 14 10:24 in
-rw-r--r--. 1 oracle docker 194  7月 14 10:33 out
[oracle@centos awk]$ cat ANKO
for i in $(yes "$(echo -ne '\U1F194')" | head -n 5);do echo -ne $i;done
[oracle@centos awk]$ cat UNKO
for i in $(yes "$(echo -ne '\U1F4A9')" | head -n 5);do echo -ne $i;done
[oracle@centos awk]$ cat exclude.sed
/UNKO/d
/ANKO/d
[oracle@centos awk]$ cat gen.awk
#!/usr/local/bin/awk

{
  print
}

/UNKO/{
  while (getline < "./UNKO")
    print
  close ("./UNKO")
}

/ANKO/{
  while (getline < "./ANKO")
    print
  close ("./ANKO")
}
[oracle@centos awk]$ cat in
#!/bin/bash

unko(){
UNKO
}

anko(){
ANKO
}

unko
anko
echo
[oracle@centos awk]$ cat out
#!/bin/bash

unko(){
for i in $(yes "$(echo -ne '\U1F4A9')" | head -n 5);do echo -ne $i;done
}

anko(){
for i in $(yes "$(echo -ne '\U1F194')" | head -n 5);do echo -ne $i;done
}

unko
anko
echo

実行

いろいろごったに。三位一体感ある。teeでoutファイルを生成しつつ、結果を標準出力にだす。これはdebugしやすそう。


[oracle@centos awk]$ awk -f gen.awk in | sed -f exclude.sed | tee out | bash
💩💩💩💩💩🆔🆔🆔🆔🆔
[oracle@centos awk]$ ./out
bash: ./out: 許可がありません
[oracle@centos awk]$ chmod +x ./out
[oracle@centos awk]$ ./out
💩💩💩💩💩🆔🆔🆔🆔🆔

所感

切り出すと、どこに何かいたか把握するのたいへんなんだよな。ただ、それも楽しい。

bashの配列であそんだ

参考文献

配列の初期化

コード表示

[oracle@centos ~]$ echo {a..c} | sed -e 's/ /\n/g'
a
b
c
[oracle@centos ~]$ while read line;do echo ${line}; done < <(echo {a..c} | sed -e 's/ /\n/g')
a
b
c
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ echo ${ary[@]}
a b c
[oracle@centos ~]$ echo ${#ary[@]}
3
[oracle@centos ~]$ ary=($(echo {a..c} | sed -e 's/ /\n/g'))
[oracle@centos ~]$ echo ${#ary[@]}
1
[oracle@centos ~]$ echo ${ary[@]}
a
b
c
[oracle@centos ~]$ ary=($(echo {a..c}))
[oracle@centos ~]$ echo ${#ary[@]}
1
[oracle@centos ~]$ echo ${ary[@]}
a b c

配列のコピー

こんなかんじ

コード表示

[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ echo ${ary[@]}
a b c
[oracle@centos ~]$ echo ${#ary[@]}
3
[oracle@centos ~]$ aryy=(${ary[@]})
[oracle@centos ~]$ echo ${aryy[@]}
a b c
[oracle@centos ~]$ echo ${#aryy[@]}
3

配列参照するときインデックス気にしなくてイイ

コード表示

[oracle@centos ~]$ ary=($(echo {a..c}))
[oracle@centos ~]$ for i in ${ary[@]};do echo $i; done
a b c
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for i in ${ary[@]};do echo $i; done
a
b
c

配列の添字てんかいできるんだね、インデックス気にしたいならこっちか

コード表示

[oracle@centos ~]$ ary=($(echo {a..c}))
[oracle@centos ~]$ echo ${!ary[@]}
0
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ echo ${!ary[@]}
0 1 2
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]};done
0-->a
1-->b
2-->c
[oracle@centos ~]$ for ((i=0;i<${#ary[@]};i++));do echo $i'-->'${ary[$i]};done
0-->a
1-->b
2-->c

配列の要素追加とか要素削除とか

一括削除、一括生成。コピーとか。

コード表示

[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for ((i=0;i<${#ary[@]};i++));do echo $i'-->'${ary[$i]};done
0-->a
1-->b
2-->c
[oracle@centos ~]$ while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for ((i=0;i<${#ary[@]};i++));do echo $i'-->'${ary[$i]};done
0-->a
1-->b
2-->c
3-->a
4-->b
5-->c
[oracle@centos ~]$ for ((i=0;i<${#ary[@]};i++));do echo $i'-->'${ary[$i]};done
0-->a
1-->b
2-->c
3-->a
4-->b
5-->c
[oracle@centos ~]$ unset ary[@]
[oracle@centos ~]$ for ((i=0;i<${#ary[@]};i++));do echo $i'-->'${ary[$i]};done
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
1-->b
2-->c
[oracle@centos ~]$ unset ary[1]
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
2-->c
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
1-->b
2-->c
[oracle@centos ~]$ unset ary[0]
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
1-->b
2-->c
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
1-->b
2-->c
[oracle@centos ~]$ unset ary[2]
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
1-->b
[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..c} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
1-->b
2-->c
[oracle@centos ~]$ unset ary[1]
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
2-->c
[oracle@centos ~]$ tmp=(${ary[@]});while read line;do ary=();ary+=(${line}); done < <(echo ${tmp[@]})
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[$i]}; done
0-->a
1-->c

配列のスライス的な奴

コード表示

[oracle@centos ~]$ ary=();while read line;do ary+=(${line}); done < <(echo {a..z} | sed -e 's/ /\n/g')
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i'-->'${ary[@]:0:$i}; done
[oracle@centos ~]$ for i in ${!ary[@]};do echo $i+1'-->'${ary[@]:0:$i+1}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(($i+1))'-->'${ary[@]:0:$i+1}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $i+1'-->'${ary[@]:-($i+1)}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $i+1'-->'${ary[@]: -($i+1)}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(($i+1))'-->'${ary[@]: -($i+1)}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(printf '%02d' $(echo $(($i+1))))'-->'${ary[@]: -($i+1)}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(printf '%02d' $(echo $(($i+1))))'-->'${ary[@]: -($i+1)}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(printf '%02d' $(echo $(($i+1))))'-->'${ary[@]:0:$i+1}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(printf '%02d' $(echo $(($i+1))))'-->'${ary[@]:$i:$i+1}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(printf '%02d' $(echo $(($i+1))))'-->'${ary[@]:$i:1}; done

[oracle@centos ~]$ for i in ${!ary[@]};do echo $(printf '%02d' $(echo $(($i+1))))'-->'${ary[@]:-$i:1}; done

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]$