--------------------------------------------------------------
----------------------------------------------------------------
-------------Shell命令的高级使用----------------------------
重定向和管道
< , <<
>, >>
&> :输出重定向操作符(&>)将标准输出和错误输出同时送到同一文件中
$ ls /usr/tmp &> output.file
|
命令替换:
命令替换和重定向有些相似,但区别在于命令替换是
将一个命令的输出作为另外一个命令的参数。常用命令格式为:command1 `command2`
(注意不是单引号,是~下边的符号)
cd `pwd`
作业管理:
Shell命令把每次执行的命令当做一个作业,并为它们分配了作业号,如果有管道,
则将这些命令认为是一个作业。Shell命令可以用作业号来控制作业的运行、挂起、结束。
需注意的是作业不等于进程。为什么?
1. linux的作业分两种方式,一个是前台的作业,一个是后台的作业(放入后台的不受客户端控制,
但是客户端必须连着)。
2. 如何在远程提交一个命令给服务器,就算断开连接都可以执行?
&: 它用在命令行的最后,作用是将命令放到后台继续运行,立即返回Shell Bash的提示符。
例子:只要这个命令执行很快时才能立即返回,不然屏幕一直显示执行的过程。
$ls -lR / &> files &
[1]204 ([作业号]进程ID)
<Ctrl+z>:
如果没有在命令后面加&,要想在命令执行中使用提示符,可以用Ctrl+z先将命令挂起,等以后执行,如:
$cat text
< Ctrl+z> (这个快捷键按下之后反映很慢)
jobs :
这个命令是用于显示系统中所有的作业,看不到进程ID。如:
+符号标识的是默认的优先作业,可直接用fg,bg命令
[1]- Stopped cat log.out.20070410
[2]+ Stopped cat access.log.20070410channel
fg(送到前台)、bg(送到后台)和kill(杀作业/进程)
$cat text
< Ctrl+z>
$jobs
[1]+ stopped cat > text
$fg 1
$jobs
$kill %1(注意格式,也可以,kill -9 进程号)
与环境变量相关的命令
有时我们想要在说明一个变量并对它设定为一个特定值后就不在改变它的值,这可以用下面
的命令来保证一个变量的只读性(在编写shell程序时,为了使变量名和命令名相区别,建
议所有的变量名都用大写字母来表示):
readly 变量名:
在任何时候,建立的变量都只是当前shell的局部变量,所以不能被shell运行的其他命令或
shell程序所利用,export命令可以将一局部变量提供给shell执行的其他命令使用,其格式
为:
export 变量名: 也可以在给变量赋值的同时使用export命令:
export 变量名=变量值,使用export说明的变量.
在shell以后运行的所有命令或程序中都可以访问到。