シェルコマンドのディレクトリ名の後にスラッシュ(/)


14

ここで少し質問があります。

私は2つのファイルを持っている場合は、と言うfileafilebmv filea fileb希望

  • 削除する fileb
  • 名前fileaを変更fileb

その後、私は2つのディレクトリを持っているならば、と言うdiradirbmv dira dirb

  • に移動diraしますdirb(になりますdirb/dira

どちらの場合も通知もメッセージもないことに注意してください。これは私にはかなり矛盾しています。私はの内容でmv dira dirb上書きdirbする必要があると思いますdira(または2つのディレクトリをという名前のディレクトリの下にマージしdirbます)。

スラッシュを含むディレクトリ名(などdira/)はディレクトリのように扱われ、スラッシュを含まない名前(などdira)はファイルのように扱われることを覚えています(もちろん、ある程度まで)。とにかく今私はシェル(zshとおそらくbash)にスラッシュを使用してディレクトリの表記を尊重させたいと思います。それを強制できる端末オプションはありますか?

明確にするために、ここに私の望ましい行動があります:

  • mv dira dirbdirbの内容で上書きされますdira
  • mv dira dirb/結果diraに移動されるdirb(中dirb/dira

誰かが私と同じように考えましたか?それとも私はただ変ですか?


2
あなたの望む行動はかなり危険だと思います。
starblue

@starblue:はい、私はそれが危険であることに同意し、私は矛盾よりも、危険なものではなく、生きていただきたい
phunehehe

回答:


11

はい、GNUツール内でも、これは少し矛盾しています。

提案の1つの問題は、空でないディレクトリを削除できないことです。それとは別に、-T(とにかくGNUの土地では)あなたが望むものに近似します(最初のケース):

$ ls dira/ dirb/
dira/:
a

dirb/:
b
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
mv: cannot move `dira/' to `dirb/': Directory not empty
$ rm dirb/b 
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
$ ls dira/ dirb/
ls: cannot access dira/: No such file or directory
dirb/:
a

たとえば、エイリアスを追加することもできalias ren=mv -Tます。
ミケル

0

すべてをdiraからdirbに移動したいだけなら、実行できますmv dira/* dirb

私のHP-UXのmvマニュアルページによる。

The mv command moves:

+ One or more directory subtrees (directory1, [directory2, ...]) to a new or existing directory (dest-directory).


3
あなたのコマンドはすべてのドットファイルを見逃すでしょう。
qbi 2010

とにかく誰がドットファイルを必要とするか;)
Robert Massaioliが2010

1
そしてそれが問題ならshopt -s dotglob、bashでそれを修正します。
David Z
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.