Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450246
  • 博文数量: 135
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 1145
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-13 17:16
文章分类

全部博文(135)

文章存档

2011年(5)

2010年(4)

2009年(26)

2008年(25)

2007年(29)

2006年(42)

2005年(4)

分类:

2006-02-07 11:44:53

单引号’’和双引号””差在那?

   命令提示符分为两种:

      1种是:普通的文本对shell来说没有特殊的功能;

      2种是:具有特定功能的保留字元

         =   设定变量

         $   作变量运算替换

Ø      重导向stdout

< 重导向stdin

| 命令管道

& 重導向 file descriptor 或將命令置於背境執行。

( ):將其內的命令置於 nested subshell 執行,或用於運算或命令替換。

{ }將其內的命令置於 non-named function 中執行或用在變量替換的界定範

圍。

; :在前一個命令結束時,而忽略其返回值,繼續執行下一個命令。

&& :在前一個命令結束時,若返回值為 true,繼續執行下一個命令。

|| :在前一個命令結束時,若返回值為 false,繼續執行下一個命令。

!:執行 history 列表中的命令

 

2.双引号

  由双引号括起来的字符,除$, \, '和"这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。对于$来说,就是用其后指定的变量值来代替这个变量和$;对于 \ 而言,是转义字符,它告诉Shell不要对其后面的那个字符进行特殊处理,只当做普通字符即可。可以想见,在双引号中需要在前面加上 \ 的只有4个字符$, \, '和"本身。而对 " 号,若其前面没有加 \ ,则Shell会将它同前一个 " 号匹配。

3.反引号

反引号(`)字符所对应的键一般位于键盘的左上角,不要将其同单引号(')混淆。反引号括起来的字串被Shell解释为命令行,在执行时,Shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。例如:

# pwd

  /home/xyz

  # string="current directory is `pwd`"

# echo $string

  current directour is /home/xyz

如果遇到其它的字符请用”\”屏掉其它的含而不含义

Read 的用法(bash shell)

              (1)代数法的出现

[root@approach root]# read -p "how old are you?" age

how old are you?25

[root@approach root]# echo $age

25

    (2)可以引用单个字符的出现

[root@approach root]# read -p "some words?" -a words

some words?lhb lhw cqx

[root@approach root]# echo ${words[1]}

Lhw

(3)password的当中没有出现字符

[root@approach root]# read -p "password:" -s password

password:[root@approach root]# echo $password

chinaunix

(4)输入时间只有5秒钟

[root@approach root]# read -t 5 auth

abcde

[root@approach root]# echo $auth

Abcde

(5)只允许输入一个字符

[root@approach root]# read -n 1 key

a[root@approach root]# echo $key

a

(6)????????

read -dq -p "input something end with q: " menu
read -e file #在这试试命令历史和补齐功能

 

cat:显示文件内容,创建文件,还可以用它来显示控制字符。

   (1)可以同时显示三个文件

    $ cat myfile1 myfile2 myfile3

    (2)显示加上行号

    [root@approach vsftpd]# cat -n vsftpd.conf

    [root@approach vsftpd]# cat -n vsftpd.conf >vsftpd1.conf

    (3)清空/etc/test.txt档案

$cat /dev/null > /etc/test.txt

 

Tee:在输出到文件的同时输出的屏幕

    (1)功能见下述

    [root@approach root]# ls -l |awk '{print $0}' | tee /root/lss

 

AWK:格式化报文或者从大的文本文件中抽取数据包。

(1)将ls查出的资料输出到/root/ls文件当中{print $0}代表所有域,这个动作用花括号。必须;当然了这里也可以打印单条的记录。

    [root@approach root]# ls -l |awk '{print $0}' >/root/ls

    (2)打印报告头文件前面这个(name number\n---------)每一行都会有???。

    ls -l |awk '{print "name     number\n--------"} {print $1}' | tee /root/lss

    (3)AWK在正规表达式中的运用(使用~后面紧跟正规表达式)

    ls -l |awk '{if ($4~/brown/) print $0}'|/root/lss

    [root@approach root]# awk '$0 ~/4096/' ls       (此两个表达的意思同样)

    (4)精确的匹配(精确的匹配要使用==号进行此种动作)

    awk '$0 ~/96/' ls

    awk '$7=="8"' ls(此為精確性匹配)  还有一个不匹配的动作!~

    (5)匹配字方式有如下许多种:

    <(小于)、>(大于)、….(任意字)、^(行首)、

   

AWK的内置变量

   ARGC          命令行参数个数

    ARGV          命令行参数排列

ENVIRON      支持队列中系统环境变量的使用

FILENAME     awk浏览的文件名

FNR        浏览文件的记录数

FS          设置输入域分隔符,等价于命令行- F选项

   

NF          浏览记录的域个数(一个坚行代表着一个域)

   

NR          已读的记录数

Awk ‘END {NR print}’shell.txt

21(读取shell.txt中的记录个数)

 

OFS  输出域分隔符

ORS         输出记录分隔符

RS          控制记录分隔符

   

Awk ‘{if(NR>0 && $~/root/)print $0}’ shell.txt

 

 

 

 SED 命令

   sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝

sed 的定位方式:

x x为一行号,如1
x , y 表示行号范围从x到y,如2,5表示从第2行到第5行
/ p a t t e r n / 查询包含模式的行。例如/ d i s k /或/[a-z]/
/ p a t t e r n / p a t t e r n / 查询包含两个模式的行。例如/ d i s k / d i s k s /
p a t t e r n / , x 在给定行号上查询包含模式的行。如/ r i b b o n / , 3
x , / p a t t e r n / 通过行号和模式查询匹配行。3 . / v d u /
x , y ! 查询不包含指定行号x和y的行。1 , 2 !

2.3 基本sed编辑命令

sed编辑命令
p 打印匹配行
= 显示文件行号
a \ 在定位行号后附加新文本信息
i \ 在定位行号后插入新文本信息
d 删除定位行
c \ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文

阅读(769) | 评论(0) | 转发(0) |
0

上一篇:linux常用命令一组!

下一篇:神秘的DUAL

给主人留下些什么吧!~~