命令链接符
有时候,我们为输入方便为把多个命令放在一起输入执行。有点类似于dos下的批处理。就是一组命令的集合。那么我们看看都有哪些符号用于命令之间的连接。
-------------------------------------------------------------------------------
管道:
将一个命令的输出传送给另一个命令,作为另一个命令的输入。
使用方法:
命令1 | 命令2 | 命令3... | 命令n
例如:
[root@localhost test]# ls -l /etc | more 显示/etc目录下的所有文件,以分页形式more
[root@localhost test]# ls -l /etc | grep init | wc -l 显示/etc目录下的所有文件,查找init文件,显示查找结果的数量。
-------------------------------------------------------------------------------
;(逗号)
用;间隔的各命令按顺序依次执行
[root@localhost ~]# pwd ; ll ; data
-------------------------------------------------------------------------------
&&
command1 && command2
成功 执行
失败 不执行
[root@localhost ~]# lskk && pwd 如果第一个命令执行失败,第二个命令就不执行。
前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,他后面的命令才能被执行
--------------------------------------------------------------------------------
||
[root@localhost ~]# lskk || pwd 如果第一个命令执行失败,第二个命令就执行。
command1 || command2
成功 不执行
失败 执行
前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,他后面的命令才被执行。
输入/输出重定向
其实,对于我们的计算机来讲,我们的标准输入设备是键盘,标准输入设备是显示器。
假如,我告诉,如果我们的输入不用键盘了,输出不在显示上了。你会说这怎么稿?即便是使用计算机多年的人,一下子也会迷糊。呵呵!看了我下面几个操作,你就明白了。
同标准I/O一样,Shell 对于每一个进程预先定义了个文件描述
(0、1、2)。分别对应于:
0 (stdin)标准输入
1 (stdout)标准输出;
2 (stderr)标准错误输出。
输出重定向
我们可将某个输入的信息保存到一个文件中。
[root@localhost ~]# ls -l /tmp > /tmp.msg 将查看tmp目录的信息保存到/tmp.msg 文件中。屏幕中不显示任何结果。
[root@localhost test]# vi /tmp.msg 查看/tmp.msg 文件信息
总用量 8
srwxr-xr-x 1 root root 0 2月 22 19:36 mapping-root
srwxrwxrwx 1 mysql mysql 0 2月 27 22:35 mysql.sock
[root@localhost ~]# data >>/tmp.msg “ >>”表示追加,在/tmp.msg 再追加一些新的信息。
输入重定向
我们也可以将某个输入保存到一个文件中。
上面我们学到一个wall命令,后面跟的信息可以广播表其它在线用户,当然,我们可以将要广播的信息保存到一个文件中,当然,如果有兴趣,我们还可以设定时间进行发送。
[root@localhost ~]# wall < /etc/motd 将motd文件中的信息进行广播。
错误输出重定向
假如,我要对一个目录进行备份(/usr),备份到/backup /usr.bak目录下,可以备份时间要很久,我不想一直盯着屏幕看,这时我就可以设置,如果备份时发生错误,将错误信息保存到/bak.error文件 中。这样我就可以找朋友喝喝茶,聊聊天,回来看错误信息就可以了。
[root@localhost ~]# cp -R /usr /backup/usr.bak 2> /bak.error
别名的使用
在上一节中,在查看当前目录下的文件时,我说到了一个 ll 命令,看一楼回复中说,他是 ls -l 命令的别名,不是所有的linux都有。
别名嘛,顾名思义,不同的两个名字指的是一个人,不同的两个命令具有相同的作用。
现在,你一定很想知道自己的系统中都有哪些别名。
[root@localhost ~]# alias 查询系统中的别名
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
如何定义别名,假如我在dos下用习惯了copy 而不想用cp ,那么就可以为cp 定义一个copy的别名。
[root@localhost ~]# alias copy=cp 将cp命令功能赋于给copy
[root@localhost ~]# alias drm="rm -rf" 将“ rm -rf ” 命令定义一个drm的别名。
[root@localhost ~]# unalias copy 取消别名