ファイル操作コマンドとして、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 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 242 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt
■ディレクトリ自身の情報を表示する
「-d」オプションを使用するが、それ単体で使用してもカレントディレクトリ「.」が表示されるだけなので、他のオプションと併用する。
[wantan@localhost ~]$ ls -dl drwx------. 4 wantan wantan 172 7月 25 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 7月 28 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