0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows・Mac・Linuxでファイル操作を比較する|作成・コピー・移動・削除|コマンドライン入門②

0
Posted at

前回記事「Windows・Mac・Linuxで現在地・ファイル一覧・移動を確認する|コマンドライン入門①」では、

Windows PowerShell / macOS / Linuxで、

  • 今いる場所を確認する
  • ファイル一覧を見る
  • ディレクトリを移動する

という基本操作を比較しました。

今回はその次に使う、

作成 → コピー → 移動 → 削除

を3OSで整理します。

コマンド一覧を暗記するのではなく、

このファイルを複製したい
別フォルダへ移したい
不要なファイルを削除したい

というやりたいことを基準に比較します。

まず全体像です。

やりたいこと Windows PowerShell macOS / Linux
ファイル作成 New-Item -ItemType File touch
フォルダ作成 New-Item -ItemType Directory mkdir
コピー Copy-Item cp
移動 Move-Item mv
名前変更 Rename-Item / Move-Item mv
ファイル削除 Remove-Item rm
フォルダ削除 Remove-Item -Recurse rm -r

1. ファイルを作りたい

Windows PowerShell

PowerShellでは New-Item を使います。

New-Item -Path ./memo.txt -ItemType File

New-Item は、ファイルだけでなくディレクトリなども作成できるコマンドレットです。

PowerShellらしく、

New
+
Item

で「新しい項目を作る」と読めます。


macOS / Linux

touch ./memo.txt

です。

touch は本来ファイルのタイムスタンプを更新するコマンドですが、指定したファイルが存在しない場合は空ファイルが作成されるため、簡単なファイル作成にもよく使われます。


2. フォルダを作りたい

Windows PowerShell

New-Item -Path ./practice -ItemType Directory

です。

PowerShellでは同じ New-Item でも、

-ItemType File
-ItemType Directory

で作る種類を変えられます。


macOS / Linux

mkdir ./practice

です。

こちらは、

make directory

の略です。

Windows PowerShellでも mkdir という入力は利用できますが、PowerShellの基本を理解する記事では New-Item を正式形として覚えておく方が、後の操作との統一感があります。


3. ファイルをコピーしたい

例えば、

memo.txt

を、

backup/memo.txt

へコピーします。

Windows PowerShell

Copy-Item ./memo.txt ./backup/memo.txt

macOS / Linux

cp ./memo.txt ./backup/memo.txt

結果として、

元:memo.txt
コピー先:backup/memo.txt

の両方が残ります。

つまりコピーは、

元を残して複製する

操作です。


PowerShellでも cp は使える

Windows上のPowerShellでは、

cp ./memo.txt ./backup/memo.txt

も使えます。

Microsoft公式では、Windows PowerShellの互換エイリアスとして、

cp → Copy-Item

が用意されています。Microsoft Learn

実際に現在の環境で確認するなら、

Get-Alias cp

です。

ただし重要なのは、

PowerShellの cp とUnixの cp は、文字列が同じでも同じプログラムではない

ことです。

Windows PowerShellでは Copy-Item のエイリアスです。


4. フォルダをコピーしたい

ディレクトリ内部までコピーする場合です。

Windows PowerShell

Copy-Item ./project ./backup/ -Recurse

macOS / Linux

cp -r ./project ./backup/

両方とも、配下のファイルやフォルダを含めて再帰的にコピーします。

対応関係としては、

PowerShell
-Recurse

Unix系
-r

です。


5. 別フォルダへ移動したい

Windows PowerShell

Move-Item ./memo.txt ./backup/

macOS / Linux

mv ./memo.txt ./backup/

コピーとの違いは明確です。

コピー

元にも残る
+
コピー先にもある

移動

元からなくなる
↓
移動先へ移る

PowerShellでも mv が使える

Windows PowerShellでは、

mv ./memo.txt ./backup/

も使えます。

これは、

mv → Move-Item

という互換エイリアスです。Microsoft Learn

確認するなら、

Get-Alias mv

です。


6. 名前を変えたい

移動と名前変更は関係が深い操作です。

Windows PowerShell

意味が明確なのは、

Rename-Item ./memo.txt memo-old.txt

です。

Move-Item でも、

Move-Item ./memo.txt ./memo-old.txt

とできます。


macOS / Linux

mv ./memo.txt ./memo-old.txt

です。

Unix系では mv が、

  • 場所の移動
  • 名前変更

の両方に使われます。

「同じ場所の中で、新しい名前の場所へ移す」と考えると理解しやすいです。


7. 第1回の相対パスを使ってみる

前回扱った、

.
..

も今回の操作で使えます。

例えば現在地が、

project/src

だとします。

1つ上の backup へコピーするなら、

PowerShell

Copy-Item ./memo.txt ../backup/

macOS / Linux

cp ./memo.txt ../backup/

です。

ここで、

.
→ 現在地

..
→ 1つ上

です。

第1回の「移動」が、今回のファイル操作にもそのままつながります。


8. ファイルを削除したい

削除は、今回の中で最も慎重に扱いたい操作です。

Windows PowerShell

Remove-Item ./memo.txt

macOS / Linux

rm ./memo.txt

です。

GUIで「ゴミ箱へ移す」操作と同じとは限りません。

コマンドラインからの削除では、そのままファイルが失われる可能性があります。


PowerShellでも rm が使える

Windows PowerShellでは、

rm ./memo.txt

も使用できます。

これは、

rm → Remove-Item

というエイリアスです。Microsoft Learn

確認するなら、

Get-Alias rm

です。

そのためWindows PowerShell上で、

cp
mv
rm

を見るとUnixと同じように見えます。

しかし実際には、

cp → Copy-Item
mv → Move-Item
rm → Remove-Item

を呼んでいる点を意識しておいた方がよいです。


9. 削除前にまず対象を見る

例えば .txt ファイルを削除したいとします。

いきなり、

rm *.txt

とする前に、

ls *.txt

で確認する。

PowerShellなら、

Get-ChildItem *.txt

で確認する。

そのあと必要なら、

Remove-Item *.txt

とします。

つまり、

対象を表示
↓
内容を確認
↓
削除

です。


10. ワイルドカード *

*.txt

は、

.txt で終わるもの

をまとめて指定します。

例えばPowerShellでは、

Get-ChildItem *.txt

macOS / Linuxでは、

ls *.txt

です。

コピーや削除などにも使えます。

ただし、

ワイルドカード + 削除

は対象範囲が広くなりやすいため、先に一覧確認する癖を付けた方が安全です。


11. フォルダを削除したい

空でないディレクトリを含めて削除する場合です。

PowerShell

Remove-Item ./practice -Recurse

macOS / Linux

rm -r ./practice

です。

どちらもディレクトリ配下へ処理範囲を広げます。


12. rm -rf を初心者向け便利コマンドとして覚えない

ネット上の手順では、

rm -rf directory

をよく見ます。

意味は大まかに、

  • -r:ディレクトリ以下を再帰的に処理
  • -f:確認等を抑えて強制的に処理

です。

強力ですが、その分パスを間違えたときの影響も大きくなります。

初心者のうちは、

pwd
ls

で、

  • 今どこにいるか
  • 本当にその対象でよいか

を確認してから削除する方が安全です。

PowerShellの、

Remove-Item -Recurse

についても同じ考え方です。


13. Windows PowerShellとUnix系の共通点・違い

ここまでを並べると、特徴が見えてきます。

PowerShell

New-Item
Copy-Item
Move-Item
Remove-Item

macOS / Linux

touch
cp
mv
rm

PowerShellでは、動詞と名詞から役割を読み取りやすくなっています。

Unix系は短いコマンドが中心です。

ただしWindows PowerShellにはUnixユーザー向けの互換エイリアスもあり、

cp
mv
rm
ls
pwd

なども使えます。Microsoft Learn


14. エイリアスを使えば全部同じ、ではない

ここは第1回の読者コメントともつながります。

Windows PowerShellで、

cp
mv
rm

が使えるからといって、

PowerShellとbash/zshは同じ

ではありません。

Microsoft公式も、一部のUnix互換エイリアスはWindows固有で、PowerShellをmacOS/Linux上で実行するとネイティブコマンドを優先するため存在しないものがあると説明しています。Microsoft Learn

また、PowerShellスクリプトではエイリアスより正式なコマンドレット名を使った方が意図が明確になります。

つまり、

対話操作
→ cp / mv / rm でも便利

手順書・スクリプト
→ Copy-Item / Move-Item / Remove-Item の方が明確

という使い分けができます。


15. Git Bashの場合はまた別

WindowsでGit for Windowsを導入していると、Git Bashを使うことがあります。

その場合はPowerShellではなく、Unix系に近いshell環境なので、

touch
cp
mv
rm
ls

といった操作感になります。

つまりWindows PCでも、

PowerShell
Git Bash
WSL

のどれを使っているかで、同じ文字列でも環境は異なります。

「Windowsだからこのコマンド」とだけ考えず、

今どのshellを使っているか

も意識すると混乱しにくくなります。


16. 一連で試す

練習用ディレクトリで、

  1. ファイルを作る
  2. コピーする
  3. 名前を変える
  4. 削除する

をやってみます。

PowerShell

New-Item ./practice -ItemType Directory
Set-Location ./practice

New-Item ./memo.txt -ItemType File
Copy-Item ./memo.txt ./memo-copy.txt
Move-Item ./memo-copy.txt ./memo-backup.txt

Get-ChildItem

Remove-Item ./memo-backup.txt

macOS / Linux

mkdir ./practice
cd ./practice

touch ./memo.txt
cp ./memo.txt ./memo-copy.txt
mv ./memo-copy.txt ./memo-backup.txt

ls

rm ./memo-backup.txt

コマンド名は違います。

でも、

作る
↓
コピー
↓
名前変更
↓
確認
↓
削除

という作業そのものは同じです。


まとめ

目的ごとに並べると、

目的 PowerShell macOS / Linux
ファイル作成 New-Item touch
フォルダ作成 New-Item mkdir
コピー Copy-Item cp
移動 Move-Item mv
名前変更 Rename-Item mv
削除 Remove-Item rm

今回一番大事なのは、削除コマンドを覚えることより、

現在地と対象を確認してから操作する

ことです。

第1回で扱った、

現在地
↓
一覧
↓
移動

が、今回のファイル操作にもそのままつながります。

次回は、

「このPCで今、何が動いているか」

を見るために、

  • Get-Process
  • Get-Service
  • ps
  • top
  • systemctl

を3OSで比較します。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?