Chinaunix首页 | 论坛 | 博客
  • 博客访问: 667510
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: LINUX

2011-06-29 13:35:41

1、输入输出重定向
   0标准输入,1标准输出,2标准出错
   输出重定向:如ls -al > output.txt,此时文件output.txt文件如果存在,则内容被覆盖,如果不想被覆盖,可以采用>>方式。
   对标准出错进行重定向,必须在符号>前面写上2,例子:
   kill -l 1234 2>error.txt
   也可以同时将输出和出错输出同时重定向,如:
   kill -l 1234 >out.txt 2>error.txt
   也可以将它们同时重定向到同一个文件中,如:
   kill -l 1234 >out.txt 2>&1
2、管道
   利用连接符|来连接进程,如:
   ls -al | more       ls -al | sort等
 
3、在linux中对于文件的后缀名并不重要,如果想确定文件的类型,通过命令file查看即可,语法:
   file 文件名
 
4、创建shell脚本
   第一行一般都是指定执行该程序的shell,如:#!/bin/sh
   执行shell脚本有两种方式:
   方式一:在调用shell时,将脚本文件作为参数传递,如 /bin/sh 脚本文件
   方式二:通过“chmod +x 脚本文件”,使得文件可以被所有用户执行,但是此时直接输入脚本文件也不能运行,因为在$PATH文件中并没有指定当前路径,通过./脚本文件来运行。
 
5、变量
   (1)要访问变量中的内容,使用$变量名即可,如果要对变量赋值,则不需要$,可以通过echo $变量名 将它的内容输出到终端。如:
  
  在此需要注意两个地方:一是如果赋值的字符串中含有空格,则应该将字符串用双引号括起来,二是在等号的两边不能有空格。
(2)可以通过命令read向一个变量读入一个字符串,语法为: read 变量名
(3)引号的使用:当把一个带有$字符的变量放在双引号中,程序会替换成变量的值,如果是在单引号中,则不会替换,还可以在$前使用\来取消$的特殊意义。如:
(4)环境变量
  

环境变量

说明

$HOME

当前用户的主目录

$PATH

以冒号分隔的用来搜索命令的目录列表

$PS1

命令提示符,通常是$

$PS2

二级提示符,通常是>字符

$IFS

输入域分隔符,通常是空格,制表符和换行符

$0

Shell脚本的名字

$#

传递给脚本的参数个数

$$

Shell脚本的进程号

 (5)参数变量

参数变量

说明

$1, $2, $3…..

脚本程序中的参数

$*

在一个变量中列出所有的参数,以IFS的值作为分隔

$@

也是输出所有参数,但是它不受IFS值的影响

例子:
脚本源码:
 
结果:
 
6、条件
(1)利用test或[]来实现判断,但[]内必须要留有一个空格
(2)控制结构
     if condition
     then
        statement
     else
        statement
     fi
(3)另一种变形
     if condition
     then
        statement
     elif
     then
        statement
     else
        statement
     fi
 (4)当我们利用变量与某个值进行比较,为了避免没有给变量输入值带来的影响,因此在判断时,一般用双引号将变量括起来,如if ["$value"="yes"]。
 例子:
 
7、for语句
   语法:
   for 变量 in 变量值
   do
      statement
   done
例子:
 
8、while语句
   语法:
   while condition
   do
      statement
   done
 
9、until语句
   语法:
   until condition
   do
       statement
   done
 
10、case语句
    语法:
    case 变量 in
    pattern [ | pattern]...) statements;;
    pattern [ | pattern]...) statements;;
    ....
    esac
例子:
也可以将yes,y合并成一条,no和n合并成一条
 
11、命令列表
    AND列表:statement1 && statement2 && statement3 &&...., 只有前面所有命令都执行成功的情况下才执行后一条命令。
    OR列表:statement1 || statement2 || statement3 ||....,允许执行一系列命令直到有一条命令成功为止。
 
12、语句块:通过花括号实现。{语句块}
 
13、函数
    函数名()
    {
        statements 
    }
 
14、命令
    break命令:用这个命令在控制条件未满足之前,跳出for,while,或until循环。还可以为break提供一个额外的数值参数来表明要跳出的循环层数。
    :命令:是一个空命令。比如while :实现一个无限循环。
    continue命令:可以带一个可选的参数以表示希望继续执行的循环嵌套层数。
    .命令:用来执行当前shell中的命令。
    echo命令
    eval命令:允许对参数进行求值。
注意使用了eval和不使用的情况输出的结果。
   exec命令
   exit n命令:在shell脚本编程中,退出码0表示成功,退出码1—125是脚本程序使用的错误代码,其余数字有保留含义:126表示文件不可执行,127表示命令未找到,128及以上表示出现一个信号。
 
15、find命令:查找文件
    语法:find [path] [options] [tests] [actions]
    path:是指路径,分别可以是绝对或相对路径。
    options: -depth表示在查看目录本身之前先搜索目录的内容;-follow表示跟随符号链接;-maxdepth N表示最多搜索N层目录;-mount(或-xdev表示不搜索其他文件系统中的目录)。
    tests: -atime N表示文件在N填之前被访问过;-mtime N表示文件在N天之前被修改过;-name pattern表示文件名匹配提供的模式pattern,pattern总是用引号括起;-newer otherfile表示文件要比otherfile文件更新;-type c表示文件的类型为C,C可以是一个特殊类型,最普通的是d(目录)和f(文件);-user username表示文件的拥有者是指定的用户username。
    actions: -exec command表示执行一条命令;-ok command与-exec类型,但它在执行命令之前会针对每个要处理的文件,提示用户进行确认;-print表示打印文件名;-ls对当前文件使用命令ls -dis。
 
16、grep命令:在文件中搜索字符串
    语法:grep [options] pattern [files]
    options:-c表示输出匹配行数目,而不是输出匹配的行;
             -E表示启用扩展表达式;
             -h表示压缩每个输出行的普通前缀为匹配查询模式的文件名
             -i表示忽略大小写
             -l表示只列出包含匹配行的文件名,而不输出真正的匹配行
             -v表示对匹配模式取反,即搜索不匹配行而不是匹配行
   
 
阅读(2028) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~