基本コマンドの紹介とその演習②|MacやLinuxのCUIを使いこなそう! #2

f:id:lib-arts:20190129191807p:plain

#1では諸々の経緯と基本コマンドについてまとめました。

#2では#1に引き続き、基本コマンドのご紹介を行っていければと思います。

以下目次になります。

1. #1の復習
2. 基本コマンド
3. まとめ

 

1. #1の復習

#1ではpwd、ls、cd、mkdir、touch、rm、viについて取り扱いました。

それぞれを簡単な対応形式でまとめましたので、整理に役立てていただけたらと思います。

pwd: カレントディレクトリの位置について把握することができる。

ls: カレントディレクトリのファイルリストについて把握できる。パスを指定すればカレントディレクトリ以外のパスも取得できる。

cd: ディレクトリの移動ができる。

mkdir: ディレクトリの作成ができる。

touch: ファイルの作成ができる。

rm: ファイルの消去ができる。

vi: ファイルの編集ができる。(結構覚えることが多いので詳細は#3で扱おうと思います)

上記が簡単な復習になります。2.では今回取り扱う内容として、cat、grep、>、<、|、psについて取り扱おうと思います。


2. 基本コマンド

今回も#1に引き続き、/Users/user_name/Desktop/for_studyにいる前提と考えます。

・cat

catはファイルの中身の取得です。『$ cat ファイル名』でファイルの中身を取得することができます。#1で作成したfile1.txtに何かしらの文字列、例えば「Linuxの勉強」と書き込んで保存したとします。この時、catを下記のように用いることでファイルの中身を取得することができます。

$ cat file1.txt

Linuxの勉強

 

grep

grepは何かしらのリストから検索を行うことができます。grepはこのあと解説する|(パイプライン)と組み合わせて使うことが多いです。|は先に解説になりますが、何らかのコマンドの結果を渡すという意味があります。ここでは簡易化のために、lsの結果をgrepに渡してみたいと思います。

$ ls

file1.txt file2.txt file3.txt dir1

$ ls | grep txt  #txtが含まれる場合のみ出力

file1.txt file2.txt file3.txt

上記のように何らかの他のコマンドの出力結果をgrepに渡すことで、柔軟な表示が可能になります。

 

・>

「>」のコマンドはファイルの標準出力をファイルに出力します。例えばフォルダのファイルリストを出力する際には「$ ls > a.txt」などを実行することでファイルリストを得ることができます。ちょっとした応用例ではPythonを用いている際にパッケージ管理コマンドでpipを用いているのですが、環境再現のためにパッケージ情報をテキスト化したい際があります。この際にpip freezeというパッケージ確認のコマンドを利用して「$ pip freeze > requirements.txt」を実行することでインストール用のファイルを作るなども可能です。

$ ls > a.txt   #a.txtにカレントディレクトリ内のフォルダリストが出力される

$ pip freeze > requirements.txt  #requirements.txtにパッケージの情報を出力できる(RubyでいうGemfileのようなものを作成できる)

 

・<

ファイルから読み込みを行います。実用例としてはsqlのファイルを出力したものを復元する際などに用いるのが便利です。

$ mysql -u USER_NAME -p -h HOST_NAME DB_NAME < OUTPUT_FILE_NAME

例えば上記のようなものを実行することで、DBにデータを復元したりすることができます。あとはgrepを用いて検索して出すなども考えられるかもしれません。

 

・|

パイプラインは非常に便利です。あるコマンドの出力をあるコマンドの入力にできます。便利な例の一つとしては前述のようなgrepとの組み合わせがあるかと思います。grepに限らず、次に説明するpsとの組み合わせもなかなか強力です。(それぞれgrep、psのところで具体例をまとめます)

 

・ps(応用)

現在動いているプロセスを出力してくれるコマンドです。別途立ち上げたアプリを切りたいときなどに便利です。

$ ps | grep mysql

6142 ....... 0:00.01 mysql
6534 ....... 0:00.00 grep mysql

$ kill mysql

例えば上記のように行えば別途動作しているmysqlなどを切ることができます。この辺はたまに重たい処理を実行した際に実行したところから終了できない場合などはgrepで検索してkillを用いて切るなどで対処します。最初は意識しないで良いと思うので、追々抑えておけば良いかと思います。


3. まとめ

大体の基礎コマンドは抑えられたと思うので、#3から少しずつ難易度を上げていければと思います。