鸟哥的linux私房菜第10章

shell壳程序:操作系统的内核管理系统的硬件,内核需要进行一定的保护,防止被用户错误导致系统崩溃。可程序是一个在用户和内核之间的桥梁,shell壳程序包含着很多命令,用户通过壳程序和内核进行交互,从而控制硬件。

bash

命令补全功能
  • 命令和文件名补全。
    • 安装bash_completion程序可以实现参数和选项补全。
  • 别名设置alias
  • 任务管理,前后台控制
  • 程序化脚本
  • 通配符(Wildcard)
  • 历史命令

命令

命令查找的顺序:

  1. 根据相对路径或者绝对路径查找
  2. alias命令别名
  3. bash当中查找
  4. PATH路径中查找

type命令查询功能:type什么都不加回返回提示是外部命令和内部命令的信息。

-t 使用file buildin alias表示命令类别
-P外部命令显示完整路径
-a 会将PATH中所有包含name的指令都显示出来,包括别名

/dev/random 随机数生成器 $RANDOM相关
read 给变量进行键盘读入的操作

-p 提示符
-t 接时间

declare 设置变量的类型,

-a 设置成数组 数组a,a[1]从1开始
-i 设置整数
-x 设置环境变量
-r 设置只读类型,不能修改也不能unset
-换成+则是去除相应的特性

ulimit限制用户的资源

-H 硬限制,不能超过
-S 软限制,可以超过,但是会给出警告
-a 列出所有的相关信息
-c 内核文件的大小限制
-f shell文件的大小限制
-d 最大内存容量
-l 锁定的内存容量
-t 最大的CPU使用时间
-u 单一使用者的最大进程数

history查看历史命令
使用过得命令存放在~/.bash_history中。HISTFILESIZE记录文件当中可以记录的命令个数。
当用户登入后,会读入/.bash_history当中的指令到内存当中,之后使用的命令也会被记录下来,当用户注销的时候,所有的命令才会被写回文件。HISTSIZE记录内存中放的命令个数。

n 查看最近多少条的命令
-c 清空当前shell的命令
-a 将新增的命令加入到文件当中
-r 将文件中的信息读入
-w 将当前的历史命令写入文件

stty终端快捷方式的设置

stty -a 查看所有的设置

set功能设置

$- 是set的所有设置,默认是himBH
设置:对于未知变量是否报错,对于输出的信息是否显示原始信息。

cut将数据进行切割;以行为单位

cut -d ‘分割字符’ -f 选区段
-c 按照字符进行切割 cut -c 12-其中-代表到最后

grep将匹配的数据所在行输出出来

-a 二进制文件以文本文件的方式查找
-c 输出找到的字符的输出次数
-i 所有大小写视为相同
-n 输出行号
-v 反向选择操作

sort排序操作

-f忽略大小写的差异
-b忽略最前面的空格字符
-M按月份进行排序
-n 按数字进行排序
-u 使用uniq
-t 分隔符
-k 选择字段

uniq将相同的行合并

-i忽略大小写
-c 进行计数

wc统计信息

-l 行数
-w 英文字符数
-m 所有字符数

tee双向重定向

tr删除操作

-d删除对应的字符
-s 替换操作 eg:tr [a-z] [A-Z]

col -x 将[tap]转换成对应数量的空格

join 处理有一定格式的数据

-t 分隔符设定
-1 第一个文选取的字段
-2 第二个文件选取的字段

paste将两个文件拼接在一起

-d 设置分隔符,默认使用[tab]

expand -t 设置[tap]对应的空格数
unexpand将空格转化成[tab]

split 文件分割操作

-b 按大小划分
-l 按行划分
得到的文件自动加aa,ab,ac编号

xargs参数替换:不是管道命令使用管道。或者一次输入的参数过多

通配符

*,?,[]

特殊指令

# 注释
\ 转义字符
| pipe管道操作
;连续命令分隔符
! 逻辑非操作
& 后台执行命令
() 子shell
{}命令区块
“” 含有具有变量替换的功能
‘’ 不具有变量换的功能

||和&&,;

;表示顺序执行,无相关性
|| 两个命令中只执行一个
&& 前一个命令执行了才执行下一个,否则都不执行

|管道操作pipe
  1. 管道处理标准输出的信息
  2. 管道必须使用管道命令

重定向操作

,>>;<,<<;2>,2>>三组重定向
stdin标准输入,stdout标准输出,stderr标准错误输出
>和2>:如果文件已经存在则清空输入
>>和2>>:如果文件存在则追加信息
如果想把两个输出和在一起则 2>&1将stderr整合到stdout输出,1>&2把stdout整合到stderr

文件

/etc/issue 登录的欢迎界面
/etc/motd 登陆成功后的提示
/etc/bashrc 放着用户umask设置,PS1设置,以及对/etc/profile.d/*.sh的调用.
/.bash_logout注销账户的时候,执行的操作。
/etc/inputrc与终端有关的配置文件
/usr/share/terminfo/和/etc/DIR_COLORS

变量:

$ 当前shell使用的PID,进程ID
?上一个命令的返回值,成功执行则返回0

删除,替换

${var#expc}从开头第一个最短匹配的删除
${var##expc}从开头第一个匹配的最长情况删除
${var%expc}从末尾第一个最短匹配删除
${var%%expc}从末尾第一个匹配的最长情况删除
${var/old/new}只替换一个
${var//old/new}所有匹配的全部替换
var=${str-expr}其中str是变量,expr是字符。 expr是默认值,如果str不存在则设为expr,存在则不变
var=${str?expr} 如果str不存在则标准错误输出expr,如果存在则$var=$str
(还有其他的几个我个人觉得不常用)

变量的设置规则:
  1. =两端不能有空格
  2. 命名只能有字符和数字,且字符开头。
  3. 双引号保留原有特性
  4. 单引号内都是一般字符
  5. 反单引号或者$()用在指令当中使用的指令上
  6. export编程环境变量
  7. 大写的操作会被保留给bash自身
  8. 转义字符\

语系

相关变量:LANG和LC_ALL
配置文件:/etc/locale
tty1-tty6不显示中文,一定乱码。
/usr/lib/locale所有的语系文件都放在这里

其他

程序向下兼容,硬件通常不会向上兼容。

变量的赋值操作:都加上""号

core file 内核文件: 程序突然崩溃将内存当中的相关信息写到内核文件中。

子进程:在bash当中使用bash,会进入子进程。使用exit进行退出。环境变量可以在父子进程中共享,自定义变量只能在当前进程中。

bash环境配置

  1. login shell通过登录进入的shell
    1. 通过调用/etc/profile然后调用/etc/profile.d/*.sh然后调用相应的语系设置/etc/locale文件
    2. 调用~/.bash_profile或者~/.bash_login或者/.profile三个文件中的一个,然后调用/.bashrc然后调用/etc/bashrc从而启动shell

/etc/profile含有整体的环境配置;PATH,MAIL,USER,HOSTNAME,HISTSIZE,umask设置。其中的路径只含有总的路径,不含有用户的部分
/etc/locale 语系设置
/etc/profile.d/*.sh:命令别名,bash的语系,颜色设置。

  1. non-login shell:1)通过xwindows打开的shell 2. 通过bash界面使用bash获得的子进程
    1. 首先调用~/.bashrc文件,然后调用/etc/bashrc文件,然后调用/etc/profile.d/*.sh文件,从而实现bash的环境配置

/etc/bashrc中根据不同的UID设置umask值,根据不同的UID设置PS!,调用/etc/profile.d/*.sh文件
~/.bashrc文件中放着命令别名

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值