安装

常规操作

  1. 全屏显示:进入全屏模式

  2. 挂起/冻结

    由于开关机的不便性 使用挂起/冻结可以保存linux系统状态

  3. 硬件参数设置

    先关机后设置

  4. 右下角有状态栏:显示当前硬件状态

快照与系统恢复

  1. 右键ubuntulinux 有快照

  2. 点击拍摄快照之后会保存当前系统状态

  3. 在虚拟机目录下就会有后缀为snapshot字样的文件

  4. 当系统出问题的时候可以快速还原到快照状态

文件系统

  • 对于Linux来说 使用统一的目录树结构,且没有盘符这个概念
  • . 代表当前目录 ..代表上级目录
  • bin

用户目录

  • Linux系统上支持多个用户,每个用户一个目录

  • 权限机制:对于普通用户操作的范围只有用户目录,对于root用户可以操作所有范围

常用命令行

列出子项 ls

  • 查看根目录

    1
    ls /
  • 查看详细信息

    1
    ls -l /home 
  • 要点与细节:按住tab键可以自动补全输入的命令和路径

  • 输入历史可以按↑↓箭头翻阅

  • 宿主机与虚拟机之间可以拷贝粘贴,例如图片和文字

目录切换 pwd

  • print working directory

    1
    pwd 

切换目录 cd

  • change directory

    1
    cd /home/zlinni
  • 几个特殊的目录:

    • ~ 主目录
    • . 当前目录
    • .. 上一级目录
  • 绝对路径 从根节点开始 /

  • 相对路径 从当前路径开始 ./dir==dir

新建文件 touch

  • touch

    1
    touch 文件名

输入内容 cat

  • cat 文件名

    1
    2
    3
    4
    cat files
    #查看files中内容
    cat -n files
    #查看n行内容
  • cat>用户名

    1
    2
    cat>files
    #往cat中输入内容 以ctrl+d结束
  • 其他方式输入 > (输出重定向)

    1
    2
    date > file
    #往file中输入date

创建目录 mkdir

  • make directory

    1
    mkdir abc
  • 使用-p参数可以将路径的层次目录全部创建

    1
    mkdir -p abc/123/test

删除目录 rmdir

  • remove directory,如果目录非空 操作失败

    1
    rmdir abc

删除文件或者目录 rm

  • remove

    1
    rm -rfabc

    删除abc目录连同子项一起删除,r表示recursive,f表示force

复制文件或者目录 cp

  • copy

    1
    2
    cp -rf example example2
    cp -b example example2 #备份

移到文件或目录 mv

  • move

    1
    2
    mv hello helloworld #把文件a移到b中
    mv simply.txt simply2.txt #改变名字

归档 tar

  • tape archive 档 案打包

  • 创建档案包

    1
    tar -cvf example.tar example
  • c means create

  • v means verbose 显示详情

  • f means file

  • 多目录打包

    1
    tar -cvf xxx.tar file1 file2 file3
  • 还原档案包 (解压)

    1
    2
    3
    tar .xvf example.tar
    tar -xvf example.tar -C outdir
    # -C参数指定目标目录,默认解压到当前目录下
  • 归档并压缩

  • 前面的tar没压缩体积大

  • 并档并压缩

    1
    tar -zcvf example.tar.gz example
  • 解压缩

    1
    2
    tar -zxvf example.tar.gz
    tar -zxvf example.tar.gz -C outdir

软链接 ln

  • 即Windows下的“快捷方式”

  • ln link

    1
    2
    3
    4
    5
    ln -s source link
    #-s 表示soft软链接(默认为硬)
    eg:
    ln -s example example2
    #便创建了一个名为example2的快捷方式,内部是example的内容
  • 特点:

  1. 删除软链接对源文件不会有影响
  2. 删除源文件则软链接失效
  3. 使用ls -l 可以清楚的看到快捷方式
  4. 直接看颜色

  5. 可以看出/bin指向的是user/bin目录

硬链接

用户管理

  • 添加一个用户

    1
    sudo useradd -m test1
  • 修改用户密码

    1
    sudo passwd test1
  • 删除用户

    1
    sudo userdel test1

超级用户

  • 首次使用时,需要给root设置密码

    1
    sudo passwd root
  • 切换到root用户

    1
    2
    su root
    # switch user
  • 退出

    1
    exit

用户和组

  • 创建组

    1
    groupadd boys
  • 创建用户

    1
    2
    useradd -m -g boys ming
    # -g表示添加用户 同时将用户加到boys组
  • 修改现有用户到新的组

    1
    usermod -g boys Zlinni
  • 查看用户和组

    1
    2
    cat /etc/group
    #每一行表示一个group消息,名字+id
  • 查看用户列表

    1
    2
    cat /etc/passwd
    #每一行表示一个用户的信息

文件的权限

  • -owner 文件的属主

  • -r 文件是否可读 read

  • -w 文件是否可写 write

  • -x 文件是否可执行 excute

  • 使用ls -l查看:

    • 第一个字符
    1
    2
    3
    d 表示目录
    l 表示link软链接
    - 表示为一个文件
    • 剩下的九个字符

      1
      2
      3
      4
      5
      r w - r - - r - - 
      #权限分为三部分 自己 | 同组 | 别人
      # r 可读
      # w 可写
      # x 可执行
  • 直接在图形界面上看属性

修改文件权限 chmod

  • change file mode

    1
    2
    3
    chmod o+w simply.txt
    # o 表示other
    # +w 表示增加write权限
  • more

    1
    2
    3
    4
    5
    6
    7
    8
    chmod a+w simple.txt
    #所有人all添加w权限
    chmod a-w simple.txt
    #所有人减去w权限
    chmod u+w simple.txt
    #仅用户user自己的权限 +w
    chmod o-w simple.txt
    #修改别人的other权限-w

修改文件属主 chown

  • change owner
  • 在/opt

打印 echo

  • echo

    1
    2
    3
    4
    5
    echo 'helloworld'
    #打印出helloworld
    var1 = 22;
    echo $var1
    #打印出22

指令使用说明 man

  • manual

    1
    man 指令名

历史指令 history

  • history

    1
    2
    history 10
    #查询最近的十条

文本编辑器 vim

  • 三种模式

  • 命令模式 按键i转化为输入模式 输入冒号进入底线模式

  • 输入模式 按键esc转化为命令模式 先esc再冒号进入底线模式

  • 底线模式 最下面一行输入指令

    1
    2
    3
    4
    5
    #退出命令
    :wq 保存并退出
    :wq! 保存并强制退出
    :q 直接退出
    :q 直接强制退出
  • 输入到光标左边是i input

  • 输入到光标右边是a after the cursor

  • 最左边 大写I

  • 最右边 大写A

  • 输入到光标上边是大写O

  • 输入到光标下边是小写o

  • 替换字母 r replace

  • 剪切一个字母 x

  • 剪切一个单词 dw

  • 剪切一行 dd

  • 粘贴 p paste

  • 复制 y

  • 复制一个单词 yw

  • 复制一行 yy

  • 在底线模式输入set number显示行号

  • 查找单词 /单词 按下n就到下一行

  • 替换单词 :s/旧单词/新单词

    1
    2
    3
    4
    替换前三行
    :1,3 s/old/new
    第一行到最后一行
    :1,$ s/old/new
  • 移动 :1 move 4 把第一行和第四行进行交换

  • 复制 :1 copy 4 把第一行复制到第四行后面

  • 删除 :1 d

查找grep

  • 语法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    grep ‘查找内容’ 查找文件
    grep -i ‘查找内容’ 查找文件
    #可以忽视大小写 ignore
    grep -e ‘查找内容’ 查找文件
    #用表达式expression去反映查找的内容
    grep -v ‘查找内容’ 查找文件
    #显示不匹配的内容 versus
    grep -n ‘查找内容’ 查找文件
    #显示行号
    grep -e '\(hello\)\{2,3\}' 搜索出现2-3次hello的那行

正则表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
. 一个字符
* 若干个字符 前面一个字符出现若干次
^ 行的开头
$ 行的结尾
[abc] abc其中一个
[a-c] a到c
^#
^$ 空行
! 否定
[[:upper:]]
[[:lower:]]
[[:blank:]]
[[:digit:]]

指令

  • 指令1 | 2 | 3

Shell 编程基础

  • 程序编译

  • 程序解释

  • 编辑一个 文本文件 保存为xxx.sh

    1
    2
    #!/bin/sh
    echo "hello,world"
  • 添加可执行权限

    1
    chmod +x xxx.sh
  • 执行程序

    1
    ./hello.sh

shell中的变量

  • shell是一个脚本编程语言

  • 定义变量

  • 执行命令

  • if判断逻辑 while循环逻辑

  • 自定义函数

    1
    2
    3
    4
    5
    6
    定义变量
    OUTDIR = /opt

    使用变量
    echo "output to : ${OUTDIR}"
    ls ${OUTDIR}

环境变量

  • 定义环境变量
    1
    2
    3
    4
    5
    6
    定义环境变量
    export OUTDIR = /opt
    显示环境变量
    echo ${OUTDIR}
    查看所有环境变量
    printenv
  • 可分为全局环境变量和局部环境变量
    1
    2
    全局环境变量由系统预定义且使用在bash进程
    一般使用大写字母表示全局 小写表示局部

环境变量的赋值和访问

  • 赋值

    1
    count=0,等号左右没有空格
  • 访问

    1
    $count
  • 使用export命令让局部变量变成全局变量

变量的赋值和运算

  • 字符串长度

    1
    2
    3
    expr length "$str"
    若要传值 使用反引号
    c = `expr length "$str"`
  • 查找字符串位置

    1
    2
    3
    expr index $str a (要查找的字符串)
    * 注意 从1开始
    * 有多个字符进行匹配则返回索引最小的值
  • 字符串截断

    1
    2
    3
    expr substr $str 2 3
    2 开始位置
    3 结束位置
  • 字符串匹配

  • 使用expr必须在运算符前面添加 \ 进行转义,且数字与运算符中间需要腾出空格

    1
    2
    计算(1+2)*5
    expr \( 1 \+ 2 \) \* 5
  • 使用$[]做运算不需要

    1
    result = $[(1+2)*5]

输入输出重定向

输出重定向和附加输出重定向

  • 输出重定向 覆写原来的内容

    1
    date > file1
  • 附加输出重定向 添加的内容在原先的结尾后面

    1
    date >> file1

输入重定向和附加输入重定向

  • 原理同上

  • 输入重定向

    1
    参数 < file1
  • 附加输入重定向

    1
    参数 << file1
  • 特别的

    1
    2
    3
    4
    cat < file > file2
    等同于
    cat > file2 < file
    都是先输入重定向获取file的内容再输出到file2

错误输出重定向和附加错误输出重定向

  • 错误输出重定向

    1
    {error message} 2 > file
  • 附加错误输出重定向

    1
    {error message} 2 >> file
  • eg

    1
    2
    3
    4
    5
    lsls
    得到错误信息 bash:lsls:command is not found
    lsls 2 > file
    cat file
    得到错误信息

管道功能

  • 第一个命令的结果作为第二个命令的输入以此类推

    1
    命令1 | 命令2 | 命令3
  • eg 由于/etc里面的文件很多 可以通过管道将列表结果传输到more显示

    1
    ls /etc | more

shell编程

创建和执行shell脚本

  • 创建的格式

    1
    2
    #!bin/sh
    echo hello world!
  • 执行 1

    1
    2
    . hello.sh(假设刚刚创建的文件是这个)
    且注意.之后跟空格
  • 执行2

    1
    2
    3
    先赋予权限
    chmod u+x hello
    ./hello.sh
  • 两种执行方式的区别

    1
    2
    . hello.sh其实是执行了source hello.sh 不会创建新的进程
    ./hello.sh则是执行了bash hello.sh 创建新的进程

分支选择结构

if

  • 基本语法

    1
    2
    3
    4
    if 条件
    then
    命令
    fi
  • 如果将if和then写在同一行 需要在then前面加;

    1
    2
    3
    if 条件; then
    命令
    fi
  • 如果有两个分支,就可以使用if-else语句,格式为

    1
    2
    3
    4
    5
    6
    if 条件
    then
    命令1
    else
    命令2
    fi

case-in

  • 基本语法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    case 表达式 in
    条件1)
    命令1
    ;;
    条件2)
    命令2
    ;;
    ...
    *)
    命令n
    esac
  • eg

循环结构

while循环

  • 基本语法

    1
    2
    3
    4
    while 条件
    do
    命令
    done

until循环

考试

单选

20道

填空题

基础指令

简答题

基础指令

  • 三道 加起来20分

编程题

单独做个脚本

  • 两道 加起来20分

  • 考察内容2-4

  • 基础知识和课后习题部分

    1
    2
    3
    4
    5
    6
    7
    8
    #!bin/sh
    index = `expr length ""$1"`
    whle($index>0)
    do
    str = $str`expr substr "$1" $index 1`
    index = $[$index-1]
    done

具体内容

  • ls -l 第一个字母代表和后面三个字母代表

    1
    2
    3
    4
    -a 列出所有项目
    -l 以列表形式写出文件
    -R 用于递归列出子目录中的的内容
    -d 只列出目录
  • cd 熟悉两种路径跳转 当前文件夹和上级文件夹

    1
    2
    3
    cd .该级
    cd ..上级
    cd ~主目录root
  • 新建文件和新建文件目录

    1
    2
    touch file
    mkdir 文件名
  • 删除文件 rm

    1
    rm 文件名
  • 删除空的文件夹 rm dir

    1
    rmdir 文件夹
  • 如果文件夹非空 rm

    1
    2
    rm -r 
    强制删除 实质是递归删除
  • 分页指令 more、less

    1
    more 文件名
  • 关机方法 shutdown halt 还有?

    1
    poweroff 断电
  • 重启 reboot shutdown -r 还有

    1

  • 输出echo

  • l输入变量在脚本里read

  • 通配符 字母数量未定用* 一个字母用? 代表a-j中间一个数 [a-j]

    1
    2
    ls /etc/???.conf 列出etc下面由三个字母构成的文件
    ls /etc/[a-c]*.conf 列出etc下面由a-c其中一个字母开头的文件
  • 命令后面加取地址符号& p48 代表放入后台执行

    1
    代表该指令放入后台执行

  • grep查找 文本的查找 使用通配符 开头^ 结尾$

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    grep ‘查找内容’ 查找文件
    grep -i ‘查找内容’ 查找文件
    #可以忽视大小写 ignore
    grep -e ‘查找内容’ 查找文件
    #用表达式expression去反映查找的内容
    grep -v ‘查找内容’ 查找文件
    #显示不匹配的内容 versus
    grep -n ‘查找内容’ 查找文件
    #显示行号
    grep -e '\(hello\)\{2,3\}' 搜索出现2-3次hello的那行

  • 通过文件名查询文件 find +name -t 查找类型

    1
      
  • 输出重定向 > >>

    1
    参见笔记
  • 管道 |

  • 第四章p60脚本编程

    1
    参见笔记
  • x执行权限 chmod u+x file

  • 默认bash 解释器 source解释器 区别

    1
    2
    bash 会创建新的进程
    source 不会
  • 变量代表输入参数的个数 $# 所有输入参数放到什么变量 第一个参数用什么表示

    1
    2
    3
    命令行的参数个数$#
    所有输出参数保留在$*
    第一个参数用$1表示
  • 变量的运算 数值类型和字符类型

    1
    参见笔记
  • 数字的加减乘除 expr 注意*前面加 \ 转义

  • bc计算器

  • expr的好处是可以将结果赋值给其他变量·``

  • 长度 、 抽取子字符串

  • p77 条件的判断

  • 数字方面的a》b

    1
    2
    3
    4
    5
    6
    -eq =
    -ge >=
    -le <=
    -gt >
    -lt <
    -ne ≠
  • 字符串的比较 两个字符串是否相等 包括长度判断

    1
    2
    3
    4
    5
    =
    !=
    <>
    -n 长度是否大于0 是否为空
    -z 长度是否=0
  • 文件的判断 判断是否为文件 文件夹

  • 以上都是单个

  • 多个判断自己看

  • 循环结构 for 依次输出五个单词等

    1
    2
    3
    4
    5
    6
    #!bin/sh

    for(i=0;i<5;i++)
    do
    echo $i
    done
  • while

    1
    2
    3
    4
    5
    6
    #!bin/sh

    while 条件
    do
    xxx
    done
  • 加两个(())等同于c的环境

  • 用户管理 知道怎么新建更改删除用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    useradd 新增用户
    选项:
    -e 该选项后面给出的是日期参数
    -c commit 该选项后面给出的是注释参数
    -d directory 该选项后面给出的是路径参数
    -g 该选项后面给出组群id或组群名称参数 用于指定用户所属的初始组群
    -G 附加组群
    -u 数字参数 指定uid
    -r 说明创建的是系统用户
    useradd -G study -u 1000 testuser

    passwd -S testuser 查看用户密码状态
    passwd testuser 修改testuser的密码
    ctrl+d结束输入

    usermod 修改用户账号设置
    和useradd选项相同,新增一条:
    -l 后面给出的是新用户名参数
    usermod -c "user for test" testuser
    usermod -l tuser testuser

    userdel 删除命令
    userdel -r tuser


  • 包括用户组的

    1
    2
    3
    groupadd
    groupmod
    groupdel
  • p102 切换到另外一个用户的命令 su

    1
    2
    su study
    切换到study用户
  • 文件管理第七章 当ls -l 哪个代表他的类型

    1
    2
    3
    4
    5
    6
    7
    8
    ls -l/xxx
    - 普通文件
    d 目录
    c 字符设备文件(鼠标键盘
    b 块设备文件block(硬盘
    l 符号链接文件link
    s 套接字
    p 管道pipe
  • 块状的设备文件 b

  • 字符类型的 c

  • 链接文件 l

  • 一个是硬链接 一个是软连接的创建

    1
    2
    3
    4
    5
    6
    7
    硬链接是目标文件的一个副本 软连接符号链接类似快捷方式记录文件所在路径
    ln命令创建链接文件
    默认创建硬链接
    -s 创建符号链接
    touch target
    ln -s target symtarget
    ls -l symtarget
  • 文件权限 增加和减少权限

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    rwx
    r 4
    w 2
    x 1
    read write execute执行

    分三部分 文件所有者 属组组员 其他用户
    eg
    -rw-r--r--
    root用户对其有可读可写权限 其他用户均只有可读权限

    chmod u+x
  • 针对三类人

    1
    root用户 属组用户 和其他用户
  • 权限管理的两种模式 字母的数字的如何转换

    1
      
  • 第八章 硬盘的文件系统

  • 开机的时候以哪一种文件格式去挂载盘ext4

  • 系统盘是ext4

  • fat32是单个文件不能过4g

  • ntfs就可以

  • /etc/fstab p133

  • 挂载一个硬盘的命令

    1
    2
    3
    4
    创建一个空节点
    mkdir /mnt/usb
    mount -t ext4 /dev/sda /mnt/usb
    mount -t 类型 挂载区 挂载位置
  • 卸载盘的命令

    1
    umount
  • 挂载盘之前 格式化的命令

    1
    mkfs.ext3/dev/sdc1
  • 普通使用的是什么格式 (linux下)

    1
      
  • 分区工具 p151 查询分区的具体信息的命令

    1
    fdisk -l
  • 更改盘的分区命令

    1
    t
  • 硬盘的配额限制命令

    1
    quotacheck
  • 查看当前的盘 打开所有的配额功能 关闭配额功能 更改配额信息 更改配额信息的时候是哪两种配额 针对大小和针对信息的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    quotaon 打开全部配额功能
    quotaoff 关闭配额功能
    -u user
    -g group组群
    -v 详细信息
    -a 全部扫描
    -avug
    quota 报告配额使用情况
    repquota 报告
  • 逻辑卷 为什么需要逻辑卷

    1
    四个1gb 形成一个4gb
  • 怎么样建立一个逻辑卷 使得这个逻辑卷随时可以增加随时可以减少 三个步骤

    1
    2
    3
    4
    5
    6
    7
    pvcreate xxx
    将分区转换为物理卷
    vgcreate juanzu xxx
    指定物理卷用于卷组创建
    lvcreate juanzu luojijuan


  • 新建和删除的功能对应的指令

    1