どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

【FJORD】ターミナルの基本その2

本日もターミナルの基本の続きをお勉強します💻

 

目次

 

1.Homebrewのインストール(続きから)

昨日はHomebrewというパッケージマネージャーをインストールするため、Xcodeをインストールしているところで中断していました。

Xcodeが無事インストールされたので、Homebrewをインストールしました!

HomebrewのHPに記載のコマンドをターミナルに入力するだけです。

brew.sh

このコマンドはたまに変更されているのか、web上に沢山あるHomebrewインストール手順をまとめてくださっているサイトに記載のコマンドと異なる場合があります。

なので、インストール用のコマンドはHomebrewのサイトから持ってくるのが一番確実かと思います!💡

コマンド入力するとしばらくして "press RETURN to continue"(続けるにはreturnキー押してね) と言われるので、returnを押して待つこと約3分。

f:id:mistyrinth:20180927153152p:plain

完了したっぽいですね!

では、Homebrewを使ってtreeというフリーソフトをインストールしてみます。

※今回もわかりやすくするため、入力した文字を赤枠、出力されたものを白枠で囲っています。

【入力】brew search *** → 【出力】***という文字を含むソフトの一覧を表示

f:id:mistyrinth:20180927153810p:plain

brew の後にくる"search"や"install"は、brewに与える指示のことですね。

 

2.ファイル操作の基本

2-1. touch

続いて、ターミナルを使ってファイルを操作していきます。

まずは touch です。ファイルの新規作成ですね。わかりやすくするため、デスクトップにファイルを作成してみました。

【入力】touch  *** → 【出力】***という名前の空のファイルを作成

f:id:mistyrinth:20180927155557p:plain

入力1でホームディレクトリからデスクトップに移動。

入力2「touch foo」で、今いるディレクトリにfooという名前の空のデータを作成しました!デスクトップに空のデータが誕生しました😊

touch は、本来あるデータに触って最終更新日を更新することもできるそうです。

2-2. mkdir

mkdir(make directory) で、ディレクトリの新規作成です。

【入力】mkdir  *** → 【出力】***という名前の空のディレクトリを作成

f:id:mistyrinth:20180927161244p:plain

先程と同様、入力1でデスクトップに移動し、入力2で bar という名前の空のフォルダを作成しました。

また、mkdir -p で階層が作れました!入力3で作成したjapanフォルダの中には、tokyoフォルダ、更にその中にはuenoフォルダが作られています。

2-3. cp

cp(copy)は、その名のとおりファイルのコピーをします。

【入力】cp  *** /(directory) → 【出力】***という名前のファイルを指定のディレクトリにコピー

f:id:mistyrinth:20180927162712p:plain

先程作ったfooファイルを/tmpフォルダにコピーしました!

入力1:デスクトップに移動(fooファイルがある場所)

入力2: fooファイルを/tmpフォルダにコピー

入力3:/tmpフォルダに移動

入力4:/tmpフォルダにfooファイルがコピーできていることを確認

なお、cp foo /bar は「fooというファイルを/barファイルにコピー」になりますが、

cp foo bar は「fooというファイルをコピーしてbarという名前にする」になります。

また、ディレクトリをコピーする時には cp -r *** /~ というように、 -r がつきます!

f:id:mistyrinth:20180927164108p:plain

入力1:デスクトップに移動

入力2:デスクトップのディレクトリ(正確な場所)を確認

入力3:先程作ったbarフォルダをjapanフォルダの中にコピー

入力4:先程作ったfooファイルをコピーしてfoooという名前をつける

2-4. mv

mv(move) は移動です。使い方はコピーと同様ですが、移動するだけなのでデータは1つのまま増えません。元の場所にはデータがいなくなってしまいますね。

なお、mvは -r をつけなくてもディレクトリの移動ができます!

結果は先程のコピーと似たような画面なので、スクリーンショットは割愛します。

2-5. rm

rm(remove)はファイルの削除です。rm -r でディレクトリを削除します。

マウスでフォルダを「削除」するのと同じなので、当然ディレクトリの中身も全部消えてしまうことに注意ですね🤚

2-6. cat

catは猫ではなく  concatenate(連結させる)の略です!4文字目からcatがいますね。

コマンドとしては、ファイルの中身を表示してくれるものです。

【入力】cat *** → 【出力】***という名前のファイルの中身を表示

f:id:mistyrinth:20180927170412p:plain

3.作業の自動化

入力する作業の自動化にトライします!これまで学習した作業は基本の操作だけですが、より高度なことを繰り返していく時に、その都度いちいち入力するのは大変なので、自動化をしてみました😎

今回自動化する作業は、以下のとおり。

  • デスクトップに移動する
  • 空のfooファイルを作る
  • 空のbarフォルダを作る
  •  japanフォルダ/tokyoフォルダ/uenoフォルダを作る(階層)

f:id:mistyrinth:20180927173113p:plain

入力1:デスクトップに移動

入力2:空のファイル(auto-sample)を作成

 〜ここで中間作業(auto-sampleに自動化したいコマンドを入力※画像は下記)〜

入力3:auto-sampleの中身を確認

入力4:auto-sampleを実行 →成功!

auto-sampleに入力したコマンドは以下のとおりです。入力3で同じコマンドが表示されていることが確認できますね😇

f:id:mistyrinth:20180927173536p:plain

4.shebang(シバン)

続いて、スクリプトを単体で実行するshebangという機能を試してみます。

shebangは #! で始まる先頭行のことだそうです。

例えば1行目に #!/bin/sh と書くと、2行目以降のコマンドはすべて /bin/sh に渡るようです。なお、昨日の復習ですが /bin/sh は binフォルダに保存されている sh というコマンドです。

f:id:mistyrinth:20180927190244p:plain

入力1:デスクトップに移動

入力2:echo-hello という名前のファイルを作成

〜ここで中間作業(echo-helloに#! で始まるコマンドを入力※画像は下記)〜

入力3:echo-helloを実行

入力4:ファイルにユーザー実行権限(u+w)を追加(chmod = change mode)

このとき、デスクトップのecho-helloのアイコンが白紙からターミナルに変わります。

入力5:echo-hello を実行( "."は今いるディレクトリの意味でしたね🙂)

f:id:mistyrinth:20180927190433p:plain入力3と入力5を比べると、やっていることは同じですが、shを書かなくても良いことになっていますね!入力4でユーザー実行権限を追加したことで、ファイルがコマンドになったようです。

ちなみに、ユーザー実行権限を追加せずに ./echo-hello を呼び出すとエラーになります。

f:id:mistyrinth:20180927191945p:plain

shebungを使うと様々なスクリプトを単体で実行できるそうですね。

5.PATHの設定

昨日学習したPATHは、環境変数で5つのディレクトリが指定されていました。

今回はそのPATHを自分で設定します!

環境変数で指定されているディレクトリ(例えば/bin)は、システムの動作に必要なコマンド置き場なので、自分で独自に作ったスクリプトを保存するといった利用には適していません。

そこで、ホームディレクトリ内にbinフォルダを作り、PATHに指定します💪

【入力】export PATH=$PATH:(ディレクトリ名) → 【出力】なし(PATHに指定)

f:id:mistyrinth:20180927193619p:plain

入力1でホームディレクトリ内に bin という名前のディレクトリを作りました。

入力2でPATHに指定! ターミナルにおいて"~"は、ホームディレクトリを指す記号だそうです。知らなかった!!😂今まで *** と同じように「任意の文字列」みたいに使っちゃっていました。失礼いたしましたm(._.)m

入力3で、PATHに指定できていることが確認できました👏

6.おわりに

ターミナルの基本の学習はこれで終了です。今後は自分で応用・実践することに移っていくのですが、たっぷり学べて良かったです!わからないところをインターネットで調べていくと、Unixシェルスクリプトといった単語が沢山出てきて、奥深さというか、幅広さを感じます。

ターミナルの sh もshell の略のようで、貝のようにコンピューターを包み、ユーザーとの仲介をしてくれているとのこと。今後更に理解を深めていくことになりそうですね😊