データアナリストもLinuxについて学んでみる


はじめに

もともとデータアナリストとして働いているのですが、最近、エンジニアと一緒に仕事をすることが増えたので、良いとされている教科書を読むなどしています。その中で、『新しいLinuxの教科書』がわかりやすく書かれていたので、今回はそこで出てきたコマンドたちを箇条書きにして忘備録としておきたいと思います。なのでいつもよりショボいです。
普段、Rをメインとして機械学習・クローリング目的でPythonを扱うものとしては、エンジニア寄りの知識が薄いなぁと課題に感じていたので、これを良い機会と思ってCLIへの耐性を付けていきたいと思います。

感想

分析業務において、仮想環境でCentOSやUbuntuを扱うことはあるのですが、分析環境を作った上で、クローリング業務・RPAシステムなどのスケジュール実行をするくらいで基礎からちゃんと勉強したわけではありませんでした。そのため、教科書には知らないコマンドもありました。
この本はLinuxを使って開発する際の作法(移植性大事、GUI使うな、十字キー使うな)から、歴史的なコマンドの変遷、シェルスクリプトを用いた作業の効率化、Gitなどのチーム開発ツールの紹介まで幅広く扱われていて十分な内容だと思いました。図による解説もあるので、普段R使っているような非エンジニアでも読めるはずです。これからエンジニアと一緒に分析業務をしていくデータアナリストの方には強くおすすめできる本だと思います。Rでの当たり前の機能が、Linuxのシェルで普通にあるんだと色々と学びがありました。

コマンドたち

date

現在の日時の表示

echo

文字列の表示

pwd

現在のディレクトリを確認

cd

カレントディレクトリの変更

ls

ディレクトリ内のファイルの表示、オプションでパターン指定も可能

mkdir

ディレクトリを作成する、pオプションで深い階層も一気に作れる

touch

ファイルを作成する

rm

ファイル・ディレクトリを削除する

rmdir

空のディレクトリを削除する

cat

ファイルを表示する

less

ファイル内容をスクロール表示する

cp

ファイル・ディレクトリをコピーする

mv

ファイル・ディレクトリを移動する

ln

ファイルにリンクを張る

find

ディレクトリツリーからファイルを探す

locate

ファイル名データベースからファイルを探す(高速)、何日か前のファイルを探すの適している。

which

コマンドのフルパスを表示する

alias

エイリアスの設定(わかりやすい別名を与える)

set

bashのオプションを切り替える

shopt

bashのオプションを切り替える(種類豊富)

PATH

コマンド検索パス

printenv

環境変数の表示

export

環境変数の設定

sudo

コマンドをスーパーユーザとして実行

ps

プロセスの表示(x, ux, ax, aux, auxww)

jobs

現在のジョブ一覧を表示

fg

ジョブをフォアグラウンドにする(入力受付状態にする)

bg

ジョブをバックグラウンドにする

kill

ジョブ・プロセスを終了させる

|

パイプライン(処理と処理をつなぐ)
R使いからするとRのdplyrでパイプ処理を知ったので、Linuxに普通にあるのを知れて新鮮な気分になった。

head

先頭の部分を表示
こちらもRでよく使うものですね。

du

指定したファイルやディレクトリの使用容量を表示する

wc

入力ファイルの行数・単語数・バイト数を数える

sort

行単位でテキストを並び替える

uniq

同じ内容の行を省く

cut

入力の一部を切り出して出力する(元データから特定の部分を抽出したい際など)

tr

入力の文字を置き換える・削除もできる(-d)

tail

ファイルも末尾部分を表示する

diff

二つのファイルの差分を表示する

grep

文字列を検索する

sed

テキストの編集を元ファイルを変更せずに行える

awk

テキストの検索や抽出・加工などの編集操作を行う(sedより高機能で、スクリプトは「パターン」と「アクション」からなる)
・列選択もできる
 ・CSVファイルからのスコア集計などもできる。
 ・あんちべさんの本『データ解析の実務プロセス入門』でも紹介されていた。

xargs

標準入力として引数のリストを与える(findやgrepとの組み合わせで使うことが多いらしい)

tar

ファイルをアーカイブファイルにまとめたり、アーカイブファイルから元のファイルを取り出したりする

gzip

ファイルを圧縮・展開する(一つのファイルしか圧縮できないのでtarとの併用を行う)

bzip2

gzipよりも高い圧縮率で圧縮を行うが、gzipよりも圧縮・展開に時間がかかる

zip

アーカイブと圧縮を同時に行う(多くのディストリビューションで標準インストールされていない。unzipも必要)

git

ファイル変更履歴を保存し管理するツール
 ・git init リポジトリを作成
 ・git add コミット対象として登録
 ・git commit コミットする
 ・git status ワークツリーの状態を表示
 ・git diff 差分を表示する
 ・git log 履歴を表示する
 ・git revert コミットを取り消す
 ・git branch ブランチの一覧表示、新しくブランチを作成
 ・git checkout ブランチを切り替える
 ・git merge 指定したブランチを現在のブランチにマージする
 ・git branch -d ブランチを削除する
 ・git push 変更の履歴を送る
 ・git clone リポジトリを複製する
 ・git remote add リポジトリパスに別名を設定する
 ・git fetch 他のリポジトリの変更を取り込む

yum

パッケージ管理(CentOS)
 ・yum install パッケージのインストール
 ・yum erase/remove パッケージのアンインストール、削除
 ・yum search パッケージの検索
 ・yum info パッケージの詳細情報を表示

apt

パッケージ管理(Ubuntu)
 ・sudo apt-get install パッケージのインストール
 ・sudo apt-get remove パッケージの削除
 ・sudo apt-get purge 設定ファイルも含めた完全削除
 ・apt-cache search パッケージを検索

ssh

リモートログインする

info

オンラインマニュアルを表示する(索引や階層構造を設定できるなどmanより充実)

参考文献

新しいLinuxの教科書