Webデザイナーの為の「本当は怖くない」“黒い画面”入門 をやってみた。
http://fjord.jp/articles/548.html
学習理由と概要
terminalこと、黒い画面についての学習を上記のURLのものを参考に進めたので、その報告ブログを書いてみる。
これまでにも前職にいるときにも仕事上頻繁に扱っており、必要に迫られて多くのコマンドを叩いて来たし、知らないこともその都度調べながら使用してはいたので、慣れと経験は最低限あった。
しかし部分部分的につまみ食いで知識を得てはきたものの、包括的に基礎的な部分をまとめて学習してはいなかったので、今回の学習は復習と知識の点と点を結ぶことに大きく役立ったと思う。
以下には、今回の学習で新たに学んだことをメモとして書いて行く。
学習したこと
1. 最初のコマンドのスペースのあとは引数
コマンドは関数みたいなもんというのは過去に学習したときに学んでおり、スペース以降の部分が引数というのは言われるとそう言えばそうだったと思い出した。
しかし、言われなければ思い出せていなかったことでもあった。
関数と何ら変わらないということを頭の隅に入れて置くことが、ターミナルを操作するときには大切だと思う。新たにコマンドを使うときに調べる際でも、それがどう動くのかは関数としての働きであることを意識するだけでも理解がしやすくなるから。
2.ハイフン二つのロングネームオプション(long name option)はショートネームオプションと同じ機能をもち、名前を覚えやすくする。
これまで、疑問に持っていたが、ハイフン二つのオプションはシングルハイフンのオプションのものを覚えやすい名前に変えたものだった。
前々からオプションは覚えづらいと思っていたので、これからはオプションを見つけたら、その際に積極的にロングネームオプションが存在してるか確認しようと思う。
また、ロングネームオプションに文字を渡す場合=(イコール)を付ける必要があるようだ。
$ command -f /tmp/foo
$ command --file=/tmp/foo
3. man コマンドのマニュアル
-hオプションについては知っていたので、コマンドを調べる際はググるか、こちらを使うことしか知らなかったが、man コマンドなるものがあったとは思ってなかった。
4. curl ダウンロードコマンド
引数に指定したURLからコンテンツを取得して表示。
$ curl http://example.com
-o オプションで、続けて書いたファイル名で保存可
$ curl http://example.com -o filename
このコマンドここに乗っている以外にも絶対にいろんな活用方法があるに違いないと思って、調べてみるとやはりたくさんあった。一例として下記URLをめも。
https://qiita.com/yasuhiroki/items/a569d3371a66e365316f
https://qiita.com/takayukioda/items/edf371b3566bea64d046
また、curlはmacで、linuxではwegtという似た用途のコマンドがあるらしい。
このコマンドもよく前職で他のエンジニアの方々が打っているところを見た記憶があるので、きっと使う機会が多いだろう。
5. say / saykana 音声読み上げコマンド
saykanaは外部から取り入れたプログラムコマンド
引数の文字を読み上げてくれる。
直近での使い道は特に無いけどいつか使えそうな気がする。
saykanaは漢字が読めないから少し使いづらいけど、代用のソフトがきっとあるでしょう。
6. homebrew
homebrew自体は会社で使っていたので、知っていたのだが、今回インストールする際に、エラーが出てしまった。
エラー自体はhomebrewのインストール時ではなく、 /usr/local/の権限を変更する際にrootでも変更できなかったことだ。
調べると、high sierraからはrootでも変更することができなくなったらしい。
なので、下記のURLにそって、homebrewのインストールを進めた。
https://coolestguidesontheplanet.com/installing-homebrew-on-macos-sierra-package-manager-for-unix-apps/
7. mkdir -p 階層を持ったディレクトリ作成
mkdirはよく使っていたが、こちらのオプション -p によって深い階層を持ったディレクトリを作れるというのは初めて知った。とても便利そうなので、ぜひ使っていきたい。
$ mkdir -p foo/bar/buz
8. cp -r ディレクトリのコピー
-r オプションでファイルだけでなく、ディレクトリのコピーも行うことができる。
そういえば、rmコマンドでもディレクトリを消すときは -rをつけていた。
-rはディレクトリ系に関するオプションなのであろうか。
# fooはディレクトリ
$ cp -r foo /bar
9. shabang 作業の自動化
#!を先頭につけると2行目以降を全てそのあとのコマンドに渡す。
以下のコードは echo hello を/bin/sh に渡すことで、コマンドでこのファイルを呼び出すだけでこの動作をターミナルが自動で行ってくれるというもの。
# ! /bin/sh
echo hello
# ファイルを生成後以下を行う必要がある。
$ chmod u+x echo-hello
$ ./echo-hello
hello
渡す先はshやphpといったスクリプトを実行するプログラム(インタプリタ)である必要がある。
これを活用すれば、面倒な作業も、忘れてしまう複数のコマンド操作も一発で行う得ることができる。
とても便利だし、どんどん扱っていきたいと思う。
10. export 環境変数の設定
環境変数と中身を=で区切り渡す。
$ export PATH=$PATH:~/bin
感想
基礎的な部分が多く知らなかったことが思っていたよりも多くあった。
まだターミナルコマンドの知らないけれども使い勝手のいいものもあるが(grepとか)それらについて一つ一つ学んで活用していくようにしたい。