Linux程设复习提纲(一)
Chapter 1
Linux是怎样的一个系统
Linux是一个免费的遵循GPL(GNU General Public License)原则开发的类Unix操作系统(开源的,受欢迎的,支持大多数可用平台)
Linux常用发行版
RedHat,Debian,SuSe,Mandrake,Redflag
Linux安装(不考?)
- Boot system from bootable media
- All installation programs need to perform essentially the same steps:
- Choose language, keyboard type, mouse type
- Create partitions **
- Setup a boot loader **
- Configure network
- Configure user and authentication
- Select package groups
- Configure X
- Install packages
- Create boot disk
引导程序的作用
主引导记录是一个512字节的硬盘第一扇区,446字节的代码,64字节的分区表,2字节的魔术字符
- 一个引导会装载并启动Linux内核
- 可以给Linux内核传递启动需要的参数如设备信息
- 可以选择性的加载一个初始化的根磁盘
- 可以启动其他的操作系统
常用的引导程序
LILO:Linux Loader
一个按照配置文件设置MBR的程序,一定要使用超级用户运行lilo命令才行
GRUB: Grand Unified Boot Loader
第一阶段在MBR中,第二节点在/boot/grub中,能够理解文件系统,不需要像LILO一样激活设置,配置文件在/boot/grub/grub.conf,使用grub-install命令进行安装。
CLI和GUI的对比
一个是命令行一个是图形化界面
安装软件命令
从tar压缩包开始
1
2
3
4
5
6tar zxvf application.tar.gz
cd application
./configure
make
su -
make installapt-get命令
dpkg命令
aptitude命令
yum+rpm
RPM:RPM包管理器
1
2
3rpm -q -a
rpm -ivh package-name
rpm -e package-name
apt-get原理(没找到)
老师的pdf里面没找到,可以参考CSDN博客,个人感觉写的还可以
Linux常用命令
- passwd:改密码
- mkpasswd:生成一个新的随机密码
- date,cal:获取今天的时间以及显示一个日历
- who,finger:获取在这个系统上活动的其他用户
- clear:清屏
- echo:打印
- write,wall,talk;消息
- pwd:打印工作目录
- cd:更改目录
- mkdir:创建目录
- rmdir:删除目录
- ls:列出目录下的所有内容
- touch:更新文件的访问和/或修改时间
- cp:复制文件
- mv:移动并且重命名文件
- ln:链接文件
- rm: 删除文件
- cat:打印文件的内容
- more/less:每页依次显示文件
- ps:汇报进程状态
- pstree:显示进程树
- jobs,fg,bg,
: 后台进程控制 - kill:杀进程
- nohup:后台运行
- top:显示CPU头部进程
七种文件类型
- 普通文件
- 文本和数据,没有特别的内部结构
- 字符设备文件c
- 穿行端口的接口设备,例如键盘、鼠标
- 块设备文件b
- 存储数据以供系统存取的接口设备,如硬盘
- 套接字文件s
- 用在网络数据连接
- 管道文件p
- 解决多个程序同时存取一个文件造成的错误
- 链接文件l
- 类似快捷方式
- 目录文件d
- 文件夹
文件夹组织
- 所有的Linux文件夹都在一个统一制式的虚拟的文件系统中
- 物理设备都挂载在挂载点上
- Floppy disks
- Hard disk partition
- CD-ROM drives
- 没有盘符如A:,C:
文件权限
- 三种访问级别
- 用户:User
- 用户组:Group
- 其他
- 三种权限
- r
- w
- x
- chmod命令
- chmod
filename - 权限可以运算为数(1,2,4)
- chmod
- 默认权限
- 文件的默认权限是644
- 目录的默认权限是755
ls -l
- 文件权限以及类型
- 链接计数
- 拥有者
- 拥有组
- 大小
- 最后一次修改时间
- 文件名
进程的概念
- 进程是一个任务
- 进程是一个正在执行的程序实例。由执行程序、它的当前值、状态信息以及通过操作系统关系此进程情况的资源组成
- 进程是一个地址空间,一个或者多个线程在该地址空间中执行,以及这些线程所需要的系统资源
Unix层次
早期的UNIX是一个简单的文件系统。一个进程子系统和一个shell
分为内核和核外程序
Chapter 2
要求掌握的命令
ls, dir, mkdir, mknod, mkfifo, cp, mv, rm, chmod, chown, chgrp, touch, locate, find, grep, pwd, cd, ar, file, tar, more, less, head, tail ,cat, ps, kill, jobs, fg, bg, nice, who, whoami, passwd, su, uname, man
重定向
管道
一个进程的输出作为另一个进程的输入
环境变量
- 操作环境的参数
- 查看和设置环境变量(echo,env,set)
例如:PATH环境变量
1
2
3
4 echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/song/bin
PATH=$PATH:.
export PATH
简单的正则
Shell
Shell的地位、位置
shell是一个命令解释程序和变成环境,是用户和操作系统之间的接口,作为核外程序存在。
Shell的功能(没找到)
- 命令解释程序
- Linux的开机启动过程;进程树
- 独立的程序设计语言解释器
- KISS
- Reusable tools
- Redirection and pipe
不同种类的Shell
执行脚本
- 可以直接在命令行中进行输入,但是这种输入方式仅会执行一次脚本
- 编写脚本文件(要注意注释和退出码)之后进行执行,执行的方法有
- sh scropt_file
- chmod +x script_file(chown,chgrp 可选择) && ./script_file
- source script_file ( or ) .script_file
用户变量
用户变量是用户在shell脚本里面定义的变量
变量的赋值和使用
1 | var=value |
read命令
用法:read var 或 read
参数:-t 5(5秒之内进行输入)-p之后可以指定一个提示,更多参见菜鸟教程read命令
reply variable
1
2
3
4
5
6
7
8
9
10
echo -n "Enter your name:"
read name
echo "hello $name, welcome to my program"
exit 0
#或
read -p "Enter your name:" name #-p参数,运行徐在read命令行中直接指定一个提示
#如
read -p "Enter a number"
echo $REPLY
引号的用法
单引号
单引号内的所有字符都保持它本身字符的意思,而不会被bash进行解释,例如使用单引号包住$之后表示的是它本身而不再是bash的变量引用符,\就是本身而不再是bash的转义字符
双引号
除了$、`(不是单引号)和\外,双引号内的所有字符将保持字符本身的含义不被bash解释
环境变量
shell环境提供的变量,通常使用大写字母作为名字
参数变量
用于脚本程序如果带有参数的情况
条件测试
- 退出码(exit code)
- test命令
- test命令支持的条件测试
- 字符串比较
- 算术比较
- 与文件有关的条件测试
- 逻辑操作
字符串比较
字符串比较 | 结果 |
---|---|
str1 = str2 | 两个字符串相同则结果为真 |
str1 != str2 | 两个字符串不相同则结果为真 |
-z str | 字符串为空则结果为真 |
-n str | 字符串不为空则结果为真 |
算术比较
算术比较 | 结果 |
---|---|
expr1 -eq expr2 | 两个表达式相等则结果为真 |
expr1 –ne expr2 | 两个表达式不相等则结果为真 |
expr1 –gt expr2 | expr1 大于expr2 则结果为真 |
expr1 –ge expr2 | expr1 大于或等于expr2 则结果为真 |
expr1 –lt expr2 | expr1 小于expr2 则结果为真 |
expr1 –le expr2 | expr1 小于或等于expr2 则结果为真 |
与文件有关的条件测试
文件条件测试 | 结果 |
---|---|
-e file | 文件存在则结果为真 |
-d file | 文件是一个子目录则结果为真 |
-f file | 文件是一个普通文件则结果为真 |
-s file | 文件的长度不为零则结果为真 |
-r file | 文件可读则结果为真 |
-w file | 文件可写则结果为真 |
-x file | 文件可执行则结果为真 |
逻辑操作
逻辑操作 | 结果 |
---|---|
!expr | 逻辑表达式求反 |
expr1 -a expr2 | 两个逻辑表达式“And”(“与”) |
expr1 -r expr2 | 两个逻辑表达式“Or”(“或”) |
条件控制语句
if 语句
1 | if [ expression ] |
例如
1 | if [ -f ~/.bashrc ]; then |
1 | !/bin/sh |
case 语句
1 | case str in |
例如
1 | !/bin/sh |
循环语句
for语句
1 | for var in list |
例如
1 | !/bin/sh |
while语句
1 | while condition |
例如
1 | quit=n |
1 | a=0 |
until语句
1 | until condition |
不推荐使用until语句,一般使用while循环作为替代
select语句
1 | select item in itemlist |
例如
1 | !/bin/sh |
命令表
命令组合
- 分号串联
- command1;command2;….
- 条件组合
- AND命令表(格式:statement1 && statement2 && statement3 && …)
- OR命令表(格式:statement1 || statement2 || statement3 || …)
语句块
1 | { |
函数
1 | func() |
局部变量使用local关键字。
函数调用:func para1 para2 …
返回使用return
杂项命令
- break: 从for/while/until循环退出
- continue: 跳到下一个循环继续执行
- exit n: 以退出码”n”退出脚本运行
- return: 函数返回
- export: 将变量导出到shell,使之成为shell的环境变量
- set: 为shell设置参数变量
- unset: 从环境中删除变量或函数
- trap: 指定在收到操作系统信号后执行的动作
- “:”(冒号命令): 空命令
- “.”(句点命令)或source: 在当前shell中执行命令
算术扩展
$((…))扩展
样例:
1 | !/bin/bash |
关于shell中的算数可以参考CSDN博客
Linux程设复习提纲(二)