入門者のLinux 6章 まとめ

奈佐原顕郎さん「入門者のLinux」より

 

出力・アウトプット

・「ls」や「cat」などのコマンドが、処理の結果をなんらかの形で外に向かって出すこと
・画面表示だけでなくプリンタに印刷したりハードディスクやUSBメモリに書き出したりする

入力・インプット

・コンピュータやソフトに情報を受け渡すこと
・マウスやキーボード、音声入力などでする

標準入出力

Unixで使われる入出力の仕組み
・入出力をキーボードや画面に限定せずより象徴的に扱う
・情報の受け渡しがユーザーとコンピュータ間だけでなく、コンピュータの中のソフトウェア同士の間でも容易になる
・小さなソフトウェア(コマンド)を組み合わせ、複雑で大きな処理を柔軟にかつ分散して行うことができる

出力

echo

・後に続く文章をオウム返しのようにそのまま表示する
・ファイルを作るときや、シェル変数、シェルスクリプトを学ぶ際に役立つらしきコマンド
・「>」という記号はコマンドからファイルへと情報が流れる様子を表す。たとえば

echo Hello! > output

ならば、カレントディレクトリに新たにoutputというファイルが作られ、その中にHello!という文が書かれている

・この機能はUnixではとても大切な基本的機能であり、「出力リダイレクト」と呼ばれる(方向付けしなおすという意味がある)

出力リダイレクトで上書き・追記

・「>」を使うとファイルを上書きする
「>」を「>>」にすると前の内容を消さずにファイルの末尾に新しい結果を追記していく(新規ファイルの場合どちらも同じ結果になる)

入力リダイレクト

・ファイルから入力する機能

bc

・かんたんな四則演算ができるコマンド
・計算式を入力として与えられるとそれらの式をもとに計算して結果の値を出力する
・使い終わったらquitでbcを終了しシェルのプロンプトに戻ってくること
入力リダイレクトではbcコマンドに計算式を入力することをファイルから行う
たとえば

echo 2+3 > input

・2+3という計算式の入ったテキストファイルをつくる。これをbcコマンドに渡し実行させる

bc < input

・シェルでは最初にコマンド名を打たなければならない

リダイレクト

・出力リダイレクトと入力リダイレクトをあわせてこう呼ぶ

コマンド(ソフトウェア)を相手にした入出力

コマンドの出力を画面やファイルを経由せずに、直接的に他のコマンドの入力にしてしまう

|

・パイプ
・直前のコマンドが出す出力を、直後のコマンドの入力にする
・3つ以上のコマンドをつなぐとき「パイプライン」と呼ぶ

less

・入力されたテキストデータを画面の縦の長さに応じて1ページずつ表示し、適宜、行き来できるようにするコマンド

wc

・word countの略。テキストデータの行数・語数・文字数を数える

余談

パイプの必要性

・1つのコマンドの結果を出力リダイレクトでファイルに書き出し、そのファイルを入力リダイレクトで次のコマンドに渡すのとパイプを使うのでは同じ結果になり、このような用途で作られるファイルを中間ファイルという。

中間ファイルとの比較

中間ファイル

・処理が正しく行われているかチェックしたり記録するのに有用だが、ハードディスクなどにアクセスするので時間を食ったり空容量が必要になる。
・前のコマンドが完了して中間ファイルが完成しなければ次のコマンドを動かすことができない

パイプ

・ハードディスクへのアクセスを省略するので高速化でき、空容量も必要ない
・前のコマンドの出力を後ろのコマンドの入力が待ち構えており、少しでもデータが流れてきたら後ろのコマンドは動き始める(Unixマルチタスクという複数の仕事を同時並行で行う機能を活用している)。

パイプを使うと全体の処理を高速化できる

入門者のLinux 5章 まとめ

 

奈佐原顕郎さん「入門者のLinux」より

 

ファイルの中身を見るコマンド

cat (concatenateの略) ファイル名

・CPU(中央演算処理装置)に関する情報がみれる
・テキストファイルのみ表示できる
文字コードの取り決めに従って各数値を文字に置き換えて表示する

ファイルの種類

テキストファイル

・文字で表された情報
・コンピュータの中ではそれぞれの文字は特定の数値の並びで表現される(文字コード、キャラクターコードという)
文字コードで定められた数値だけが並んで格納されているファイル
UnixではOSに関わるほとんどすべての設定情報をテキストファイルとして管理

バイナリファイル

・初心者向けにいうとテキストファイル以外のファイルがバイナリファイルだが実際にはそれは正確ではない

楽をするコマンド

・コマンドを途中までうってtabキー

ファイルを作る

すでにあるファイルからコピーして新たにファイルをつくる場合

cp コピーしたいファイル名 コピーファイル名

ファイルの名前変更

mv 変更したいファイル名 変更後のファイル名

・mvコマンドは名前変更とファイルを別のディレクトリに移動することもできる

mv 移動したいファイル名 移動後のディレクトリ

ファイルの削除

rm -f 消したいファイル名

・-fは「有無を言わさず消す」というオプション
・ファイルに使ってはいけない文字
 「/」「?」「*」「<」「>」「|」「;」「:」「¥」「,」

Unix文化

すべてのデバイスをファイルとして表現する

バイス:画面,ハードディスク,プリンタなどのCPの部品や周辺機器のこと

ls /dev

・デバイスがファイルとして扱われていることを実際に確認できる

 

練習問題のとこどうしてその動作になるのかわからないとこあったから聞かないと。

入門者のLinux 4章 まとめ

奈佐原顕郎さん「入門者のLinux」より

ディレクト

・ファイルが保存されている場所
・データやプログラムはファイルという単位で必ずどこかのディレクトリに格納される
・入れ子になって存在する(ディレクトリの中にディレクトリさらにそのディレクトry)本の図がめっちゃわかりやすいからおすすめ
ディレクトリの階層構造のことをディレクトリ・ツリーという

ルートディレクト

/

・すべてのディレクトリに最上流に位置する

カレントディレクト

・シェルを操作するユーザーは常にディレクトリ・ツリーの中のどこかのディレクトリにいることになっている。それのこと

pwd

・カレントディレクトリがどこなのかを表示する

ディレクトリの移動

cd (change directory)

・様々な仕事をするときその仕事に必要なデータやプログラムのあるディレクトリに行く(そこをカレントディレクトリにする)ためのコマンド

ホームディレクト

/home/ユーザー名

・ユーザーが自由にデータを置くことができるディレクト
・ユーザーの利用環境に関する設定情報も保管されている

特別なディレクトリの表現方法

.

・カレントディレクト

..

・一つ上のディレクト

/

・ルートディレクトリあるいはディレクトリ同士の包含関係

~

・ホームディレクト

プロンプトの変化

・現在自分がどこのディレクトリにいるかわかりやすくしてくれる
Linuxの標準機能ではなく、Ubuntuなどの特定のディストリビューションで初期設定にされているので非表示にすることもできるしもともとその機能がないディストリビューションもある

ディレクトリの中身を見る

ls

・調べたいディレクトリを引数で指定して実行すればそのディレクトリの内容を見ることができる

オプションによる機能拡張

lsコマンドに -l というオプション

・より詳細な情報が出る

例えば

ls -l /usr の結果

・drwxr-xr-xの先頭のdはカレントディレクトリですよというしるし。もしファイルならdは表示されない
・rwx以下はパーミッションと呼ばれるもの(次章)

2列目:リンク数
3列目:所有者名
4列目:グループ名
5列目:サイズ(バイト数)
6~8列目:最終更新日時
9列目:ファイルやディレクトリの名前

man ls

・lsコマンドのマニュアル表示

ls --help

・シンプル版のマニュアル

ディレクトリの作成

mkdir (make directory)

ディレクトリの名前変更

mv (move)

ディレクトリの削除

rmdir (remove directory)

・空っぽでないディレクトリを消すには「rm -rf」コマンド

パス

・個々のディレクトリやファイルがディレクトリ・ツリーの中のどこにあるかという情報のこと

絶対パス

/home/maruko/test

・このようにルートディレクトリからたどってパスを表現する
・カレントディレクトリから遠く離れたディレクトリやファイルを指定するときよい
・カレントディレクトリがどこであれ、常に同じディレクトリやファイルを指定できる

相対パス

./maruko/test

・カレントディレクトリを起点にどのようにディレクトリをたどればそのファイルまたはディレクトリにたどり着くかというやりかた(.は省略可)
・カレントディレクトリのすぐ近くにあるディレクトリやファイルを指定するとき簡潔に表せる
・カレントディレクトリが違えば無意味なパスになる

冗長性

・同じことをするのにいくつもやり方があること
・システムの整合性や柔軟性を確保してくれる

余談

・「bin」「sbin」はコマンドを走らせるプログラムのファイルが入っているディレクトリ(binはbinariの略。Unixでは実行可能なプログラムの実体をbinary fileと呼ぶ)
・「include」「lib」「src」はプログラムを開発するときに必要なものが入っている
・「local」はユーザーが独自に入れるソフトなどのためのディレクト

入門者のLinux 3章 まとめ

奈佐原顕郎さん「入門者のLinux」より

 

ターミナル出現

Ctrl + Alt + t 

プロンプト

$

 *コマンド入力待ち 

今日の日付と現在の時刻

date

ハードディスクやUSBメモリの使用状況を表示

df

カレンダーを表示

cal

・半角スペースを空けて添える情報を引数と(パラメータとも)いう
・calは年や月日を引数にとることができる
・-に何かの記号を続ける(オプション)ことにより挙動が変わる

コンピュータのメモリに関する情報

free

コマンド履歴

history

コマンド再利用

↑(上矢印)

ソフトのインストール

sudo apt-get install ソフト名

処理中断

ctrl + c

x秒間、停止せよ

sleep x

大切

・エラーメッセージをよく読み、試行錯誤を繰り返して問題解決をすること
・エラーメッセージの意味がよくわからなくてもいいからスルーしないこと
・習うより慣れろ

入門者のLinux 2章 まとめ

奈佐原顕郎さん「入門者のLinux」より

 

Linuxを自分のpcで動かす方法

ハードディスクを付け替える

・バックアップをちゃんととって!

デュアルブート

・一台のパソコンに複数のOSを同居させ起動するたびにどちらかを選択する
・リスクが大きいので自己責任で

仮想環境

VirtualBoxQEMUなどのオープンソースの仮想環境を実現するソフトにLinuxを入れて動かす(私はVirtualBoxでやりました)
デュアルブートと違い同時に複数のOSを走らせることができる

ディストリビューション(Ubuntu使用)

Ubuntu Linux

・ユーザー層が厚く日本語サポートや各種アプリケーションソフトが充実している
・バージョン番号は西暦の下二桁と月二桁をドットをはさんで並べたもの
・ソフトは最新だと新たな試みが詰まっている分不具合が多い(枯れていないという)
・「革新的」と「枯れている」は両立しない
・頻繁に新バージョンを出すのと並行して特定のバージョンについて長期間サポートすることにしている(Long Term Support,LTS)

入門者のLinux 1章 まとめ

Oracleマスターブロンズ12c資格試験合格しました。

ということでこれからLinuxの勉強をしていきます。

 

まず奈佐原顕郎さんの「入門者のLinux」という本から。

あ。この本めっちゃよいですよ。

しばらく簡単な備忘録を。

今回は1章

世の中のコンピュータの共通点

基本ソフトを載せないと動かない

・コンピュータを動かすための縁の下の力持ち的なソフトウェア
Linuxは基本ソフトの一種
・世の中のほとんどのコンピュータに載る

UnixLinux

・1970年ごろ米国でUnixという素晴らしい基本ソフトが誕生
・同じ頃、オープンソースソフトウェアという思想が広まる
オープンソース版のUnixを作る中で最終的に最も普及したのがLinuxである
Linuxオープンソースであり、世界中の人たちによって作られている

操作方法

GUI (graphical user interface)

・ウィンドウやアイコンをマウスやタッチパネルで操作

CUI (character user interface)

・コマンドをキーボードで打ち込んで操作
UnixLinuxは本来こちらを使用する

Linuxキーワード

コミュニティ

・何か特定のソフトの開発者とユーザーからなる自発的な集まり

カーネル

Linuxの中枢部をなすソフト

ファイル

・コンピュータで扱われる情報のひとまとまりの単位

パッケージ

・一つのソフトをインストールしやすい形にまとめたもの
カーネルもパッケージとして提供される

ディストリビューション

カーネルにいろいろなソフトを組み合わせて使いやすくしたもの
・いろんな種類がある

ディレクトリ

・フォルダ的なファイルや別のディレクトリを入れる入物

マウント

・ハードディスクやUSBメモリはまず「デバイスファイル」というファイルとして認識される。それを一つのディレクトリとして認識させることをいう

シェル

LinuxCUIを提供するシステム

MacにVirtualBoxをインストールし、CentOSをインストールする

VirtualBoxのインストール

・Downloads – Oracle VM VirtualBox からMac用のPackageをダウンロードしてインストール

CentOSのダウンロード

VirtualBox仮想マシンを作成

・インストールした VirtualBox を起動して「新規」ボタンをクリックします。「名前」を適当に入力して「タイプ」を Linux、「バージョン」を Red Hat (64bit) にする。
*名前に Cent と入力するとタイプとバージョンが自動で変更される

・メモリーサイズを指定。メモリは実際のPCのメモリを使用するため7割以内(緑色の部分)でおさめるように。メモリが少ないと重くなるのでMacのメモリは最低でも8GB、理想は16GB以上はあった方がよい

・仮想ハードドライブを作成するが選択されてることを確認して作成をクリック

・ファイルタイプも他の仮想ソフトウェアで使用する必要がなければ、VDIのままにしておく

・ストレージを可変サイズか固定サイズか選択。容量に余裕があれば固定サイズの方が高速

・最後にファイルの場所とサイズを確認される。問題なければ作成をクリック。ファイルは~/VirtualBox VMsに作成される

ホストオンリーネットワークの追加

仮想マシンを作成した段階ではネットワークアダプターは「NAT」のみになっている。この場合、インターネットなどのネットワークとは通信ができるが、ホストマシン(自分のMac)と通信することができない。仮想マシンとは言え、別のリモートサーバーにあると考えること。そこで、仮想マシンに「ホストオンリーアダプター」を追加し、ホストマシンと通信できるようにできる。「VirturalBox -> 環境設定」を開いて「ネットワーク -> ホストオンリーネットワーク」を作成

・作成されたネットワークをダブルクリックするとIPなどが確認でき、このIPアドレスを後ほど使う

・設定をクリックして「ネットワーク -> アダプター2」でネットワークアダプターを有効化して、作成したネットワークを割り当てる

仮想マシンにCentOS7をインストール

・CentOS7を仮想マシンにインストール。公式サイト Download CentOS からISOファイルをダウンロード。

ISOは3種類あり、DVD ISOは一般的な用途でよく使われるので、どれを使えばいいのか分からない場合はとりあえずこれ。Everything ISOはCentOS7で提供される全てのパッケージが含まれている。Minimal ISOは最低限のパッケージが含まれている。今回はMinimal ISOを使用。

Minimal ISOを選択するとダウンロードページに移動する。どのリンクでもいいが Actual Country が日本のサイトからダウンロードされる。

・ダウンロードが完了したら作成した仮想マシンを起動

・まだOSがインストールされていないので、ダウンロードしたCentOS7のISOファイルを指定する

・矢印キーで Install CentOS 7 を選択して Enter を押す

・言語を選択。右下に続行ボタンがあるのでクリック

・インストール先に警告マークが付いてるのでクリックして、何も変えずに完了をクリック。警告が消えるので右下にあるインストールの開始をクリック。

・インストール中に root のパスワードを設定してユーザーを作成しておく

・このユーザーを管理者にするにチェックを入れる

ネットワーク設定

・CentOS7からはネットワークの設定は「NetworkManager」を使用することが推奨されている。nmtuiコマンドを実行。

# nmtui

・メニュー画面が表示されたら「Edit a connection」を選択し「Enter」キー

・操作は矢印キーとEnterで行なう。まずは「enp0s3」を選択し「Enter」キーを押す

IPv6は使用しないので「Ignore」に変更して、Automatically connect(OS起動時にNICを有効化させる)にチェック(スペースキー)

・次は「enp0s8」。これは「ホストオンリーアダプター」になる。IPアドレスを固定にしたいので、Manual に変更してIPアドレスを設定。ホストオンリーネットワークのIPアドレス(192.168.56.1以外)を入力。IPv6を「Ignor」に変更して、Automatically connect にチェックを入れて完了

・Quit で終了

・Networkを再起動して設定を反映させる。

# systemctl restart NetworkManager

・これでMacのターミナルなどから SSH でログインできるようになる。要求されるパスワードはインストール時に設定したパスワード。

CentOS7に後からGUI(X Window System)を追加する

デスクトップ環境が欲しい場合

yum groupinstall で "GNOME Desktop" をインストールする。

$ sudo yum -y groupinstall "GNOME Desktop"
あるいは "Server with GUI" でも構わない。

$ sudo yum -y groupinstall "Server with GUI"

・インストールが終わったら、起動モードを graphical.target に変更する。

$ sudo systemctl set-default graphical.target
$ systemctl get-default graphical.target

・再起動する

$ sudo shutdown -r now

 

引用元

MacでVirtualBoxにCentOS7をインストールしてSSH接続をするまでの方法 - TASK NOTES

CentOS7 に後から GUI (X Window System) を追加する - CUBE SUGAR CONTAINER

この記事ほぼ引用です。リンク先がいつ消えるかわからないのでメモを。

わかりやすくて助かりました。