吉林大学UNIX/Linux操作系统期末复习指南

Unix/Linux操作系统

写在前面,这里面的东西基本上都是考点,但是我注重于后半部分大家都不太了解的部分写的。
如果没有学过的话,可以先看老师的PPT学一遍,然后考前看我的巩固一下。
这个修订了两次,
一次是我自己复习完,写的;
另一次是期末考完我写的。

1 文件系统

磁盘组织

UNIX中的文件类型

普通文件

目录文件

特殊文件

目录详述

这一部分没有写bash文件的部分,大家可以自己学习补充,考试和作业题中都有出现过。

  • 提供了磁盘组织文件的结构
  • 目录的层次形式组织→层次目录结构类似倒着生长的shu
  • /bin 存放着用户使用的可执行文件
  • /sbin 存放着Administrator可以执行的系统管理命令
  • /lib /lib64存放着函数库和模块文件
  • /boot Linux系统启动时用到的文件 /boot/cmlinuz-内核文件
  • /grab启动配置文件
  • /dev 存放设备文件
  • /mnt /media 用于挂载其他文件系统
  • /proc 临时存放的OS文件系统
  • /root 管理员root的主目录
  • /home 存放所有普通用户主目录
  • /etc存放配置文件
  • /usr 存放应用程序
  • /opt 存放第三方文件
  • /var 存放经常变动的文件
  • /run 临时文件系统
  • /tmp 存放应用程序产生的临时文件
  • /sys 存放内核数据信息
  • /srv 存放系统提供的内核程序

工作目录

路径

  • 绝对路径 /…/…/

  • 相对路径 ./…/…

易错题:
设置了HOME=“home/davaid/bin"执行了这条命令后,再次执行pwd命令显示的是什么?
还是"home/davaid/bin”

路径中的特殊符号

. 表示当前路径中的特殊符号

… 表示父目录

  • 文件和目录命名的大小写敏感

目录命令

  • tree -L 1 / 显示根目录下第一层的目录
  • pwd 显示当前工作目录

$ pwd /home/david

  • cd 改变工作目录

    cd ~ 进入当前用户主目录

    cd ~ tux进入用户tux的主目录 其中的~是进入的权限

    su - 直接进入root用户的主目录/root了

  • mkdir 创建目录

    若是 mdfir -p xx/yy/zz创建多层目录

  • rmdir remove directory用法同上,但是删除的时候会安全检查和删除多级目录的时候不用-p选项

  • ls 显示指令目录内容

    • -l 以长格式显示文件详细信息
    • 目录文件蓝色,文本文件黑色
  • 长格式显示文件文件详细信息

    • 文件格式第一列:文件前面的名字中,组内的2-4表示所有者,5-7表示的组用户,8-10表示其他人
      • r w x权限不同,-表示无权限
    • 第二列 文件的链接数
    • 第三列表示文件的所有者
    • 第四列文件所属的组
    • 第五列表示文件的大小
    • 第六列文件上次修改时间
    • 第七列表示文件的名字
  • -a 查看隐藏文件

显示文件内容

删除文件

Shell重定向

shell重定向操作符完成的任务

  • 使文件作为命令的输入
  • 命令输出保存到文件中

输出重定向

将用户命令输出重定向,允许用户将命令的输出保存到文件中,而不是显示在标准输出设备上

符号:> ,>>

命令格式:

command >filename 覆盖重定向
command >> filename 追加重定向

输入重定向

符号:< <<

command < filename 命令行中使用(考点,两个有什么区别)
command << 分节符 脚本编程中使用

cat命令

  • 使用 cat命令和输出重定向可以创建文件

    cat > myFirst

    Hello world

    I am tux

    study hard

  • 文本追加输入

    cat >> filename

  • cat命令加输出重定向可以复制文件

    cat filea fileb >filec 可以把两个文件复制并添加在一起

文件操作命令

文件操作

创建目录 mkdir

创建文件 vi 和cat

删除文件和目录 rm 和rmdir

命令通用格式 command source target

复制文件

  • cp file1 file2

    file2是file1的副本

  • cp 文件名(s) 目录名

    把文件复制到其他目录下,可以一次性复制多个文件

  • 选项 -i 如果目标文件已经存在,要求确认

  • 选项 -r 将目录复制到新的目录下

    cp -r ./memos ./david.bak

移动文件

mv命令

  • mv 文件名 目录

    支持文件的批量移动

  • mv 文件名1 文件名2

    移动并尝试改变文件名

链接命令

ln命令

涉及文件存储的3部分

目录项

inode

数据块

链接文件与复制所得文件的区别

链接文件未创造新的文件

链接文件可以思考为对象的引用

复制文件可以思考为对象的拷贝,有了新的对象

代码格式

  • ln 已有文件名 链接文件名

  • ln 文件名1 文件名2 … 目录

    目录中会显示已经链接上的文件名

  • ls -l

    可以查看已经链接的文件连接数

    都是硬链接,不涉及符号链接(软链接)

字数计算命令wc

wc filename(s)

计算一个或者多个文件的行数,字数和字符数

选项

-l 统计行数

-c 统计字符数

-w 统计字数

示例:ls | wc -w 可以统计有多少个文件

文件名替换

文件操作命令的参数大多为文件

文件通配符:可以使用匹配模式来进行文件匹配

  • ?匹配任意单个字符,不是零个

  • *匹配任意字符串,包括空串

  • [list]匹配任意在list中的字符 [1-3][ab]

    其中第一个代表匹配1,2,3;第二个代表匹配a或者b

  • [!list]匹配任意不在list中的字符

其他文件操作命令

查找文件 find命令

find 路径名 搜索选项 动作选项

  • 搜索选项
  1. -name 根据文件名查找
  2. -size±n 根据文件大小查找
  3. -type 根据文件类型查找 b:块特殊设备文件 c:字符特殊设备文件 d:目录文件 f:普通文件
  4. -atime ±n根据最后访问日期查找
  5. -mtime±n根据最后修改日期查找文件
  6. -newer 查找更新的文件

在查找的过程中,可以使用通配符进行模糊查找

  • 动作选项
  1. -exec command {} ;对找到的文件执行command
  2. -ok command {} ;在执行command之前要求确认
    注意到底是谁需要确定

显示文件的头部 head

head 文件名(s)

选项

-n 显示文件前n行

head -5 Myfile

可以显示多个文件(可以和通配符一起使用)

显示文件尾部的命令

tail 文件名(s)

用法同head

选择文件的一部分cut

cut option filename

option

-f 指定域位置

-c 指定字符位置 就是指定前几个字符输出

-d 指定域分隔字符
在这里插入图片描述
在这里插入图片描述

连接文件

paste filename1 files filenames

选项:

没有指定连接符的时候,默认是制表符

选项-d,指定连接符的时候,是指定的符号,如 “ ”,:

另一页查看工具

more filename

-lines

+line-number 从第line-number行开始显示

+/pattern 从包含pattern的行上两行开始显示

-c 在显示每页之前清屏

-d 显示提示[press space to continue,’q’ to quit]

space 翻一页

Enter 翻一行

q 退出more

查看工具 less命令

less filename

UNIX系统查找文件

filename→inode节点号→inode节点项→

inode节点项信息→找到文件数据所在的块block→读出数据

正则表达式

使用单个字符串来描述、匹配一系列符合某个句法规则的字符串

通常被用来检索、替换那些匹配某个模式的文本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

POSIX标准正则表达式

  • [[:alnum:]]匹配一个数字或者字母
  • [[:alpha:]]匹配一个字母
  • [[:digit:]]匹配一个数字
  • [[:upper:]]匹配一个大写字母
  • [[:lower:]]匹配一个小写字母
  • [[:blank:]]匹配一个空格或者Tab
  • [[:print:]]匹配一个可打印字符

在这里插入图片描述
在这里插入图片描述

正则表达式与通配符的区别

    • 匹配任意数量的任意字符
  • ? 匹配一个任意字符
  • [a b]匹配a或者b
  • [^a b]匹配除了a b以外的
  • [A-Z]匹配一个大写字母

Vi编辑器

  • 启动vi编辑器

    • vi
    • vi filename
  • 将指定文件副本插入当前文件光标下一行

    • r filenmae
  • 将文件的一部分写到另一个文件,覆写

    • [a,b] w filebname
  • 重排文本指令

    • dd+p

      删除当前行,将被删除行放在光标之下

    • dd+P

      删除当前行,将被删除行放在光标之上

    • yy+p

      复制当前行,将被复制行放到光标之下

    • yy+P

      复制当前行,将被复制行放到光标之上

  • 光标移动指令

    • $ 行尾
    • 0 行首
    • e/w 字首
    • b 字首
  • 使用删除操作符和域控制符

    • d $ 删除光标之后的内容到段尾部
    • d 0 删除光标之前的内容到段前
    • d w 删除光标之后到单词结束
    • 2 d w 删除光标之后的两个单词
    • d e 删除光标之后的单词部分
    • d b 删除光标之前的单词部分
  • 使用复制操作符

    • y $复制光标之后的所有文本
    • y 0复制光标之前的所有文本
    • p置于文本之后
    • P置于文本之前
  • 使用修改操作符

    • c+w 清除指定域文本(一个单词),然后进入文本编辑模式
    • c+$清楚指定域文本(一段文字),然后进入文本编辑
  • 光标定位

    • ctrl d 下翻半页 down
    • ctrl u 上翻半页 up
    • ctrl f 下翻一页forward
    • ctrl b 上翻一页 backward
  • 光标移动

    • G命令大范围移动光标
    • n+G 移动到第n行
    • G移动到文件尾
    • Ctrl + g获得当前的行号
  • Vi 编辑器的定制

    • set all
    • set X? 设置xxx的值

打开、保存、关闭文件

  1. vi filename,打开filename文件
  2. :w,保存文件
  3. :w filename,另存为filename
  4. :q,退出
  5. :q!,强制退出
  6. :wq,保存并退出
  7. ZZ,那是大写的ZZ,表示文件如果没有改动则离开,如果改动则保存并离开

移动光标

命令模式下可以实用以下按键,也可以使用上、下、左、右箭头

  1. 空格,向右
  2. baskspace,向左
  3. 回车,跳转到下一行行首
  4. ,跳转到上一行行首
  5. 0,零相当于home建,跳转到行首
  6. $,相当于end建,跳转到行尾
  7. ctrl + f,向下翻一页
  8. ctrl + d,向下翻动半页
  9. ctrl + b,向上翻动一页
  10. ctrl + u,向上翻动半页

插入文本或行

  1. i,在光标的左边插入文本
  2. I,在光标的行首插入文本
  3. a,在光标的右边插入文本
  4. A,在光标的行尾插入文本
  5. o,在光标的下面新建一行
  6. O,在光标的上面新建一行
  7. R,将当前字符替换
  8. J,合并当前行和下一行

删除或恢复

  1. x,删除当前光标所在的字符
  2. nx,删除光标所在字符开始的n个字符
  3. dd,删除当前行
  4. ndd,删除当前行开始的n行
  5. d1G,删除光标行到文件开始
  6. dG,删除光标行到文件结束
  7. u,撤销
  8. U,取消撤销

搜索

  1. /str,向下搜索str字符串
  2. ?str,向上搜索str字符串
  3. &str,只显示匹配到str的行
  4. n,在搜索时匹配下一个
  5. N,在搜索时匹配上一个
  6. esc+n,重复上一次搜索内容,向下匹配
  7. esc+N,重复上一次搜索内容,向上匹配

跳转至某行

  1. 100+,向下跳转100行
  2. 100-,向上跳转100行
  3. 100G,跳转到100行的位置。
  4. G,跳转到末尾
  5. gg,跳转到文件开始,相当于1G

设置行号

  1. :set nu,显示行号
  2. :set nonu,取消显示行号

复制、粘贴

  1. [n]yy,复制当前行。n为数字,如果加了数字表示复制n行
  2. y1G,复制当前行到文件开始
  3. yG,复制当前行到文件结束
  4. [n]yw,从光标开始复制到单词结尾。n为数字,如果加了数字则表示从光标开始复制n个单词,注意是单词,不是字符
  5. y$,从光标开始复制到行尾
  6. y^,从光标开始复制到行首
  7. p,在光标后粘贴
  8. P,在光标前粘贴

替换

  1. 😒/old/new,在当前行中把第一个old替换成new
  2. 😒/old/new/g,在当前行中把所有的old替换成new
  3. :start,end s/old/new/g,从strart到end行中,所有的old换成new
  4. :%s/old/new/g[c],将整个文件中的old替换成new,如果出现c则会让用户确认,等同于 :1,$s/old/new

其他

  1. .,那是小数点,重复上一个动作
  2. :e otherfilename,编辑另一个文件
  3. :! commond,暂时退出vi并执行另一个命令,如:!ls /home
  4. :set fileformat=unix,将文件类型修改为unix下(windows下的文本在linux下会出现^M)

UNIX程序开发

1 GCC vs g++

gcc GNU C 编译器

g++ GNU C++编译器

  • 预处理(.i)→编译(.s)→汇编(.o)→链接(可执行文件)
  • 命令格式 : gcc [option] filename
    • options

      • c 只进行前三步骤

      • o 指定生成的可执行程序名,缺省的时候,生成的是a.out

        gcc -o hello hello.c

    • 执行

      • ./a.out

2 重定向文件的输出

  • 1>文件描述符,默认分配给标准输出设备
  • 2>文件描述符,分配给标准错误输出设备 将出错信息重定向到文件中

3 make 工具

  • 用于编译同一项目中众多相互关联的源代码文件
  • 解决的问题
    • 将代码维护命令及编译命令写在makefile文件中,利用make工具解析此文件自动执行相应命令

    • 较少重复编译时间

      只对改动文件进行重新编译

    • 重新链接所有的目标文件,节省编译时间

  • make若没有指定目标,默认实现makefile文件的第一个目标,然后退出

4 Shell编程

  • 用于编程的命令语言:无需编译

  • shell程序文件:shell过程/shell脚本

  • shell执行:

    • sh shellname
    • ksh shellname
    • bash shellname

    这三种是启动一个新shell运行脚本程序

    • ./shellname
  • 脚本→可执行文件

    • chmod 字符串 文件名
      • 字符串:对象+操作符+权限

        u g o a + - = r w x -

  • 退出shell

    • exit
    • Ctrl-d
  • . 命令

    在当前shell中执行脚本,不创建子进程

    . .bash_profile

5 echo使用转义字符

  • \b 退格
  • \c 在输出串尾并不产生新行
  • \n 回车并产生一个新行
  • \r 回车但不产生新行
  • \t 制表符
  • \0n 0后面加1-3位八进制数字,代表字符的ASCII码

6 shell编程规则

  • 输出替换

    echo Your current dirctory : ‘pwd’

  • 读取命令read

    read A B C

    读取的变量数多余变量数目的时候,最后不匹配的都会读入最后一个变量

  • 注释 #

  • shell自定义变量

    • 变量名 = 变量值
    • shell中变量的值都是字符串
    • 需要符合命名规则
  • 变量声明周期

    • 默认:保存到脚本结束
    • unset:直接销毁
  • 显示变量的值

    • echo $name
  • 命令行参数

    • 最多读取10个命令行参数存入特殊变量
    • 按照顺序命名为:$0 $1 $2…$9
    • $#命令行参数的个数
    • $@所有命令行参数
    • $?最后一个命令的退出状态
    • $*所有命令行参数
    • $$正在执行的PID
  • exit命令

    • exit n n是退出状态返回码
  • 条件控制结构

    • if-then

      if[ condition ] #条件前后必须加空格
      then
      	commands
      	...
      	last-command
      fi
      
    • if -then -else

    • if-then-elif

  • test命令

    • 检测参数表达式的真假

    • -a与

    • -o或

    • !非

    • 还可以检测文件属性、长度、类型、权限

      test -r filename
      test -w filename
      test -f filename
      
  • 比较运算符

    • -eq 相等
    • -ne 不相等
    • -gt 大于
    • -ge 大于等于
    • -lt 小于
    • -le 小于等于
  • 字符串比较

    • =
    • !=
    • -n 是否包含字符
    • -z 是否为空串
  • 算数运算

    • shell没有提供内部运算符
    • 调用expr进行整数运算
      • *是乘号
      • %是取余符号
    • let进行整数计算,不可以加空格
      • 可以缩写成(( count=count+1 ))形式

shell三种循环

  • for

    • for in done按照指定次数执行一系列命令
    for variable
    in list-of-value
    do
    	commands
    done
    
    • seq序列化输出

      seq [选项] 尾数 #增量为1

      seq[选项]首数 尾数 #增量为1

      seq[选项]首数 增量 尾数

    • for i in {首数…尾数}

      for i in {首数…增量…尾数}

    • for file in ‘ls dir’

  • while

while [ condition ] #条件为真0就继续循环
do
	commands
	...
	last-commad
done
  • until
#条件为假(非0)就继续循环
until   [ condition ]
do
   commands
   …
   last-command
done

系统管理

1 文件管理系统

1.1 磁盘分区

  • 位于/dev目录

  • 命名规则

    /dev/xxyn

    n:磁盘区号 1-4主分区 5…:逻辑分区

    y:磁盘编号,a第一个

    xx:设备类型

    hd:IDE磁盘

    sd:scsi磁盘

    vd:虚拟磁盘

  • fdisk对磁盘进行分区

    • fdisk /dev/sdb
    • fdisk -l查看文件系统分区情况
  • lsblk 列出块设备信息

  • blkid 查看块设备的文件系统类型、LABEL、UUID等信息

  • mkfs 在磁盘分区上创建文件系统

    • mkfs [选项] 磁盘分区名
      • -t指定创建的Linux文件系统类型
  • mount 挂载磁盘分区

    • mount [option] 磁盘分区文件 目录
  • umount 卸载文件系统

    • umount 文件系统名
    • umount 挂载文件系统的目录名
  • df 列出系统磁盘空间使用情况

    • -h 用易读的方式显示
  • du 显示目录和文件占用磁盘块情况

    • du 选项 目录文件
    • -a 显示目录中目录和文件占用情况

2 文档和压缩文件

  • tar 将一组文件复制到一个文件中

    • tar -cvf tarfilename files/directories

      c 创建存档文件

      v 显示打包文件信息

      f 指定生成存档文件名

    • tar -tvf tarfilename

      t 列出存档文件内容

      v 显示包中文件详细信息

      f 指定存档文件名

    • tar -xvf tarfilename

      x 还原被打包文件

      • tar -xvf tarfilename file1

        解压包中特定文件

  • tar本身只打包不压缩

    • 打包并压缩:tar -cvzf tzfilename.tar.gz files/dirs
    • 解压缩并解包:tar -xvzf tzfilename.tar.gz
  • compres 压缩文件

    • -v显示压缩比例
  • uncompress 解压缩文件

3 任务管理

  • at 指定时间执行一个或一组命令

    • -l 列出所有at命令提交的作业
    • -m 作业完成时,向用户发送确认信息
    • -r 从ar调度作业中删除指定的作业号
  • crontab 编辑配置用户自己的定时任务

    • crontab [-u user] file
    • crontav [-u user] {-l|-r|-e}

    在这里插入图片描述

    • -e 编辑语法

4 用户及文件权限管理

根用户账户:root

  • 用户切换 su username
    • 升级切换需要密码
    • 降级切换不需要密码

系统账户:对系统特定组件进行操作的账户

  • 组按性质划分为:系统组和私有组账户
  • 不能登录计算机,只是管理权限
  • groupadd 创建用户组账户
  • groupmod 修改用户组账户
  • groupdel 删除用户组账户

普通用户账户:用户使用系统的账号

  • 用户管理配置文件

    • /etc/passwd 保存账户信息

    login-name: password flag: user-ID: group-ID: user-info: directory: default shell

    • /etc/shadow 保存用户密码信息
    • /etc/group 保存组账户信息

创建用户账户

  • useradd 创建用户账户
  • 命令语法: useradd [option] username
    • u 指定用户组号
    • g 指定用户默认组
    • s 指定用户的默认shell

修改账户

  • usermod 修改用户账户

  • 命令语法:usermod [option] username

    在这里插入图片描述

  • userdel 删除用户账户

    • userdel -r thomson
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AtonomyRay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值