Learning to Code

プログラミング勉強記録

よく使うUnixコマンド

・よく使うコマンドライン

Windows10のノートPCにUbuntu 16.04をデュアルブートして以来、メイン使いはUbuntuのほうになっている。 ほぼGUIで操作可能とはいえ、ターミナルでしか出来ないと思われる操作もあり、コマンドラインに慣れるにはまだ時間がかかりそう。

Ruby on Railsチュートリアルを進める開発環境はCloud9を使っているが、ここでもコマンドラインを使う必要が出てくる。 今まで使って便利だと思ったコマンドをまとめてみる。

  • sudo(コマンド)管理者権限でコマンドを実施
  • pwd現在の選択しているディレクトリを表示
  • cd (移動先のディレクトリ名)ディレクトリの移動
  • touch (作成するファイル名)新規ファイル作成
  • mv (移動元)(移動先)ファイルの移動
  • find (検索するディレクトリのパス)(オプション)(検索条件)ファイルを探す
  • grep (検索したい文字列) -rl (検索するディレクトリのパス)特定の文字列が含まれるファイルを一覧表示
  • nautilus (表示したいディレクトリもしくはファイル)指定したディレクトリもしくはファイルの表示

このサイトは英語だけど全く知識のない初心者向けにはめっちゃいい記事。
「こういうのが知りたかった!」というポイントをおさえている。 www.vikingcodeschool.com

・sudo 使い方

ターミナルからコマンドを実行しようとすると、”not permitted”的なエラーが出ることがある。
nanoで設定ファイルを編集しようとした時などにありがち。
そこでコマンドの前にsudoをつけると実行できるようになる。
sudoって何の略?と思っていたが、”super user do”という意味らしい(真偽は不明)。 便利だが、逆に考えればsudoでコマンドを実行するとどんなことでも実行されてしまうので、
自分のやろうとしていることに自信がない場合は乱用しないほうがいいかもしれない。

・find 使い方

findについては色々なオプションがある(らしい)が、とりあえずよく使っているのは以下。 ./でカレントディレクトリを指定、-name "*.css" で検索するファイルの名前を指定する。 ファイル名が分からない場合はワイルドカード(*)を使い、拡張子を指定する。 拡張子も分からないが名前の一部は分かる、というような時は、-name "*foo*"という形で検索も出来る。

grep 使い方

アプリ作成を進めるうちに、どのメソッドをどのファイルで定義したか分からなくなってしまう。 特に出現回数が少ないものほどそうなりがちで、開発が進むほど手動で検索するのは難しくなる。 そこでgrep
-rlというオプションは-r、-lという別のオプションがくっついたもの。

-r: 指定したディレクトリの中のファイルを検索する(サブディレクトリを含む) -l: 検索する文字列があるファイルの名前だけを表示する

-rだけでも検索できるが、その場合は文字列の含まれるファイル名と、
ファイル内で文字列の含まれる該当箇所も一緒に表示される。 名前と場所だけ分かればいい場合は-rlのほうが見やすいとは思う。

nautilus 使い方

例えばnautilus .と打ち込むと現在のディレクトリがポップアップで表示される。 ただしUbuntu16.04での話なので、環境が変わると違うかもしれません。 ファイル名を指定することも出来るが、ファイル自体は開かれない。
ファイルの保存されているディレクトリが開くという形。



この記事は今後使えるコマンドが増えてきたら更新していきたい。

Railsチュートリアル RESTのアクションまとめ

今日から年末休みで気持ちと時間に余裕があったため掃除と自炊をした。さつまいもの炊き込みご飯とぶりのあら汁。一通り家事が終わってから今日も勉強開始。

・RESTのアクションをまとめる

RailsチュートリアルRuby on Rails チュートリアル:実例を使って Rails を学ぼう)をやっていて度々見直しているので以下にまとめる。 第二章の表2.2より、Usersリソースに対するRESTのアクション一覧を引用。

HTTPリクエスURLアクション名前付きルート用途
GET/usersindexusers_path全ユーザーを表示するページ
GET/users/1showuser_path(user)id=1のユーザーを表示するページ
GET/users/newnewnew_user_path新規ユーザー作成ページ
POST/users/createusers_path新規ユーザー作成
GET/users/1/editeditedit_user_path(user)id=1のユーザーを編集するページ
PATCH/users/1updateuser_path(user)id=1のユーザーを更新する
DELETE/users/1destroyuser_path(user)id=1のユーザーを削除する

・RESTとは何か

アプリケーションを構成するコンポーネント (ユーザーやマイクロポストなど) を「リソース」としてモデル化することを指します。これらのリソースは、リレーショナルデータベースの作成/読み取り/更新/削除 (Create/Read/Update/Delete: CRUD) 操作と、4つの基本的なHTTP requestメソッド (POST/GET/PATCH/DELETE) の両方に対応しています。

要はアプリの構成要素を「リソース」とする(RESTにする)ことで、そのリソースに対してCRUD操作やHTTPメソッドを使えるようにするということだと理解している。 Railsとはそうやってアプリを作るフレームワークということか。

CRUDとは何か

ソフトウェアやデータベースの持っている基本の機能、Create, Read, Update, Deleteのこと。

・HTTPメソッドとは何か

ブラウザからサーバに対して出されるリクエストのこと。GET, POST, PUT, DELETE, PATCHなど。 PUTはCRUDのCreate、ReadはGET、UpdateはPUT/PATCH、DeleteはDELETEというふうに、CRUDに対応するリクエストがある。

RailsではRESTのリソースを操作する時、コントローラが自動で必要なHTTPメソッドを使用してくれたり、 URLを簡略化できたりという利点がある。