shell及shell script的常用知识记录

shell基础

  • /etc/shells这个文件存放了系统当前可以使用的shell
  • /etc/passwd用户登陆时会默认取一个shell操作,而这个登陆取得的shell就记录在/etc/passwd这个文件内
  • .bash_history记录前一次登陆以前所执行的命令,这一次的命令放在临时内存中,注销登陆后才写入文件
  • bash支持通配符查询与命令执行,如ls -l /usr/bin/X*

变量的设置与使用

  • =设置变量,myname = virs
  • echo显示变量,echo $PATH
  • 增加变量可以用$变量名称增加,比如PATH="$PATH":/home/bin
  • 若该变量需要在其他子进程中使用,需要使用export声明成环境变量export PATH,export也可以显示当前的环境变量
  • unset 变量名称可以取消变量的设置
  • linux中,双引号可以保持变量的内容,双引号里面的变量仍然变量,但是单引号里面的内容只是一般的字符,反单引号的作用是:在一串命令中反单引号里面的内容会被先执行,而执行的结果又会被当作外部输入信息,如
  • ls -al `locate crontab`
  • env可以列出当前shell的所有环境变量,env是environment的缩写
    在这里插入图片描述
  • set可以查看当前bash的所有变量,包括环境变量和自定义变量
  • locale显示当前语系变量
反单引号的使用

反单引号是指(`)即数字键1左边的字符,其意义是:

  • 在一串命令中,反单引号内部的命令会先执行,同时执行结果会作为外部输入信息替换掉原来的文本
    如:
    ls -l `locate crontab`,先执行locate crontab将文件名列出来,然后使用ls查看文件具体信息
    在这里插入图片描述

变量的键盘读取、数组与声明:read,array,declare

read [-pt] variable

  • -p:后面可以接提示符
  • -t :后面接等待的秒数,如果没有输入系统自动略过
  • read -p "your input:" atest 输入This is a testecho $atest
    在这里插入图片描述

declare [-aixr] variable

  • 参数-a将后面的variable设置为数组(array)类型,可以存放字符串之类
  • 参数-i将后面的variable设置为整型(integer)类型
  • 参数-x将后面的variable设置环境变量
  • 参数-r将后面的variable设置readonly,变量不可更改也不可重设
  • bash默认的变量类型为字符串类型
  • 数组类型的赋值a[1]="sda",变量显示echo "${a[2]}"

数据流重定向

数据流重定向就是将原本在屏幕显示的信息传输到其他地方,比如文件、或者设备之类的,执行一个命令的时候涉及到输入与输出,而输出又分为标准输出与标准错误输出

  • 标准输入(stdin):代码为0,使用 < 或 <<
  • 标准输出(stdout):代码为1,使用 > 或 >>
  • 标准错误输出(stderr):代码为2,使用 > 或 >>
    >表示输出到文件,如果文件存在就把文件内容清空然后输入
    >>表示输出到文件,但是如果文件存在,输入数据累加到文件后面
标准输出
  • find /home -name .bashrc > list_right 2> list_error,将正确数据输出到list_right,错误数据输出到list_error
  • find /home -name .bashrc > list 2>&1
    find /home -name .bashrc &> list,把正确和错误的数据输出到一个list文件里面
  • 不想要的输出可以丢到/dev/null这个黑洞文件中
标准输入
  • cat > catfile,创建catfile文件并且由键盘输入文件的内容,输出结束按ctrl+d
  • cat > catfille < ~/.bashrc,创建catfile文件,键盘输入由文件./bashrc代替,最终catfile的内容与.bashrc的内容一样
  • cat > catfille << "eof"创建catfile文件并且由键盘输入文件的内容,指定’eof’为文件结束输入标志,文件内容写完后,再输入eof即可推出,不需要按ctrl+d

管道命令

后一个命令接收前一个命令传来的数据作为stdin(注意不接受stderr数据),然后执行输出
command1 | pipe | pipe.....
常用的有

选取命令grep、cut

cut命令用于切割字符,相当于splite

  • 第一种用法 cut -d'分割字符' -f fields
    在这里插入图片描述
  • 第二种用法cut -c 字符范围
    在这里插入图片描述
    使用cut命令略去开头的’declare -x’
    在这里插入图片描述

grep命令用于挑选想要的信息,相当于正则表达式

语法:grep [-acinv] [–color=auto] ‘查找字符串’ filename
-a: binary文件以text文件方式查找
-c: 计算查询到字符串的次数
-i: 忽略大小写
-n: 输出行号
-v: 反向选择
--color=auto: 查找关键字加上颜色显示
filename: 指定查找文件

在这里插入图片描述

排序命令sort、wc、uniq

wc命令用于计数

参数:

-l:列出多少行
-w: 列出多少英文单词
-m: 列出多少字符
-c: 统计字节数,注意区别-m

在这里插入图片描述

其他命令

  • 双向重定向tee
  • 字符转换命令tr、col、join、paste、expand
  • 切割命令splite
  • 参数代换xargs

猜你喜欢

转载自blog.csdn.net/adventural/article/details/88858371