Home » 未分类 » Linux 学习笔记 四

Linux 学习笔记 四

SHELL  编程

 

给你权限越高,就越危险,操作就越是要谨慎。

Shell 是一个用C语言编写的程序,是用户使用Linux的桥梁

Shll程序设计语言:编写SHELL脚本,用户系统管理工作

命令语言:交互解释和执行用户输入命令

种类:

Bourne shell (sh  bash)

C shell (csh tcsh)

Korn shell (ksh)

Shell命令的两种形式

内部命令: cd echo     实现功能比较简单,代码量比较少,占用资源少

外部命令: cp rm 实现功能比较复杂

查看命令类型 type command

系统加电–>

 

初始化文件

登录shell

交互式非登录shell   比如通过命令shell

非交互式shell

 

登录shell

首先登录shell 执行 /etc/profile  系统级配置文件

~/.bash_profile      ~/.bash_login       ~/.profile 执行用户配置文件,只要其中               之一一个被执行了,其余的就不执行了。

~/.bash_logout 退出时执行。

交互式非登录shell

我们使用的终端就是shell

并不执行登录shell 里面的文件,但是继承了登录shell,所以也就是相当于全部都执        行了

/etc/bashrc

~/.bashrc       改此文件可以修改我们的看见的终端的命令行的那提示符                                        ~/emsd1302/0715-0719/day05$

想改的内容:PS1=”youname”

 

非交互式shell

并不执行前面描述的初始化文件中的命令,继承了登录shell设置的shell变量

查找环境变量env, 并执行有该变量命名文件中的命令 eg:写一条脚本  然后执行                     bash first.sh  这样我们就执行了一个bash然后就退出了。这也就是说执行                   了之后就死掉了

shell 编程

只有弱类型,如字符型

局部变量:只在当前shell中存在的变量,而由其它的shell启动的程序不能使用该变                      量 新开一个终端是没用的,启动一个子shell也是没用的

环境变量:shell的任何子进程都能访问的变量,许多程序要正确运行都需要使用环境变                       量

shell变量:shell设置的特殊变量,也是shell正确运行所必须的

定义用户变量

变量名=变量值 var=hello

可包含、“字母”、”下划线“、”数字“ 以字母和数字开头 数字打头为shell默认                  使用

unset 释放变量,清楚变量

set 查看所有变量

readonly 制定变量为只读,unset不能释放

环境变量

一般用大写字母作为环境变量

系统设置像ls这样的命令一样,我们可以使用ls就是因为环境变量配置好了,如果不配        置好我们就得使用绝对路径看

shell 变量

例如 $$ 系统已经设置好了的。

 

环境变量设置

加上export 把其设置为环境变量   定义的是用户级别的      在另外一个shell也是可以查看的

可以用env查看所有的环境变量 清楚用unset

常用环境变量

HOME: 保存注册目录

PATH:保存用冒号分隔的目录路径名

TERM:终端了行Xterm 图形终端 linux 文本终端

UID:当前用户的标识符,取值是由数字构成的字符串

PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化

PS1:主提示符,# $

PS2:辅助提示符,在输入行末尾“\”输出该提示符 echo $PS2  =  >

IFS:shell制定的缺省域分隔符(默认是空格) IFS=:

LOGNAME:此变量保存用户登录名

SHELL:保存缺省的SHELL

RANDOM:产生随机数  产生的随机数在一定的范围

RANDOM(max-min+1)+min

Eg:echo $(($RANDOM%(10-1+1)+1))

bash 支持一维数组

var=(element1 element2…… elementn)

var=([2]=element3 [0]=element1)  对数组进行赋值进行修改

eg:array=([5]=change5 [2]=change2) 这样就只剩下两个元素了

var [2]=element3 修改指定数组变量的值 eg:array[5]=change

 

使用数组${name[n/*]}  eg:echo ${array[4]} 指定显示某一个

echo ${name[*]} 显示所有元素

echo ${#name[*]} 显示元素个数

echo ${name[@]} 和*基本一样 在使用echo ${array[*]}上

但是在整体赋值上array1=(“${array[*]}”)

array1=(“${array[*]}”) 赋值之后 array1的长度就是 1

array2=(“${array[@]}”)  赋值之后还是原来的长度

变量替换

文件名替换

变量替换

命令替换

算术替换

 

变量/参数 替换格式

变量=${参数:-word}——若参数为空或者未设置,用word代替参数进行替换,参数值不变

eg:

#!/bin/bash

#var1=hello

VAR=${var1:-“hello word”}

echo “The value of VAR is $VAR”

echo “The value of var $var1″

echo finished

变量=${参数:=word}——若参数为空或者未设置,用word代替参数进行替换,参数值为word

eg:

#!/bin/bash

#var1=hello

VAR=${var1:=”hello word”}

echo “The value of VAR is $var1”

echo “The value of var $VAR”

变量=${参数:? message}——若参数为空或者未设置,则message作为标准错误打印出来

eg:

#!/bin/bash

#var1=hello

VAR=${var1:?”hello word”}

echo “The value of VAR is $var1”

echo “The value of var $VAR”

变量=${参数:+word}——若参数设置了,用word代替参数进行替换,参数值不变

eg:

#!/bin/bash

var1=hello

VAR=${var1:+”hello word”}

echo “The value of VAR is $var1”

echo “The value of var $VAR”

 

查询匹配字符

* 匹配一个或者多个

? 匹配一个

[char] eg:[1-9] 匹配一个范围

eg:[!a]       显示不含a的文件

 

This entry was posted in 未分类. Bookmark the permalink.