mv --strip-trailing-slashesオプションの使い方|Linuxで末尾のスラッシュを無視して安全に移動・リネーム
生徒
「Linuxのmvコマンドで、ディレクトリ名の後ろにスラッシュが付いてても動作に違いはありますか?」
先生
「実は、mvコマンドは末尾のスラッシュによって挙動が変わることがあります。でもそれを回避できるオプションがあるんです。」
生徒
「えっ、そんな違いがあるんですね!そのオプションって何ですか?」
先生
「それが今回紹介する--strip-trailing-slashesです。さっそく詳しく見ていきましょう!」
1. mvコマンドとは?
Linuxのmvコマンドは、ファイルやディレクトリを移動したり、名前を変更したりするための基本的なコマンドです。たとえば、ファイルを別のフォルダに移したり、「old.txt」という名前を「new.txt」に変更したりするときに使います。
mv old.txt new.txt
この例では「old.txt」が「new.txt」という名前に変更されます。
2. スラッシュ付きディレクトリ名の注意点
Linuxでは、ディレクトリ名の最後にスラッシュ(/)をつけるかどうかで、コマンドの動作が変わることがあります。特にスクリプトなどでmvコマンドを使う場合、ディレクトリ名にうっかりスラッシュを付けてしまうと、意図しない動作をすることも。
たとえば、次のように記述したとします:
mv mydir/ backupdir/
この場合、mydirの中身をbackupdir/の中に移すのか、それともmydirそのものを移動するのかが状況によって変わってしまう可能性があります。
3. --strip-trailing-slashesとは?
--strip-trailing-slashesオプションは、ファイル名やディレクトリ名の末尾のスラッシュを無視して処理してくれるオプションです。これにより、スクリプトやコマンドラインで「/」をうっかり付けてしまっても、意図した通りにファイルやディレクトリを移動・リネームすることができます。
具体的には、以下のように使用します:
mv --strip-trailing-slashes mydir/ newdir
この場合でも、「mydir/」という書き方が「mydir」と同じように扱われるため、正しく「newdir」に名前変更されます。
4. 実際にmv --strip-trailing-slashesを使ってみよう
それでは実際に使ってみましょう。まず、以下のようなディレクトリがあるとします。
ls
mydir backupdir
ここで、mydir/をbackupdir/にリネームしたいとします。通常はこうします:
mv mydir backupdir
ですが、誤って以下のように書いてしまったらどうなるでしょう?
mv mydir/ backupdir
この場合、mydirの中身がbackupdirに移されてしまうかもしれません。これを防ぐために、以下のように--strip-trailing-slashesをつけましょう。
mv --strip-trailing-slashes mydir/ backupdir
これで、mydirをそのままbackupdirに名前変更することができます。
5. --strip-trailing-slashesはいつ使うべき?
このオプションは、以下のようなケースで非常に役立ちます:
- 自動化スクリプトで
mvを使うとき - ユーザーの入力にスラッシュが含まれる可能性があるとき
- 間違えて末尾スラッシュを書いてしまう心配があるとき
初心者にとっては特に安心できるオプションです。コマンドの意味が明確になることで、予期せぬファイル移動や上書きを防ぐことができます。
6. 他のコマンドとの違いにも注意しよう
cp(コピー)やrsyncでも、末尾のスラッシュが挙動に影響します。たとえば、cp dir1 dir2とcp dir1/ dir2では、コピーの中身が変わります。
そのため、mvだけでなく、Linux全体として「スラッシュの有無」に敏感であることを理解しておくことが重要です。
7. オプションの組み合わせ例
mvでは他にも便利なオプションと組み合わせることができます。たとえば、-v(verbose:詳細表示)を一緒に使えば、何を移動したか表示されます。
mv -v --strip-trailing-slashes folder/ archive
renamed 'folder/' -> 'archive'
これで、どのような操作が行われたのかを目で確認できて安心です。