首页 > 代码库 > shell 编程入门,一些简单符合命令

shell 编程入门,一些简单符合命令

shell 编程入门

1,,shell 特性

linux预设保存1000条输入过的命令,存于 .bash_history 。

(1,) !! 表示执行上一条命令

#pwd

/root

#!!

pwd

/root

(2) !n ,n表示数字,表示执行历史第n条指令,例如!1002

 #history |grep 1002

 1002 pwd

 #!1002

 pwd

 /root

(3)!字符串,表示执行命令历史中最近一次以 pw 开头的命令

  #!pw

  pwd

 /root

(4)alias 自定义命令的别名

 #alias zh=‘pwd‘ (单引号)  unalias 解除

(5) * 号,匹配零个或多个字符,?匹配一个字符。

(6) | 管道符,把前面的命令运行结果丢给后面的命令。  

 # 注释本行

 \ 脱意符 ls \#1.txt 改变#号原有含义

 $ 变量前缀,表示在使用这个变量,!$表示上条命令最后一个参数

 ;常用于两条命令中间,表示两条命令写一起

 ~ 代表用户家目录

 & 把一个命令丢到后台,&& 把2个命令丢一起

 []中的内容表示是可选参数,可选一个或多个或不选; 

 {}中的内容表示只可选其中一个参数。

(7) 作业控制。 

  ctril+z 暂停命令。 ctrl+c 终止命令。

 #fg 恢复命令

 #bg 使命令在后台运行

(6) > , >> ,< ,2> , 2>>

2,shell 变量

 #env 列出系统预设的全部环境变量 。 #set 显示的更全,还可以显示用户自定义的变量

 HOME 当前用户主目录

 HISTSIZE 历史记录数

 LOGNAME 当前用户的登录名

 HOSTNAME 主机名称

 SHELL 当前用户shell类型

 LANG 语言环境变量

 MAIL 当前用户的邮件存放目录

 PWD 当前目录

要使系统内所有用户都能使用自定义变量,需要在/etc/profile 文件最后行加入 export myname=Aming,然后运行 #source /etc/profile

#myname=Aming

#echo "export myname=Aming">> /etc/profile

#source /etc/profile

#bash

#echo $myname

Aming

#exit

exit

#su -user1

#echo $myname

Aming

........

#echo "export myname=Aming">>.bashrc 

#source .bashrc

这样只有当前用户可以执行自定义命令

3,设置自定义变量的规则(a=b,a变量名,b变量内容)

  变量名只能由英文、数字、下划线组成,不能以数字开头

  当变量内容带有特殊字符时,需要加上单引号,如果变量内容本身带有单引号,则需要加上双引号。

  #myname=‘Aming Li‘     #myname="aming‘s"

  如果变量内容中需要用到其他命令运行结果则可以使用反引号。

  #myname=`pwd` 

  #echo $myname

  /root

  变量内容可以累加,需要加双引号

  #a=1

  #c="$a" 12

  #echo $c

  112

#bash 进入一个子shell环境,在主shell中设定的变量,子shell无法查看,需要export指令。

#abc=123

#echo $abc

123

#export abc

#bash

#echo abc

123

如果export后面不加任何变量,则会声明所有的变量。

4,系统和用户的环境变量配置文件

/etc/profile :这个文件预设几个重要变量,如 PATH USER LOGNAME MAIL INPUTRC HOSTNAME umask 等

/etc/bashrc :这个文件主要预设umask 以及 PSI

这两个为系统级别的配置文件,以下为主目录下的隐藏文件

.bash_profile ,定义了个人化路径与环境变量的文件名称,每个用户都可以使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅执行一次。

.bashec 包含shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取

.bash_history 记录命令历史

.bash_logout 当退出shell时,会执行该文件

shell 编程入门,一些简单符合命令