65

Hi all i was asked to find the terminal command that will make a copy of a file lets call it program3.cpp and give to the copy the name homework6.cpp. After that you will have two files with different names, but identical contents.

I know how to copy the file but i cant figure out how to create a second identical file with a different name. All help is appreciated. Thanks!

user271115
  • 771
  • 1
  • 5
  • 4

2 Answers2

91

Copy and rename in the same time (also change filename, not only path):

cp program3.cpp homework6.cpp

Rename only:

mv program3.cpp homework6.cpp
Cornelius
  • 9,483
  • 4
  • 40
  • 62
  • 23
    Ah... I hate cp only supports "copy and rename" in the same dir; when you copy to another location, the destination can only be a dir, not the target file name.. and you must cp first and then mv. – WesternGun Jun 16 '19 at 09:04
  • 2
    @WesternGun That's not true. cp /opt/MyFile /tmp/MyNewNamedFile What you CAN'T do is to copy a file from another location to your current location and rename it at the same time here (.) . (As far as I know) – DimiDak Jun 14 '21 at 20:30
  • 1
    @DimiDak sure you can: cp ~/make/makefiles/rails_makefile ./Makefile renames the file rails_makefile to Makefile in the current directory :) (well, at least on macOS it does, maybe linux is different?) – stevec Jan 30 '22 at 00:48
  • 1
    @stevec Yeap, that worked :) – DimiDak Jan 30 '22 at 09:30
2

If you want to have the files permanently linked use the ln command instead of cp

ln program3.cpp homework6.cpp

This puts a file descriptor (hard link) under the name homework6.cpp to the same file location as program3.cpp

Zanna
  • 70,465
N8tron
  • 724