LoginSignup
3

More than 3 years have passed since last update.

posted at

updated at

Linux再入門してみた

はじめに

新しい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をつけないと普通の正規表現。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3