彩世界平台-彩世界时时app-彩世界开奖app苹果下载

热门关键词: 彩世界平台,彩世界时时app,彩世界开奖app苹果下载

您的位置:彩世界平台 > 彩世界时时app > shell脚本(一)基础知识,shell脚本基础知识

shell脚本(一)基础知识,shell脚本基础知识

发布时间:2019-09-17 08:29编辑:彩世界时时app浏览(81)

    shell脚本(一)基础知识,shell脚本基础知识

    shell

    一、简介

    1.作用:与内核进行交互

    2.语言类型:解释性语言,给内核解释用

    3.脚本中第一行内容:

    #!/bin/bash                       这是shell脚本的第一行内容,表示用bash这个解释器去解释下面的内容

    #!/bin/sh                            这也可以是shell脚本的第一行内容,表示用sh这个解释器去解释下面的内容

    #!/usr/bin/env bash        env表示使用相对路径,自动找bash解释器所在位置。可以解决不同版本的系统bash不一定在/usr/bin/bash这个路径下的问题

    4.为了使脚本方便其他人阅读,一般会在开头加上作者、创建时间、邮箱、版本、描述等内容,可以使用以下设置快捷键的方法在脚本中增加这些信息

    vim /etc/vimrc

    map <F4> ms:call WESTOS()<cr>'s
    function WESTOS()
            call append(0,"######################################")
            call append(1,"# Author     :vaon                   #")
            call append(2,"# Create Date:".strftime("%Y-%m-%d")."             #")
            call append(3,"# Email      :[email protected]         #")
            call append(4,"# Version    :1.0                    #")
            call append(5,"# Description:                       #")
            call append(6,"######################################")
            call append(7,"                          ")
            call append(8,"#!/usr/bin/env bash")
    endfunction

    #map表示影射-->按F4时调用(呼叫)WESTOS函数

    #0代表第一行,1第二行...

    #黄色部分strftime是一个系统自带的函数,表示显示当前时间   .是分隔符,表示这个函数与其他两段内容互不影响

    #下面是设定函数的方法:

        Fucton 函数名()

        内容

        Endfunction

    然后创建一个脚本使用F4键就会在脚本最前面自动加上以下内容:

    二、基础知识

    1.变量的声明${a}b

    设定a=1

    echo $a 会出现1,

    但echo $ab就不会出现1b,因为系统把ab当成一个变量了。

    可以echo ${a}b,会出现1b,把作为一个已定义的1

    2.转义、弱引用、强引用

    1)表示转义

    echo ###不会出现结果,但是加上 echo ###就会出现###

    2)“”表示弱引用,也可以输出###

    3)‘’表示强引用,可以输出###

    4)强引用和弱引用的区别

    例如 $  !    ``  这些强引用会把他们当作普通内容打印到屏幕上

    而弱引用会把他们当成系统变量,执行变量里的内容

    还例如在弱引用中`hostname`表示执行hostname命令

    而在强引用中表示输出`hostname`这个内容

    3.diff、patch

    1)diff

    【1】.

    [[email protected] mnt]# cat file1
    abcd
    1234
    [[email protected] mnt]# cat file2
    abcd
    [[email protected] mnt]# diff file1 file2
    2d1
    < 1234
    #表示file1删除1234就和file2一样了

    【2】.比较目录

    diff -r 目录一 目录二

    2)打补丁

    建立hello文件:

    vim hello

    westos

    建立hello.new文件:

    vim hello.new

    westos

    456

    安装自动更新工具包:

    yum install patch -y

    将hello.new与hello文件比较,多出的内容做成hello.path补丁包:

    diff -u hello hello.new > hello.path

    用path补丁包去更新hello文件:

    patch hello hello.path

    查看hello文件,已经被更新成和hello.new一样了:

    cat hello

    westos

    456

    注:如果patch后面加上-b参数表示在更新的同时备份原文件为hello.orig

    4.grep

    首先建立一个文件:

    [[email protected] mnt]# vim /mnt/passwd

    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    hello
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    test:ROOT:test
    test:test:root
    test:root:test
    test:roottest:test

    1)查找包含root子段的行

    [[email protected] mnt]# grep root /mnt/passwd
    root:x:0:0:root:/root:/bin/bash
    test:test:root
    test:root:test
    test:roottest:test

    2)查找包含root子段的行,不区分大小写

    [[email protected] mnt]# grep -i root /mnt/passwd
    root:x:0:0:root:/root:/bin/bash
    test:ROOT:test
    test:test:root
    test:root:test
    test:roottest:test

    3)只要root开头的

    [[email protected] mnt]# grep -i ^root /mnt/passwd
    root:x:0:0:root:/root:/bin/bash

    4)只要root结尾的

    [[email protected] mnt]# grep -i root$ /mnt/passwd
    test:test:root

    5)以root开头和结尾的行都不要。-E表示后面两个条件同时筛选,-v表示不要筛选出的行

    [[email protected] mnt]# grep -i root /mnt/passwd|grep -i -E "^root|root$" -v
    test:ROOT:test
    test:root:test
    test:roottest:test

    6)表示只要包含只有root子段的行,root前后只要有字母都不要,如roottest这行就不要

    [[email protected] mnt]# grep -i "<root>" /mnt/passwd|grep -i -E "^root|root$" -v
    test:ROOT:test
    test:root:test
    问题:

    查看所有能登陆系统的用户

    解答:

    [[email protected] mnt]# grep "<bash>" /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    可见只有root能登陆
    7)grep -n 表示显示搜索出的字符串所在行号

    [[email protected] mnt]# grep -n hello /mnt/passwd
    4:hello

    8)gep -n2 表示显示搜索出的行以及它的上面2行和下面2行,并且显示各自在文件中的行号

    注:如果-n和2之间有空格则表示除了上面显示的内容还会在每行开头显示出文件名

    [[email protected] mnt]# grep -n2 hello /mnt/passwd
    2-bin:x:1:1:bin:/bin:/sbin/nologin
    3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4:hello
    5-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    6-games:x:12:100:games:/usr/games:/sbin/nologin

    9)grep -B2 表示显示搜索出的行以及这行的上两行内容
    [[email protected] mnt]# grep -B2 hello /mnt/passwd
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    hello
    10)grep -A2 表示下两行

    [[email protected] mnt]# grep -A2 hello /mnt/passwd
    hello
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    11)表示搜索/mnt目录下包含root字符的文件
    [[email protected] mnt]# grep -r hello /mnt/
    /mnt/passwd:hello

    5.cut

    用法:cut -d 分隔符 -f 第几列 文件

    -c指定字符

    -d指定分隔符

    -f指定第几列

    cut -d : -f 2 /mnt/psswd     #以:为分隔符,显示passwd文件第二列

    cut -d : -f 2,7 /mnt/psswd   #,表示第二和第七列,如果是-表示2到第7列

    cut -c 3 /mnt/passwd      #显示第三列的字符,不使用分隔符

    cut -c 1,3 /mnt/passwd     #显示一和三列的字符,不使用分隔符

    题目:

    显示eth0网卡的ip

    解答:

    [[email protected] mnt]# ifconfig eth0|grep "<inet>"|cut -d " " -f 10
    172.25.254.1

    6.awk

    -v表示给变量赋予内容:

    [[email protected] mnt]# name=hello
    [[email protected] mnt]# awk -F : -v name=$name 'BEGIN {print name} {print $1}END {print "end"}' /mnt/passwd
    hello
    root
    bin
    daemon
    hello
    mail
    games
    test
    test
    test
    test
    end
    7.sed

    -i      #这个参数表示写入文件

    sed ‘s/old/new/g’ passwd       #将passwd文件中的所有old字符替换为new

    sed ‘s/old/new/g’ passwd       #将passwd文件中的所有old字符替换为new,并写入passwd文件

    sed ‘2,5s/old/new/g’ passwd      #替换2到5行

    sed ‘/adm/,/gdm/s/old/new/g’ passwd   #从adm字符一直到gdm字符的内容中将old替换为new

    sed -e ‘s/old/new/g’ -e ‘s/old1/new1/g’ passwd   #将old替换为new同时将old1替换为new1

    sed 5d passwd    #删除第5行

    sed 5p passwd    #复制第5行

    sed -n 5p passwd    #只显示第5行

    -p    #表示直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作

    vim file

    s/sbin/westos/g
    s/nologin/linux/g

    sed -f file passwd

    题目:

    将httpd服务端口改为8080

    解答:

    ############################
    # Author     :vaon                           #
    # Create Date:2017-12-16             #
    # Email      :[email protected]       #
    ############################

    #!/bin/bash
    PORT=`grep ^Listen /etc/httpd/conf/httpd.conf`
    sed "s/$PORT/Listen $1/g" -i /etc/httpd/conf/httpd.conf
    systemctl restart httpd

    8.设置变量

    1)临时设置(环境级)

    在当前环境生效,当前环境关闭,变量失效

    先看一个例子:

    [[email protected] mnt]# a=1
    [[email protected] mnt]# echo $a
    1
    [[email protected] mnt]# vim test.sh
    #!/bin/bash
    echo $a
    [[email protected] mnt]# sh test.sh 

    [[email protected] mnt]#

    #由于a=1是在当前使用的shell里面赋的值,当进入脚本执行时,脚本使用的是子shell,这个子shell中并没有设定a=1,所以结果为空

    [[email protected] mnt]# export a=1
    [[email protected] mnt]# sh test.sh
    1

    #可以临时设定a=1给所有shell,一旦登出就会失去这个临时设定

    2)永久设置

    【1】.系统级

    对所有用户生效

    [[email protected] mnt]# vim /etc/profile

    export a=1

    [[email protected] mnt]# source /etc/profile

    [[email protected] mnt]# logout
    Connection to 172.25.254.1 closed.
    [[email protected] Desktop]# ssh [email protected]
    [email protected]'s password:
    Last login: Sat Dec 16 09:12:16 2017 from 172.25.254.10
    [[email protected] ~]# cd /mnt/
    [[email protected] mnt]# sh test.sh
    1

    #这样所有shell都可以使用a=1这个变量,登出系统再登陆依然存在a=1

    【2】.用户级

    只针对配置过的用户生效,其他用户无法使用

    vim /root/.bash_profile

    export a=1

    source /root/.bash_profile

    现在a=1只对root用户生效

    9.将脚本加到系统命令中去
    [[email protected] mnt]# vim /etc/profile

    export PATH=$PATH:/mnt

    注:这里同样存在系统级或用户级的设置,在这里使用的是系统级设置。如果只允许root可以设置/root/.bash_profile文件

    [[email protected] mnt]# source /etc/profile

    [[email protected] mnt]# chmod +x test.sh 

    然后退出/mnt目录,直接把test.sh脚本当成系统命令去执行,发现也可以:

    [[email protected] mnt]# cd
    [[email protected] ~]# test.sh
    1
    10.命令别名

    1)使用别名

    [[email protected] ~]# vim /etc/bashrc
    alias kan='cat'             #表示执行'kan'的时候相当于执行'cat'命令

    [[email protected] ~]# source /etc/bashrc

    查看别名列表:

    [[email protected] ~]# alias

             ...

    alias kan='cat'

             ...

    执行kan这个单词就相当于执行cat命令

    [[email protected] ~]# kan /mnt/test.sh
    ######################################
    # Author     :vaon                   #
    # Create Date:2017-12-16             #
    # Email      :[email protected]         #
    ######################################
                              
    #!/bin/bash
    echo $a
    2)删除别名
    删除/etc/bashrc中的alias kan='cat'

    然后在删除kan信息:

    unalias kan

    现在查看alias列表,里面已经没有kan的信息了

    11.*和@区别

    vim test.sh

    #!/bin/bash
    echo '$1 Is' $1
    echo '$2 Is' $2
    echo '$3 Is' $3
    echo '$* Is' $*
    echo '$# Is' $#
    echo '[email protected] Is' [email protected]
    [[email protected] mnt]# sh test.sh 1 2 3
    $1 Is 1                                                   #显示第1个字符
    $2 Is 2                                                   #显示第1个字符
    $3 Is 3                                                   #显示第1个字符
    $* Is 1 2 3                                             #显示所有字符
    $# Is 3                                                   #显示最后一个字符
    [email protected] Is 1 2 3                                           #显示所有字符
    *和@都表示所有内容,但实际上一个是所有内容方到“”里面。而@是每个数据都加引号

    $*   “1 2 3”

    &@  “1” “2” “3”

    12.shell脚本中函数的定义

    READ()

    {

            echo hello word

    }

    13.变量对比

    1)test

    2)[ ]

    [[email protected] mnt]# a=1
    [[email protected] mnt]# b=1
    [[email protected] mnt]# test "$a" == "$b" && echo yes || echo no
    yes
    [[email protected] mnt]# [ "$a" == "$b" ] && echo yes || echo no
    yes
    3)[ 条件1 -a 条件2 ] 表示条件1和2都满足
    4)[ 条件1 -o 条件2 ] 表示条件1和2任一个满足

    5)[ 条件1 -eq 条件2 ]  等于

    6)[ 条件1 -ne 条件2 ]  不等于

    7)[ 条件1 -gt 条件2 ]  大于

    8)[ 条件1 -ge 条件2 ]  大于等于

    9)[ 条件1 -lt 条件2 ]  小于

    10)[ 条件1 -le 条件2 ]  小于等于

    [[email protected] mnt]# [ "$a" -eq "$b" ] && echo yes || echo no
    yes

    11)[ -n ]   变量内容不为空

    12)[ -z ]    变量内容为空

    [[email protected] mnt]# a=8
    [[email protected] mnt]# [ -n "$a" ] && echo yes || echo no
    yes
    [[email protected] mnt]# [ -z "$a" ] && echo yes || echo no
    no

    13)[ -b ]  是否为块设备文件

    14)[ -c ]  是否为字符设备文件

    [[email protected] mnt]# [ -b /dev/sda ] && echo yes || echo no
    yes
    [[email protected] mnt]# [ -c /dev/vfio/vfio ] && echo yes || echo no
    yes

    15)[ -f ]  是否为常规文件

    16)[ -S ]  是否为套接字文件

    17)[ -L  ]  是否为链接文件

    18)[ -d ]  是否为目录

    19)[ -e ] 文件是否存在

    20)[ -r ]  是否可读

    21)[ -w ]  是否可写

    22)[ -x ]  是否可执行

    18)[ filename1 -nt filename2 ]  如果 filename1 比 filename2 新,则为真

    19)[ filename1 -ot filename2 ]  如果 filename1 比 filename2 旧,则为真

    [[email protected] mnt]# touch file
    [[email protected] mnt]# [ /mnt/check_ip -ot file ] && echo yes || echo no
    yes

    题目:

    显示输入的文件类型

    解答:

    #!/bin/bash
    [ -e $1 ] && (
            [ -f $1 ] && echo "$1 Is File"
            [ -d $1 ] && echo "$1 Is Directory"
            [ -b $1 ] && echo "$1 Is Block File"
            [ -L $1 ] && echo "$1 Is Link"
            [ -S $1 ] && echo "$1 Is Socket"
    )
    14.四则运算

    15.语句

    case语句:
    并发的去匹配所有条件,所有条件同一时间去配置,效率比if语句高

    if语句是逐行去匹配,第一行不匹配再去匹配下一行,效率较低

    exit 退出脚本。后面加数字1|0则表示退出后$?的值为1|0

    break 退出循环

    日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员。目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目。有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富。笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多。笔者在这一章中并不会多么详细的介绍shell脚本,而只是带你进入shell脚本的世界,如果你很感兴趣那么请到网上下载相关的资料或者到书店购买相关书籍吧。

    在学习shell 脚本之前,需要你了解很多关于shell的知识,这些知识是编写shell脚本的基础,所以希望你能够熟练的掌握。

    【**什么是**shell】

    简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

    笔者接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。那么这个bash有什么特点呢?

    1)记录命令历史

    我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中。有一点需要你知道的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。

    与命令历史有关的有一个有意思的字符那就是”!”了。常用的有这么几个应用:(1)!! (连续两个”!”),表示执行上一条指令;(2)!n(这里的n是数字),表示执行命令历史中第n条指令,例如”!100”表示执行命令历史中第100个命令;(3)!字符串(字符串大于等于1),例如!ta,表示执行命令历史中最近一次以ta为开头的指令。

    图片 1

    2)指令和文件名补全

    在本教程最开始笔者就介绍过这个功能了,记得吗?对了就是按tab键,它可以帮你补全一个指令,也可以帮你补全一个路径或者一个文件名。连续按两次tab键,系统则会把所有的指令或者文件名都列出来。

    3)别名

    前面也出现过alias的介绍,这个就是bash所特有的功能之一了。我们可以通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias :

    图片 2

    看到了吧,系统预设的alias指令也就这几个而已,你也可以自定义你想要的指令别名。alias语法很简单,alias [命令别名]=[’具体的命令’]。

    4)通配符

    在bash下,可以使用*来匹配零个或多个字符,而用?匹配一个字符。

    图片 3

    5)输入输出从定向

    输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>,另外还有错误重定向2>,以及追加重定向>>,稍后会详细介绍。

    6)管道符

    前面已经提过过管道符”|”,就是把前面的命令运行的结果丢给后面的命令。

    7)作业控制。

    当运行一个进程时,你可以使它暂停(按Ctrl+z),然后使用fg命令恢复它,利用bg命令使他到后台运行,你也可以使它终止(按Ctrl+c)。

    【**变量**】

    前面章节中笔者曾经介绍过环境变量PATH,这个环境变量就是shell预设的一个变量,通常shell预设的变量都是大写的。变量,说简单点就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据。就拿PATH来讲,这个PATH就代替了所有常用命令的绝对路径的设定。因为有了PATH这个变量,所以我们运行某个命令时不再去输入全局路径,直接敲命令名即可。你可以使用echo命令显示变量的值。

    图片 4

    除了PATH, HOME, LOGNAME外,系统预设的环境变量还有哪些呢?

    图片 5

    使用env命令即可全部列出系统预设的全部系统变量了。不过登录的用户不一样这些环境变量的值也不一样。当前显示的就是root这个账户的环境变量了。下面笔者简单介绍一下常见的环境变量:

    PATH 决定了shell将到哪些目录中寻找命令或程序

    HOME 当前用户主目录

    HISTSIZE 历史记录数

    LOGNAME 当前用户的登录名

    HOSTNAME 指主机的名称

    SHELL 前用户Shell类型

    LANG 语言相关的环境变量,多语言可以修改此环境变量

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

    PWD 当前目录

    env命令显示的变量只是环境变量,系统预设的变量其实还有很多,你可以使用set命令把系统预设的全部变量都显示出来。

    图片 6

    限于篇幅,笔者在上例中并没有把所有显示结果都截图。set不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来。用户自定义变量?是的,用户自己同样可以定义变量。

    图片 7

    虽然你可以自定义变量,但是该变量只能在当前shell中生效,不信你再登录一个shell试试?

    图片 8

    使用bash命令即可再打开一个shell,此时先前设置的myname变量已经不存在了,退出当前shell回到原来的shell,myname变量还在。那要想设置的变量一直生效怎么办?有两种情况:

    1)要想系统内所有用户登录后都能使用该变量

    需要在/etc/profile文件最末行加入 “export myname=Aming” 然后运行”source /etc/profile”就可以生效了。此时你再运行bash命令或者直接su - test账户看看。

    图片 9

    2)只想让当前用户使用该变量

    需要在用户主目录下的.bashrc文件最后一行加入“export myname=Aming” 然后运行”source .bashrc”就可以生效了。这时候再登录test账户,myname变量则不会生效了。上面用的source命令的作用是,讲目前设定的配置刷新,即不用注销再登录也能生效。

    笔者在上例中使用”myname=Aming”来设置变量myname,那么在linux下设置自定义变量有哪些规则呢?

    a. 设定变量的格式为”a=b”,其中a为变量名,b为变量的内容,等号两边不能有空格;

    b. 变量名只能由英、数字以及下划线组成,而且不能以数字开头;

    c. 当变量内容带有特殊字符(如空格)时,需要加上单引号;

    图片 10

    有一种情况,需要你注意,就是变量内容中本身带有单引号,这就需要用到双引号了。

    图片 11

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

    图片 12

    e. 变量内容可以累加其他变量的内容,需要加双引号;

    图片 13

    在这里如果你不小心把双引号加错为单引号,将得不到你想要的结果

    图片 14

    通过上面几个例子也许你能看得出,单引号和双引号的区别:用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用。

    在前面的例子中笔者多次使用了bash命令,如果在当前shell中运行bash指令后,则会进入一个新的shell,这个shell就是原来shell的子shell了,不妨你用pstree指令来查看一下。

    图片 15

    pstree这个指令会把linux系统中所有进程通过树形结构打印出来。限于篇幅笔者没有全部列出,你可以直接输入pstree查看即可。在父shell中设定一个变量后,进入子shell后该变量是不会生效的,如果想让这个变量在子shell中生效则要用到export指令,笔者曾经在前面用过。

    图片 16

    export其实就是声明一下这个变量的意思,让该shell的子shell也知道变量abc的值是123.如果export后面不加任何变量名,则它会声明所有的变量。

    图片 17

    在最后面连同我们自定义的变量都被声明了。

    前面光讲如何设置变量,如果想取消某个变量怎么办?只要输入”unset 变量名”即可。

    图片 18

    用unset abc后,再echo $abc则不再输出任何内容。

    【**系统环境变量与个人环境变量的配置文件**】

    上面讲了很多系统的变量,那么在linux系统中,这些变量被存到了哪里呢,为什么用户一登陆shell就自动有了这些变量呢?

    /etc/profile:这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等。

    /etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如笔者的linux系统PS1就是 [root@localhost ~]# ,你不妨看一下PS1的值。

    图片 19

    u就是用户,h 主机名, W 则是当前目录,$就是那个’#’了,如果是普通用户则显示为’$’

    除了两个系统级别的配置文件外,每个用户的主目录下还有几个这样的隐藏文件:

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

    .bashrc:该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。

    .bash_history:记录命令历史用的。

    .bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。

     

    linux shell**中的特殊符号**】

    本文由彩世界平台发布于彩世界时时app,转载请注明出处:shell脚本(一)基础知识,shell脚本基础知识

    关键词: