您的位置:首页 > 运维架构 > Shell

shell脚本参考手册

2014-12-31 09:58 253 查看
本文为在学习《shell脚本入门与指南》一书的记录之用,里面记录了一些shell脚本,以备日后参考。

shell脚本基本元素:

1.shell的最基本工作就是执行命令,每键入一到命令,shell就会执行。

2.格式很简单,以空白(space或者tab)隔开命令行的各个部分。

3.命令名称放在第一项,通常后面跟着选项,任何额外的参数放在最后。(命令名称 选项 参数)

4.选项的开头是一个(-)符合(括号不是),后面接着是一个字母,选项可有可无,有可能需要加上参数。

5.不需要参数的选项可以合并,比如ls -lt whizprog.c比ls -l -t whizprog.c更方便。

6.长选项的时候越来越普遍,长选项开始是一个(--)符号(括号不是)。

7.分号(;)可以用来分隔同一行里的多条命令。shell会一次执行这些命令。

8.如果你使用&符号而不是分号,则shell将在后台执行其前面的命令。

9.shell识别三种基本命令:内建命令,shell函数以及外部命令。

10.shell会沿着查找路径$PATH;来查看命令,这是一个以冒号(:)分隔的目录列表。

11.shell脚本中以#开头的为注释。

12.在shell脚本中定义参数的时候使用$1,当参数超过9的时候,数字应该是括号({10})括起来,${10},这样在使用shell脚本的时候就可以传递参数进来了。

-------------------------------------------------------------------------------------------------

1.who 告诉你当前系统有谁在登录

eg:$ who

-------gavin-guo pts/1 2014-12-31 09:31

2.wc -l/-w/-c wc字数计算程序,可以算出行数,字数,字符数

3.|(管道)符号可以在两个程序之间建立管道

eg:who | wc -l who的输出,成了wc的输入,结果是列出已登录用户的个数

who | wc -w 当前登录用户的信息的字数

who | wc -c 当前登录用户的信息的字符数

4.#! 当一个文件是以#!开头时,内核会扫描该行的其余部分,看是否存在可用来执行程序的计时器的完整路径。

eg:一般shell脚本都是以#!/bin/sh或者#!/bin/bash开头的。

5.cat > filename 复制终端的输入到filename中,如果不存在filename则新建,Ctrl-D表示end-of-file。

6.cat filename 把filename中的信息打印到终端。

7.chmod +x filename 改变文件的权限,有的是时候可能需要在前面加上sudo请求root权限。

eg:sudo chmod 777 filename 之后再使用ls,可以看到filename文件成绿色状态。

8.chmod -R +x filename 如果是个文件夹的话,可以使用-R来循环改变包含的每个文件的权限。

9.ls 列出当前文件夹目录中的所有文件。

10.cp sourcefilepath targetfilepath 复制文件,源一般应该是文件,目标应该是文件夹。

11.mv sourcefilepath targetfilepath 移动文件

12.rm [-r] [-rf] sourcefilepath 删除文件。-r表示在删除文件夹的时候循环删除其中所有文件,-rf表示强制删除。

13.cd targetfilepath 改变当前路径

14.echo [-n] [param] 将参数打印到标准输出上并且以换行符结束,-n可选,选择则不输出最后的换行符,param中可以添加转移字符,但是不是所有的unix都支持。

15.printf format_string [paramlist] 讲format_string打印到标准准输出换行符要自己使用\n,中间可以使用%s(字符串),%d(整型)占位符来接收paramlist参数列表中的参数,当参数多余占位符,则会循环打印,知道使用完所有的参数。

eg:printf ”name:%s,age:%d\n“ 小明 10 小吴

name:小明,age:10

name:小吴,age:0

16.< 改变标准输入cat < gavin,讲gavin文件中的内容打印到标准输出

17.> 改变标准输出cat > gavin,将获取的输入输出到gavin文件中

18.>> 附加到文本cat >> gavin,附件内容到gavin文件中

19.grep [options...] pattern-spec [files...] 匹配文本中含有指定字符的行,当指定多个文件的时候,输出会在匹配的行前面加上文件名和冒号。

options有下面的选项:

-E 使用扩展正则表达式进行匹配,grep -E可取代传统的egrep。

-F 使用固定字符串进行匹配,grep -F可取代传统的fgrep。

-e pat-list

-f pat-file 从pat-file文件读取模式作匹配。

-i 模式匹配的时候忽略字母大小写

-q 不显示匹配成功的行。

-s 不显示错误信息。

-v 显示不匹配模式的行。

20.cut -c list [file...]

cut -f list [-d delim] [file..]

剪下输入字符中指定的字段或者指定的范围。

-c list以字符为主,执行剪下的操作,list为字符编号(以逗号隔开1,3就获取下标为1和3的字符,下标从1开始)或者一段范围(用-隔开)。

eg:abcdefghijklmn $cut -c 1,3-6,9 输出为acdefgj

-d delim 通过-f选项,以delim作为定界符,在unix系统中一般是(space,tab,:),默认的是tab。

-f list 以字段为主,做剪下的操作,list为字段编号(注意不是字符编号)或一段范围的列表。

eg ab:cd:ef:gh $cut -f 1,3 -d : 输出为ab:ef

21.join 参考另外一篇博客:/article/9522030.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: