13

In order to pass the contents of one file to another we can, for example:

cat ~/temp_minhakey.pub >> ~/.ssh/authorized_keys

Let's say, we need to append more content to authorized_keys, but we don't want to overwrite it.

Should we use cat again for the next keys ? Or should we flag with something specific ?

Thanks in advance.

2 Answers 2

24
cat ~/temp_minhakey.pub >> ~/.ssh/authorized_keys

appends the contents of ~/temp_minhakey.pub to ~/.ssh/authorized_keys, it does not overwrite it. This is safe.

You might be confused with a single > which overwrites the file. The next command will overwrite your authorized_keys file:

cat somefile > ~/.ssh/authorized_keys
1
  • To overwrite the content of one file with that of another, one would typically use cp and not cat. The former can profit from file-system-specific optimizations (e. g. copy-on-write) while the latter can't. Nov 8, 2017 at 15:42
7

The last part of that command has nothing to do with cat; the >> is a shell redirect that will always append to whatever target file you are specifying. If you used > instead, then it would overwrite the file.

There are several other shell redirects, and you will be more productive on a command line if you learn what they all are and when to use them:

http://www.gnu.org/software/bash/manual/bashref.html#Redirections

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .