Linux コマンド一覧①【備忘録】

# コマンド詳細
・学習ごとに内容を随時更新する。
・オプションは一部のみ記載

## pwd：現在のディレクトリを表示
```:書式
$ pwd [オプション]
```
```zsh:/home/testUser1
$ pwd
/home/testUser1
```
### オプション
```shell:/home/testUser1
# ディレクトリ構成表示
$ ls -l
drwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:00 testFolder1
lrwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:10 testFolder1_link -> testFolder1

# -L：シンボリックリンクの名称を使用したパスを表示
$ pwd -L
/home/testUser1/testFolder_link

# -P：シンボリックリンクの参照先を表示
$ pwd -P
/home/testUser1/testFolder
```

[ シンボリックリンク ]
ショートカットのようなものであり、違う点はディレクトリの構成にある。

<参考サイト>
https://qiita.com/go_astrayer/items/ab993cdc420d4f7f50d4

---
## cd：指定したディレクトリに移動
```:書式
$ cd [オプション] {ディレクトリ}
```
```shell:/home/testUser1
# ルートディレクトリ(最上位ディレクトリ)
$ cd /
# ホームディレクトリ(「/homeディレクトリ」=「個人用ディレクトリ」のこと)
$ cd ~
$ cd
```
``` shell:/home/testUser1
# ディレクトリ構成表示
$ ls -l
drwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:00 testFolder1
lrwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:10 testFolder1_link -> testFolder1

# 相対パス(現在いるディレクトリから見たパス)
$ cd testFolder1
# 絶対パス(全体の一番上から見たパス)
$ cd /home/testUser1/testFolder1
# 1つ上の階層
$ cd ..
# 2つ上の階層
$ cd ../..
# 1つ上の階層の指定したディレクトリ
$ cd ../testUser2
```
### オプション
```shell:/home/testUser1
# ディレクトリ構成表示
$ ls -l
drwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:00 testFolder1
lrwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:10 testFolder1_link -> testFolder1

# -L：シンボリックリンクに移動
$ cd -L testFolder1_link
#【結果(移動先)】/home/testUser1/testUser1_link

# -P：シンボリックリンクの参照先に移動
$ cd -P testUser1_link
#【結果(移動先)】/home/testUser1/testFolder1
```

---
## ls：ディレクトリ内のファイルやディレクトリを表示
```:書式
$ ls [オプション]
```
```shell:/home/testUser
$ ls
testFolder1 testFolder1_link
```
### オプション
```shell:/home/testUser1
# -l：ファイルの詳細情報を表示
$ ls -l
drwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:00 testFolder1
lrwxr-xr-x 1 testUser1 testUser1 4096 Feb 20 12:10 testFolder1_link -> testFolder1

# -t：更新日が新しい順に表示
$ ls -t
testFolder1_link
testFolder1
```

<参考サイト>
https://qiita.com//web-hackers/items/0a7c46c2930a831ee759#linux%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-ls-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3-%E4%B8%80%E8%A6%A7-%E5%88%9D%E5%AD%A6%E8%80%85%E5%BF%85%E8%A6%8B

---
## mkdir：ディレクトリを作成
```:書式
$ mkdir [オプション] {ディレクトリ名}
```
```shell:/home/testUser1
$ mkdir testFolder2
# 【結果】/home/testUser1/testFolder2
```
### オプション
```shell:/home/testUser1
# -m：指定したパーミッションでディレクトリを作成
$ mkdir -m 765 testFolder2
# 【結果】drwxrw-r-x /home/testUser1/testFolder2

# -p：同一のディレクトリが存在しない場合のみ作成
$ mkdir -p testFolder2
```

[ パーミッション ]
ファイルやディレクトリに対しての3種類の権利のこと。
　r：読み込み
　w：書き込み
　x：実行

<参考サイト>
https://qiita.com/yunaimatsu/items/d9a388aa8874e154b925

---
## rm：ファイルを削除
```:書式
$ rm [オプション] {ファイル名(or ディレクトリ名)}
```
```shell:/home/testUser1
$ rm testFile1.txt
# 【結果】/home/testUser1/testFile1.txt を削除
```
### オプション
```shell:/home/testUser1
# -r：ディレクトリを含む全てのファイルを削除
$ rm -r testFolder1
# 【結果】/home/testUser1/testFolder1 と sample内のファイル全てを削除

# -f：確認メッセージを表示せずに削除
$ rm -f testFile1.txt
```

---
## rmdir：空のディレクトリを削除
```:書式
$ rmdir [オプション] {ディレクトリ名}
```
```shell:/home/testUser1
$ rmdir testFolder1
# 【結果】/home/testUser1/testFolder1 を削除(空でない場合エラー)
```
### オプション
```shell:/home/testUser1
# -p：上位ディレクトリを含めて削除
$ rmdir -p testFolder1_1
# 【結果】/home/testUser1/testFolder1/testFolder1_1 と /home/testUser1/testFolder1 を削除

# -v：確認メッセージを表示せずに削除
$ rmdir -v testFolder1
```

---
## mv：ディレクトリやファイルを移動
```:書式
$ mv [オプション] {移動元} {移動先}
$ mv [オプション] {ファイル名1} {ファイル名2} ... {移動先ディレクトリ}
```
※ 移動先にファイル名を指定した場合、「リネーム」となる。
※ 既存ファイルを指定した場合、「上書き」となる。
```shell:/home/testUser1
$ mv testFile1.txt testFolder1/
# 【結果】/home/testUser1/testFolder1/testFile1.txt
```
### オプション
```shell:/home/testUser1
# -b：上書きまたは削除されるファイルのバックアップを作成
$ mv -b testFile1.txt testFile2.txt
# 【結果】ex.txt~ としてバックアップが作成される。testFile1.txt は testFile2.txt にリネームor上書きされる。

# -v：移動の詳細情報を表示
$ mv -v testFile1.txt testFile2.txt testFile3.log testFolder2
'testFile1.txt' -> 'testFolder2/testFile1.txt'
'testFile2.txt' -> 'testFolder2/testFile2.txt'
'testFile3.log' -> 'testFolder2/testFile3.log'
```

---
## cp：ディレクトリやファイルを移動
```:書式
$ cp [オプション] {コピー元} {コピー先}
$ cp [オプション] {ファイル名1} {ファイル名2} ... {コピー先ディレクトリ}
```
```shell:/home/testUser1
$ cp testFile1.txt testFolder1
```
### オプション
```shell:/home/testUser1
# -r：指定したディレクトリ内に存在する全てをコピー
$ cp -r testFolder1 testFolder2

# -s：シンボリックリンクの作成
$ cp -s testFile1.txt testFile2.txt
```

---
## touch：ファイルのタイムスタンプ更新や新規作成
```:書式
$ touch [オプション] {ファイル名}
```
```shell:/home/testUser1
$ touch testFile3.txt
# 【結果】ファイルが存在する場合   → タイムスタンプを現在に更新
#		  ファイルが存在しない場合 → 空のファイルを新規作成
```
### オプション
```shell:/home/testUser1
# -d：タイムスタンプの日時を指定
$ touch -d "2025-4-1 21:30" testFile1.txt

# -r：指定したファイルのタイムスタンプに合わせる
$ touch -r testFile1.txt testFile2.txt
# 【結果】testFile1のタイムスタンプがtestFile2と同一になる
```
[ タイムスタンプ ]
電子データに付与される時刻情報のことであり、
「作成日時」、「更新日時」、「アクセス日時」などが該当する。

<参考サイト>
https://wa3.i-3-i.info/word13116.html

---
# 備考
Linux コマンド一覧②
https://qiita.com/skull-eve/items/7ea5773ca2fdddeafad9