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

    Linux安装及学习

    一、安装Vmware虚拟机以及Ubuntu中遇到的问题

    因为之前安装过Vmware虚拟机,考虑到两者没有太大的差别,就所以就没有再安装Vbox虚拟机。

    在安装Vmware虚拟机增强功能时,我根据老师的针对Vbox的教程,发现两者有些差异。对于Vmware实际上是安装Vmware tools,根据如何安装Vmware增强工具包完成操作。

    在分配数据共享空间时,根据老师的教程我失败了。这个是出错的截图:

    我觉得可能是Vbox和Vmware有些差异?我在网上找教程,也没有找到可操作性的。这个问题目前还未解决。

    在使用虚拟机的时候,我的虚拟机崩了,出现的状况如以下截图:

    我按下Ctrl+D后出现页面:

    继续我输入sudo reboot,出现:

    接下来就是这些操作的循环,我也不知道是因为什么,就把虚拟机删掉重新安装了。

    在重新安装虚拟机的时候,出现以下错误:

    在询问了同学之后,得知是镜像错误的问题,所以我在网上重新下载了Ubuntu镜像,完成了安装。重新装完虚拟机,我意识到可能原来虚拟机崩掉是因为镜像出错。

    重新安装的虚拟机提示版本过低,或许虚拟机崩掉也因为Vmware的版本过低。因为之前安装的是Vmware Workstation 11.0,我在网上找到了Vmware Workstaton 14.0,并且找到了Vmware Workstation 14.0密钥。升级过的虚拟机运行速度明显变快!

    后来,使用老师的教程进行了系统更新并安装了Vim。

    总结:

    (1)更新系统:

    sudo apt-get update/sudo apt-get upgrade
    

    (2)安装XXX软件

    sudo apt-get install XXX
    

    (3)查找软件库中是否有需要安装的软件xxx

    apt-cache search XXX
    

    二、学习Linux

    1.重要快捷键

    快捷键 作用
    Tab 命令补全,也可补全目录、命令参数
    Ctrl+c 强行终止当前程序,但不会退出终端
    Ctrl+d 键盘输入结束或退出终端
    Ctrl+s 暂停当前程序,暂停后按任意键恢复运行
    Ctrl+Shift+T 新建标签页
    Ctrl+Alt+T 打开终端
    Shift+Pgup 终端向上滚动
    Shift+PgDn 终端向下滚动
    Pgup 恢复之前输入过的命令
    Alt+数字N 终端中切换到第N个标签页

    2.通配符

    通配符只能出现在命令的“参数值”中,不能出现在命令名称中。命令名称可用Tab补全。

    常用通配符 含义
    * 匹配0或多个字符
    匹配任意一个字符
    [list] 匹配list中任意单一字符
    [!list] 匹配除list中的任意单一字符以外的字符
    [c1-c2] 匹配c1-c2中的任意单一字符
    {string1,string2...} 匹配string1,string2...中其一字符串
    {c1-c2} 匹配c1-c2中全部字符

    3.总结一些命令

    (1)创建一个名为file的文件,touch是一个命令

    touch file
    

    Tip:因为在其它目录没有权限,所以需要cd ~ 切换回用户的/home/shiyanlou目录:

    (2)进入一个目录,cd是一个命令

    cd /etc/
    

    (3)查看当前所在目录

    pwd
    

    (4)ls 命令:显示当前目录的内容。ls 和ls .是等价的命令,ls -a. 显示当前目录的内容,包括隐藏的内容。

    (5)可以输出图形字符的命令:banner/toilet/figlet
    这三个命令的区别在于他们的字形不同,安装及使用方法都相同。

    系统中已经默认的安装过的一个命令:printerbanner

    $ printerbanner -w 50 C
    

    -w 表示打印宽度,这个为打印一个宽度为50的C,这个C是横着的。printerbanner打印出的图形都是横着的,而banner/toilet/figlet打印出的图形是竖着的。

    实验2作业截图:

    (6)who命令

    Linux是一个可以实现多个用户登录的操作系统,她们有各自的用户空间,同于存放各自的文件。

    查看用户:

    $ who am i / $ who mom likes
    

    who命令其他常用参数

    参数 用途
    -a 打印能打印的全部
    -d 打印死掉的进程
    -m 查看用户
    -q 打印当前登录用户数及用户名
    -u 打印当前登录用户登录信息
    -r 打印运行等级

    (7)sudo 命令

    root账户拥有整个系统至高无上的权利,而我们登录时是以普通账户的身份。创建用户需要root权限,使用sudo这个命令。

    新建一个名叫XXX的用户:

    $ sudo adduser XXX
    

    切换为XXX登录用户

    $ su -l xxx / su xxx
    

    注意:linux下密码输入是不显示内容的

    4.有关用户权限

    (1)查找用户所属的用户组

    在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合。一个用户是可以属于多个用户组的。

    • 使用groups命令查找用户XXX所属的用户组
    $ groups xxx
    

    结果为:

    用户名:用户组
    

    每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组,默认情况下在sudo用户组里的可以使用 sudo 命令获得 root 权限。

    为了给已存在的用户xxx赋予root权限:

    $ sudo cat /etc/sudoers.d/xxx
    
    • 查看 etc/group 文件
    $ cat /etc/group |sort
    

    cat 命令用于读取指定文件的内容并打印到终端输出。| sort 表示将读取的文本进行一个字典排序再输出。/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。结果格式为:

    group_name:password:GID:user_list
    

    若想查找特定的用户组xxx及其用户:

    $ cat /etc/group | grep -E "xxx"
    

    在我看来,两种方法的区别在于,groups命令是由用户找其所在的用户组,并不能把所有的用户组显示出来。而查找etc/group,可以查找特定的或所有的用户组及其用户。

    (2)将新创建的用户XXX加入到sudo用户组中,获得root权限

    默认新创建的用户不在sudo用户组中,usermod 命令可以为用户添加用户组,使用该命令你必需有root权限,你可以直接使用root用户为其它用户添加用户组,或者用其它已经在sudo用户组的用户使用sudo命令获取权限来执行该命令。可以采取后者的办法:

    sudo usermod -G sudo xxx
    

    (3)删除用户XXX

    sudo deluser xxx --remove-home
    

    5.有关文件权限

    (1)查看文件权限使用ls命令

    使用较长格式列出文件:

    $ ls -l
    


    读权限,表示你可以使用cat之类的命令来读取某个文件的内容。
    写权限,表示你可以编辑和修改某个文件。
    执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同Windows上的exe后缀的文件,不过Linux上不是通过文件后缀名来区分文件的类型。
    你需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。
    所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限。

    --引用自《用户及文件权限管理

    显示除了 .(当前目录)和..(上一级目录)之外的所有文件,包括隐藏文件:

    $ ls -A / $ ls -Al 
    

    注:Linux 下以 . 开头的文件为隐藏文件。

    (2)变更文件权限

    我遇到了些麻烦,新建用户lilei无法使用touch命令创建新的文件。如图所示:

    比较了一下,用该是~(而不是/)
    我输入cd ~进入home,变更文件成功

    若file由A用户创建,需要将file改为用户B下,首先进入用户B

    ~/ $ cd /home/A
    A/ $ ls file
    A/ $ sudo chown B file
    

    (3)修改文件权限
    g、o、u分别代表group、others、user,+/-分别代表增加和删去相应的权限,r、w、x分别代表读、写、执行
    若你有一个文件file不想被其他用户读、写、执行

    $ chmod go-rw file
    

    6.目录结构与文件操作

    (1)进入上一级目录

    $ cd ..
    

    (2)进入home目录

    $ cd ~
    

    (3)查看当前路径

    $ pwd
    

    (4)以绝对路径进入/usr/local/bin

    $ cd /usr/local/bin
    

    (5)以相对路径进入/usr/local/bin

    $ cd ../../usr/local/bin
    

    Tip:在进行目录切换的过程中可使用Tab键自动补全,可避免输入错误,连续按两次Tab可以显示全部候选结果。

    (6)使用mkdir命令新建目录A

    $ mkdir A
    

    进入目录A

    $ cd A
    

    使用 -p 参数同时创建一个多级目录

    $ mkdir -p father/son/grandson
    

    (7)cp命令复制

    将文件file复制到目录A中

    $ cp file A
    

    将目录A复制给目录B

    $ cp -r A B
    

    (8)rm命令删除文件A/目录B

    删除文件

    $ rm A
    

    强制删除文件

    $ rm -f A
    

    删除目录

    $ rm -r B
    

    (9)mv命令移动文件file至目录A(剪切)

    $ mv file A
    

    (10)mv命令重命名文件

    $ mv 旧文件名 新文件名
    

    (11)cat(正)tac(倒)命令查看文件

    查看文件file

    $ cat file
    

    显示行数查看文件

    $ cat -n file
    

    (12)nl命令查看文件并添加行号、打印


    (13)more命令分页查看文件file

    $ more file
    

    Enter键向下滚动一行,Space键向下滚动一屏,h帮助,q退出

    (14)head、tail命令查看文件file的前几行、后几行

    $ head file
    

    若具体到x行用 - n 参数

    $ tail -n x file
    

    实验楼第四章作业

    7.变量与环境变量

    • 变量

    变量是计算机中用于记录一个值的符号,变量只在其有效范围内有效,在该范围中只有一个同名变量。

    declare命令生成变量tmp(也可直接使用变量,不需要声明)

    $ declare tmp
    

    使用 = 号赋值运算符,给变量赋值

    $ tmp=shiyanlou
    

    读取变量tmp的值

    $ echo $tmp
    

    Tip:变量名只能是英文字母、数字和下划线,不能以数字开头

    • 环境变量
      • 当前Shell进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效
      • Shell 本身内建的变量
      • 从自定义变量导出的环境变量

    与上述三种环境变量相对应的三中命令:set、env、export

    命令 说明
    set 显示当前Shell所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export 显示从Shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

    • 修改变量
    变量设置方式 说明
    ${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
    ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
    ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
    ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
    ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
    ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串
    • unset命令删除变量tmp
    $ unset tmp
    

    8.搜索文件

    • whereis
    $ whereis file
    

    whereis简单快速,whereis只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)

    • locate
    $ locate tmp
    

    locate快且全,只统计数目可以加上-c参数,-i参数可以忽略大小写进行查找.参数-b -m -s同样可以使用

    • which

    which小而精,通常使用which判断是否安装了某个软件

    • find

    基本命令格式

    $ find [path] [option] [action]
    

    与时间相关的命令参数

    参数 说明
    -atime 最后访问的时间
    -ctime 最后修改文件内容的时间
    -mtime 最后修改文件属性的时间

    下面以-mtime参数为例

    • -mtime n:n 为数字,表示为在n天之前的“一天之内”修改过的文件
    • -mtime +n: 列出在n天之前(不包含n天本身)被修改过的文件
    • -mtime -n:列出在n天之内(包含n天本身)被修改过的文件
    • -newer file:file为一个已存在的文件,列出比file还要新的文件名

    第五章作业:

    挑战:寻找文件截图

    9.文件打包与解压缩

    (1)zip 、unzip工具分别创建和解压zip压缩包

    zip压缩打包程序

    • 使用zip打包文件夹
    $ zip -r -q -o shiyanlou.zip /home/shiyanlou
    $ du -h shiyanlou.zip
    $ file shiyanlou.zip
    

    上面命令将目录/home/shiyanlou打包成一个文件,并查看了打包后文件的大小和类型。第一行命令中-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信,息-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用du命令查看打包后文件的大小。

    • 设置压缩级别为x(1<=x<=9)重新打包文件夹
    $ zip -r -x -q -o shiyanlou_x.zip /home/shiyanlou -x ~/*.zip
    

    添加了一个参数用于设置压缩级别-[1-9],1表示最快压缩但体积大,9表示体积最小但耗时最久。最后那个 -x 是为了排除我们上一次创建的zip文件,否则又会被打包进这一次的压缩文件中.

    • 创建加密zip包
    $ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou
    
    • Linux下创建的压缩包在windows下打开无换行问题
    $ zip -r -l -o shiyanlou.zip /home/shiyanlou
    

    unzip命令解压缩zip包

    • 将压缩包shiyanlou.zip 解压到当前目录
    $ unzip shiyanlou.zip
    
    • 使用安静模式,将压缩包shiyanlou.zip解压到制定目录tmp
    $ unzip -q shiyanlou.zip -d tmp
    

    Tip:若目录不存在,将会自动创建

    • 若不想解压只想查看压缩包shiyanlou.zip的内容
    $ unzip -l shiyanlou.zip
    
    • 解压中文压缩包
    $ unzip -O GBK 中文压缩包.zip
    

    (2)rar和unrar工具分别创建和解压rar压缩包。

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

    rar创建rar压缩包

    • 从指定文件或目录创建压缩包或添加文件到压缩包
    $ rm *.rar
    $ rar a shiyanlou.rar .
    
    • 从指定压缩包中删除某个文件夹
    $ rar d shiyanlou.rar .zshrc
    
    • 查看不解压文件夹
    $ rar l shiyanlou.rar
    

    unrar命令解压rar文件

    • 全路径解压
    $ unrar x shiyanlou.rar
    
    • 去掉路径解压
    $ mkdir tmp
    $ unrar e shiyanlou.rar tmp/
    

    (3)tar打包工具

    tar命令不进行压缩只是进行打包(创建归档文件)和解包的操作。

    • 创建一个tar包
    $ tar -cf shiyanlou.tar ~
    

    -c表示创建一个tar包文件,-f用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后,比如不能写成 tar -fc shiyanlou.tar.你还可以加上-v参数以可视的的方式输出打包的文件。上面会自动去掉表示绝对路径的 /,你也可以使用 -P 保留绝对路径符。

    • 解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数)
    $ mkdir tardir
    $ tar -xf shiyanlou.tar -C tardir
    
    • 只查看不解包文件 -t 参数
    $ tar -tf shiyanlou.tar
    
    • 保留文件属性和跟随链接(符号链接或软链接),有时候我们使用tar备份文件当你在其他主机还原时希望保留文件的属性(-p参数)和备份链接指向的源文件而不是链接本身(-h参数)
    $ tar -cphf etc.tar /etc
    
    • 使用 gzip 工具创建 *.tar.gz 文件
    $ tar -czf shiyanlou.tar.gz ~
    

    只需要在创建 tar 文件的基础上添加 -z 参数

    • 解压 *.tar.gz 文件
    $ tar -xzf shiyanlou.tar.gz
    
    压缩文件格式 参数
    *.tar.gz -z
    *.tar.xz -J
    *tar.bz2 -j

    实验六作业截图:


    10.查看磁盘和目录的容量

    • df命令查看磁盘的容量
    $ df
    

    以更易读的方式展示

    $ df -h
    
    • du命令查看目录的容量
    $ du 
    $ du -h
    

    -d参数指定查看目录的深度

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

    常用参数

    du -h #同--human-readable以K,M,G为单位,提高信息的可读性。
    du -a #同--all 显示目录中所有文件的大小。
    du -s #同--summarize仅显示总计,只列出最后加总的值。
    

    实验七作业

    11.内建命令和外部命令

    内建命令是本来就有,外部命令是后天附加

    $ type 命令
    
    • 内建命令:xxx is a shell builtin
    • 外部命令:xxx is /usr/sbin/xxx
    • 该指令为命令别名所设定的名称:xxx is an alias for xx --xxx

    12.帮助命令

    • help

    bash中有help命令,zsh中没有help命令。help命令只能用于显示内建命令的帮助信息。外部命令有一个参数--help,这样就可以得到相应的帮助

    $ bash
    $ help exit(内)
    $ ls --help(外)
    
    • man

    man命令比help详细,且没有内建和外部命令之分

    • info

    info比man命令更加详细

  • 相关阅读:
    XSS漏洞学习笔记
    【react】使用 create-react-app 构建基于TypeScript的React前端架构
    React-使用装饰器
    探究Hybrid-APP技术原理
    getBoundingClientRect使用指南
    React.js + LiveReload配置详解
    《高性能JavaScript》学习笔记(2)——日更中
    JavaScript设计模式学习之路——继承
    JavaScript数组去重的四种方法
    《高性能JavaScript》学习笔记——日更中
  • 原文地址:https://www.cnblogs.com/cxgg/p/8466930.html
Copyright © 2011-2022 走看看