请问 Linux 中的|和& 的作用

刚刚学习了一篇文章,讲&&和||的区别,又看到还有|和&两个命令符,请问这两个是做什么的?最好能举例说明,我在百度上没有搜到相关文章,如果谁有相关文档,给我一个连接也可以。谢谢
例如如下几个命令应该怎么解释:
$ ssh user@host ‘mkdir -p .ssh && cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub
$ cd && tar czv src | ssh user@host ‘tar xz’
$ ssh user@host ‘tar cz src’ | tar xzv
$ ssh user@host ‘ps ax | grep [h]ttpd’

文档上讲 $ cd && tar czv src | ssh user@host ‘tar xz’ 的意思是将$HOME/src/目录下面的所有文件,复制到远程主机的$HOME/src/目录。可是怎么理解呢?复制命令不是cp吗?

| 有管道的作用
& 有后台的作用,其他就不知道了 /

帖子已经移动。

恳请发帖子的时候至少看看版面介绍。

「对 Linux 基本概念的普及扫盲,以及 openSUSE 下一些最基本操作的教学。 」,教学与指南是发「扫盲贴」和「教学贴」的。不是发问题的。

| 是管道. 作用好像是对于标准输出的.
& 是把命令挂后台运行用的.

| 的话搜一下管道命令应该会有不少东西.

搜索“管道”

LZ可以找本shell相关的书籍看一下,是很基础的东西。

一个 ‘&’ 表示程序后台运行。
两个 ‘&&’ 其实就是把两条命令拼起来而已,执行完第一条执行下一条。
一条 ‘|’ 是管道,管道是一种进程间通信机制,简单的说,就是一个程序的输出通过管道传递给另一个程序作为输入。

例如 cd && tar czv src | ssh user@host ‘tar xz’ 这条,分析如下:
先 cd ,进入到home目录,然后 tar czv src 将home目录下的src目录打包并压缩,这时tar的输出就是压缩后的数据内容,通过管道传递给右边的命令, ssh user@host ‘tar xz’ 通过ssh连接到远程服务器,并执行tar命令把管道左边传过来的数据解压出来。

command1 ; command2
command1执行之后执行command2,不管command1是否正常执行

command1 && command1
如果command1执行成功,则执行command2

command1 || command2
如果command1执行失败,则执行command2

'|'是管道

‘&’ 表示程序后台运行

1赞

单个 & 也可以表示命令同时运行哦~其实本质就是后台运行啦

比如

mpg123 xx.mp3 & sleep 10 ; killall mpg123

这样可以让 mpg123 和 sleep 在同一时间运行。那样就可以控制在开始 mpg123 运行十秒后 kill 掉他。可以用它做一些定时任务。:)