shell基础

1、shell概述

作用:命令解释器

shell分类:#cat /etc/shells

​ /sbin/nologin -->不让账号登录

​ /bin/bash -->默认的shell,与sh兼容

​ /bin/sh -->从UNIX继承来的一套

​ /bin/csh -->BSD系统,语法与C语言类似

查看当前系统具体用的哪个shell:

​ #echo $SHELL

2、shell中的常用命令

a、history查看历史命令

​ 历史命令默认1000条,可修改/etc/profile中的“HISTSIZE=1000

”字段来进行配置。

​ #!n:执行第n条历史命令

​ #!!:重复执行上一条命令

​ #!字符:重复执行以该字符开头的最后一个历史命令

b、alias起别名

​ 别名永久保存:在/etc/bashrc文件末尾追加”alias grep='grep --color=never'“,然后使用“source /etc/bashrc”让配置立即生效!

​ unalias:取消别名

c、执行多条命令

​ ';':顺序执行多条命令

​ '&&':前面命令执行成功才执行后面命令,否则后面命令不执行

​ '||':前面命令不成功才执行后面命令,否则后面命令不执行

​ 举例:ls test.sh > /dev/null&& echo "good" || echo "not good“

​ 注意:重定向不影响命令错误与否的最终判断。

​ ls test.sh >& /dev/null

​ 等同于:ls test.sh 1>/dev/null 2>/dev/null

d、'|'管道符号

​ 举例:#ls -l | grep "test"

e、echo显示字符串

​ --help选项:/bin/echo –help

​ --version选项:/bin/echo --version

3、shell脚本的简单使用

习惯命名:“***.sh”

基本元素:

​ #!/bin/bash -->必须写,指定接下来要使用shell

​ #字符串 -->注释信息

​ 脚本内容:常见的命令,变量,控制语句

举例:

​ #!/bin/bash

​ #我们的第一个脚本

​ pwd

​ date;who

脚本的运行:

​ i、可以直接使用sh命令来运行脚本

​ 例:$sh f3.sh

​ ii、可以修改脚本文件的可执行权限

​ 例:$chmod +x f3.sh

​ $./f3.sh

4、shell中的变量

命名规范:由字母、数字和_组成,但是不能以数字开头。

注意:bash中变量类型默认为字符串,如果进行数字运算必须修改为数值型。

变量的分类:本地变量(一般是脚本中声明的变量)、环境变量(在操作系统上声明的变量,多个脚本都能使用,用户可以修改其值)、内部变量(系统中声明的变量,用户不能修改值)

a、本地变量

​ 语法格式:变量名=值

​ 注意:=左右没有空格;值中如果有空格,则需要用""括起来;变量名严格区分大小写。

​ 举例:

​ #name="zhang san"

​ #echo $name

​ #echo ${name}is good man

​ 建议:变量使用时加上{}

​ set命令:查看本地所有变量

​ 例:#set | grep "name"

​ unset命令:清除变量

​ 例:#unset name

b、环境变量

​ 概念:进程(正在运行的软件或脚本)

​ 举例:vi f1.sh

​ #!/bin/bash

​ echo "当前账号的家$HOME"

​ 注意:环境变量字母都大写

​ 设置环境变量:

​ #环境变量名=值

​ #export 环境变量名 -->告诉操作系统该变量是环境变量

​ env命令:查看所有环境变量

​ 扩展:HOME(存放家目录)、USER(当前账号)、SHELL(当前系统使用的shell)、LANG(当前系统使用的语言)、PWD(当前工作目录)、PATH(保存软件的可执行文件路径)

​ 注意:PATH中的路径用‘:’隔开,谁在前先使用谁。

​ unset命令:清除环境变量

​ 环境变量的永久保存:将环境变量的声明放到~/.bash_profile

​ 注意:按照传统,定义的变量如PATH放到.bash_profile中,而像别名函数等放在.bashrc中.

c、内部变量

​ 举例:TODO

​ $#参数个数

​ $?最后命令执行是否成功,0表示成功

​ $0脚本名

​ $*/$@参数列表

​ $n第n个参数

​ $$本进程id,即pid

d、特殊符号

​ '':原样输出

​ "":除了$、\、`之外都是普通字符

​ ``:在字符串中当作命令来执行

​ \:针对特殊字符,想在双引号中原样输出,需要转义

posted @ 2020-04-27 11:23  striver-sc  阅读(92)  评论(0编辑  收藏  举报