SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】 基本ファイル操作コマンド LPICで学ぶLinux⑪


ファイル操作コマンドとして、Linuxにちょっと触ったぐらいでもすぐに使う機会が多いコマンドが中心。
逆に使わないオプションは全く使わないのでその辺をカバー。

lsコマンド

ディレクトリ内のファイルやディレクトリを表示するコマンド。

そのまま実行した場合は以下の通り。ディレクトリを指定しないとカレントディレクトリが表示される。

[wantan@localhost ~]$ ls
hardttt.txt  rpm  test.txt  ttt.txt

カレントディレクトリ以外を表示する場合にはディレクトリを指定する。

[wantan@localhost ~]$ ls /etc/systemd/
bootchart.conf  journald.conf  system       user
coredump.conf   logind.conf    system.conf  user.conf


オプション

実践的には「-l」オプションばかり使用しているが、試験的にも実践的にも他のオプションも重要。

オプション 説明
-a 隠しファイルも表示
-A カレントディレクトリと親ディレクトリ以外の隠しファイルも表示
-d ディレクトリ自身の情報を表示
-F ファイルの種類を表示
-i iノード番号を表示
-l ファイルの詳細な情報を表示
-t 日付順に表示
-h 単位付きで表示


■隠しファイルを表示する

ホームディレクトリなどで比較的使うけどどっちか覚えておけばいいかなって感じでした。

[wantan@localhost ~]$ ls -a
.   .bash_history  .bash_profile  .pki      hardttt.txt  test.txt
..  .bash_logout   .bashrc        .viminfo  rpm          ttt.txt
[wantan@localhost ~]$ ls -A
.bash_history  .bash_profile  .pki      hardttt.txt  test.txt
.bash_logout   .bashrc        .viminfo  rpm          ttt.txt

■ファイルの種類を表示する

-Fオプションで表示する。
末尾に表示される記号は以下の通り。
・/ ディレクトリ
・@ シンボリック
・* 実行ファイル

[wantan@localhost ~]$ ls -F
hardttt.txt*  rpm/  test.txt*  ttt.txt@

■iノード番号を表示する

[wantan@localhost ~]$ ls -i
33655957 hardttt.txt  34053653 rpm  33655957 test.txt  33655958 ttt.txt

■ファイルの詳細情報を表示する

[wantan@localhost ~]$ ls -l
合計 8
-rwxr-xr-x. 2 wantan root   242  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root   242  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 00:02 ttt.txt -> test.txt

■ディレクトリ自身の情報を表示する

-d」オプションを使用するが、それ単体で使用してもカレントディレクトリ「.」が表示されるだけなので、他のオプションと併用する。

[wantan@localhost ~]$ ls -dl
drwx------. 4 wantan wantan 172  725 18:37 .

cpコマンド

ファイルやディレクトリのコピーコマンド。これもよく使う。

コマンドの形式は以下の通り。普通にコピーする場合にはディレクトリ名を、別名として作成する場合にはファイル名を指定する。

cp [ファイル名] [ディレクトリ名 | ファイル名]
[wantan@localhost ~]$ cp test.txt karid/

オプション

オプション 説明
-f 同名ファイルを上書きする
-i 同名ファイルが存在する場合確認する
-p ファイル属性を維持してコピーする
-r ディレクトリを再帰的にコピーする(-R)
-d シンボリックリンクをシンボリックリンクとしてコピーする
-a 元ファイルの構成と属性を維持する

■ファイルの上書きコピー

強制するforceの「f」??

[wantan@localhost ~]$ cp -f test.txt karid/

■上書き時に確認する

多分ディストリビューションとかによって、オプションなしで強制上書きか確認するか違う。
Informationの「i」??

[wantan@localhost ~]$ cp -i test.txt karid/
cp: `karid/test.txt' を上書きしますか?

■ファイル属性を維持してコピー

普通にコピーするとアクセス時刻などが最新化されてコピーされるのでそれをそのままコピーする。
パーミッションのp?

[root@localhost wantan]# cp -p test.txt /tmp/

■ディレクトリのコピー

再帰的にコピーする場合ということだが、ディレクトリをコピーする場合には基本的にその中にファイル等が入っている場合がほとんどなのでディレクトリをコピーする場合には原則つける。

cp -r karid/ /tmp/

■元の属性を維持してコピー

「-a」オプションはシンボリックリンクとしての特性やファイル属性、ディレクトリ構造を引き継いでコピーするということ。
つまりは「-dpr」オプションをつけたときと等価。
試験的に重要性はいまいち不明。

[root@localhost wantan]# cp -a karid/ /tmp/


ちなみにオプションなしでシンボリックリンクをコピーするとリンク先のファイルがコピーされたような状態になることは試すまで知らなかった。

mvコマンド

ファイル移動のコマンド。Linuxとしてはファイル名変更コマンドとしても使用される。
感覚的にはcpコマンドと少し似ている。

[wantan@localhost ~]$ mv test3.txt karid/

オプション

オプション 説明
-f 同名ファイルを上書きする
-i 上書きする前に確認する

■同名ファイルを上書きする

[wantan@localhost ~]$ mv -f test.txt karid/


■上書きする際に確認する

[wantan@localhost ~]$ mv -i test.txt karid/
mv: `karid/test.txt' を上書きしますか?

cpコマンドを覚えていればそこまで苦労はしない気がします。

mkdirコマンド

ディレクトリの作成コマンド。

[wantan@localhost ~]$ mkdir test

オプション

個人的にオプションが覚えにくい。すぐ忘れる。

オプション 説明
-m パーミッションを指定してディレクトリ作成
-p 再帰的にディレクトリを作成

■パーミッションを指定してディレクトリを作成する

指定方法はファイル、ディレクトリのパーミッションを編集する「chmod」と同じような感じ。

[wantan@localhost ~]$ mkdir -m 700 test
[wantan@localhost ~]$ ll -d test
drwx------. 2 wantan wantan 6  728 23:02 test

■ディレクトリの内部にも再帰的に作成

「r」っぽいけどrじゃなくて、「-p」オプションを使う。
普通にやるとエラーになる。

・失敗例

[wantan@localhost test]$ mkdir test/ttt
mkdir: ディレクトリ `test/ttt' を作成できません: そのようなファイルやディレクト リはありません

・オプション付与

[wantan@localhost test]$ mkdir -p test/ttt
[wantan@localhost ttt]$ pwd
/home/wantan/test/test/ttt

再帰的にディレクトリが作成される。

touchコマンド

ファイル作成コマンドの認識しかなかったが、アクセス時刻の更新などにも使用される。

[wantan@localhost ~]$ touch abc.txt

既存のファイルに対して実行するとアクセス時刻、修正時刻が更新される。

[wantan@localhost ~]$ stat abc.txt
  File: `abc.txt'
  Size: 45              Blocks: 8          IO Block: 4096   通常ファイル
Device: fd00h/64768d    Inode: 34340460    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  wantan)   Gid: ( 1000/  wantan)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2020-07-28 23:16:32.833576834 +0900
Modify: 2020-07-28 23:16:32.833576834 +0900
Change: 2020-07-28 23:16:32.833576834 +0900
 Birth: -
[wantan@localhost ~]$ touch abc.txt
[wantan@localhost ~]$ stat abc.txt
  File: `abc.txt'
  Size: 45              Blocks: 8          IO Block: 4096   通常ファイル
Device: fd00h/64768d    Inode: 34340460    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  wantan)   Gid: ( 1000/  wantan)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2020-07-28 23:21:44.708139459 +0900
Modify: 2020-07-28 23:21:44.708139459 +0900
Change: 2020-07-28 23:21:44.708139459 +0900
 Birth: -

オプション

試験的には時刻関連のオプションが出題される。

オプション 説明
-t タイムスタンプを指定して変更
-a アクセス時刻のみ更新
-m 修正時刻のみ更新

■アクセス時刻のみを更新する

ここは普通にそのまま実行するだけ。アクセスで「a」なので覚えやすい。

[wantan@localhost ~]$ touch -a abc.txt

■修正時刻を更新する

こちらもmodifyの「m」なので覚えやすい部類。

[wantan@localhost ~]$ touch -m abc.txt

■時刻を指定して更新する

以下の形式で指定する。
[CC]YYMMDDhh㎜

[wantan@localhost ~]$ touch -t 201907201200 abc.txt
[wantan@localhost ~]$ stat abc.txt
  File: `abc.txt'
  Size: 45              Blocks: 8          IO Block: 4096   通常ファイル
Device: fd00h/64768d    Inode: 34340460    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  wantan)   Gid: ( 1000/  wantan)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-07-20 12:00:00.000000000 +0900
Modify: 2019-07-20 12:00:00.000000000 +0900
Change: 2020-07-28 23:33:51.913448693 +0900
 Birth: -

もちろん、aオプション、mオプションとも併用することができる。
試験的には併用まではあまりでなそう??

[wantan@localhost ~]$ touch -t 202010101111 -a abc.txt
[wantan@localhost ~]$ stat abc.txt
  File: `abc.txt'
  Size: 45              Blocks: 8          IO Block: 4096   通常ファイル
Device: fd00h/64768d    Inode: 34340460    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  wantan)   Gid: ( 1000/  wantan)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2020-10-10 11:11:00.000000000 +0900
Modify: 2019-07-20 12:00:00.000000000 +0900
Change: 2020-07-28 23:36:29.568732530 +0900
 Birth: -

rmコマンド

ファイルの削除コマンド。
サクッといきます。

[wantan@localhost ~]$ rm test.txt1

オプション

cpコマンドとオプション体系的には似ている。
試験的にも実践的にもさっとでてきた方がいいラインだと思っています。

オプション 説明
-f 確認なしに削除
-i 削除前に確認
-r ディレクトリを再帰的に削除

■ディレクトリを再帰的に削除する

rmは一応ファイル削除向けっぽいので、ディレクトリを削除する場合には「r」オプションをつける必要があります。
また、ディレクトリ内にファイルを削除するたびに確認が行われるので、実践的には「f」オプションを併用することが多いかと思います。

[wantan@localhost ~]$ rm -fr test

rmdirコマンド

空のディレクトリのみを削除するコマンドなので、実践的にはあまり使っていない。

[wantan@localhost ~]$ rm test

オプション

こちらはmkdirと同様。

オプション 説明
-p 複数階層のディレクトリを削除

fileコマンド

ファイルの種別を表示するコマンド。

[wantan@localhost ~]$ file test.txt
test.txt: UTF-8 Unicode text
[wantan@localhost ~]$ file /etc/hosts
/etc/hosts: ASCII text
[wantan@localhost ~]$ file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=85e3da5a087950e7aaeb7893c056218a8874d2e5, stripped

バイナリファイルの識別などに使用できる??


・前回(第十回)
www.wantanblog.com


・次回(第十二回)
www.wantanblog.com