the slash (/) after a directory name on shell commands

6,344

Yes, this is a bit inconsistent, even within the GNU tools.

One problem with your proposal is that non-empty directories cannot be removed. Apart from that, -T (in GNU land, anyway) approximates what you want (the first case):

$ 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
Share:
6,344

Related videos on Youtube

phunehehe
Author by

phunehehe

Updated on September 17, 2022

Comments

  • phunehehe
    phunehehe almost 2 years

    I have a little question here.

    If I have two files, say filea and fileb, mv filea fileb would

    • delete fileb
    • rename filea to fileb

    Then if I have two directories, say dira and dirb, mv dira dirb would

    • move dira into dirb (it will become dirb/dira)

    Noting that in both cases there are no notice or message, then this is pretty inconsistent to me. I think mv dira dirb should just overwrite dirb with the contents of dira (or merge the two directories under a directory named dirb).

    I remember reading somewhere that a directory name with a slash (like dira/) is treated like a directory, and name with no slash (like dira) is treated like a file (to certain extents, of course). Anyway now I want to make the shell (zsh and possibly bash) respect my notation of a directory by using a slash. Is there a terminal option which enable me to enforce that?

    To clarify, here is my desired behaviour:

    • mv dira dirb results in dirb being overwritten with the contents of dira
    • mv dira dirb/ results in dira being moved into dirb (in dirb/dira)

    Has anyone thought the same way as me? Or am I just weird?

    • ElBel
      ElBel almost 14 years
      I think your desired behavior would be rather dangerous.
    • phunehehe
      phunehehe almost 14 years
      @starblue: yes I agree that it is dangerous, but I'd rather live with something dangerous, than inconsistency
  • Jan Berkel
    Jan Berkel almost 14 years
    Your command would miss all dotfiles.
  • Robert Massaioli
    Robert Massaioli almost 14 years
    Who needs dot files anyway ;)
  • Jerb
    Jerb almost 14 years
    And if it's an issue, shopt -s dotglob in bash will fix that.
  • Mikel
    Mikel about 13 years
    You could also add an alias, e.g. alias ren=mv -T.