1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LPICレベル1に合格したから、今後も使えそうな知識をまとめてみた

Last updated at Posted at 2021-04-11

概要

先日、だらだらと勉強をしていたLPICのレベル1に合格しました。
Linuxについて、体系的に学べてよかったのですが、正直今後つかわないような範囲も結構ありました。
今回は、LPICレベル1の範囲の中で今後も覚えておくとよさそうなことを独断と偏見で選び、まとめていきます。
LPICの勉強を始めた直後にこんな記事も書いているので、良ければ読んでみてください。

尚、筆者はWindowsPCしか持っていないため、Microsoft Storeでダウンロードしたubuntuのアプリを使って操作しています。

基本的なコマンド

pwd

Print Working Directoryの略。現在の作業ディレクトリのパスを表示することができる。
環境変数PWDにも現在の作業ディレクトリのパスが格納されているため、同様の結果を得ることができる。

$ pwd
/home/testuser
$ echo $PWD
/home/testuser

cd

Change Directoryの略。引数にパスを渡すことで作業ディレクトリを変えることができる。

$ pwd
/home/testuser
$ cd /home
$ pwd
/home

cdcd ~で実行すると、現在ログイン中のユーザーのホームディレクトリに移動することができる。また、cd -で一つ前の作業ディレクトリに移動することができる。

$ pwd
/home
$ echo $USER     ## USERはログイン中のユーザー名が格納される環境変数
testuser
$ cd             ## ログイン中のユーザーのホームディレクトリに移動
$ pwd
/home/testuser
$ cd -           ## 一つ前の作業ディレクトリに移動
/home
$ pwd
/home

ls

List Directory Contentsの略。引数にパスを渡すことで、パスないに含まれるファイルやディレクトリを表示することができる。引数を省略すると作業ディレクトリに含まれるファイルやディレクトリを表示することができる

root@PC933:/# pwd
/
root@PC933:/# ls
bin  boot  dev  etc  home  init  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var
root@PC933:/# ls /var
backups  cache  crash  lib  local  lock  log  mail  opt  run  snap  spool  tmp
オプション 説明
-a 「.」から始まるファイルも表示する
-d ディレクトリ自身の情報を表示する
-l ファイルの詳細な情報を表示する

メタキャラクタを使うことで、任意の文字列をパス名に含むもののみを表示することもできる。

root@PC933:~/test# ls -l
total 0
-rw-r--r-- 1 root root 0 Apr  4 21:54 file.txt
-rw-r--r-- 1 root root 0 Apr  4 21:55 file1.txt
-rw-r--r-- 1 root root 0 Apr  4 21:55 log1.txt
-rw-r--r-- 1 root root 0 Apr  4 21:55 log2.txt
root@PC933:~/test# ls -l log*
-rw-r--r-- 1 root root 0 Apr  4 21:55 log1.txt
-rw-r--r-- 1 root root 0 Apr  4 21:55 log2.txt

mv

Move Filesの略。ファイル(ディレクトリ)の移動とファイル(ディレクトリ)のリネームを行うことができる。

root@PC933:~/test# ls -l
total 0
-rw-r--r-- 1 root root    0 Apr  4 21:54 file.txt
drwxr-xr-x 1 root root 4096 Apr  4 23:03 testdir
root@PC933:~/test# mv file.txt testdir/ ## file.txtをtestdirディレクトリに移動
root@PC933:~/test# ls
testdir
root@PC933:~/test# ls -l testdir/
total 0
-rw-r--r-- 1 root root 0 Apr  4 21:54 file.txt
-rw-r--r-- 1 root root 0 Apr  4 21:54 file.txt
root@PC933:~/test# ls
testdir
root@PC933:~/test# mv testdir/file.txt  testdir/file.rename.txt ## file.rename.txtにリネーム
root@PC933:~/test# ls -l testdir/
total 0
-rw-r--r-- 1 root root 0 Apr  4 21:54 file.rename.txt

rm

Remove files or directoriesの略。fileやディレクトリの削除を行える。

オプション 説明
-f 確認なしに削除を行う
-i 削除前に確認を行う
-r ディレクトリ全体を削除する

touch

本来はファイルのタイムスタンプを変更するコマンドだが、ファイルの作成のために使われることが多い。

root@PC933:~/test# ls -l
total 0
root@PC933:~/test# touch test
root@PC933:~/test# ls -l
total 0
-rw-r--r-- 1 root root 0 Apr  4 23:11 test

tee

標準入力から受け取った内容をファイルに保存しつつ、同様の内容を画面に表示するコマンド。

root@PC933:~/test# date | tee date.log
Sun Apr  4 23:14:59 JST 2021
root@PC933:~/test# ls -l date.log
-rw-r--r-- 1 root root 29 Apr  4 23:14 date.log
root@PC933:~/test# cat date.log
Sun Apr  4 23:14:59 JST 2021

ログ解析で使えそうなコマンド

cat

ファイルの内容を標準出力に出力するコマンド。

オプション 説明
-n 行番号を表示する
-b 空行を除き、行番号を表示する

less

テキストを1画面ずつ表示するコマンド。
分量が大きく、catで表示すると見切れてしまうファイルの内容を確認するときなどに使われる。

表示中の操作

キー 説明
space 次ページへ進む
b 前ページへ戻る
/<検索文字列> 後に検索をかける
?<検索文字列> 前に検索をかける
n 検索中に次候補に飛ぶ
N 検索中に前候補に飛ぶ

同様の機能を持つコマンドにmoreコマンドがあり、Windows PowerShellでも利用できる。

tail

ファイルの末尾を表示するコマンド。
-fオプションと合わせて使われることが多い。

オプション 説明
-n 行数 末尾から指定された行数のみ表示する(デフォルトでは10行表示
-f 末尾に追加された行を表示し続ける

cut

ファイルの各行から指定したフィールドを表示する。

オプション 説明
-d <区切り文字> フィールドの区切り文字をしているする(デフォルトではタブ)
-f <取り出すフィールド> 何番目のフィールドを表示するか指定する
root@PC933:~# cat test.log
20210405:INFO......
20210406:INFO......
20210407:INFO......

root@PC933:~# cut -d : -f 2 test.log ## 「:」を区切り文字に2番目のフィールドを表示
INFO......
INFO......
INFO......

sort

行単位でファイルの内容をソートするコマンド。

オプション 説明
-r 降順でソートする(デフォルトは昇順)
-b 行頭の空白を無視
-f 大文字小文字を区別しない
-n 数値として処理する(12を1ではなく12で処理する)
-t 区切り文字指定
-k ソートに何番目のフィールドを使うかを指定する

root@PC933:~# cat test.log
20210405:INFO...... :11
 20210406:INFO...... :33
20210407:INFO...... :22

root@PC933:~# sort -b -r -n -t : -k 3 test.log
 20210406:INFO...... :33
20210407:INFO...... :22
20210405:INFO...... :11

tr

標準入力から読み込んだ内容を変換、削除するコマンド。

root@PC933:~# cat tr.txt
Hello World
root@PC933:~# tr 'a-z' 'A-Z' <tr.txt ## 小文字を大文字に変換する
HELLO WORLD

オプション 説明
-d 引数に渡した文字列にマッチした文字列を削除する
-s 連続する文字列を1文字として処理する

trコマンドの引数には文字クラスを渡すことも可能。

クラス 説明
[:alpha:] 英字
[:lower:] 小文字
[:upper:] 大文字
[:digit:] 数字
[:alnum:] 英数字
[:space:] スペース
root@PC933:~# cat tr.txt
20210405 Hello World
root@PC933:~# tr [:lower:] [:upper:] < tr.txt
20210405 HELLO WORLD
root@PC933:~# tr -d [:digit:] <tr.txt
 Hello World

grep

ファイル内の検索を行うコマンド。
引数で渡した文字列が含まれる行を表示する。

オプション 説明
-i 大文字小文字を区別せず検索する
-n 行番号も表示する
-v マッチしない行を表示する
root@PC933:~# cat grep.txt
2021/04/05/ 18:56:1617616576 INFO ......
2021/04/05/ 18:56:1617616578 ERROR......
2021/04/05/ 18:56:1617616579 INFO ......
2021/04/05/ 18:56:1617616579 info ......
2021/04/05/ 18:56:1617616580 error......

root@PC933:~# grep -i -n error grep.txt
2:2021/04/05/ 18:56:1617616578 ERROR......
5:2021/04/05/ 18:56:1617616580 error......

環境変数

環境変数はexportコマンドを使って、設定することもできるが、bash起動時に自動で設定されるものがいくつかある(設定ファイルに書き込まれたものが設定される)。すべて覚えておく必要は全くないが、いくつか覚えておくと重宝するかも。

環境変数 説明
EDITOR デフォルトのエディタのパス
HOME ホームディレクトリのパス
HOSTNAME ホスト名
LANG ロケール
PATH コマンドやプログラムを検索するパス
USER 現在のユーザー

PATHを通したいときは下記のようにexportコマンドを叩けば設定できる。

export PATH=$PATH:<通したいPATH>

Linuxのファイルシステム

Linuxのファイルシステムには何種類かあるが、FHS(Filesystem Hierarchy Standard)として標準化が進んでいる。FHSでは/(ルートディレクトリ)を最上位に位置づけ、その配下にいくつかのディレクトリを配置していく。これもすべてを覚えておく必要はないが、主要なものは頭に入れておくといいと思われる。
よくわからないけど、ある設定ファイルを/etcディレクトリに配置するのと、/etcディレクトリは設定ファイルを配置するディレクトリだから、そこに配置しようとするのでは大きく違う。(と思う。)

ディレクトリ 説明
/bin 基本的なコマンドが配置される。
/sbin rootユーザーのみ実行できる、システム管理必要なコマンドが配置される(shutdown,rebootなど)
/etc 設定ファイルなどが配置される。
/dev デバイスファイルが配置される。
/lib 共有ライブラリが配置される。
/opt パッケージ管理の仕組み(apt,yumなど)によってインストールされたプログラムが配置される。
/root rootユーザーのホームディレクトリ
/home 一般ユーザーごとのホームディレクトリが配置される。
/var ログファイルなどが配置される。
/tmp 一時ファイルが配置される。
(一部割愛)

#ロケール
ロケールとは地域情報のことで、それぞれに対応した環境変数を設定することで、メッセージの出力言語や書式を変化させることができる。例えば、コマンド操作によって出力されるメッセージを変えたい場合はLC_MESSAGESを変更することで出力言語を変えることができる。

カテゴリ 説明
LC_TIME 日付や時刻の書式
LC_MESSAGES メッセージ表示に用いる言語
LC_ALL 全てのカテゴリで使われる値
LANG 全てのカテゴリで使われるデフォルト値

LANGを設定すると、各カテゴリのデフォルト値を設定でき、ここのカテゴリを設定していた場合はその値で上書きできる。一方で、LC_ALLを設定すると全てのカテゴリにその値が適用される。
(例)
LANG=ja_JP.utf8, LC_MESSAGESが空のとき、メッセージは日本語
LANG=ja_JP.utf8,LC_MESSAGES=en_US.utf8のとき、メッセージは英語
LC_ALL=jp_JP.utf8,LC_MESSAGES=en_US.utf8のとき、メッセージは日本語

クーロン

cronとは定期的にジョブを実行するための仕組みであり、スケジュール管理を行うcrondとcrontabコマンドで構成される。ユーザー毎に作成されるジョブが書かれたファイルとシステム全体のジョブが書かれたファイルの2種類がある。

ファイル 編集方法
ユーザー毎 /var/spool/cront/<ユーザー名> cronttab -e コマンドで編集
システム /etc/cron.*/配下のファイル viコマンドで編集

crontabコマンド

オプション 説明
-e crontabファイルを編集する
-l crontabファイルの内容を表示する
-r crontabファイルを削除する
-i crontabファイルを削除する(削除前に確認を行う)
-u <ユーザー名> 指定したユーザーのcrontabファイルを編集する(rootのみ実行可)

crontabファイルの例

# m h  dom mon dow   command
# 分 時 日 月 曜日 コマンド
  1 *    *  *   *     echo 'per minute'       #毎分実行
  0 0    *  *   *     echo 'every day'            #毎日0:00に実行
  0 9,18 *  *   *     echo 'every 9 and 18'       #毎日9時と18時に実行
  0 9-18 *  *   *     echo 'every hourly 9 to 18' #9時-18時の間、毎時実行
  0 */2  *  *   *     echo 'every 2 hours'        #2時間毎に実行

#まとめ
LPICは暗記が基本で、あまり役に立たないという話も聞いたりしますが、個人的には勉強しておいて良かったと思っています。何より、コマンド入力に慣れることが出来るのが1,2年目くらいの社員にとっては大きいかと思います。
少ししたらレベル2にも挑戦しようかな。

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?