【Rails入門者向け】プログラミング初心者で黒い画面(ターミナル/Unix)に困っているときに知ると楽になるUnix知識まとめ
どうもどうも。
4月1日から社会人にようやく(本当にようやく)、それへの準備に大忙しのvsannaです。大体毎日映画観に行ってます。イミテーションゲームみてチューリングマシン調べる程度に盛り上がりました。
プログラミングを始めて最初に嫌になる黒い画面
今回は本当に久しぶりの技術よりの話です。
プログラミングを学び始めの頃って本当にこれでもかと抵抗を感じる諸々がありますよね。
その中でもとびきり嫌なやつがいわゆる黒い画面、ターミナル(言葉の説明は後述)の扱いだと思います。
ですが、プログラミングを学ぶ上でターミナルは避けては通れないと行っても過言ではありません。
また、早めにターミナルに慣れておくとスムーズに作業がおこなえる他、qiitaや先人のブログを見た際に「まずコマンドがわからないからタブを閉じる」といった悲しい経験を多少なりとも減らせる事ができます。
ということで、今回はプログラミング初心者が黒い画面に困らないための必要最低限の知識をまとめていきたいと思います。
なお今回はRailsの開発を行う前提で頻出のものをまとめていきますが、前半は一般的につかえる知識だと思います。
はじめに参考/よさげだった書籍をまとめておきます。
- たのしいUNIX―UNIXへの招待 (Ascii books)
- 続・たのしいUNIX―シェルへの招待 (Ascii books)
- 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
- はじめてUNIXで仕事をする人が読む本 (アスキー書籍)
- 図解雑学 UNIX (図解雑学シリーズ)
まずは基本用語を抑える
- ターミナル
- macに最初から入っているアプリの一つです。
- こういうの。
- unixのカーネルという、こちらの命令を実行するいわば頭脳に命令を伝えるアプリです。
- こういうの。
- macに最初から入っているアプリの一つです。
- コマンド
- カーネルに伝える命令文のことです。「ターミナルでコマンドをうつ/たたく」なんて言ったりします。
ls -l
や、echo "ヘローワールド"
などのことですね。主にこのコマンドというやつ(と「-」以降のオブション)を覚えていきます- ls : ファイルを一覧表示するコマンドです
- -l : 単にlsと打つよりも詳細に表示されます。試してみましょう。
- プロンプト
- ターミナルの行頭に表示される
username$
という部分のことです。 - 「プロンプトに入力する」「プロンプトが表示されたら入力する」といった感じ使います
- プロンプトが出ている状態はターミナルが「コマンド、カマン。」と待ちの状態になっているときなので、コマンドを打ち込んであげましょう。
- ターミナルの行頭に表示される
- シェル
- カーネルとコマンドの間をつなぐインタープリター
- サッパリなので意訳すると、カーネル(命令の実行主体。頭脳。)に人間の分かる言葉で書かれたコマンド(命令文。
ls -l
など。辛うじてこれは人間が分かる言葉に入る…)を機械語(001010100010…)に翻訳して伝えてくれるものということです。 - シェルにはいくつか種類があり、sh,bash,zsh,bshなどありますが、macデフォルトだとbashが入っている模様です。ぶっちゃけあまりこの違いに最初は気を使わなくてOKです。
- 人間 > コマンド > ターミナル > シェル > カーネル の順に情報が流れている感じ。
- シェルスクリプト
- シェルを介してカーネルに与える命令(つまりコマンド)をまとめて実行ファイルにしたもの。.shが拡張子。.rbと同じですよ同じ。
続いて黒い画面の背景色を変えてみる
いきなりですがタイトルを殺しに行きます。背景色変えちゃいましょう。
黒くなければどうということもないんじゃ!!!
しかしこれをばかにする事なかれ。背景色変わるだけで気持ちの持ちようが結構変わるのでホントにオススメです
1. 諸々設定を変更する
- ターミナルを開いた状態で上部メニューバーの「ターミナル」から「環境設定」を開く
- 「一般」の「起動時に開く」で、「起動時に開く:次のプロファイルの新しいウィンドウ」を選択した状態で「Novel」を選択
- 「プロファイル」の左サイドメニューからNovelを選択し、フォントの「変更」でフォントサイズを14にする
2. ターミナルを再起動する
これでOK。いやほんとに黒くないだけで気持ちが変わるはずです。
unixで頻出のコマンドを抑える
いよいよunixコマンドを抑えていきましょう。
全部で12個(必須はたったの2個)のコマンドを見ていきます。
必須のコマンド
- cd
- 必須コマンドは2つだけ。その内の一つ。
- 作業ディレクトリを変更する。
- unixでは動かしたいプログラムや編集したいプログラムを指定するときに、絶対パスというものでそれを指定するか、相対パスで指定するかの二通りがある。
- 絶対パスの説明はややこしいので省略するが、指定がめんどくさい。
- 例:デスクトップのprogramフォルダの中にある、app.rbを実行したい
vsanna$ ruby /Users/vsanna/Desktop/program/app.rb
とコマンド入力
- 一方、相対パスでは、programフォルダを作業ディレクトリにしておけば、指定がラクちん
vsanna$ ruby app.rb
だけでOK.- /Users/vsanna/Desktop/program/ は今いるディレクトリ = 作業ディレクトリなので指定しなくてもシェルが「ああ、今いる場所にapp.rbがあるのね」と察してくれる。
- また、railsのアプリを動かすさいには、アプリのフォルダに移動して、その場でrails sを実行しなくてはならない
- 楽!!
- ruby
- rubyのプログラムを実行する。
- 例:上記にさらっと書いてしまいましたが、
ruby app.rb
と言った感じ。 - 他の言語も大体同じ。
perl hoge.pl
とかね。
無くてもなんとかなるが知っておいた方が便利なコマンド
- pwd
- 現在のディレクトリを絶対パスで示す。あげたけどほとんど使ってない…
user$ pwd
#=> /Users/vsanna/Desktop
- ls
- 現在のフォルダの中身を一覧表示する
- finderで代用可能。
- grep
- ある文字列が含まれるファイル名(と、含まれている1行)を表示する
- 例えば、「あのメソッドどこだっけ」「この変数どこで使ってるっけ」といった時に探せる
-grep "methodName" . -r
- 現在のディレクトリ(.)の中身全体を再帰的に(-r 更にその中のフォルダの中身も含めて)検索する
- これは便利である故に多数のオプションがあるので、しっかり学んでおくとよさげ
- cat/less/more
- どれもファイルの中身をターミナル上で確認したいときに使う(cat本来の用途は別だけどそれは知らなくてもOK)
- 短いファイルはcat, 長いファイルはlessでいいんでないか。(lessはmoreの高性能版)
- エディターで代用できる。
- vi
- ファイルの中身に変更を加える。つまりターミナル上のエディター
- 非常に強力(少ないキー入力で多くの編集がおこなえる)だけど、使い方になれる必要があるのでまぁ、あんまり使わなくてOK
- 基本的にはエディターで中身を変更すれば初心者的にはOK(というかvi使いこなせませんすみません..)
- 詳しく知りたい場合はvim入門|ドットインストールをさらっと流し見してみてくだ
- rm
- 指定したフォルダやファイルを削除できる
- 細かいオプションがあり、またこのコマンドでミスればmac全体が壊れることもあるので慎重に
rm fileName
#=> fileNameというfileが削除されるrm -R folderName
#=> folderNameというfolderが中身毎削除
- mv
- ファイルやフォルダを移動させる
- 移動先のフォルダを選択しないとそのファイル/フォルダの名前変更ができる
mv hogefile gehofile
#=> hogefileというファイルがgehofileというファイルにリネームmv hogefile hogefolder
#=> hogefileがhogefolderの中へ移動mv hogefolder gehofolder
#=> gehofolderが存在する場合はその中へ、存在しない場合はリネーム
- mkdir
- ディレクトリ(フォルダ)を作成する
- finderで代用可能
とりあえずこれだけ知っておけば問題無いです。
基本的に何らかのプログラムを書く上でどうしても必要なのはcdコマンドだけだと思います。
というかRails勉強するのであれば、必須なのはcdのみです。
「Unixコマンドの全体像が知りたいのだ!」
「シェルコマンドというものに触れたいんだ!!」
「シェル芸を年末に披露したいんだよ!!!」
という豪気な方は最後にまとめて書籍に目を通してみて下さい。
ほかにもUnixのいい本があれば私にも教えて欲しいです、宜しくお願いしますm(__)m
railsでよく使うコマンド
むしろRails開発の場合は以下のコマンド群の意味を理解している方が大事です。
このあたりいずれ別記事でチートシート的に解説付けてまとめ直します。
railsコマンド
- rails new appName
- rails g scaffold page name:string title:string
- rails g model Model columnName:dataType columnName2:dataType …
- rails g controller Users
- rails g migration YaritaikotoHenkousitaitable
- rails g migration ChangeColumnUser
- migrationの後は大文字でも小文字でもなんでもOK
- rails g migration AddEmailToUser email:string
- 規約に則ってmigration以下を書くと、migrationファイルの中身を最初から書いておいてくれる。便利
- こちら参照 => http://www.rubylife.jp/rails/model/index7.html
- rails g migration ChangeColumnUser
- rails g migration AddTitleToPage
- rails s
- rails destroy controller user/migration AddSslFlag
- rails c
- rails dbconsole
rakeコマンド
頻繁
- rake db:migrate
- rake routes
学習が進むと登場
- rake assetes:precompile
- rake db:fixtures:load
- rake db:setup
- rake db:seed
gemにまつわるコマンド
- gem install hoge
- gem update hoge
- gem list
- gem search h
bundleにまつわるコマンド
- bundle install
- bundle update
- bundle init
- railsでは使わないかも
- Ruby単体でなにかプログラムを書くときには多用する
でもまだまだわからないコマンドが出てきたときにはどうすればいいのか
全てのコマンド、なんてわからないに決まっています。
なので、分からないコマンドがでたらその都度調べて試しましょう。プログラミングの3分の1はググる時間です。
知らないコマンドやオプションは調べて試しつくす。これが基本です。
3回くらい目にしたらそれは頻出コマンドと思い込んでその場で覚えちゃいましょう。
それを適度に繰り返せばPCが今まで以上に効率良くつかえるようになります。そしてPCがもっと好きになります。目指せsed,awkマスター。
今回も最後までお読みいただきありがとうございます、おつかれっした!
なにか間違えなどございましたらぜひコメント頂ければ幸いです。
はてぶしてもらえるとうれしいです。よろしくです(´・ω・`)
awk,奥が深い…
— うさんな (@vsanna2) February 27, 2015
ごめんなさい。
— うさんな (@vsanna2) February 27, 2015
参考書籍
初歩の初歩で読むと非常に良い本
- たのしいUNIX―UNIXへの招待 (Ascii books)
- 超古い本で1990年のものですが、非常に初心者向けに丁寧に書いてあります。超一押し
- とはいえ、やはり古いため今は使われていないコマンドなどの記述も(本当にごく一部)存在します。その点は注意
- 続・たのしいUNIX―シェルへの招待 (Ascii books)
- 上記の続編です。こちらも1993年と中々の年代物。
- こちらはシェルプログラミングの入り口までをガイドしてくれます。上記と同様、全くハードルを感じさせない優しさ。惚れる。
初歩を脱したら読む本
上記二冊を読むだけでも初心者には十分だと思いますが、それ以上を目指す場合のおすすめ本も以下に記載します。
- 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
- まだ読んでないけど、amazonの評価も高いし何より安心のソフトバンククリエイティブ
- ステマっぽいけど、ソフトバンククリエイティブの本はかなりいい本ばかりという印象
- 今日ポチる。
- まだ読んでないけど、amazonの評価も高いし何より安心のソフトバンククリエイティブ
- はじめてUNIXで仕事をする人が読む本 (アスキー書籍)
- 友人のオススメで購入。ぶっちゃけ初心者にはレベル高くて撃沈しましたが、ここまで分かれば確かに仕事できそうという目標になる一冊
- 本屋で立ち読み程度でもいいかも
- 図解雑学 UNIX (図解雑学シリーズ)
- これも同じ友人におすすめされた本。面白い。
- unixのコマンドの理解にはならないけれど、unixの歴史を知るとコンピューター全般の知識の根底が結びつくのでオススメ。安いし。