shell总结

1 tr命令     处理文本中的内容

tr -d ‘\r‘ <file.txt|sort >file2.txt

参数:-c 取反

-C

-d 删除字符

-s 浓缩重复字符

特殊文件:/dev/null   /dev/tty

2 .profile 文件中的PATH

PATH=$PATH:$HOME/bin        永久生效

3 执行跟踪         (看程序都做了什么)

set -x      打开执行跟踪

set +x      关闭执行跟踪

4 脚本语言   shell            编译型语言   c++

5 sed 命令

-e ‘editing command‘  -e ‘‘  ..          可以有多个

-f 读取编辑命令

6 变量  判断  重复动作

1)位置参数=命令行参数

2)$(( ))里面可以进行算数表达式

3)readonly 和 export

readonly   使变量不得修改

export    用于修改环境变量

env -i 用来初始化环境变量

env -i path=$path    home=$home

4)删除变量

unset full_name

unset -v

unset -f   删除函数

who_is_on () {

who |awk ‘{print $1}‘ |sort -u

}

...

unset -f who_is_on

5)参数展开

{} 花括号本身也是很好用的,当你需要在变量名称之后马上跟一个 可能会解释成名称的一部分字符,这个时候就用{ }

${varname : -word}   存在,返回其值

不存在或未定义   返回word

$# 目前进程参数个数

[email protected] 传递给当前进程的命令行参数

for i in [email protected]

do

echo $i

done

结果:hello   hi    there     greetings

for i in "[email protected]"

do

echo $i

done

结果:hello    hi there      greetings

$? 前一个命令的返回状态值

$$  shell 进程的pid

$0  shell 程序的名称

$!  最近一个后台的pid

6)read   将信息读入一个或多个shell变量

while read 变量1    变量2

do

....

done</etc/passwd

IFS  内部字段分割器

while IFS=: read user pass uid

do

....

done

7)环境变量:

作用范围:当前shell,及其子shell

export varname

export varname=2

declare -x varname=value

export PATH=/usr/local/apache/bin:$PATH

查看:env

7特殊变量

$? 命令状态返回值        成功:0

失败:1-255

命令替换:用命令的执行结果替换命令

`date +%F`  显示几月几日

取结果 1)``

2)$( )

touch file-`date +%F-%H-%M-%S`

file-2012-09-19-14-45-17                   备份时候很有用

Num=`seq 1 2 100`

变量的周期跟你的进程相关联

8变量的读取顺序

bash

全局:/etc/profile -----/etc/profile.d/* --------/etc/bashrc

个人:~/.bash_profile    ~/.bashrc    ~/.bash_history

profile类:设置环境变量

bashrc类:本地变量

重新读取配置文件的命令:source或者.

设置别名:

alias cdnet=‘cd /etc/sysconfig/network-script/‘

unalias cdnet           撤销

9 标准输入,标准输出,标准错误输出

0           1        2           -------------$?

command >>file   追加输出

/dev/null   数据黑洞   吞噬数据

/dev/zero    泡泡机    吐数据

/dev/random    随机生成器

tr ‘a-z‘ ‘A-Z‘ </etc/passwd   输出重定向

command << "EOF"

结束符

错误重定向:command 2>file

command 2>/dev/null

正确错误都重定向:

command >file 2>&1

| 管道符      只传递正确信息

more  less  分页显示

file ‘command‘ 查看文件类型

uniq 忽略重复行

uniq=sort -n

tee  一个输入,两个输出  1)保存到文件

2)屏幕显示

command |tee /tmp/out |command

10 正则表达式

1)基本正则

.任意单个字符

*匹配前字符0次或多次

?匹配前字符0次或1次

[]指定范围内的单个字符

[^ ]指定范围内以外的字符

\{m,n\} 精确表示 从m到n次

\{m,\}           至少m次

\{0,n\}          至多n次

次数匹配(贪婪模式)

grep ‘a[[:space:]]*b‘ yy.txt

[[:space:]]表示空格 (更精确)

.*匹配任意长度字符

分组字符

\(\)     x\(ab\)*y

grep 选项

-v  取反

-i  不区分大小写

-o  只显示匹配的字符串

-E  扩展定则

-A

-B

-C

都是显示匹配行的附近显示行

--color  颜色显示

单引号:强引用     ------------一般对字符串引用

双引号:弱引用     ------------一般内容含有变量

2)扩展正则

次数匹配:

*

+  其前字符至少一次     相当于正则里的\{1,n\}

{m,n}   m到n次

grep -E=egrep

11 bash 的算术     ------------------只支持整数运算

+ - * / %(求余数)

++  --      这些是变量

$[2+3]或者$(( ))里面可以做算术运算

浮点运算:

echo ‘scale=6;3/2‘ | bc

精确到六位的小数运算

12 逻辑关系           &&&&&&&&&&&&&&&&&&&&&&&&很重要&&&&&&&&&&&&&&

&& 逻辑与    第一个表达式为真,然后继续执行     第一个为假,那就不执行了

||  逻辑或   第一个表达式为真,然后就不用执行     第一个为假,后边必须执行

! 非

13 整数的比较

-eq     等于

-ne     不等于

-ge    大于等于

-gt    大于

-le      小于等于

-lt   小于

例子:

A=3,B=5

test $A -ge $B && echo "the max number is &A" ||echo "the max number is $B"

字符串比较:

‘STRING1’==‘STRING2‘

!=     或者   <>     不等于

时间: 2025-01-04 13:23:20

shell总结的相关文章

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

linux Shell函数

Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 1 2 3 4 function 函数名() {     语句     [return] } 关键字function表示定义一个函数,可以省略,其后是函数名,有时函数名后可以跟一个括号,符号"{"表示函数执行命令的入口,该符号也可以在函数名那一行,"}"表示函数体的结

Shell实现跳板机,为什么用跳板机

整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1.     问题 第一.很多大公司的服务器都不允许直接登录,而是通过一个跳板机才能登录过去.在跳板机中,通常只能执行几个少数命令(如SSH),而其他命令是不允许执行的,那么怎样才能实现这个功能呢? 第二.一些小公司,由于服务器比较少,不需要什么跳板机之类的说法,公司的开发运维人员加起来也就那么十几二十人,通常大家都

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

shell中test命令方法详解

test命令用法.功能:检查文件和比较值 1)判断表达式 if test  (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2                  两个表达式都为真 test 表达式1 –o 表达式2                 两个表达式有一个为真 2)判断字符串 test –n 字符串                                   字符串的长度非零 test –z 字符串                          

shell脚本

-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]-x filename 如果 filename可执行,则为真 [ -L /usr/bin/gr

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

shell之数组的使用

数组 Array 一段连续的内存空间 1) 定义数组 [[email protected] shell]# aa[0]=martin [[email protected] shell]# aa[1]=jerry [[email protected] shell]# aa[2]=mike [[email protected] shell]# aa[10]=alice [[email protected] shell]# bb=(192.168.1.1 192.168.1.2 192.168.1.3