はじめに
新しいLinuxの教科書をよんでLINUXに再入門してみました。
ターミナル
ユーザーがコンピュータへ入出力する際に利用する専用のハードウェアのことただし、現在は物理的なターミナルをソフトウェアによって実装たターミナルエミュレータが利用される
いろんな呼ばれ方
- ターミナルエミュレータ
- 端末
- 仮想端末
- 端末エミュレータ
- 端末ウインドウ
- コンソール
- コンソール端
- など
シェル
bash
シェルのトラブル対応
- Ctr+s 画面表示をロック
- Ctr+q 画面表示のロックを解除
シェル上ではCtr + キーを ^キーで表現する
コマンド履歴
Ctr + r
(reverse-i-search)`':
一文字入力するごとに履歴を検索するモード
さらに
-
Ctr + r
と押せば一つ前の検索結果へ移動 - Enterで検索結果を実行
- 現在の検索結果を表示したまま、コマンドラインに戻る
-
Ctr + g
で結果をはき 、プロンプトに戻る -
Ctr + s
で一つ戻るけど、画面ロックに割当られているので、解除する必要あり
コマンド
find
- ファイルの種類で探す
- -type f ファイル (デフォルト)
- -type d ディレクトリ
- -type l シンボリックリンク
find ./ -type f -name aaa.txt -print
bash
シェル変数
bash 内部で使用される変数。bashが参照しているので、特別な意味を持つシェル変数が多く用意されていろいカスタマイズすることができる
- PS1
- プロンプト設定
- PATH
- コマンド検索パス
- LANG
- 現在のロケール。シェルのメッセージの表示言語や日付の書式
- 自動的に環境変数として設定される
var1="aaaaaa"
echo $val1
環境変数
- 外部コマンドはファイルシステム上に存在するコマンド
- 組み込みコマンドはシェル自体に内蔵しているコマンド
環境変数は外部コマンドからでも値を参照できる
多くのシェル変数が環境変数として設定されている
printenv
export シェル変数名
bashの設定ファイル
ログインシェルの読み込む順番
/etc/profile
↓
~/.bash_profile
↓
~/.bashrc
非ログインシェルの読み込む順番
~/.bashrc
使い分け
-
/etc/profile
- すべてのユーザに共通の設定項目
-
~/.bash_profile
- ログイン時に一度だけ設定すればよい項目
-
~/.bashrc
- bashを起動sるたびに毎回設定する必要がある項目
多くの設定はbashを起動するたびに毎回設定する必要があるので.bashrに書けばよい
ユーザーとグループとパーミッション
- グループは同じ役割をもつユーザーをまとめたもの
- システム管理者の権限をもたせたいユーザにはwheelグループに所属させればよい
- デフォルトでユーザーはユーザー名と同じグループに所属する
ファイルパーミッション
-rw-r--r--. 1 root root 21554 Nov 15 2018 test
オーナー:グループ:その他ユーザー
ディレクトリのパーミッション
drwxr-xr-x 2 root root 4096 Mar 14 17:00 test-test
ファイルを削除できるかどうかはディレクトリのパーミッションで決まる
ディレクトリでxが設定されている場合、cdでそのディレクトリに移動したり、ディレクトリ下にあるファイルの読み書きができる
ルートユーザー
su
su - // rootユーザーの環境に初期化されて
su // 環境変数やカレントディレクトリなど現在の環境を維持したままユーザーだけが切り替わる
sudo
別のユーザとしてコマンドを実行するために利用
sudo cat /etc/shadow
現在ユーザーのパスワードを求められる
許可されていればコマンドを実行できる
ユーザーへのsudo許可
/etc/sudoers
visudoコマンドで編集する
wheelグループに所属させるとすべてのコマンドが実行できる
<ユーザーor%グループ> <マシン名>=(<権限>)<コマンド>
%wheel ALL=(ALL) ALL
sudo を使って、rootユーザーでの操作は最小限にする
プロセス
- メモリジュオで実行状態にあるプログラム
- 実行ユーザーが設定されていちえ、他人のプロセスを勝手に操作することもできない
- すでに存在している別のプロセスをもとに作成される。親子関係。
- デーモン ターミナルに接続していないプロセス
psコマンド プロセスの表示
TTYはターミナルを意味している。
ハイフンをつけるのはUNIXオプション
ハイフンをつけないのはBSDオプション。BSDオプションが主流らしい。
現在のターミナルで実行しているプロセス
# ps
PID TTY TIME CMD
24021 pts/0 00:00:00 su
24022 pts/0 00:00:00 bash
26512 pts/0 00:00:00 ps
現在のユーザーが実行中のプロセス
fは親子も示す
# ps xf
システムで動作しているすべてのプロセスを表示
# ps ax
よく使うやつ
# ps auxfwww // xで詳細 wwwで表示幅を制限しない
UNIXオプション(ハイフンつける)
# ps -ef //eですべてのプロセスを表示 fで親子
killコマンド
シグナルを送信するコマンド
kill -シグナル名
デフォルトはTERM
kill -TERM プロセスID
TERMは終了。
プログラムの種類によってはTERMシグナルを受信したときに現在の状態を保存したり、一時ファイルを削除したりして終了するので、まずはkillしてそのあと強制終了させたほうがよい
リダイレクト
標準エラー出力はプログラムのエラーメッセージを出力するためのチャンネル
標準エラー出力のリダイレクト
ls aaaaa 2> aaa.txt
標準出力(1)と標準エラー出力(2)をまとめる
2を1へ
ls aaaa > aaaa.txt 2>&1
標準出力をaaaa.txtへ。標準エラー出力を1とおなじものへ。
&1は標準出力を表す
/dev/null
エラーメッセージを非表示にする
ls / /xxxxx 2> /dev/null
grep
正規表現は``で囲む。
grep 't[ef]'
正規表現を使う場合は拡張正規表現を使えるgrep -E を指定すればよい
拡張正規表現
- 使えるメタ文字を増やした拡張正規表現
- grep -E で使える。 -Eをつけないと普通の正規表現。