zoukankan      html  css  js  c++  java
  • 20165306 预备作业3 Linux安装及学习

    查看了许多教程,VirtualBox和Ubuntu已安装完成。以下为学习Linux基础入门课程的实验报告、实验截图、尚未解决的问题及体会。

    实验三 用户及文件权限管理

    一、Linux用户管理

    (一)查看命令

    1.输入命令:

    $who am i或者 $who mom likes
    输出 :shiyanlou pts/0 2018-02-14 14:42 (:1.0)

    要查看当前登录用户的用户名,直接使用whoami即可

    2.who命令其他常用参数

    • -a打印能打印的全部
    • -d打印死掉的进程
    • -m同am i,mom likes
    • -q打印当前登录用户数及用户名
    • -u打印当前登录用户登录信息
    • -r打印运行等级

    (二)创建用户

    1.使用sudo命令的两个前提:

    • 知道当前登录用户的密码(文档最上方)

    注:Linux密码输入是不显示任何内容的

    • 当前用户必须在sudo用户组

    2.例如:

    输入命令:$sudo adduser ariel

    ls /home

    su -l ariel

    (三)用户组

    1.含义:

    一组用户的集合,它们共享一些资源和权限,同时拥有私有资源

    2.在Linux里面如何知道自己属于哪些用户组呢?

    方法一、使用groups命令

    输入:$groups shiyanlou
    输出:shiyanlou:shiyanlou 冒号之前表示用户,冒号之后表示该用户所属的用户组

    方法二、查看/etc/group文件

    输入:$cat /etc/group | sort
    输出:最后一行是用户组信息
    输入:$cat /etc/group | grep -E "shiyanlou" 过滤一些不想看到的结果
    输出:shiyanlou❌5000:

    • cat命令:用于读取指定文件的内容并打印终端输出
    • | sort:表示将读取的文本进行一个字典排序再输出
    • etc/group文件格式说明 group_name:password:GID:user_list

    3.将其他用户加入sudo用户组

    输入:$su shiyanlou
    $groups xyh

    $sudo usermod -G sudo xyh

    $groups xyh

    $su -l xyh

    $sudo ls

    (四)删除用户

    输入:$sudo deluser ariel --remove-home

    二、Linux文件权限

    (一)查看文件权限

    输入:$ls -l

    • Linux里面一切皆文件

    (二)变更文件所有者

    首先登录用户名xyh,新建一个文件,名为books
    输入:$touch books

    $ll books
    现换回到shiyanlou用户身份
    输入:$cd /home/xyh

    $ls books

    $sudo chown shiyanlou books

    $ll books

    (三)修改文件权限

    方法一、二进制数字表示

    • 0:没有权限, 1:可执行x, 2:可写w, 4:可读r
    • 共十个位置,首位若是-则表示非目录文件,若是d则表示目录

    输入:$echo "echo "hello shiyanlou"">books

    $chmod 600 books

    $ll books

    $su xyh

    $cat books

    方法二、加减赋值操作

    u:user, g:group , o:others, a:all, +增进, -去掉
    输入:$chmod go-rw books

    $ll books

    三、更多

    adduser和useradd的区别是什么?

    • useadd、userdel这类操作更像是一种命令,执行完了就返回
    • adduser更像是一种程序,需要输入、确定等一系列操作

    四、遇到的问题

    二、(三)修改文件权限的方法二 加减赋值操作中,没有提及的u/g/o按照什么处理?
    例如:“u-x”为什么是“--w--wx-wx”?


    实验四、Linux目录结构及文件基目录

    一、Linux目录结构

    1.FHS标准(文件系统层次结构标准)

    2.目录路径

    路径

    cd 切换目录

    . 当前目录

    .. 上一级目录

    -上一次所在目录

    ~当前用户的home目录

    pwd 获取当前所在路径

    绝对路径

    以根“/”目录为起点的完整路径,以所要到的目录为终点

    相对路径

    以当前目录 . 为起点,以你所要到的目录为终点

    例如:以home目录为起点,进入/usr/local/bin目录

    绝对路径:$cd /usr/local/bin $pwd

    相对路径:$cd ../../usr/local/bin $pwd

    二、Linux文件的基本操作

    1.新建

    • 新建空白文件

      $cd ~ 切换回到用户的/home/shiyanlou目录

      $touch test 创建名为test的空白文件

    • 新建目录

      • 使用mkdir命令可以创建一个空目录,也可以同时指定创建目录的权限属性
        mkdir mydir
      • 使用-p参数,同时创建父目录

    $mkdir -p father/son/grandson

    $cd father/son/grandson

    $pwd

    2.复制

    • 复制文件

    $cp test father/son/grandson

    • 复制目录

    $mkdir family 创建目录

    $cp -r father family 加上-r或-R参数,表示递归复制

    3.删除

    • 删除文件

    $rm test 若强制删除,则$rm -f test

    例如:$touch test

    $chmod 444 test

    $ll test

    $rm test

    $rm -f test

    • 删除目录

    $rm -r family加上-r或-R参数

    4.移动文件与文件重命名

    • 移动文件

    “mv 源目录文件 目的目录”

    $mkdir doc创建目录doc

    $touch file创建文件file

    $ls file输出file

    $mv file doc将文件file移动到doc目录

    $cd doc切换目录doc

    $ls 输出file

    • 重命名文件

    “mv 旧的文件名 新的文件名”
    $mv file1 file2

    • 批量重命名(略,使用rename命令)

    5.查看文件

    • 使用cat、tac命令查看文件:打印文件内容到标准输出(终端),cat正序,tac倒序,可以加上-n参数显示行号

    $cp /etc/passwd . 从/etc目录下拷贝passwd文件

    $cat passwd

    $cat -n passwd

    • 使用nl命令查看文件:添加行号并打印

    $nl -b a file表示无论是否为空行,同样列出行号(同“cat -n”)

    $nl -b t file只列出非空行的编号并列出(默认)

    $nl -n ln file在行号字段最左端显示

    $nl -n rn file在行号字段最右端显示,不加0

    $nl -n rz file在行号字段最右端显示,加0

    $nl -w 2 -n rz file -w加数字表示行号字段占用的位数,默认为6位

    • 使用more、less命令分页查看文件,可以直接使用键盘操作翻页

    $cp /etc/passwd .

    $more passwd

    默认只显示一屏内容,终端底部显示当前阅读进度,

    enter:向下滚动一行,

    space:向下滚下一屏,

    h:显示帮助, q:退出

    • 使用head、tail命令查看文件

    $head /etc/passwd只看头10行,默认为10行,不足10行则显示全部

    $head -n 2 /etc/passwd只看头2行

    $tail /etc/passwd只看后10行

    $tail -n 3 /etc/passwd只看后3行

    6.查看文件类型

    在Linux中文件的类型不是根据文件后缀来判断的,通常使用file命令来查看文件类型
    $file /bin/ls

    7.编辑文件

    见vim编辑器


    Vim快速入门

    一、模式介绍

    6种基本模式:普通、插入、命令行、可视、选择、Ex

    二、三种常用模式的切换

    • 普通→插入 按i键或a键
    • 普通→命令行 按:键
    • 插入、命令行→普通 按Esc键

    三、进入vim

    1.使用vim命令进入vim界面

    • “vim 文件名”如$vim practice_1.txt进入已存在的或者新建的文件

    • $vim进入命令行模式后输入:e 文件路径同样可以打开相应文件

    2.普通模式下游标移动

    h左、j下、k上、l右、w移动到下一个单词、b移动到上一个单词

    四、进入插入模式

    • i 在当前光标处进行编辑
    • I 在行首插入
    • A 在行末插入
    • a 在光标后插入
    • o 在当前行后插入一个新行
    • O 在当前行前插入一个新行
    • cw 替换从光标所在位置后到一个单词结尾的字符

    五、命令行模式下保存文档

    普通模式输入:进入命令行模式

    • 输入w回车,保存文档
    • 输入:w 文件名可以将文档另存为其他文件名或存到其他路径下

    六、退出vim

    1.命令行模式下退出vim

    • :wq 保存并退出
    • :wq! 强制保存并退出
    • :q 退出
    • :q! 强制退出,不保存
    • :w<文件路径> 另存为
    • :saveas 文件路径 另存为
    • :x 保存并退出

    2.普通模式下退出vim

    • shift+zz 保存并退出

    七、普通模式下删除vim文本信息

    • x或Delate 删除游标所在的字符
    • X 删除游标所在前一个字符
    • dd 删除整行
    • dw 删除一个单词(不适用中文)
    • d$或D 删除至行尾
    • d^ 删除至行首
    • dG 删除到文档结尾处
    • d1G 删除到文档首部
    • “数字+命令”表示一次删除多行,如2dd表示一次删除2行

    Vim文档编辑

    1.vim重复命令

    1.1重复执行上次命令

    $cp /etc/protocols . 拷贝测试文件到本地目录

    $vim protocols 打开文件进行编辑

    在普通模式下.表示重复上一次的命令操作

    例如:普通模式下输入x,删除游标所在字符,输入.会再次删除一个字符,除此之外也可重复dd的删除操作

    1.2执行指定次数相同的命令

    输入n+命令 ,举例如下:

    10x删除10个连续字符

    3dd删除3行文本

    dwdaw删除一个单词

    dnw删除n个单词

    2.游标的快速跳转(普通模式)

    2.1行间跳转

    n shift+g(nG)游标移动到第n行

    gg游标移动到第一行

    shift+g(G)游标移动到最后一行

    • 如果默认没有显示行号,先进入命令模式:,输入set nu以显示行号
    • 可以使用ctrl+o快速回到上一次(跳转前)光标所在位置

    2.2行内跳转

    普通模式下使用下列命令在行内以单词为单位进行跳转
    w到下一个单词的开头

    e到当前单词的结尾

    b到前一个单词的开头

    ge到前一个单词的结尾

    0^到行头

    $到行尾

    ~将游标所在字母变成大写或者小写

    f+字母向后搜索字母并跳转到第一个匹配的位置

    F+字母向前搜索字母并跳转到第一个匹配的位置

    t+字母向后搜索字母并跳转到第一个匹配位置之前的一个字母

    T+字母向前搜索字母并跳转到第一个匹配位置之前的一个字母

    3.复制粘贴和剪切

    3.1复制及粘贴文本

    1.普通模式中使用y复制

    yy复制游标所在整行

    3yy复制3行

    y^y0复制至行首,不含光标所在处字符

    y$复制至行尾,含光标处字符

    yw复制1个单词

    y2w复制2个单词

    yG复制至文本末

    y1G复制至文本开头

    2.普通模式中使用p粘贴

    p(小写)粘贴至光标后(下)

    P(大写)粘贴至光标前(上)

    3.2剪切及粘贴

    ddp快速交换光标所在行与它下面的行


    查找替换

    1.字符的替换和撤销(undo操作)

    普通模式下,

    r、指定字母先按r,再按指定字母,可将游标所在字母替换为指定字母

    R先按R,出现REPLACE字样,进入插入模式,可连续替换,直到按下Esc,退出后记得换成小写锁定

    cc替换整行,即删除游标所在行,并进入插入模式

    cw替换一个单词,即删除一个单词,并进入插入模式

    C(大写)替换游标以至行末

    ~反转游标所在字母大小写

    u撤销一次操作

    u{n}撤销n次操作???(见遇到的问题)

    U撤销当前所有修改

    ctrl+r撤销undo的操作???(见遇到的问题)

    2.快速缩进

    2.1使用命令进行快速调整缩进操作(普通模式)

    :set nu显示行号

    15G跳转到第15行

    >>整行向右缩进

    <<整行向左回退

    2.2shiftwidth命令

    :set shiftwidth?获取当前的设定值

    :set shiftwidth=10设置缩进为10个字符

    >>看缩进量有何变化

    2.3调整文本位置

    :ce(center)使本行文本居中

    :ri(right)使本行文本靠右

    :le(left)使本行文本靠左

    3.查找

    3.1快速查找

    普通模式下输入/,然后键入需要查找的字符串,然后按回车键就会进行查找
    /向下查找

    ?向上查找

    n继续查找

    N反向查找

    3.2高级查找

    普通模式下,

    *向后(下)查找游标所在处单词

    #向前(上)查找游标所在出单词

    g*同*,但部分符合该单词即可

    g#同#,但部分符合该单词即可

    4.遇到的问题

    • u{n}撤销n次操作”怎样使用这个命令?
    • ctrl+r的作用是什么?按了“ctrl+r”之后会显示“Already at newest change”,但没看出其他变化。

    高级功能入门

    1.多文件编辑

    1.1使用vim编辑多个文件

    两种形式:

    • 在进入vim前使用的参数就是多个文件

    • 进入vim后再编辑其他文件

    $vim 1.txt 2.txt

    同时创建两个新文件并编辑

    :n 编辑2.txt文件

    :n! 强制切换,未保存

    :N 编辑1.txt文件

    :N! 强制切换,未保存

    1.2进入vim后打开新文件

    :e 3.txt 打开新文件3.txt

    :e# 回到前一个文件

    :ls 可以列出以前编辑过的文档

    :b 2.txt 可以直接进入文件2.txt编辑

    :bd 2.txt 可以删除以前编辑过的列表中的文件项目

    :e! 4.txt 新打开文件4.txt,放弃正编辑的文件

    :f显示正编辑的文件名

    :f new.txt 改变正在编辑的文件名字为new.txt

    1.3恢复文件

    $vim -r 1.txt

    :ewcover 1.txt

    2.可视模式

    • 普通模式下输入v(小写),进入字符选择“VISUAL”模式,就可以移动光标,光标走过的地方就会选取,再次按下v就会取消选取
    • 普通模式下输入shift+v ,进入行选择“VISUAL LINE”模式,可以上下移动光标选更多的行,再次按下shift+v就会取消选取
    • 普通模式下输入ctrl+v,进入区域选择“VISUAL BLOCK”模式,可以上下左右移动光标选择区域,再次按下ctrl+v取消选择
    • 在可视“VISUAL···”模式下输入dx删除所选内容
    • 在可视“VISUAL···”模式下输入y复制所选内容

    3.视窗操作

    :new打开一个新的vim视窗

    :sp 1.txt打开新的水平分屏视窗来编辑1.txt

    :vsp 2.txt打开新的垂直分屏视窗来编辑2.txt

    4.创建加密文档

    $vim -x file1

    5.在vim执行外部命令

    :! ls 用于显示当前目录的内容

    :! rm FILENAME 用于删除名为FILENAME的文件

    :w FILENAME可将当前vim中正在编辑的文件另存为FILENAME文件

    6.vim中的查看帮助

    • 普通模式下按F1打开vim自己预设的帮助文档
    • :h shiftwidth 打开名为shiftwidth的帮助文件
    • :ver 显示版本及参数

    7.功能设定

    7.1获取目前的设定

    :set :se显示所有修改过的配置

    :set all显示所有的设定值

    :set option?显示option的设定值

    :set nooption 取消当前设定值

    7.2set功能的说明

    :set ai设置自动缩进

    :set aw设置自动存档,默认未打开

    :set background=back或light 设置背景风格

    :set bk设置自动备份,默认未打开

    :set cin 设置C语音风格缩进


    实验五、环境变量与文件查找

    一、环境变量

    1.变量

    declare tmp使用declare命令创建一个名为tmp的变量

    tmp=shiyanlou 将变量tmp赋值为shiyanlou

    echo $tmp 读取变量的值,使用echo和$

    注:变量名只能是英文字母、数字或者下划线,且不能以数字作为开头

    2.环境变量

    用于打印环境变量信息的三个命令:

    • set显示当前shell所有变量

    • env显示与当前用户相关的环境变量

    • export显示从shell中导出成环境变量的变量

    注:为了与普通变量区别,我们习惯将环境变量名设为大写

    3.命令的查找路径与顺序

    echo $PATH查看PATH环境变量的内容

    4.添加自定义路径到“PATH”环境变量

    PATH=$PATH:/home/shiyanlou/mybin 添加自定义路径(注:这里一定要使用绝对路径)

    echo "PATH=$PATH:/home/shiyanlou/mybin">>.zshrc

    • >> 表示将标准输出以追加的方式重定向到一个文件中

    • > 表示以覆盖的方式重定向到一个文件中

    5.修改和删除已有变量

    5.1变量修改

    ${变量名#匹配字串} 从头向后,最短

    ${变量名##匹配字串} 从头向后,最长

    ${变量名%匹配字串} 从后向前,最短

    ${变量名%%匹配字串} 从后向前,最长

    ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串

    ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串

    例如:

    path=$PATH

    echo $path

    path=${path%/home/shiyanlou/mybin}

    path=${path%*/mybin}

    5.2变量删除

    $unset temp

    6.如何让环境变量立即生效

    $. ./.zshrc必须指定完整的绝对或相对路径名

    $source .zshrc不需要

    二、搜索文件

    1.whereis简单快速

    2.locate快而全

    3.which小而精

    4.find精而细

    与时间相关的命令参数:
    -atime最后访问时间

    -ctime最后修改文件内容的时间

    -mtime最后修改文件属性的时间

    例如:

    -mtime n :在n天之前的一天之内修改过的文件

    -mtime +n :在n天之前(不包含第n天本身)被修改过的文件

    -mtime -n :在n天之内(包含第n天本身)被修改过的文件

    -newer file :file为一个已存在的文件,列出比file还要新的文件名

    例如:

    $find ~ -mtime 0 列出home目录中,当天(24小时之内)有改动的文件

    $find ~ -newer /home/shiyanlou/Code 列出用户目录下比Code文件夹新的文件


    挑战:寻找文件

    目标:

    • 找到sources.list文件
    • 把文件所有者修改为自己(shiyanlou)
    • 把权限修改为仅仅只有自己可读可写


    实验六、文件打包与解压缩

    一、zip压缩打包程序

    1.使用zip打包文件夹

    zip -r -q -o shiyanlou.zip /home/shiyanlou

    • -r表示递归打包包含子目录的全部内容
    • -q表示为安静模式,即不向屏幕输出信息
    • -o表示输出文件,需在其后紧跟打包输出文件名

    $du -h shiyanlou.zip 查看打包后文件的大小

    $file shiyanlou.zip

    2.设置压缩级别为9和1(9最大,1最小),重新打包

    $zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip

    $zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/*.zip

    • 1表示最快压缩但体积大,9表示体积最小但耗时最久
    • -x 是为了排除我们上一次创建的zip文件
    • 注:这里只能使用绝对路径,否则不起作用

    $du -h -d 0 *.zip ~ | sort

    • h:--human-readable
    • d:--max-depth

    3.创建加密zip包

    $zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou使用-e参数可以创建加密压缩包

    $zip -r -l -o shiyanlou.zip /home/shiyanlou加上-l参数将LF(Lunix中的换行)转换为CR+LF(Windows中的换行)

    二、使用unzip命令解压缩zip文件

    $unzip shiyanlou.zip将shiyanlou.zip解压到当前目录

    $unzip -q shiyanlou.zip -d zipest使用安静模式,将文件解压到指定目录

    $unzip -l shiyanlou.zip不想解压只想看压缩包的内容用-l参数

    $unzip -O(大写)GBK 中文压缩文件.zip使用-O参数指定编码类型

    三、rar打包压缩命令

    $sudo apt-get update

    $sudo apt-get install rar unrar安装rar和unrar工具

    $rm *.rar

    $rar a shiyanlou.rar . 从指定文件或目录创建压缩包或添加文件到压缩包

    • 使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建
    • rar的命令参数没有-,如果加上会报错

    $rar d shiyanlou.rar .zshrc从指定压缩包文件中删除某个文件

    $rar 1 shiyanlou.rar查看不解压文件

    $unrar x shiyanlou.rar全路径解压

    $mkdir tmp

    $unrar e shiyanlou.rar tmp/去掉路径解压

    四、tar打包工具

    $tar -cf shiyanlou.tar ~

    • -c表示创建一个tar包文件
    • -f用于指定创建的文件名,紧跟文件名
    • -v可视
    • -p 保留绝对路径符

    $mkdir tardir

    $tar -xf shiyanlou.tar -c tardir解包一个文件(-x)到指定路径的已存在目录(-c)

    $tar -tf shiyanlou.tar只查看不解包文件-t参数

    $tar -cphf etc.tar /etc保留文件属性(-p)和跟随链接,备份链接指向的源文件而不是链接本身(-h)

    $tar -czf shiyanlou.tar.gz ~

    压缩文件格式和对应的参数:

    • *.tar.gz对应-z

    • *.tar.xz对应-J

    • *.tar.bz2对应-j


    实验七、文件系统操作与磁盘管理

    一、基本操作

    1.使用df命令查看磁盘的容量

    $df

    $df -h更易读

    2.使用du命令查看目录的容量

    $du

    $du -h 更易读

    $du -h -d 0 ~ 只查看1级目录的信息

    $du -h -d 1 ~ 查看2级

    • -d参数指定查看目录的深度
    • -a参数显示目录中所有文件的大小
    • -s仅显示总计,只列出最后加总的值

    二、创建虚拟磁盘

    没看懂


    实验八、Linux下的帮助命令

    一、内建命令与外部命令

    • 内建命令:“天生自带的天赋技能”,例如:history、cd、exit
    • 外部命令:“后天得来的附加技能”,例如:ls、vi

    输入$type xxx

    若输出:

    xxx is a shell builtin 说明是内建命令

    xxx is usr/sbin/xxx 说明是外部命令

    xxx is an alias for xx - xxx 说明是为命令别名所设定的名称

    二、帮助命令的使用

    1.help命令

    $bash

    $ help exit help命令只能用于显示内建命令的帮助信息

    若是外部命令,则 $ls --help

    2.man命令

    $man ls

    man命令没有内建与外部命令的区分

    man手册:按pgup和pgdn上下翻看,按q退出当前页面

    LS(1) LS表示手册名称,(1)表示该手册位于第一章节

    3.info命令

    一般的bash会自带

    info ls


    总结

    在实验楼中的学习激发了我学习的兴趣,尤其是每节实验结尾处的“轻松一下”,切实地让我感到惊奇和成就感。但仍存在许多尚未解决的问题,例如:

    • 实验二作业部分toilet、figlet怎么用?
    • 实验三修改文件权限的方法二 加减赋值操作中,没有提及的u/g/o按照什么处理?
      例如:“u-x”为什么是“--w--wx-wx”?
    • Vim查找替换实验中,“u{n}撤销n次操作”怎样使用这个命令?
    • Vim查找替换实验中,ctrl+r的作用是什么?按了“ctrl+r”之后会显示“Already at newest change”,但没看出其他变化。
    • 实验七创建虚拟磁盘未看懂

    希望我能在今后的学习中解决这些问题。

  • 相关阅读:
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1056:点和正方形的关系
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1058:求一元二次方程
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1058:求一元二次方程
    《工程数学——线性代数》—— 第1章——行列式 —— § 2 全排列和对换
    《工程数学——线性代数》—— 第1章——行列式 —— § 2 全排列和对换
    《工程数学——线性代数》—— 第1章——行列式 —— § 2 全排列和对换
    《工程数学——线性代数》—— 第1章——行列式 —— § 1 二阶与三阶行列式
    【Javascript】【jQuery】onload和onready的区别
    【Javascript】【jQuery】onload和onready的区别
    使用T4模板映射数据库表
  • 原文地址:https://www.cnblogs.com/5306xyh/p/8469583.html
Copyright © 2011-2022 走看看