20165205 预习作业三 Linux安装及学习

时间:2021-05-06 22:12:18

Linux安装及学习

安装Ubuntu

1)安装版本

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

安装Ubuntu时选择了Ubuntu 16.04 LTS

安装结果及配置如图20165205 预习作业三 Linux安装及学习

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

20165205 预习作业三 Linux安装及学习

当时是在安装增强功能之前,然后我重新安装了一次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.查看文件权限
20165205 预习作业三 Linux安装及学习

图解1:
20165205 预习作业三 Linux安装及学习
图解2:
20165205 预习作业三 Linux安装及学习

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

2.变更文件所有者

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

现在以shiyanlou身份输入命令

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

可以将文件所有者修改。

3.修改文件权限20165205 预习作业三 Linux安装及学习

每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "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 |批量重命名
20165205 预习作业三 Linux安装及学习
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.变量修改

20165205 预习作业三 Linux安装及学习
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 的更多特性。

20165205 预习作业三 Linux安装及学习

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

写在最后

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

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