この記事について
このページでは非エンジニア職向けの方向けにコマンドラインでの操作をご紹介したいと思います。。
コマンドラインとは
通常コンピュータを操作するときは、マウスやトラックパッドをつかって画面を操作し、クリックしたりして操作しています。コマンドラインは、そのような使い方と異なり、コマンドというコンピュータが理解できる言語を使い直接コンピュータに命令して、処理をしてもらうものになります。
一般に下のような黒い画面にコマンドを打ち込んで操作します。
よくエンジニアが使っている黒い画面ですね。
コマンドラインを覚えると便利なこと
そんなコマンドラインですが、非エンジニアでも覚えておくとこんな便利がことがあります。
データ操作が楽になる
こんなケースないでしょうか。
- 過去5年の取引リストから顧客リストを作ることになりました。送られてきたのは10万件のExcelデータ、関数などを駆使して操作するにもデータ量が多すぎてとても重い...
こんな時に、CSVファイルつまり、カンマ(,)区切りのテキストファイルに変換した上でコマンドラインで操作するとExcelよりも簡単に操作できたりします。
例えばこんな風なコマンドを書きます。
$ cat original_data.csv | awk -F, '!a[$2]++' > unique.csv
たったこれだけでできます!
ちょっとした操作はアプリインストール不要になる
例えば、電卓です。どんなPCにも電卓はあると思いますが、()を使った複雑な計算をしたくなったときなどがあります。エクセルや関数電卓を使う、デフォルトより高度な電卓アプリをインストールするなどもありますが、コマンドを覚えるとこんな使い方もできます。
$ bc
3 * (2 + 4)
18
コンピュータの教養が身につく、プログラミングを覚える第一歩になる
コマンドを覚えることは、コンピュータの根幹を知る第一歩になります。今回はとりあげませんが、コマンドを複数つなげていくシェルスクリプトというプログラミングもあります。プログラミングを覚えるための第一歩となります。※コマンドより先にプログラミングやりたい!というかたは、もしよろしければ「プログラミング入門について自分の経験を元にまとめてみる」も読んでみてください。
コマンドの種類
それでは早速コマンドを覚えていきましょう!としたいところですがその前にコマンドも言語ですので、方言があります。ここではそれについて簡単に触れます。
Unixコマンド
Unixというコンピュータでは最もよく使われるオペレーティングシステム(OS)の仕様・規格です。そこで使われていたコマンドです。Macはこのコマンドを採用しています。
Linuxコマンド
Unixは商用であったため、無料でつかるようにとして考えられたものがLinuxです。Unixから派生したものであるため、初心者は実質同一と思ってもらって問題ありません。言語的な違いでは、アメリカ英語とイギリス英語くらいの違いのイメージで持つと良いかもしれません。
MS-DOSコマンド
Windowsに関してはUnix/Linuxとは違う歴史で作られました。そのため、Ms-DOSという全く違う言語となっています。一応Unixと似たコマンドもあるものの、Linuxと違い全く違う言語として学習する必要があります。
もっとも最近はPoweShellというUnix/Linuxコマンドを使えるアプリケーションがデフォルトで同梱されているため、いったん初心者はUnix/Linuxを学習するという方針であれば、問題ありません。
コマンドを使うためには
一般的なPCには必ずコマンドを使うアプリケーションがあります。それぞれのOSで使えるアプリケーションを紹介します。
Windowsの場合
Windowsの場合はPowerShellというアプリを使用します。なお、コマンドプロンプトというアプリでも使えますが、こちらはMS-DOSの言語となるため、初心者はUnix/Linuxコマンドが使えるPowerShellの方をお勧めします。なお、細かいことであるので初心者は覚える必要はないかと思いますが、PowerShellで打ち込むコマンドは、コマンドレットといわれています。PowerShellは入力されたコマンドレットをMs-Dosコマンドに変換してコンピュータに処理させています。
Macの場合
Macの場合はターミナルというアプリケーションを使います。
簡単な入門
それでは、簡単なコマンドを紹介します。
pwdコマンド-カレントディレクトリの現在位置を確認する
コマンドラインを操作する際に、現在どのディレクトリ(フォルダ)にいるかということがポイントになります。普段のPCの操作で言うと、Windowsならエクスプローラー、MacならFinderで、どのディレクトリ(フォルダ)を今見ているかを確認することになります。コマンドライン操作をする際に現在いる位置のことをカレントディレクトリといいます。
pwdコマンドはカレントディレクトリが現在どこであるのか教えてくれます。
早速コマンドを入力してみましょう。コマンドは入力したあとEnterキーを押すことで実行されます。
$ pwd
/Users/miyau/Desktop/directory1/directory2/
lsコマンド-カレントディレクトリにあるファイルを知る
lsコマンドは、カレントディレクトリ上にどんなファイル、ディレクトリがあるのか確認します。
$ ls
animate.css bootstrap.css.map owl.carousel.min.css
bootstrap-grid.css icon.css style.css
bootstrap-reboot.css luminous-basic.min.css
bootstrap.css main.css
上は実行結果です。ここではanimate.cssなど10個のファイルがあるということを表しています。
lsコマンドには後ろにスペースを入れた後オプションを入れることもできます。OSや環境にもよりますが、Macであれば例えば-laをつけると各ファイルの詳細を確認します。
$ ls -la
total 816
drwxr-xr-x 13 miyau staff 416 7 4 02:22 .
drwxr-xr-x 7 miyau staff 224 6 15 00:55 ..
-rw-r--r--@ 1 miyau staff 6148 6 15 00:51 .DS_Store
-rw-rw-r--@ 1 miyau staff 24196 2 11 2019 animate.css
-rw-rw-r--@ 1 miyau staff 45805 2 11 2019 bootstrap-grid.css
-rw-rw-r--@ 1 miyau staff 4990 2 11 2019 bootstrap-reboot.css
-rw-rw-r--@ 1 miyau staff 196346 2 11 2019 bootstrap.css
-rw-rw-r--@ 1 miyau staff 73699 2 11 2019 bootstrap.css.map
-rw-r--r-- 1 miyau staff 1722 3 9 2018 icon.css
-rw-rw-r--@ 1 miyau staff 3484 5 17 04:51 luminous-basic.min.css
-rw-r--r-- 1 miyau staff 1404 5 19 23:32 main.css
-rw-rw-r--@ 1 miyau staff 3440 2 11 2019 owl.carousel.min.css
-rw-rw-r--@ 1 miyau staff 39305 7 4 02:22 style.css
見たことがない値がたくさんでていますが、いったん末尾がファイル名、その1つ前が最終更新日時さらにその次がファイル容量です。例えばanimate.cssは2019/2/11が最終更新日で24196byteの容量があるということです。
cdコマンド-ディレクトリの移動
カレントディレクトリを移動するコマンドがcdコマンドです。このように使います。
# このディレクトリにいるとします。
$ pwd
/home/miyau
# ファイルとディレクトリの確認をします
$ ls
directory1 directory2 test.txt hello.txt
# directory1に移動します。
$ cd directory1
# pwdをおこなうと移動したことがわかります。
$ cd /home/miyau/directory1
# lsをするとそのディレクトリのファイルやフォルダを確認できます。
$ ls
subdirectory1 subdirtext.txt
# 一つ上に戻る場合は..をします。
$ cd ..
$ pwd
/home/miyau
cat-ファイルの中身の表示
catコマンドはファイルの中身を表示します。
# hello.txtというテキストファイルがあるとします。
$ ls
hello.txt
$ cat hello.txt
こんにちは
なおcatで表示できるのはテキストのみです。画像などはバイナリデータという形式のファイルのため、表示できません。表示しようとすると文字化けした大量の文字を出し続けてしまいます。もしもcatしてしまった場合、ctrl+Cで止めることができます。
touch-ファイル作成
touchコマンドはファイルを作成します。
$ touch file.txt
# ファイルが作成されました。
$ ls
file.txt
このままだと、ファイルを作っただけでこのファイルは空のファイルです。後述する操作を使ってファイルに文字を入れていきます。
echo-文字列の出力
echoコマンドは指定された文字列を出力します。
$ echo "こんにちは"
こんにちは
これだけだと、ただ文字を出力するだけですが、次の出力制御によりファイルの文字列追加などができます。
>による出力制御
>や>>を使うと、ファイルに文字を出力して保存することができます。
# > でhello.txtに文字を追加します。
$ echo "こんにちは" > hello.txt
$ cat hello.txt
こんにちは
# > は使うたびに上書きされてしまいますが、>>は既存のファイルの末尾に文字を追加します。
$ echo "こんにちは" > hello.txt
$ echo "こんばんは" >> hello.txt
$ cat hello.txt
こんにちは
こんばんは
mkdir-ディレクトリ作成
mkdirコマンドはファイルを作成します。
$ mkdir mytestdir
# ディレクトリが作成されました。
$ ls
mytestdir
# cd で移動できます。
$pwd
/home/user/hoge
$ cd mytestdir
$ pwd
/home/user/hoge/mytestdir
rm-ファイル・ディレクトリ削除
rmコマンドはファイルやディレクトリを削除します。
UNIXコマンドで最も怖いコマンドと言われ、デスクトップ操作上の削除と違い、ゴミ箱に残りません。使うときは -i オプションをいれて使うことが一般的です。このことで本当に削除していいですかという警告が出て一段確認をいれることができます。
#
$ ls
text.txt mytestdir
# ファイルを削除
$ rm -i text.txt
# 本当に削除しますかとでます。yと入力してエンターを押すと消すことができます。
# 間違っていた場合はnと入力してキャンセルできます。
remove test? y
# 消えました
$ ls
mytestdir
# ディレクトリはrオプション追加でできます。確認のiと合わせると-riとなります。
$rm -ri mytestdir
remove mytestdir? y
# 消えました
$ ls
アプリケーション実行
ファイルがアプリケーションファイルである場合、ファイル単体を指定することでファイルを実行します。
$ ls
chrome.exe
$ ./chrome.exe
.とはカレントディレクトリを指します。./chrome.exeとすることでカレントディレクトリのchrome.exeを実行というコマンドになります。
応用的な使い方
ここまでが基本的な使い方でした。最後に簡単に応用的な使い方を紹介します。今回はファイルの中身を検索する方法についてご紹介します。検索の方法はWindowsとMacでことなります。
$ cat sample.txt
おはようございます
おはようございます
こんにちは
こんにちは
こんばんは
こんばんは
# Windowsの場合
$ findstr "こんにちは" sample.txt
こんにちは
こんにちは
# MACの場合
$ grep "こんにちは" sample.txt
こんにちは
こんにちは
さらなる学習をしたい方へ
コマンドラインで利用するプログラミング言語を覚えてみる
ここまで覚えれば、Pythonなどのプログラミング言語を覚えることでより便利にデータの処理などができるようになります。はじめてのプログラミングとしてのPython入門(基本編)という記事を書きましたのでもし興味がありましたらこちらも読んでみてください。
検索して探してみる
基本は検索すれば、やりたいことは見つかります。例えば先述のファイルの検索は「コマンドライン 文字検索 Windows」などで検索すれば出てきます。なにか、こういう操作できないかなと思ったら検索して調べて知っていくことをおすすめします。
本を一冊買ってみる
辞書的な目的で一冊本を買ってみることもおすすめです。MacまたはLinux系のOS向けですが、私は新米時代以下を購入して辞書的に使っていました。この他にもWindowsコマンドやUnixコマンド、Linuxコマンドなどで検索すれば本が出てくるので一冊手にとってみても良いと思います。
おわりに
以上が非エンジニア向けのコマンドラインの入門講座でした。もしも便利と思って覚えてみようと思っていただける方がいましたら幸いです。
Photo by: Matthew Henry