zoukankan      html  css  js  c++  java
  • 20165205 预习作业三 Linux安装及学习

    Linux安装及学习

    安装Ubuntu

    1)安装版本

    在安装VirtualBox时选择了VirtualBox 5.2.6 platform package

    安装Ubuntu时选择了Ubuntu 16.04 LTS

    安装结果及配置如图

    • 遇到问题及解决方法
      我在安装过程中比较顺利,但是我在安装VirtualBox虚拟机增强功能时,遇到了如下图的问题

    当时是在安装增强功能之前,然后我重新安装了一次Ubuntu以后就可以正常安装增强功能了。

    2)Linux基础入门

    实验1 Linux简介

    这一节首先就介绍了linux是一个操作系统(也就是说它包括系统调用和内核),首先直观看到的它与windows系统不同的一点是它图形界面的东西很少,这也是linux系统的特点之一,兼具图形界面操作和完全的命令行操作,这也就要求我们要接受不用或少用图形界面,改用命令行下操作。

    除了这个直观上就能感受到的,这一节还讲述了在免费与收费,软件与支持,安全性等角度对比了Linux与Windows的不同,方便了我们的理解。
    在学习中我也能感受到这种命令行操作的便利:

    比如我想新建并打开一个文件:

    $ gedit hello.sh
    

    这就比Windows里更简便。

    实验2 基本概念和操作

    • 终端

    终端(终端模拟器)是为了更好地完成用户输入和显示输出,也是服务于Shell的一个工具。

    • Shell

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行

    • 快捷键
    快捷键 功能
    Tab 补全
    Ctrl+c 强行终止当前程序
    Ctrl+d 键盘输入结束或退出终端
    Ctrl+s 暂定当前程序,暂停后按任意键恢复运行
    Ctrl+z 将当前程序放在后台运行,恢复到前台为命令fg
    Ctrl+a 将光标移至输入行头,相当与Home键
    Ctrl+e 将光标移至输入末行,相当于End键
    Ctrl+k 删除从光标所在位置到末行
    Alt+Backspace 向前删除一个单词
    Shift+PgUp 将终端显示向上滚动
    Shift+PgDn 将终端显示向下滚动
    通配符 功能
    匹配0或多个字符
    匹配任意一个字符
    [list] 匹配list中的任意单一字符
    [!list] 匹配除list以外的字符
    [c1-c2] 匹配c1-c2中的任意单一字符
    {string1,string2,...} 匹配string1或string2(或更多)其一字符串
    {c1..c2} 匹配c1-c2中全部字符
    • 常用命令

      • man[数字]命令
      • 命令-help
      • ls
      • find 关键词

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

    一、Linux用户管理

    1.查看用户
    who[options][files]

    示例:who am i

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

    2.创建用户

    sudo adduser [name]

    示例:sudo adduser lilei

    3.用户组

    方法一:使用group命令

    例子:group shiyanlou

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

    例子:cat /etc/group|sort

    4.把其他用户加入sudo用户组

    例子:sudo usermod -G sudo lilei

    5.删除用户

    例子:sudo deluser lilei--remove-home

    二、Linux文件权限

    1.查看文件权限

    图解1:

    图解2:

    注意:
    1.文件类型:Linux里面一切皆文件;
    2.文件权限:一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息;
    

    2.变更文件所有者

    若有一文件iphone6,文件所有者是lilei

    现在以shiyanlou身份输入命令

    $ cd /home/lilei
    $ ls iphone6
    $ sudo chown shiyanlou iphone6
    

    可以将文件所有者修改。

    3.修改文件权限

    每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "rwx",也就是一个 '7';

    例子:chmod 700 iphone6

    例子:chmod go-rw iphone6

    在做测试题时出现了0666,我当时不懂首位的0代表什么,之后去查了一下:

    指定文件的默认权限掩码-----umask

    权限掩码有4个八进制的数字组成,讲现有的权限减掉权限掩码后,即可产生此文件建立时的默认权限。
    一般来说,新建文件的默认值是0666,新建目录的默认值是0777,如果将全线掩码设置为0002,则每个新建文件的默认权限为0666-0002=0664,而目录的默认权限则为775。可以直接输入umask命令来检查目前的默认权限掩码,或输入"umask 权限掩码"来指定默认权限掩码。
    用umask的方式指定默认权限掩码,可以避免添加访问权限过大的文件或目录。

    4.比较adduser和useradd的区别

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

    5.命令补充

    ls [选项][目录名]|列出相关目录下所有目录和文件

    -a 列出包括.a开头的隐藏文件的所有文件
    -A 通-a,但不列出“.”和“..”
    -l 列出文件的详细信息
    -c 根据ctime排序显示
    -t 根据文件修改时间排序
    白色:表示普通文件
    蓝色:表示目录
    绿色:表示可执行文件
    红色:表示压缩文件
    浅蓝色:链接文件
    红色闪烁:表示链接文件有问题
    黄色:表示设备文件
    灰色:表示其他文件

    实验4 Linux目录结构及文件基本操作

    一、LInux目录结构

    Linux 是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。

    1.FHS标准(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准)

    FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。

    FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。

    第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。

    2.目录路径

    cd可切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录, - 表示上一次所在目录,~ 通常表示当前用户的"home"目录。

    使用 pwd 命令可以获取当前所在路径(绝对路径)。

    二、Linux文件的基本操作

    1.新建

    1)新建文件

    touch[选项]文件名|创建空文件或更新文件时间

    -a 只修改存取时间
    -m 只修改变动时间
    -r eg:touch -r a b ,使b的时间和a相同
    -t 指定特定时间 eg:touch -t 201802241019.20 -t time{YYYYMMDDhhmm.ss}

    eg:touch text

    2)新建目录

    mkdir[选项]目录|创建新目录

    -p 递归创建目录,若父目录不存在则依次创建
    -m 自定义创建目录的权限
    -v 显示创建目录的详细信息

    eg: mkdir -p father/son/grandson

    2.复制

    cp[选项] 源文件或目录 目录或多个源文件

    -r -R 递归复制该目录及其子目录内容
    -p 连同档案属性一起复制过去
    -f 不询问而强制复制
    -s 生成快捷方式
    -a 将档案的所有特性都一起复制

    注:要成功复制目录需要加上-r或者-R参数

    3.删除

    rm [选项]文件|删除文件(夹)

    -r 删除文件夹
    -f 删除不提示
    -i 删除提示
    -v 详细显示进行步骤

    4.移动文件或重命名

    mv[选项]源文件或目录 目录或多个源文件|移动或重命名文件

    -b 覆盖前做备份

    -f 如存在不询问而直接覆盖

    -i 如存在则询问是否覆盖

    -u 较新才覆盖

    -t 将多个源文件移动到统一目录下,目录参数在前,文件参数在后

    rename |批量重命名

    5.查看文件

    cat[选项][文件]

    -n 编号文件内容再输出
    -E 在结束时提示$

    tac|反向显示

    nl [选项] 文件|将输出内容自动加上行号

    -b:指定添加行号的方式

    -b a:不论是否为空格,同样列出行号(类似cat-n)

    -b t:只列出非空行的编号并列出

    -n:设置行号的样式,主要有三种

    -n ln:在行号字段最左端显示
    -n rn:在行号字段最右端显示,且不加0
    -n rz:在行号字段最右端显示,且加0

    more|按页查看文件内容,从前向后读取文件,因此在启动时就加载整个文件

    +n 从第n行开始显示

    -n 每次查看n行数据

    +/String 搜索String字符串位置,从其前两行开始查看

    -c 清屏再显示

    -p 换页再显示

    less|可前后移动地逐屏查看文章内容,在查看前不会加载整个文件

    -m 显示类似于more命令的百分百

    -N 显示行号

    / 字符串:行下搜索字符串的功能

    ? 字符串:向上搜索字符串的功能

    n 重复前一个搜索

    N 反向重复前一个搜索

    b 向后翻一页

    d 向后翻半页

    head [参数] 文件|显示文件开头,默认开头10行

    -v 显示文件名

    -c number 显示前number个字符,若number为负数,则显示除最后number个字符的所有内容

    -number/n (+)number 显示前number行内容

    -n number 若number为负数,则显示除最后number行数据所有内容

    tail [必要参数][选择参数] 文件|显示文件结尾内容

    -v 显示详细的处理信息
    -q 不显示处理信息
    -num/-n (-)num 显示最后num行内容
    -n + num 从第num行开始显示后面的数据
    -c 显示最后c个字符
    -f 循环读取

    6.查看文件类型

    file|判断文件类型

    实验5 环境变量与文件查找

    一、变量
    1.变量定义

    定义变量

    declare $变量名

    或者直接赋值也自动定义变量,注意变量之前不带"$"

    变量名=值

    打印变量的值,"$"代表引用变量的值

    echo $变量名

    通常我们会涉及到的环境变量有三种:

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

    2.相关命令

    set|显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量

    env| 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行

    expor|显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量

    3.输出环境变量

    将普通变量输出为环境变量,能被子进程继承

    export 变量名

    比较文件的命令

    vimdiff 1.txt 2.txt 3.txt ....

    4.变量修改

    Markdown
    5.变量删除

    unset 变量名

    二、搜索文件

    whereis [-bmsu][目录名 -f] 文件名|定位可执行文件、源代码文件、帮助文件在文件系统中的位置

    -b 定位可执行文件
    -m 定位帮助文件
    -s 定位源文件代码
    -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其他文件
    -B 指定搜索可执行文件的路径
    -M 指定搜索帮助文件的路径
    -S 指定搜索源代码文件的路径

    locate
    eg:$ locate /etc/sh

    $ locate /home/shiyanlou/Code/*.txt

    经测试好像locate 后面要跟绝对路径,另外""必须用来转义

    -c 是仅统计数目 -i 是不区分大小写

    which

    它只从PATH环境变量指定的路径中去搜索命令
    $ which man
    find |功能最强大
    http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html
    链接已经贴出

    实验6 文件打包与解压缩

    1.zip压缩文件
    zip [参数][文件]

    -r 递归压缩, 用于压缩文件夹.
    -o 指定产生的压缩文件名
    -[0-9] 制定压缩级别
    -q 静默模式,即不在终端输出提示
    -e 加密压缩包
    -l 将LF转换为CR+LF

    我的例子:

    $ touch text
    $ echo '##this is a test!' > text.md
    $ zip -o text.zip text.md
    $ mkdir text
    $ cp text.md text/
    $ zip -r -o text1.zip text.md text/
    $ zip -r -o -e text2.zip text.md text1.zip text/
    $ Enter password:
    $ Verify password:
    $ ls
    

    2.unzip解压文件

    unzip [参数][文件]

    -q 静默模式.没有屏幕提示
    -l 只查看压缩包内容,不解压缩
    -O 大写字母O, 指定编码类型

    我的例子:

    rm -r text/ text.md
    unzip text1.zip
    unzip -l text2.zip
    rm -r text/ text.md text1.zip
    unzip text2.zip
    password:
    

    3.rar打包压缩文件

    rar命令的参数不用加短横线-

    a 添加文件到一个rar文件中

    l 只查看rar文件内容不解压文件

    d 从rar文件中删除文件

    我的例子:

    # 添加一个目录的所有文件(不包括目录)
    rar a text.rar .
    # 往rar文件中添加另一个目录
    rar a text.rar text
    # 好奇怪..终端给出的提示竟然是先添加text文件夹下面的文件再添加的文件夹本身
    # 查看rar文件内容
    rar l text.rar
    # 从rar文件中删除内容
    rar d text.rar text.md
    # 解压rar文件
    mkdir text-rar
    unrar x text.rar text-rar
    # 查看解压后的目录结构
    sudo apt-get install tree
    tree text-rar
    

    4.tar打包工具

    tar是一个不压缩只打包的工具,但是打包是为了更好的压缩

    -c 创建一个tar包文件

    -f 指定创建的tar包文件的名字

    -x 解包到指定路径的已存在目录

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

    df |查看文件系统和磁盘容量

    -a 显示全部文件系统

    -h 文件大小友好显示

    -l 只显示本地文件系统

    -i 显示inode信息

    -T 显示文件系统类型

    du |显示每个文件和目录的磁盘使用空间

    -h 方便阅读的方式
    -s 只显示总和的大小

    mount|挂载

    -ro 采用只读方式挂接设备

    -rw 采用读写方式挂接设备

    umount 取消挂载

    实验8 Linux 下的帮助命令

    一、内建命令与外部命令
    我的理解:

    • 内建命令:
      内建命令就是由Shell本身所执行的命令。
      有些命令是由于其必要性才内建的,例如cd用来改变目录,read会将来自用户(和文件)的输入数据传给Shell外亮。
      另一种内建命令的存在则是为了效率,其中最典型的就是test命令,编写脚本时经常会用到它。另外还有I/O命令,例如echo于printf.
    • 外部命令:外部命令就是由Shell副本(新的进程)所执行的命令。外部命令这部分我没有理解,但是在别的博客看到了他的基本过程:
    • a. 建立一个新的进程。此进程即为Shell的一个副本。
    • b. 在新的进程里,在PATH变量内所列出的目录中,寻找特定的命令。
      /bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin为PATH变量典型的默认值。
      当命令名称包含有斜杠(/)符号时,将略过路径查找步骤。
    • c. 在新的进程里,以所找到的新程序取代执行中的Shell程序并执行。
    • d. 程序完成后,最初的Shell会接着从终端读取下一条命令,和执行脚本里的下一条命令。
    • 使用type命令可以查看是否是内建命令

    二、帮助命令的使用

    • help

    help 命令是用于显示 shell 内建命令的简要帮助信息。但是,使用ls --help可以得到外部命令的帮助

    • man命令

    man 没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。

    • info命令
      info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。得到的信息最多。

    写在最后

    以上八个实验基本我都是在实验楼的环境中去做的,第七个实验由于实验楼环境不够,学习中建议在自己的虚拟上做,但是我现在还没有完成,下周我会完成(备忘录以写好)。
    所有命令的

    参数都是结合了实验楼里的课程内容和在百度中查到的内容,我本来想把命令总结在最后,但是我觉得按照课程来思路比较清晰,这个总结可以放在另一篇随笔里,但是我在完善文中的命令时有看到别人总结的许多命令,我想可以参照他们写的,然后按照学习的顺序慢慢总结一下,边学边做,当成复习了。

  • 相关阅读:
    夯实Java基础系列5:Java文件和Java包结构
    夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
    夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
    夯实Java基础系列1:Java面向对象三大特性(基础篇)
    走进JavaWeb技术世界16:极简配置的SpringBoot
    深入JavaWeb技术世界15:深入浅出Mybatis基本原理
    走进JavaWeb技术世界14:Mybatis入门
    走进JavaWeb技术世界13:Hibernate入门经典与注解式开发
    [转]ssm整合1(环境搭建)
    [转]基于S2SH框架的项目—antlr-2.7.2.jar包冲突问题
  • 原文地址:https://www.cnblogs.com/mushroomissmart/p/8468254.html
Copyright © 2011-2022 走看看