「入門者のLinux」第八章
第八章「ワンライナーでプログラミングしてみよう!」
プログラミングとは、コンピュータのシンプルな機能を組み合わせてユーザーの意図する仕事のできるプログラムを作り上げること。
普通、プログラミングというとJavaとかC言語とかプログラミング言語を使って作ることを想像しがち。
しかし一方で、シェル上で1行のコマンドとして走る小さなプログラムをワンライナーという。
ワンライナーはいくつかのコマンドをパイプなどでつなぎ作る。
<シェル変数>
変数とは、データを保存しておくための箱のようなもの。
方程式のxを思い出して!
例えば、「x」という変数に「3」を代入したければ、
[x=3]
「x」の中身を見るには、
[echo $x]
⇒シェル変数(x)の前に「$」をつけること!
つけることで、「そのシェル変数の中に入っている値」という意味になる。
シェル変数はコマンドの結果も代入することができる。
[d = `date`]
コマンドの場合は前後にバッククォート必要。
同じような処理を繰り返したいときには、「for ループ」を使う。
「for ループ」では、一つの変数に色々な値を代入しながらその都度
同じ処理を行う。
[for シェル変数 in シェル変数に入れる値を列挙; do 繰り返したいコマンド; done]
シェル変数に数値をいれるとき、1から100とかめっちゃ多いときは、
[seq 1 100]...1から100までの整数をずらっと並べる
でできる。
「for ループ」の値の範囲指定に使うときは、
[for a in `seq 1 100`; do echo $a; done]
みたいな感じで、バッククォートも忘れずにつける。
<おまけ>
環境変数っていうシェル変数「LANG」がある。
ターミナルの言語設定情報が入っている。
[LANG=C]...「LANG」に「C」を代入で使用言語が英語になる
[grep]...抜き出しコマンド
[uniq]...前後で同じ行が重複したら1つにまとめる
[ * ]...ワイルドカード=複数のファイルまとめる
ex) abc.jpg , def.jpg , ghi.jpg = *jpg
ワンライナーは使い捨て。
その場その場で必要なものを即興でつくり目的が達成できたら保存せずに捨てる。
ちょっと形式変えてみたぁ。
バッククォートのせい(笑)
「入門者のLinux」第七章
第七章「ユーザーと管理者」
コンピュータの使用権をアカウントといい、それにはユーザー名とユーザーIDが含まれている。
アカウントがなければ使わせてもらえません。
これらのユーザーの集まりをグループという。
中でも本命のグループを実効グループという。
ディレクトリやファイルの管理にはパーミッションという概念が必要。
ファイルの情報を見た時(ls)に、
・[-rw-rw-r-- 1 marumo marumo 7 7月 22 12:27 ファイル名]
みたいな感じで出てくくる。
[marumo marumo]⇒[ファイルの所有者のユーザー名 所有グループ]
(全てのファイル、ディレクトリにある)
[-rw-rw-r--]⇒ここがパーミッションの仕組み!
パーミッションはそれぞれのっファイルやディレクトリに対してどのような操作を許可するのか定めること。
「r」=読み込み可能
「w」=書き込み可能
「x」=実行可能 を表す。
・[chmod -r output]...「r」をoutputファイルから剥奪=読み込み不可能
右の部分は、所有者(user)に対してのパーミッション。
真ん中の部分は、所有グループ(group)に対してのパーミッション。
左の部分は、その他のユーザー(other)に対してパーミッション。
・[chmod u+rw output]...user(所有者)のみ読み込みと書き込み可能
システム管理の作業に携わるユーザーを1人決め全権を委任する。
それを管理者という。
管理者はすべてのファイルやディレクトリのアクセス権を持つ。
管理者はrootというユーザー名をもつ。
管理者以外のユーザーを一般ユーザーと呼ぶ。
ユーザー追加やパスリセット、インストールなど、システムの根幹に何らかの変更を加えるにはrootにお願いする必要がある。
例えば、
・[mkdir /test]...ルートディレクトリに「test」というファイルを作る
ルートディレクトリは一般ユーザーに書き込み許可がないので、ファイルを作ることができない。
その場合、
・[sudo mkdir /test]...一時的に管理者として「test」というファイルを作れる
管理者の大事な仕事として、システムのアップデート、つまり更新作業がある。
アップデートはインターネットを介してディストリビューションのリポジトリというサーバーに接続し最新パッケージをダウンロードする。
・[sudo apt-get update]...アップデート内容確認
・[sudo apt-get upgrade]...アップデート実行
アップデートはできるだけ頻繁に行うようにする。
ちなみにアップデートは、不具合を直し完成度を高めること。
バージョンアップは、新たな機能を追加したり従来の機能を削除したり使用法を変えたりすること。
「入門者のLinux」第六章
第六章「標準入出力」
「ls」や「cat」のようなコマンドで出てきた処理結果を何らかの形で外に向かって出すことを出力(アウトプット)という。
逆に、コンピュータやソフトに情報を受け流すことを入力(インプット)という。
入力と出力を足して、入出力という。
・[echo]...オウム返しに表示
これを応用すると..
・[echo hello! > output]...”hello!”が「output」に出力される
⇒テキストファイルを作るツールに化ける!
このような機能を出力リダイレクトという。
> ⇒ > ...上書きされる
> ⇒ >> ...前の内容消さず、新しい結果追記
・[bc]...四則演算する
これを応用して..
・[echo 2+3 > input] (出力リダイレクト)
・[bc < input]...bcコマンドに「input」の"2+3"を入力し、処理して出力した
コマンドに対して情報をファイルから渡す機能を入力リダイレクトという。
コマンドに対する入出力テクニックもある。
・[echo 2+3 | bc]
「echo 2+3」というコマンドは「2+3」という文字列を画面に出力する。
しかし、「|」(パイプ)をはさむことで、「bc」というコマンドに渡される。
渡された「bc」コマンドは計算を行う。
「|」は直前のコマンドの出力を、直後のコマンドの入力にすることができる。
パイプでつなぐ作業は他にもよく使われる。
例えば、
・[ls -l /usr/bin | less]...
「less」というコマンドは、画面の縦の長さにい合わせて1ページずつ行き来できるようにするコマンド
「パイプでつないでless」はLinuxの操作でとてもよく使うらしい。
・[ls -l /usr/bin |wc]...
「wc」はテキストデータの行数、語数、文字数を数えるコマンド
リダイレクトやパイプで切り替えられるような入出力のことを標準入出力という。
入力の部分を標準入力。
出力の部分を標準出力。
まとめ
・「>」、「<」でファイルを相手に出入力できる。
・「|」は、あるコマンドの出力を別のコマンドに入力できる。
また、パイプを使って3つ以上のコマンドをつなぐことも可能。(パイプライン)
「入門者のLinux」第五章
第五章「ファイル」
ファイルの種類
・テキストファイル...文字で表された情報。文字コード、キャラクターコードで定められた数値だけが並んで格納されているファイル。
・バイナリファイル...文字コード以外の数値含む
〈コマンド〉
・[cat]...ファイルの中身を表示
・[cp]...コピー
・[mv]...場所移動、名前変更
・[rm]...ファイル消す
ファイル名には、スペースや、[ / ? * < | : ; \ ] などの記号を使わないようにする。
[ - _ . ]はOK!
Unixの文化として、「すべてのデバイスをファイルとして表現する」といものがある。
画面やハードディスクなどコンピュータの部品や周辺機器のデバイスもひとつずつのファイルとして識別、管理しているということ。
「入門者のLinux」第四章
第四章「ディレクトリ」
Linuxにおいてデータを格納する仕組みをディレクトリという。
仕組みとしては、ディレクトリの中にさらにディレクトリやファイルが入ってるって感じ。
シェルを立ち上げた時のカレントディレクトリ = ホームディレクトリ =「~」
〈コマンド〉
・[pwd]...カレントディレクトリがどこなのか表示する
・[cd ○○]...○○に行く(cdだけうつとホームディレクトリ)
・[ls]...ディレクトリやファイルになにが入っているか、情報をみたいとき
・[mkdir]...ディレクトリ作成
・[mv]...場所移動、名前変更
・[rmdir]...消去
パス
ディレクトリやファイルの中には、どこに存在しているかという情報を示すパスがある。
パスには二種類。
・絶対パス...ルートディレクトリからたどっていくもの
カレントディレクトリがどこであろうと通用する。
・相対パス...カレントディレクトリ起点にファイルをたどっていくもの
場所や名前が変わっても通用する。
ざっくりしすぎたかな。
「入門者のLinux」第三章
第三章「シェル初体験!」
シェル...LinuxのCUIをさっそく使ってみようっていう章。
シェルを使うにはそれを画面に表示させるためのソフトが必要。
そこで登場するのがターミナル。
なんか黒い背景に文字が羅列されてるアレ。
なんかかっこいいアレ。
Ubuntuでのターミナル起動方法は
[Ctrl]キー+[Alt]キー+[t]キーの3つを同時に押す!
ターミナルが立ち上がると、その中に最初に出てくる英字で$がついているやつがでてくる。
このような表示をプロンプトと呼ぶんですって。
じゃ、さっそくコマンドうつぞ。
・[date]...今日の日付と現在の時刻
・[df]...ハードディスクやUSBメモリの使用状況
・[cal]...カレンダー
・[free]...コンピュータメモリに関する情報
・[history]...コマンド履歴
コマンド本体に続けて色々な情報を添えると、多様な働きをみせます。
例えば、
・[cal sept 2000]
とすると、なんと西暦2000年の9月のカレンダーが表示されるのです!
この[sept]や[2000]みたいに、コマンド本に体添える情報を引数という。
次に、
・[cal sept 2000 -j]
これは、引数にプラス[-j]がついています。
こうすることで、日にちを1月1日からの通算で数えたものがでてくる。
calコマンドがまた少し変わりました。
このようにハイフンのあとに記号が続いてるものをオプションという。
ここに書くより実践のほうが身につくね。
実践して慣れてくしか。
Ubuntu 16.04インストール方法
今度はLinuxのディストリビューションUbuntuのインストール方法。
Windows10でのインストール方法。
仮想環境はVirtualBox 5.1。
①isoイメージ取得
サイトからisoイメージを取得。
ここで注意したいのが、64bit版か32bit版のどちらを選ぶかってこと。
64bit版は性能は上なんだけど、新しいパソコンでないと動かないってことがあるのだそう。
私のパソコンは64bit版ではどうやら動かぬようで。
まんまとひっかかり、ずいぶん時間を費やしてしまいました...。はは
②仮想マシン作成
VirtualBoxを起動して、仮想マシンを作成します。
左上の【新規】をクリック。
仮想マシンの名前とオペレーティングシステムのタイプを選択。
タイプはLinux。バージョンはUbuntu。て感じ。
Ubuntuは選択するときは64bit版か32bit版か選ぶこと。
次に、メモリーやハードディスクのサイズなどの設定。
必要に応じてサイズは変更。
なんだけど、ここでもまるもは躓きました。
いざインストールというところで、HDD容量不足でインストールできない事態に...。
サイズは割と大きめに設定しておくのが賢明かも(; ;)
ここまできたら、作成した仮想マシンが左側の仮想マシン一覧に追加されます。
仮想マシンを選択し、左上の【設定】をクリック。
設定ダイアログが表示されたら、左側にある【ストレージ】を選択。
コントローラー:IDEの下にある【空】をクリックし、右側にある【光学ドライブ】のさらに右側にあるディスクのマークをクリック。
「仮想光学ディスクファイルを選択」をおし、ダウンロードしたiosファイルを選択。
これで、Ubuntu 16.04をインストールする準備は整いました。
③インストール手順
仮想マシン一覧から作成した仮想マシンを選択し、【起動】を選択。
新しいウィンドウが立ち上がります。
左側の覧から言語を選択し、【Ubuntuをインストール】!
④インストールの種類
次にインストールの種類を決めます。
わたしは、「ディスクを削除してUbuntuをインストール」にしました。
次に、タイムゾーンやキーボードのレイアウトを設定する。
ユーザー情報を入力する。
⑤インストール開始
ここまできたら、さっそくインストール開始です。
インストール完了が終わり、再起動したら終わり。
以上!
これで、Linuxが使えるぞ。