c高级day2shell指令

一编程语言

编程语言
面向过程 c 面向对象 c++
编译型语言 c\c++ 解释性语言 shell脚本\python 需要解析器

二shell脚本

2.1操作系统的结构

应用层:app\代码            应用层通过shell解析器完成和内核层的交互
---------------------------------------
内核层:
    内核的五大功能:
        1、设备管理
        2、网络管理
        3、内存管理
        4、文件管理
        5、进程管理
--------------------------------------- 
硬件层:外部设备  

c高级day2shell指令_第1张图片

1.2第一个shell脚本

C文件后缀是.c,C++是.cpp,shell脚本是.sh

#!/bin/bash
echo hello world   
#输出一行hello world

shell中#表示注释

#!----->shabang  /she-bang
作用:指明脚本使用的解析器,如果不写系统会自动推导,只要写了就一定要写对 

ubuntu使用的python解析器:/usr/bin/python

1.3执行脚本的三种形式

执行shell脚本三种形式
bash(常用) bash 文件名.sh
执行过程:在后台打开一个终端,处理脚本,把结果返回到当前终端
source source 文件名.sh
执行过程:在当前终端执行,结果也在当前终端返回
修改文件的权限,可以直接运行 chmod 777 脚本名
./脚本名.sh

三、修改环境变量

3.1查看系统的特殊的环境变量

env

3.2修改PATH环境变量

查看原有的PATH路径:echo $PATH

export   PATH        =        $PATH          :添加的路径
 |        |         |         |               |
对变量赋值 要赋值的变量 赋值运算符   展开原有的PATH路径 路径分割 
只对当前用户生效

修改当前用户的配置文件
sudo vim ~/.bashrc ----->打开文件后,使用export表达式添加新的路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-56RtZg38-1691075563475)(evernotecid://3E0E4EC3-DFE7-4A43-A61C-6137F75331C6/appyinxiangcom/14761362/ENResource/p1451)]
让配置文件生效:
重启(永久生效)
source ~/.bashrc (source和.是同一个指令,都是只能临时生效)
. ~/.bashrc

对所有用户都生效(常用)

修改/etc/bash.bashrc文件
sudo vim /etc/bash.bashrc
c高级day2shell指令_第2张图片

让配置文件生效:

  • 重启(永久生效)
  • source /etc/bash.bashrc (source和.是同一个指令,都是只能临时生效)
  • ./etc/bash.bashrc
对所有用户生效

修改配置文件/etc/environment
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sVfps0JJ-1691075563475)(evernotecid://3E0E4EC3-DFE7-4A43-A61C-6137F75331C6/appyinxiangcom/14761362/ENResource/p1453)]

以冒号作为分隔,添加自己的PATH路径
让配置文件生效:

  • 重启(永久生效)
  • source /etc/environment (source和.是同一个指令,都是只能临时生效)
  • ./etc/environment ----->.是shell一个内置指令

四、shell中的变量

在shell脚本中,没有数据类型的概念,全部当作字符串处理

4.1复习

C语言中定义变量
存储类型 数据类型 变量名;
存储类型:6种
数据类型:基本数据类型 构造数据类型

4.2定义

指令的格式
指令 参数 操作数

变量名=变量的值
变量名='变量的值'   ---->用于变量的值中间有空格
变量名="变量的值"   ---->用于使用已有变量给新的变量赋值,并且使用有空格字符串拼接时
''内,$变量名 不会被展开
""内,$变量名 会展开

变量的注意事项:

  • =两侧一定不能加空格
  • 如果使用有空格的字符串给变量赋值,需要加单引号
  • 如果使用已有变量给新的变量赋值,需要使用${},使用双引号,展开变量

4.3使用变量的值

$变量名
${变量名}:{}用于区分变量的范围

4.4修饰变量的关键字

unset:清空变量的值,但是,不能清空readonly变量的值
readonly:只读,值不能修改
local:定义局部变量,只能在函数中使用

练习:
1、写一个1.sh脚本,将以下内容放到脚本中:
在家目录下创建目录文件,dir
在dir下创建dir1和dir2
把当前目录下的所有文件拷贝到dir1中,
把当前目录下的所有脚本文件拷贝到dir2中
把dir2打包并压缩为dir2.tar.xz
再把dir2.tar.xz移动到dir1中
解压dir1中的压缩包
使用tree工具,查看dir下的文件

#!/bin/bash
mkdir ~/dir/dir1 ~/dir/dir2 -p
cp * ~/dir/dir1
cp *.sh ~/dir/dir2
tar -cvJf ~/dir/dir2.tar.xz ~/dir/dir2
mv ~/dir/dir2.tar.xz ~/dir/dir1
tar -xvf ~/dir/dir1/dir2.tar.xz
tree ~/dir 

4.5外部传参/位置变量

$0 ---->脚本名
$1 ---->第一个参数
$2 ---->第二个参数
····
$n ---->第n个参数
9以上需要加{},${n}

获取外部参数的个数:$#  ---->不包含脚本名
获取所有的外部参数:$*/$@  ----->不包含脚本名

练习:
1、写一个脚本,输出脚本的所有外部参数,及第11个参数
echo $*
echo ${11}

4.6输出

echo 字符串/$变量名    ------>会自动换行
echo默认不解析转义字符
echo -e 可以解析转义字符
echo -n 取消换行

指令的格式:
指令 参数 操作数 ---->标准格式中参数要求在操作数之前
但是随着解析器的更新有些指令也支持:
指令 操作数 参数

c语言复习

段错误
1访问野指针
2数组越界,可能段错误
3指针赋值为字符常量, 因为字符在静态区的RO段
4

你可能感兴趣的:(c语言,开发语言)