Julia いろいろ--002--

# コマンドラインと同じ機能を持つ関数


## cd()

Juliaの`cd`関数は，カレントディレクトリ（現在の作業ディレクトリ）を変更するための関数である。この関数は，ファイルシステム内で作業する場合に特に便利である。以下は，`cd`関数の基本的な使用法と説明である。

```julia
cd(path::AbstractString)
```

- `path`: カレントディレクトリを変更したいディレクトリのパスを指定する。`path`は文字列型（AbstractString型）である必要がある。

例:

```julia
cd("/path/to/directory")
```

この例では，`/path/to/directory`というディレクトリにカレントディレクトリを変更する。`cd`関数は指定されたパスが存在することを確認し，存在しない場合はエラーを返す。

なお，JuliaのREPL（対話型環境）で`cd`関数を使用すると，REPLのプロセス内でのみディレクトリが変更され，Juliaが実行されているプロセス全体には影響しない。外部のプロセスやシェルでのディレクトリ変更は`cd`関数では制御できない。

## pwd()

`pwd()`関数は，Juliaで現在の作業ディレクトリ（カレントディレクトリ）を取得するための関数である。以下は，`pwd()`関数の基本的な使用法と説明である。

```julia
pwd()
```

この関数は引数を取らず，現在の作業ディレクトリの絶対パスを文字列として返す。

例:

```julia
current_directory = pwd()
println("Current Directory: $current_directory")
```

この例では，`pwd()`関数を使用して現在の作業ディレクトリを取得し，それを表示する。

作業ディレクトリは，ファイルやディレクトリの操作時に相対パスを解釈する基準となる。`cd()`関数を使用してディレクトリを変更すると，`pwd()`関数が新しい作業ディレクトリを反映する。

## mv()

Juliaの`mv`関数は，ファイルやディレクトリの移動または名前の変更を行うための関数である。具体的には，ファイルやディレクトリを指定された新しい場所に移動させることや，名前を変更することができる。

基本的な構文は以下の通りである：

```julia
mv(oldpath::AbstractString, newpath::AbstractString)
```

- `oldpath`: 移動または名前変更されるファイルやディレクトリの元のパスを指定する。
- `newpath`: 移動または名前変更後の新しいパスや名前を指定する。

例えば，ファイルを別のディレクトリに移動させたり，ファイルの名前を変更したりする場合，`mv`関数を使用する。以下はいくつかの例である：

```julia
# ファイルを別のディレクトリに移動する例
mv("/path/to/oldfile.txt", "/path/to/newdirectory/newfile.txt")

# ファイルの名前を変更する例
mv("/path/to/oldfile.txt", "/path/to/newfile.txt")
```

この関数はファイルやディレクトリの移動・名前変更に使われるが，ディレクトリの中身を再帰的に移動するわけではないので，ディレクトリを移動する際は注意が必要である。ディレクトリごとの再帰的な移動やコピーが必要な場合は，別途関数やパッケージを使用するか，シェルコマンドを呼び出すなどの方法がある。

## rm()

Juliaの`rm`関数は，ファイルやディレクトリを削除するための関数である。具体的には，指定されたパスのファイルやディレクトリを削除する。

基本的な構文は以下の通りである：

```julia
rm(path::AbstractString; force::Bool = false, recursive::Bool = false)
```

- `path`: 削除するファイルやディレクトリのパスを指定する。
- `force`: もし`true`に設定されていれば，確認なしで強制的に削除する。デフォルトは`false`である。
- `recursive`: もし`true`に設定されていれば，ディレクトリを再帰的に削除する。デフォルトは`false`である。

例えば，ファイルを削除する場合:

```julia
rm("/path/to/file.txt")
```

ディレクトリを再帰的に削除する場合:

```julia
rm("/path/to/directory"; recursive=true)
```

`force`パラメータを使用して確認なしで強制的に削除することも可能であるが，注意が必要である。ファイルやディレクトリの削除は不可逆的な操作であるため，慎重に扱う必要がある。

なお，Juliaの`rm`関数は，シェルの`rm`コマンドと同様の動作を提供する。

## touch()

Juliaのmkdir関数は，指定されたファイルの最終更新時刻（last-modified timestamp）を現在の時刻に更新する。もしファイルが存在しない場合は，新しいファイルが作成される。関数は操作が成功した場合には指定されたパスを返す。

```julia
touch(path::AbstractString)
```

例えば：

```julia
touch("example.txt")
```

このコードは，"example.txt"という名前のファイルの最終更新時刻を現在の時刻に更新する。もしファイルが存在しない場合は，新しいファイルが作成される。

## mkdir()

Juliaの`mkdir`関数は，新しいディレクトリ（フォルダ）を作成するための関数である。以下は`mkdir`関数の基本的な構文と説明である。

```julia
mkdir(path::AbstractString; mode::UInt16 = 0o777, parents::Bool = false)
```

- `path`: 作成したいディレクトリのパスを指定する。パスは文字列（AbstractString型）である必要がある。
- `mode`: 作成されるディレクトリのパーミッション（権限）を指定する。デフォルトでは`0o777`となっており，これは最大のアクセス権を意味する。
- `parents`: もし`true`に設定されていれば，親ディレクトリも必要に応じて自動的に作成する。デフォルトは`false`である。

例えば：

```julia
mkdir("/path/to/new_directory")
```

この例では，"/path/to/new_directory"というパスに新しいディレクトリが作成される。デフォルトのパーミッションで作成され，親ディレクトリは存在しないものと仮定している。

`mode`パラメータは作成されるディレクトリの権限を指定するもので，Unixのスタイルで指定する。`0o`から始まる8進数で表現される。例えば，`0o755`は所有者には読み書き実行権限があり，他のユーザーには読み取り権限と実行権限がある権限を指定する。


## rmdir()

Juliaの`rmdir`関数は，ディレクトリ（フォルダ）を削除するための関数である。以下は`rmdir`関数の基本的な構文と説明である。

```julia
rmdir(path::AbstractString; force::Bool = false, recursive::Bool = false)
```

- `path`: 削除したいディレクトリのパスを指定する。パスは文字列（AbstractString型）でなければならない。
- `force`: もし`true`に設定されていれば，確認なしで強制的に削除する。デフォルトは`false`である。
- `recursive`: もし`true`に設定されていれば，ディレクトリを再帰的に削除する。デフォルトは`false`である。

例えば：

```julia
rmdir("/path/to/directory")
```

この例では，"/path/to/directory"というパスのディレクトリが削除される。デフォルトではディレクトリが空でないと削除できないが，`recursive`パラメータを`true`に設定することでディレクトリとその中身を再帰的に削除できるが，ファイルやディレクトリの削除は不可逆的な操作であるため，注意が必要である。

## cp()

Juliaの`cp`関数は，ファイルやディレクトリをコピーするための関数である。以下は`cp`関数の基本的な構文と説明である。

```julia
cp(source::AbstractString, dest::AbstractString; force::Bool = false, remove_destination::Bool = false)
```

- `source`: コピー元のファイルまたはディレクトリのパスを指定する。
- `dest`: コピー先のパスを指定する。これは新しいファイルやディレクトリのパスである。
- `force`: もし`true`に設定されていれば，既存の同名のファイルやディレクトリを上書きする。デフォルトは`false`である。
- `remove_destination`: もし`true`に設定されていれば，既存の同名のファイルやディレクトリを事前に削除してからコピーする。デフォルトは`false`である。

例えば：

```julia
cp("/path/to/source_file.txt", "/path/to/destination/")
```

この例では，"/path/to/source_file.txt"を"/path/to/destination/"にコピーする。`force`や`remove_destination`の設定によって挙動が変わる。

`cp`関数は，ファイルやディレクトリを効率的かつ柔軟にコピーするためのものであり，様々なオプションを指定できる。

## ls に相当する関数

Juliaには標準の`ls`関数が存在しないが，ディレクトリ内のファイルやサブディレクトリのリストを取得するために，Juliaの標準ライブラリに含まれる`readdir`関数が使われることがある。以下は`readdir`関数の説明である。

```julia
readdir(path::AbstractString; join::Bool = true, sort::Bool = true, keep_hidden::Bool = false)
```

- `path`: リストを取得したいディレクトリのパスを指定する。パスは文字列（AbstractString型）でなければならない。
- `join`: もし`true`に設定されていれば，ディレクトリパスとファイル名を連結してフルパスを返す。デフォルトは`true`である。
- `sort`: もし`true`に設定されていれば，結果をアルファベット順にソートする。デフォルトは`true`である。
- `keep_hidden`: もし`true`に設定されていれば，隠しファイルや隠しディレクトリもリストに含める。デフォルトは`false`である。

例えば：

```julia
files = readdir("/path/to/directory")
```

この例では，"/path/to/directory"というディレクトリ内のファイルやディレクトリのリストを取得する。取得されるリストは，`join`や`sort`の設定によって変化する。

もしも，特定のディレクトリ内のファイルやディレクトリのリストを取得する目的がある場合は，`readdir`関数が使われることがある。