Linux Shell 脚本基础

来源:互联网 发布:手机淘宝无线链接地址 编辑:程序博客网 时间:2024/05/04 16:29

1 export 命令

export 不接参数,则把当前系统的环境变量给显示出来

export 接参数,则把此变量作为环境变量,使得父进程的变量,子进程可以沿用,而无需重复设置。

2 read变量键盘读取

参数选项:

-p: 接提示符

-s: 接等待描述,不会一直死等用户输入

[root@localhost ~]# read -p "please specify a path:" -t 5 path_link

please specify a path:/opt/nicky

[root@localhost ~]# echo $path_link

/opt/nicky

[root@localhost ~]# read -p "please specify a path:" -t 5 path_links

please specify a path:[root@localhost ~]#

 

3 array数组

4 declare一般用于声明变量,如果后面没有接任何参数,那么就和set命令类似,会把所有变量名称全部调出来

参数选项:

-a: 将变量定义成数组

-i: 将变量定义成整形数字

-x:将变量定义成环境变量

-r: 变量设置成readonly

[root@localhost ~]# declare -i sum=1+2+5

[root@localhost ~]# echo $sum

8

5 ulimit 限制对计算机资源的使用

-a: 列出限制的所有的限制

-f: 该shell可以创建最大的文件数

-t: 可以使用的最大CPU时间

-u: 单一用户可以使用的最大进程

[root@localhost ~]# ulimit -f 1024 //最大创建1024个文件

 

6 alias unalias别名

alias cp='cp -i'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

 

7 history查看历史命令

参数选项:

n: 列出最近执行的n条命令

-w: 将目前的history记录写入histfile文件

8: bash 的环境配置文件

Login shell:取得bash时需要完整的登录流程,及一般泛指需要输入账号和密码才可以登录,此时取得的bash叫做login shell

Non-Login Shell:登录时不需要输入用户名和密码

这两种取得的配置文件不一样:

Login shell: /etc/profile 或者/~/.bash_profile or ~/.bash_login or ~/.profile。

/etc/profile: 设置一些整体的环境,现在包括一些PATH,MAILUSER,HISTSIZE 等变量。

./bash_profile: bash在读完了整体环境设置的/etc/profile,接下里会读取用户的个人配置文件,如果只要这个文件存在,其他两个存不存在都不会被读取,如果不存在才读取./bash_login,

如果/etc/profile已经有的变量,在./bash_profile也出现了,则会进行累加。

Bash 配置文件的读取是通过source命令来读取的

[root@localhost ~]# source ~/.bashrc

我们知道. 也可以将shell 脚本

 

 

 

 

9: 正则通配符

*: 0个或多个任意字符

?:一定有一个任意字符

[]:一定有一个中括号内的字符

[a-z]:代表编码顺序内所有字符,a-z任意的一个字符

[^abc]:非a b c的任意字符

10: bash环境的特殊符号

#注释

~:用户主目录

|管道

\:转义

/:路径分割符号

$:变量前导符

> >>:数据重定向,输出导向,分别是替换和累加

< <<:输入导向

‘’:单引号不具备变量替换的功能,作为普通字符

“”:可以替换变量

():中间为子shell的其实和结束

{}:命令快的组合

11 数据流重定向

标准输出:命令执行完毕后,命令结果一般是显示在屏幕上

标准输入:读取键盘的输入

标准输入(stdin): 代码为0,使用 < 或者 <<

标准输出(stdout):代码为1 使用> 或者 >>

标准错误输出(stderr): 代码为2,使用2> 或者 2>>

/dev/null: 垃圾桶黑洞:将数据丢弃,一般清空文件可以用这个方法

[root@localhost nicky]# ls -al > new.txt

[root@localhost nicky]# ls -lrt >> new.txt

[root@localhost nicky]# cat /dev/null > new.txt #清空文件

通过cat来输入内容

[root@localhost nicky]# cat >  new.txt << "eof"

> asasasa

> eof

[root@localhost nicky]# cat new.txt

asasasa

12: 管道命令(pipe)

管道命令仅仅是针对输出;且必须接收前一个命令

选取 命令:从一行中截取我们想要的

Cut: 处理的信息是以行为单位

格式: cut –d ‘分割字符’ –f fields

cut –c ‘字符范围’

取得第五个分割字符:

[root@localhost nicky]# echo $PATH | cut -d ':' -f 5

取得第三-五个分割字符:

[root@localhost nicky]# echo $PATH | cut -d ':' -f 35

取得第12字符以后所有字符

[root@localhost nicky]# echo $PATH | cut -c 12-

qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

选取命令:grep 分析一行信息,如果改行有我们所需要的信息,就将该行取出来

命令格式:grep [options]‘要查找的字符串’ filename

参数选项:

-c: 计算找到字符串的次数

-i: 忽略大小写

-n: 顺便输出行号

[root@localhost nicky]# ps -ef| grep nginx

13:sort 排序

命令格式:sort [options][文件或者输入]

参数选项:

-f: 忽略大小写

-M:按月份来排序

-n: 使用纯数字排序

-r: 反向排序

-u: 相同的数据仅出现一行

-t;分割符号,默认是tab键盘

[root@localhost nicky]# cat /etc/passwd | sort –fr

14: 双向重定向 tee

比如我在查询的时候使用管道命令,但是我想将一部分存到文件:

命令格式: tes [-a] file

参数选项:

-a: 追加

[root@localhost nicky]# ls -l | tee -a new.txt | more

15: 字符转换命令

tr: 可以删除一段文字信息或者进行文字信息的替换

命令格式:td [options]string

参数选项:

-d: 删除字符串中string字符串

-s: 替换掉重复的字符

[root@localhost nicky]# last | tr '[a-z]' '[A-Z]'

[root@localhost nicky]# cat /etc/passwd | tr -d '\r' > /opt/nicky/new.txt

Paste: 将两段站在一起

[root@localhost nicky]# paste /etc/passwd /etc/shadow

 

0 0