Linux中shell和空间分配

一、shell基本功能
历史命令和命令补全
1 history[选项][历史命令保存文件]
选项:
-c:清空历史命令
-w:把缓存文件中的历史命令写入历史命令保存文件,~/.bash_history
1.历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改。
2.历史命令调用:
使用上下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条历史命令
使用“!字串”重复执行最后一条以该字串开头的命令。
注:history可以查看命令行号
3.命令文件与补全:
我们只要在输入命令或文件时,按“Tab”键就会自动进行补全。
命令别名和快捷键
1.命令别名:
设定命令别名:alias 别名=‘原命令‘
查询命令别名:alias
命令执行时顺序:
①.第一顺位执行用绝对路径或相对路径执行的命令。
②.第二顺位执行别名
③.第三顺位执行Bash的内部命令
④.第四顺位执行按照$PATH环境变量定义的目录查找顺序查找的第一个命令。
注:自己定义的别名不要覆盖原始命令名,所以不要与原始命令重名。
命令行定义的别名只是临时生效,重启系统就会消失。

别名永久生效:
1 vi /root/.bashrc
2.删除别名:unalias 别名
3.常用快捷键:
快捷键 作用
ctrl+C 强制终止当前的命令
ctrl+L 清屏,相当于clear命令
ctrl+U 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便
ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容
ctrl+R 在开始命令中搜索,按下ctrl+R之后,就会出现搜索界面,只有输入搜搜内容,就会从历史命令中搜索
ctrl+D 退出当前终端
二、shell的职责
shell负责确保用户在命令提示符后输入的命令被正确执行。其职责包括:
(1) 读取输入并解析命令行
(2) 替换特别字符,比如通配符和历史命令符
(3) 设置管道、重定向和后台处理
(4) 处理信号
(5) 程式执行的相关设置
三、Linux内存空间的分配
(1)、Linux内存空间的分配
a. Linux的内存空间有4G的进程地址空间,包括用户空间与内核空间。用户空间分配了3G,而内核空间分配了1G。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。只有用户进程进行系统调用的情况下(代表用户进程在内核态执行),才能够访问到内核空间。
b.用户空间对应进程,所以每当进程切换,用户空间就会跟着变化。而内核空间是由内核负责映射,它并不会跟着进程变化,是固定的。内核空间地址有自己对应的页表,用户进程各自有不同的页表。
c.为了保护数据的安全,每个进程的用户空间都是完全独立、互不影响。
(2)、Linux内存空间分布图
在这里插入图片描述
(3)、各个地址空间的数据
栈:保存局部变量、函数形参、自动变量。
堆:保存由malloc、ralloc、calloc分配空间的变量。
bss段:保存未初始化或初始化为0的全局变量。
rodata段:在全局数据里保存常量。
data段(静态数据区):保存初始化不为0的全局变量或者static修饰的变量。
代码段:保存代码。
(4)、各地址空间的特点
栈:栈的权限是由系统决定的。数据具有先进后出、后进先出的特点。如果定义了一个未初始化的局部变量,那么它的值是一个随机值。
堆:堆的权限是由用户决定的,用户通过malloc、rolloc、calloc分配地址空间,并使用free()函数能够释放空间。数据具有先进先出、后进后出的特点。
bss段:如果定义了一个未初始化的全局变量,那么它的值为0。
rodata段:保存常量,常量的值是不允许被修改的。
data段:如果定义了一个未初始化的静态全局变量,那么它的值为0。
代码段:保存代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值