Shell基础及变量3.20

1.Shell在Linux系统中的位置

  用户请求 Shell-->Linux内核--->硬件

2.Shell命令

  (1) 历史命令 history[-raw] histfiles (默认保存1000条,可以在/etc/profile中修改)

n  列出最近使用的n条命令,包括history n

-c  将所有的history内容全部清除

-a 将目前新增的history命令j加入histfiles中,默认~/.bash_history

-r  将histfiles中的内容读到目前这个shell的history记忆中

-w 将目前的history内容读到histfiles中

[root@www~]#echo $HISTSIZE

1000

  (2) 历史命令的调用

     上下箭头

     !n 重复执行第n条历史命令

     !! 重复执行上一条指令

     !coment重复执行最后一条以coment开头的命令

 (3) Tab键自动补全

 (4) 命令别名 alias 别名=’原命令’

   输入一条alias命令后,仅在当前Shell有用

   永久化方法:

1>    每次登陆自动生效:

把alias语句加到/etc/profile中

把alias加到~/.bashrc中,然后 source  ~/.bashrc

2>    每一位用户都生效:

把alias语句加到/etc/bashrc最后面,然后 source  /etc/bashrc

   (5) 删除别名 unalias [别名]

   (6) 多命令顺序执行

      命令1;命令2  顺序执行

      命令1&&命令2  与,命令1正确才执行命令2,否则不执行

      命令1||命令2  或, 命令1不正确,命令2才执行

   (7) 管道命令 命令1|命令2

       例:分屏显示history内容

           history|more

   (8) tee [-a] file 将数据流处理过程保存下来

      -a 以累加的方式,将数据加入file中,不加-a会被覆盖

      例:ls –l |tee –a ~homefile|more

   (9) 显示输出 echo [-ne] [字符串]

      -n 不要自动换行

      -e  支持\转义功能

      --help 显示帮助

      --version 显示版本信息

  显示变量:echo${name}

  反斜杠:

  \a 发出警告声

  \b删除前一个字符

  \c 最后不加上换行符号

  \f  换行但光标留在原来位置

  \n  换行且光标移至行首

  \r  光标移至行首,但不换行

  \t  插入tab

  \v  与\f相同

  \\  插入\字符

  \nnn插入nnn(八进制)所代表的ASCII字符

 (10) 清除变量 unset [变量名]

     unset name

3.环境变量

  (1) 用于所有用户进程(子进程),登录进程为父进程,pstree查看

     环境变量可以设置,用户注销时这些值将丢失

     变量名都是大写

     必须用export导出

  (2) 设置:[变量名]=value

     显示: env 查看所有,echo $[变量名] 显示一个

     清除: unset [变量名]

  (3) 常用环境变量

    HOME :代表使用者的家目录。cd~ 去到使用者的家目录或者利用cd 就可以直接回到使用者家目录了。

    PS1:shell的主提示符

    SHELL :目前这个环境使用的SHELL 是哪个程序?如果是bash 的话,预设/bin/bash

    PWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的

    HISTSIZE :这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。

    ENV :这个使用者所使用的个性化环境设置文件的读取文件。

    MAIL :当我们使用mail 这个指令在收信时,系统会去读取的邮件信箱文(mailbox)。

    PATH :就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔,由于文件的搜寻是依序由PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。

    LANG :语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF8

 (4)再次登录时有效,需在文件中修改

     Bash的初始化文件有:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc

   /etc/profile: 存放一些全局(共有)变量,不管哪个用户,登录时都会读取该文件。通常设置一些Shell变量PATH,USER,HOSTNAME和HISTSIZE等

  ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

  ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.

  /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

4.内部变量

  $0: shell程序的名称

  $?:  程序执行结果,0表示正确,其他值表示有错误

 $#:  传给Shell程序的位置参数的数量

  $*:  调用全部参数的单字符串,“参数1”,“参数2”……形式保存参数

  $@:  显示全部参数,“参数1,参数2……”形式保存参数

  $n:  第n个参数

  $$:  pid

 例:sh hello.sh [位置参数]

5.本地变量

  变量名=值

  1)等号两边不可以有空格

  2)取值包含空格,必须用双引号括起来

  3)Shell变量可以用大小写字母,区分大小写

6.特殊符号

  #:注释

  $:使其后的普通字符作为变量名${}

  单引号:全部原样

  双引号:支持$,\,倒引号

  倒引号:倒引号里是可执行命令 `pwd`

  反斜杠:把特殊字符转换成普通字符

7.获取字符串长度

  string="abcd"

echo ${#string} #输出4

8.提取字符串

  以下实例从字符串第2 个字符开始截取4 个字符

string="runoobisa great site"

echo${string:1:4} # 输出unoo

9.Shell脚本的基本元素

 1> 第一行必须是#!/bin/bash

 2>#注释

3>变量

4>控制

10.Shell脚本的运行方式

   1> sh ./hello.sh

  2> chmod +x hello.sh

     ./hello.sh

 

猜你喜欢

转载自blog.csdn.net/weixin_41661222/article/details/79633903
今日推荐