アラサーOL|ターミナル操作入門(pythonを学び始める前に1)

アラサーOLのためのpython入門講座
プログラミングで操作するので、慣れればGUIより高速にパソコンを操作できます。

Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。

今回は「アラサーOLのためのpython入門講座」です!
この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!
パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。

pythonを実際に動かす前に準備をしていきます。
まずは「ターミナル」や「端末」と呼ばれるCUI(Character User Interface)の初歩的な使い方を覚えましょう!
CUIでは、パソコンに実行させたい処理をコマンド文として入力することで実行することができます。
pythonを本格的に始めるにはCUIを使って環境構築をする必要があります。
またCUIの使い方を覚えることで、プログラミングの感覚を養うことができます。
さらに、ファイルの一括処理ができたり、pythonを立ち上げて簡単な計算をパッと行えるといったGUIにはないメリットもあります。

この記事に関連して、プログラミング独特の用語や今回扱うターミナルのコマンド集は別記事にまとめてあります。
随時更新しますのでそちらもご参考ください。
なお、今回の記事はMac (macOS)が前提となります。
Linux OSなどのUnix系OSでは大部分は共通しますが、Windowsでは勝手が異なりますのでご了承ください。
Macを持っている方は、記事を読みながら一緒に操作してみましょう!

Abstract | CUI操作でプログラミングの基礎感覚を身につけよう

CUIとはコンピューターを動かす命令(コマンド)を、コンソールと呼ばれる画面に文字列として入力することで実行するユーザーインターフェース様式です。
現在では、パソコンの操作はGUIという画面上のアイコンやボタンをぽちぽち押して操作する方式が主流ですが、

  • ファイルの一括操作
  • プログラミング的な自動操作

をする場合にはCUIが便利です。

pythonプログラミングでは、

  • 環境構築
  • プログラムの実行
  • ライブラリのインストール

などの場面でCUI操作が必要になります。
また、コマンド(命令文)をコンピュータに投げて実行させるという操作を覚えることは、プログラミングの感覚を身につけるのにも役立ちます。
この記事では、MacやLinuxなどのUNIX系OSのCUIであるターミナルを使って、基本的なCUIの使い方をご紹介します。
記事を読みながら、実際に一緒に操作をしてみてください!



Background | CUIでできること

CUIとは、character user interface, character-based user interface, console user interfaceの略で、command line interface, CLIとも呼ばれます。
初期のコンピューターは

  • 命令を入力して実行する
  • 結果が返ってくる
  • 次の命令を入力して実行する

というCUIを用いた対話形式での操作が主流でした。

現在では、画面上のアイコンやボタンをぽちぽちやってパソコンを操作するGUIが主流ですが、ファイルの一括操作など、同様の処理を繰り返す場合やプログラミングでパソコンを操作する場合にはCUIが圧倒的に便利です。

Unix系OSとCUI

パソコンのOSは大きく分けてUNIX系と非UNIX系があります。
現在のmacOSやLinux OSはUNIX系(Wikipedia)のシステムです。
UNIX系OSの特徴として、操作性の高い(と私をはじめ多くの人が感じている)CUIが挙げられます。
UNIX系のCUIを使えば、ファイルの一括操作などが簡単に行えます。

CUIにはコマンドという文字列を入力することで行いたい処理を実行します。
UNIX系CUIでは、macOSやLinux OSなどのOSの種類によらず、ほとんどのコマンドが共通しています。
非UNIX系OSであるWindowsにもWindows Power ShellやコマンドプロンプトなどのCUIが用意されていますが、UNIX系OSとはコマンドが異なります。
このブログではUNIX系OSを念頭に記事を書いておりますので、ご了承ください。

CUIでできること

CUIでは、通常GUIでボタンやアイコンをぽちぽち押して行う操作をコマンドの入力によって行うことができます。
特に、ファイル名を一括で変更したり、似た名前のファイルを全て移動したり消去するなど、同じ処理を繰り返す場合に力を発揮します。
例えば、あるディレクトリに

  • hogehoge00.txt
  • hogehoge01.txt
  • hogehoge99.txt

という100個のファイルがあり、これらを

  • hogehoge00.txtからhogehoge09.txtまではhogehoge0というサブディレクトリに
  • hogehoge10.txtからhogehoge19.txtまではhogehoge1というサブディレクトリに

という処理をしたいとします(下図1)。

図1. 手作業では面倒な作業の例

この処理をGUI(MacならFinder、WindowsならExploler)で行う場合には、hogehoge0からhogehoge9というサブディレクトリを作成し、ファイルを10個ずつ移動するということを手作業でやる必要があります。
ファイルが100個ならまだ手作業でも行えるかもしれませんが、1000や10000になったら手作業ではとても大変ですよね。
CUIを使えばこのような作業でもコマンドを数行書くだけで終わります。
以下のようなコマンドを書いてEnterを押します。簡単です!

for ((ii=0; ii<10; ii++)); do d_i=hogehoge${ii}; mkdir ${d_i}; mv ${d_i}?.txt ${d_i};done

このブログでは、上の書式(薄い四角で囲まれた文字)は何らかの言語のプログラミングのコマンドを意味します。
ここではターミナルにコピペするか同じように入力して実行すれば、コマンドとして実行できます。

ちなみにhogehoge01.txtからhogehoge99.txtを作成するのも次のコマンド1行でできます。

for ((ii=0; ii<100; ii++)); do f_i=`printf "hogehoge%02d.txt" ${ii}`; echo ${f_i} > ${f_i} ;done

また、GUIでは行えない処理がCUIで行える場合もあります。
例えば、zipファイルを暗号化する処理はMacでは私の知る限りでは何かしらのアプリを入れないとできません。
しかしCUIを使えばzipcloakというコマンドを打つだけで暗号化が可能です。

CUIの弱点は、操作が直感的ではなくコマンドを知っている必要があるということです。
GUIでぽちぽちやってすぐにできる作業はわざわざCUIでやる必要はないと言えます。
そもそもGUIは、コマンドを記憶していないと直感的な操作が行えないCUIを使わずにパソコンを操作するために開発されたものです。
このような弱点はあれど、基本的なコマンドをいくつか覚えておけば、一括処理や自動処理など、CUIでしかできない作業やメリットが活かせる作業ができます!

今回はCUIの基本的な使い方をご紹介します!
「コマンドをパソコンに投げて処理をさせる」という操作はpythonなどのプログラミングにも共通するものです。
CUIを使えるようになることでプログラミングの知識も深まり、上達が加速することは間違いありません!
この機会に覚えてしまいましょう!

pythonの環境構築

pythonでプログラミングを行うにあたって、環境構築という作業が必要です。
CUI(ターミナル)による操作は、その作業にも必要です。
Macにはデフォルトでpythonが入っていますが、そのままだと便利なライブラリが使えなかったり、バージョン管理が面倒だったりします。
そこで、pyenv, anaconda, pipなどの管理ソフトウェアを使います。
M1 Macではminiforgeを使います(詳しくはこちらの記事→「アラサーOL|python環境構築入門(python3.9をM1 Macにインストールしよう!)」)。
これらをインストールし、pythonのバージョン管理や追加ライブラリのインストールを行うのにCUIによる操作が必要になります。
また、pythonの実行をCUIから行うこともできますのでCUI(ターミナル)の使い方を覚えておいて損はありません!



Method | CUIを使ってみよう!

さっそくCUIを使ってみましょう!
なお、作業環境はmac OSを想定します。
M1チップのMacBook Airでの操作例をご紹介しますが、Macであれば大きな違いはありません。
IntelチップのMacでも同じように操作してください。

ターミナルを立ち上げる方法

Macでは、ターミナルというアプリケーションでCUIによるパソコン操作を行うことができます。
まずはターミナルを立ち上げる方法をご紹介します!

アプリケーションから立ち上げる方法

以下のようにして、アプリケーションからターミナルを立ち上げてみましょう!

  • Finderを開く
  • 「アプリーケーション」に移動
  • 「ユーティリティー」に移動
  • 「ターミナル」をダブルクリック
図2. ターミナルを起動する手順

すると、下図3のような画面が開きます。
これがターミナルです。端末やシェルと呼ぶこともあります。

図3. ターミナルのウィンドウ

ターミナルをDockに登録しておこう!

いちいちFinderから開くのは面倒なので、Dock(画面下部のバー)にターミナルを入れておきましょう!
そうすれば、Dockに表示されるアイコンをクリックするだけでターミナルを立ち上げることができます。
以下のようにしてDockに登録します。

  • Finderで「アプリケーション」→「ユーティリティー」を開く
  • 「ターミナル」を画面下のDockにドラッグアンドドロップする
図4. ターミナルをDockに登録しましょう

ターミナルを使ってみよう!

では実際にターミナルにコマンドを入力して実行してみましょう!

現在のディレクトリを表示する: pwd

ターミナルに

pwd

と入力して実行(Enterを押す)してみてください。
このブログでは上記の書式で書かれた文字列はコードを表します。
ターミナルの画面にコピペするか同じように入力すれば、コマンドとして実行できます。

実行すると、下図5のように、現在の場所(カレントディレクトリ)までのパスがターミナル上に表示されます。

図5. pwdの実行例

ディレクトリを作成する: mkdir

mkdirでディレクトリを作成することができます。

mkdir ex1

とすると、カレントディレクトリの直下に”ex1″というディレクトリが作成されます。

mkdir -p ex1/ex2

というように、”-p”オプションを使うと、ツリー構造を作ることができます。

Finderで確認してみましょう(ちなみにFinderはMacOSのGUIです)。
下図5-2のように、ホームディレクトリの直下に”ex1″というディレクトリが作成され、その下に”ex2″というディレクトリが作成されているはずです。

図5-2 Finderで作成されたディレクトリをチェックする

ディレクトリを移動する: cd

カレントディレクトリから移動するにはcdを使います。

cd ex1

とすれば、ex1に移動できます。存在しないディレクトリには移動できません。

単に、

cd

とすれば、ホームディレクトリに移動します。

Finderで探したディレクトリに移動する方法

ターミナルを開くと、デフォルトではホームディレクトリがカレントディレクトリとなります。
別のディレクトリにあるファイルを操作する時などに、ディレクトリを移動する必要があります。
CUIだけで移動しようとすると、いちいち文字列で移動先の場所を入力する必要がありますが、面倒ですよね。

そんなときにはFinderであらかじめ探しておいた場所に移動する方法があります。
Finderの画面から、移動先のディレクトリをターミナルの画面にドラッグアンドドロップすると、そのディレクトリのフルパスがターミナルに入力されます。
なので、

  • ターミナルに”cd “と入力
  • Finderから移動先ディレクトリをドラッグアンドドロップ
  • エンター

とすれば、所望の場所に移動できます。

図6. Finderから移動先ディレクトリを持ってくる方法

この操作をやってみて、先程つくった”ex1″というディレクトリに移動しておきましょう。
おそらくホームディレクトリ直下にあるはずなので、Finderで探してみてcd + drag&dropで移動しましょう。

ファイルの一覧を表示する: ls

ファイルやディレクトリの一覧を表示するにはlsというコマンドを使います。

ls

とするとカレントディレクトリに存在するファイルの一覧を表示できます。

ls ..

とすれば、一つ上のディレクトリのファイル一覧を表示できます。

ワイルドカードを使う: *, ?

部分的に名称がわかっているファイルやディレクトリの情報を得たい時には、ワイルドカードと呼ばれる表記を行います。
試しに以下のコマンドを実行してみましょう。

mkdir ex1
cd ex1
for ((ii=0; ii<100; ii++)); do echo ${ii}; f_i=`printf "hogehoge%02d.txt" ${ii}`; echo ${f_i} > ${f_i} ;done
for ((ii=0; ii<100; ii++)); do echo ${ii}; f_i=`printf "togetoge%02d.txt" ${ii}`; echo ${f_i} > ${f_i} ;done

pwdとlsでカレントディレクトリとファイル一覧をみてみてください。
ex1というディレクトリに移動しており、200個のファイルができていることがわかります。

このなかで’hogehoge’で始まるファイルのみ一覧を表示したい場合には以下のようにします。

ls hogehoge*

“*”はワイルドカードとよばれ、任意の文字列となります。この場合は’hogehoge’ではじまる全てのファイルの一覧が表示されます。

次に’hogehoge01’や’hogehoge02’など、数字の1桁目が0であるファイルを表示してみましょう。

ls hogehoge0?.txt

とします。”?”は1文字の任意の文字や数字として扱われます。”*”とは異なり、文字数が指定されます。

Tabキーを押す(候補表示)

ファイルやディレクトリの候補は、Tabキーで表示できます。
例えば、

ls

と入力し、エンターを押す前にTabキーを押すと、カレントディレクトリに存在するファイルの候補が表示されます。

ls hoge

の状態でTabキーを押すと、”hoge”で始まるファイルが表示されます。

ファイルを閲覧する: cat

次にファイルを閲覧してみましょう。catというコマンドを使います。
csvなどのテキストファイルの中身を閲覧できます。

cat hogehoge01.txt

としてみてください。hogehoge01.txtの中身が表示されます。

ファイルの一部を閲覧する: head, tail, less, more

catではテキストファイルの中身が全て表示されますが、一部だけ表示したいこともあります。
その場合には別のコマンドを使います。
まず、以下のコマンドを実行してファイルを用意しましょう。

for ((ii=0; ii<100; ii++)); do echo ${ii} >> test.txt; done

test.txtというテキストファイルが作成されます。
catでtest.txtの中身をみてみると、0から99までの数字が100行入っています。

headを使うと、先頭だけ表示できます。

head -n 5 test.txt

とすれば、最初の5行だけ表示されます。”-n 5″の部分はオプションです。オプションを省略し”head test.txt”と書くと、最初の10行が表示されます。

tailコマンドでは最後の数行が表示されます。

tail -n 5 test.txt

とすれば、test.txtの最後の5行が表示されます。オプションを省略すると、最後の10行が表示されます。

lessコマンドとmoreコマンドを使うと、ファイルを少しずつ閲覧することができます。

more test.txt

または

less test.txt

とすると、ファイルを1行目から順番に閲覧できます。
EnterやSpaceキーを押すと行を進めることができます。
途中で表示をやめたい場合は”q”を押します。
moreコマンドではファイルの末尾まで行くと終了し、ターミナルの画面に戻ります。
lessコマンドではファイルの末尾まで行っても終了せず、”q”を押すことでターミナルの画面に戻ります。

ファイルをコピーする: cp

ファイルのコピーはcpコマンドで行います。

cp hogehoge01.txt hogehoge01_cp.txt

とすれば、hogehoge01.txtというファイルがhogehoge01_cp.txt”というファイルにコピーされます。
コピー先のファイルがすでに存在する場合は上書きされます。

ファイル名を変更する: mv

ファイル名の変更にはmvコマンドを使います。

mv hogehoge01_cp.txt hogehoge01_mv.txt

とすれば、”hogehoge01_cp.txt”というファイルはなくなって”hogehoge01_mv.txt”になります。

ファイルを削除する: rm

ファイルの削除にはrmコマンドを使います。
このコマンドで削除すると復元できないため注意して使ってください

rm hogehoge01.txt

とすれば、hogehoge01.txtを削除できます。
パソコンの設定によっては「本当に削除しますか?」と聞かれるかもしれません。「y」と打ってエンターを押すと削除できます。
この問答を省略したい場合は

rm -f hogehoge02.txt

とします。問答無用でファイルが消えます。

ディレクトリを削除する場合には”-r”オプションをつけます。

cd ..
rm -rf ex1

でex1というディレクトリが削除されます。

ワイルドカードを使えばファイルの一括削除が可能です。
まずは、

mkdir ex1                                                  
cd ex1
for ((ii=0; ii<100; ii++)); do echo ${ii}; f_i=`printf "hogehoge%02d.txt" ${ii}`; echo ${f_i} > ${f_i} ;done

でファイルをたくさん作りましょう。lsで確認してみてください。

ls

ここで

rm -f *

とすればカレントディレクトリ内の全てのファイルが削除されます。

ファイルを圧縮する: zip

ファイルの圧縮(zip)もターミナルで行えます。

echo hogehoge > hogehoge.txt

を実行してhogehoge.txtを作りましょう。これをzipします。

zip hogehoge hogehoge.txt

これでhogehoge.zipが作成されます。

上ではファイルを圧縮する場合でしたが、複数のファイルが格納されているディレクトリをまるごと圧縮する際には”-r”オプションを使います。
いまいるディレクトリの中に”ex2″というディレクトリを作り、そこにファイルを作ってからex2ごと圧縮してみましょう。
まずはファイルを作って一つ上の階層に戻ります。

mkdir ex2
cd ex2
pwd
for ((ii=0; ii<100; ii++)); do echo ${ii}; f_i=`printf "hogehoge%02d.txt" ${ii}`; echo ${f_i} > ${f_i} ;done
cd ..
ls ex2

ex1をzipします。

zip -r ex2 ex2

これでex2がまるごとex2.zipに圧縮されます。解凍して確かめてみてください。

rm -r ex2
unzip ex2.zip
ls ex2

zipファイルを解凍する: unzip

zipファイルを解凍するにはunzipコマンドを使います。

unzip hogehoge.zip

で解凍します。hogehoge.txtが存在すると上書きするか聞かれるので”y”と答えましょう。

zipファイルにパスワードをかける: zipcloak

zipファイルの暗号化もターミナルで行えます!

zipcloak hogehoge.zip

を実行してみてください。パスワードの設定が求められます。

Enter password: 
Verify password: 

所望のパスワードを2回入力すると

encrypting: hogehoge.txt

と表示されて暗号化されます。unzipで解凍するとパスワードを求められるようになります。



Conclusion | まとめ

最後までご覧いただきありがとうございます!
ターミナルをもちいたCUIの基本操作をご紹介しました!

いまやパソコン操作はGUIで行うのが当たり前ですが、

  • ファイルの一括処理など手動では面倒な作業
  • プログラミング的なパソコン操作を身につける

といった点でCUIの基本的な操作を覚えておくことは有効です。
pythonの環境構築などにも必要になるので、ここで基礎を身に付けてしまいましょう!

今回は取り上げませんでしたが、CUIのコマンドをテキストファイルに書いておいて(スクリプト)、それを実行させることで、パソコン操作を自動化することも可能です(これもプログラミングの一種で、シェルプログラミング、シェルスクリプトと呼ばれます)。

以上「アラサーOL|ターミナル操作入門(pythonを学び始める前に1)」でした!
またお会いしましょう!Ciao!



References | 参考

コメント

タイトルとURLをコピーしました