1
3

More than 3 years have passed since last update.

2−1.WEB系エンジニアになるためのインプット(Linux基礎)

Posted at

はじめに

こちらの記事の続きとなる。
1−1.WEB系エンジニアになるためのインプット(準備)
Linux基礎を作るためにインプットとそのアウトプットの記事となります。
また、内容が多いため記事を分けて掲載する。

先の記事でも記載しておりますが、教材と環境は下記の通りです。
・教材はUdemy for businessを活用する。
 【5日でできる】はじめての Linux 入門(LPIC Level1対応)
 (講師:井上 博樹 (Hiroki Inoue))
・Linux環境(Ubuntu)はAWSのEC2インスタンスを活用する。
 -リージョン:アジアパシフィック (東京)ap-northeast-1
 -AMI:Ubuntu Server 20.04 LTS (HVM), SSD Volume Type
 -インスタンスタイプ:t2.micro

Linuxのコマンド(UNIX)

Linuxを操作するためのコマンドを記述していく。
ただし、自身が既に扱える箇所は省かせていただきます。

相対パスと絶対パス

絶対パス

ルートディレクトリからのパスを全て入力。

/usr/local/bin/***

相対パス

カレントディレクトリからの相対的な位置関係を指定。

現在の位置
./

また、/usr/local/binから/usr/local/を指定したいときは下記を使う。

1つ上の階層
../

シェルの操作

シェルの種類

  • bash
  • csh
  • tcsh

標準はbash(bourne again shell)となる。

コマンドの履歴

historyコマンドを使う。

コマンドの履歴
history

また、過去のコマンドには番号が振られており、番号を使って再利用できる。
これにより、タイプミスを防ぐことができる。
例えば、[117 pwd]という履歴があった場合の再利用コマンドは下記

コマンドの再利用
!117

コマンドラインの先頭と末尾

コマンドラインに入力した文字が長い時、矢印キーで横に進むのはめんどくさい!そこで一発で移動する方法があります。

先頭に移動
Ctr + a
末尾に移動
Ctr + e

シェル変数

コマンドライン上で変数を作って確認する

変数の作成
INFILE="infile.txt"

下記コマンドで[infile.txt]と表示され、確認できる。

変数の確認(1)
echo $INFILE
もしくは
echo "$INFILE"

下記コマンドの場合は[$INFILE]と表示される。

変数の確認(2)
echo '$INFILE'

下記コマンドで変数のリセットができる。変数の確認(1)で、リセットされていることが確認できる。(空白が表示)

変数のリセット
unset INFILE

環境変数

envコマンドで環境変数の設定を確認できる.

環境変数の確認
env | more
※moreでスクロールで中身を確認できる

環境変数を追加したいときは下記コマンド

環境変数の追加
export INFILE

viエディタ

テキストエディタの使い方を記載する。
例えば、result.txtをテキストエディタで開く場合は下記コマンド。
また、このファイルが存在しない場合は新規作成も同時に行われる。

テキストエディタ
vi result.txt

操作方法が複雑のため、下記表にまとめた。

カテゴリ コマンド 内容
終了キー :q セーブしないで終了
:q! 変更した行もセーブせずに終了
:w セーブするが終了しない
:wq セーブして終了
編集モードへ移るキー i 現在のカーソル位置から挿入
R 現在のカーソル位置から置換
A 現在行の末尾に追加
O 現在行の前に行挿入
o 現在行の次に行挿入
カーソル移動キー h(←)
j(↓)
k(↑)
l(→)
0 行頭へ
$ 行末へ
[Enter] 次の行の先頭へ
w 次の単語へ
b 前の単語へ
ctrl + f 次画面へ
ctrl + b 前画面へ
1G 文頭へ
G 文末へ
nnG nn行目へ
変更キー x 1文字削除
dd 1行削除(カット)
cw 1語変更
c$ カーソル位置から行末まで変更
dw 1語削除
d$ カーソル位置から行末まで削除
検索 /正規表現 前方検索
?正規表現 後方検索
n 次の候補
N 前の候補
置き換え :1,$s/正規表現/置き換え文字列/g 文書内の全ての「正規表現」を「置き換え文字列」に置換
ショートカット yy 1行コピー
dd 1行カット
p ペースト(張り付け)

ファイルの操作

lsのオプション

隠しファイルも含めて表示
ls -a
ファイルの詳細
ls -l
隠しファイルも含めて、ファイルの詳細(組み合わせ)
ls -la
iノード番号も表示
ls -i

ファイルの属性を確認

属性を確認
file text.txt

ファイルのコピー(ddコマンド)

[if=]はコピー元ファイル名、[of=]はコピー先ファイル名、[bs]はコピーするブロックサイズ(バイト)、[count]はコピーするブロックの数

ファイルのコピー(dd)
dd if=/dev/zero of=zero.dat bs=512 count=1024

ファイルのコピー(cpコマンド)

コピー元をhello.txt、コピー先をhello1.txtとすると下記
コピー元のhello.txtは残ったままとなる。

ファイルのコピー(cp)
cp hello.txt hello1.txt

ファイルの削除

ファイルの削除
rm hello2.txt

ファイルの移動

移動するファイルをhello2.txt、移動先をsourcecodeとする。
元のhello2.txtは移動して、元のディレクトリからは無くなる。

ファイルの移動
mv hello2.txt sourcecode/

ディレクトリの削除

そのままではその中にディレクトリが格納されていると削除できないので、オプションをつけて強制的に削除する

ディレクトリの強制削除
rm -fR sourcecode

ファイルの検索

ディレクトリにあるファイルを検索することができる.
例えば、今いるディレクトリに[networks]と付くファイル名を一覧で表示するためのコマンドは下記となる。
また、sudoをつけることで許可がないファイルに対する検索エラーを回避することができる。

名前指定のファイル検索
sudo find . -name networks

圧縮とアーカイブ

圧縮・展開方法にはいくつか種類がある

  • tar
  • gzip(=gunzip) tarと併せて使う
  • bzip2 tarと併せて使う
  • xz
  • cpio バックアップ装置と一緒に使う

tarコマンド

tarコマンドが主流のため、こちらを学ぶ

オプション

オプション 内容
f ファイル名
c 作成
x 展開
r 末尾に追加
v 詳細を表示
j bzip2ファイルを扱う
z gzipファイルを扱う

圧縮

tarを使って、work2というディレクトリを圧縮し、work2.tar.gzというファイルを作成するコマンドは下記となる。
また、zオプションによりgzipも併せて使って圧縮する。
なお、tarコマンドで圧縮した元のファイルやディレクトリは残る。
tarコマンド単体で展開したときは圧縮ファイルは残る。

圧縮
tar czf work2.tar.gz work2

展開

圧縮して作成されたファイルを展開するコマンドは下記となる。

展開
tar xvzf work2.tar.gz

gzip単体の場合

tarコマンドと併せないで、単体でgzipを使える。
text.txtをgzipで圧縮すると、text.txt.gzファイルが生成される。

gzip単体で圧縮
gzip text.txt
gzip単体で展開
gzip -vd text.txt.gz
※vは詳細を表示

gzipコマンド単体で展開したときは圧縮ファイルは消える。

bzip2コマンドの場合

使い方はgzipコマンド単体と同じとなる。圧縮されて生成されるファイルはtest3.txt.bz2となる。

xzコマンドの場合

使い方はgzipコマンド単体と同じとなる。圧縮されて生成されるファイルはtest3.txt.xzとなる。

cpioコマンドの場合

CPIOlコマンドには3つのモードがある。

  • コピーアウトモード
  • インサートモード
  • コピーパスモード

ファイル名一覧が格納されたfilelist.txtとしたとき、アーカイブファイルを作成するには下記コマンドとなる。

cpioコマンドでの圧縮
cpio -o < filelist.txt > files.cpio
もしくは
ls | cpio -o > files.cpio
cpioコマンドでの展開
cpio -i < files.cpio

また、コピーパスモードによりファイルの移動もできる。
例えば、copytoというディレクトリに移動するコマンドが下記となる。

cpioコマンドのコピーパスモード
cpio -pd copyto < filelist.txt

リンク

ファイルに別の名前でアクセスする仕組み

  • ハードリンク:同じiノードに異なる名前
  • シンボリックリンク:iノード番号を持たない。別名のみ管理

ファイルシステムとは「ファイルを管理するし仕組み」(VFS)であり、各デバイスとはiノードを使って関連つけている。

ハードリンク

ハードリンクを作成するのはlnコマンドを使う。この2つを比較すると、それぞれは同じiノードを持っていることが確認できる。片方を削除してももう片方は参照できる。

ハードリンクの作成
ln test.txt sample.txt
iノードの確認
ls -li

シンボリックリンク

ハードリンクを作成するのはlnコマンドを使う。この2つを比較すると、異なるiノードを持っており、sample.txtがtest.txtに紐づいていることが確認できる。元のファイルを削除するともう片方は参照できなくなる。

シンボリックリンクの作成
ln -s test.txt sample.txt
iノードの確認
ls -li

ストリーム&パイプ&リダイレクト

標準入出力

入出力 役割
標準入力(stdin[0]) 入力チャネル
標準出力(stdout[1]) 出力チャネル
標準エラー(stderr[2]) エラーを出力するチャネル

リダイレクト

リダイレクト 動作
cmd > file 出力をリダイレクト
cmd >> file 出力をファイルにアペンド(追加)
cmd < file 入力のリダイレクト
cmd << xxx 入力終端文字列の指定(EOFなど)
cmd 2> file エラー出力をファイルに
cmd file 2>&1 標準出力とエラー出力をファイルに

パイプ

リダイレクト 動作
cmd1 | cmd2 cmd1の標準出力をcmd2の標準入力に渡す
cmd1 2>&1 | cmd2 cmd1の標準出力とエラー出力をcmd2の標準入力に渡す
cmd1 | tee file | cmd2 cmd1の標準出力をfileに書き込み、cmd2の標準入力に渡す

テキストストリームとフィルタ

cutコマンドを利用する

cutコマンド
cut [オプション] ファイル名
オプション 機能
-d: 区切り文字の指定。左の場合は「:」
-f*,* 処理対象の番号指定

例えば、[root: x:0:0:root:/root:/bin/bash]からユーザ名とホームディレクトリを取り出すコマンドは下記となる。

cutコマンド
cut -d: -f1,6 passwd

正規表現と検索

正規表現とは文字列集合をパターン化すること

  • メタキャラクター:なんらかの文字を表すための文字
  • リテラル:文字そのもの

メタキャラクタ

表現 機能
^word 行の先頭が一致
$word 行の末尾が一致
. 任意の一文字
* 直前の文字の繰り返し
? 直前の文字の0個または1個に一致
+ 直前の文字の1回以上の繰り返し
[] []うちのいずれか一文字にマッチ
¥< word ¥> 単語にマッチする文字列
¥{n,m¥} n回以上、m回以下の繰り返し
| 複数条件を指定
¥ 次の文字をメタキャラクタではなくリテラルに

文字クラス

表現 機能
[:alnum:] アルファベットと数字
[:alpha:] アルファベット
[:digit:] 数字
[:lower:] 小文字
[:upper:] 大文字
[:space:] スペース

リテラル

文字そのもの。メタキャラクタと組み合わせて使う。
例えば、xyz[1-4]としたとき、xyz1,xyz2,xyz3,xyz4のいずれか

正規表現を使う

正規表現
grep [オプション] 'パターン (正規表現) 'ファイル名
もしくは
egrep [オプション] 'パターン (正規表現) 'ファイル名
もしくは
fgrep [オプション] 文字列 ファイル名
オプション 機能
-c 一致した行だけ表示
-i 大文字・小文字を区別しない
-n 先頭に行番号をつけて一致行を表示
-v パターンに一致しない行を表示
-E egrepと同じ
-F fgrepと同じ

sedによる置換

置換
sed 's/[パターン]/置換文字' ファイル名

プロセスの操作と制御

ジョブは[ls -l | more]で、プロセスは[ls -l][more]となる。
プロセス番号(PID)が自動的に割り当てられ、psコマンドで確認できる。
また、topコマンドでリソース消費量などを確認できる。

さいごに

linux基礎として、コマンドの基本を学んだ。
次回は管理業務・ファイルシステム管理を学ぶ

1
3
0

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
  3. You can use dark theme
What you can do with signing up
1
3