cat '>>' '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub
请帮忙具体解释下上面的命令。
谢谢!!
你好。
首先,你这条命令是错误的。会报错:“cat: >>: No such file or directory”
正常的命令应该是:
cat >> '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub
也就是说,把 >>的单引号去掉才对。当然,前提是你系统中存在 ~/.ssh/authorized_keys2 和 ~/.ssh/id_rsa.pub 文件。
现在来回答你的问题:
这条命令的作用是:
将 ~/.ssh/id_rsa.pub 的内容,追加到 ~/.ssh/authorized_keys2' 文件中。
帮你扩展一下:
cat >> 是 cat命令比较经典的用法,一般用于免交互的向文本中写入多行内容。
最常见的用法,除了你列的这条指令外,还有就是这样:
cat >> /etc/yum.repos.d/test.repo << EOF
[test]
name=vip6repo
baseurl=http://test.vip.com/testrepo_6
gpgcheck=0
enabled=1
priority=20
EOF
还有这样:
(
cat <<EOF
#! /bin/bash
# ......
所有内容
EOF
) >/tmp/b
谢谢
将'~/.ssh/authorized_keys2' 的结果输出结果重定向到~/.ssh/id_rsa.pub
这应该是一个错误命令
实际作用是打印出两个文件的内容:
文件1:'>>'
文件2:~/.ssh/authorized_key2
大胆的猜测下,这条命令应该是
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2
也就是将 ~/.ssh/id_rsa.pub
这个文件的内容,追加到~/.ssh/authorized_keys2
文件的末尾
因为~/.ssh/id_rsa.pub
记录的是你电脑的ssh公钥,而通常authorized_keys
文件是ssh用来进行key识别的,不过不知道为啥要自己识别自己...
这个命令也可以写成
cat >> ~/.ssh/authorized_keys2 < ~/.ssh/id_rsa.pub
注意没有单引号,在没有单引号的情况下,>>
和 <
作为重定向符,cat
命令会打印标准输入或者文件的内容到标准输出,所以上面的命令意思是cat将他的标准输入的内容(~/.ssh/id_rsa.pub
)打印到标准输出(重定向到~/.ssh/authorized_keys2
文件末尾)
[root@localhost test]# cat 123.txt
123
[root@localhost test]# cat 456.txt
456
[root@localhost test]#
[root@localhost test]# cat '>>' '123.txt' < 456.txt
cat: >>: No such file or directory
123
[root@localhost zte]#
亲测。
首先'>>'的单引号要去掉,变成cat >> '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub
这个命令等同于cat ~/.ssh/id_rsa.pub >> '~/.ssh/authorized_keys2'
就是把文件~/.ssh/id_rsa.pub的内容append(附加)到文件'~/.ssh/authorized_keys2'的尾部