20165202 预备作业3 Linux安装及学习

一、虚拟机安装

娄老师的《基于VirtualBox安装Ubuntu图文教程》对于安装过程的介绍很易懂,但在安装过程中还是遇到了一些问题
Q1:安装教程中下载地址的VM提示安装包损坏

解决办法:我从孙同学的总结中找到了另一下载地址,成功安装。
Q2:Ubuntu官网所提供下载链接下载速度稳定性差且速度慢

解决方法:我从百度Ubuntu贴吧找到帖子说国内一些高校网站开放镜像下载速度较快,我选择了清华开源镜像站通过实践确实好用,网络下载可全速进行。


以下为按照教程进行的虚拟机安装过程:



二、Linux学习

(一)学习别出心裁的Linux命令学习法

1.类似于Windows,Linux也是一种操作系统,它主要包括以下架构:应用、壳shell、库函数、系统调用、内核。
2.老师专门提到了CTRL+SHIFT+T、CTRL+ALT+T、TabALT+数字N、上下键、CTRL+C以及CTRL+D等基本快捷键,掌握好它们的使用可以有效提高效率。
3.Linux、man、cheat 等命令是操作的基础

(二)学习Linux 基础入门(新版)

  • 实验1:Linux与Windows在安全性、使用习惯、可定制性等方面差别较大,同时二者各有长短。文中特别提到了学习心态这一问题,我认为这点很关键,正如老师的前两次作业所进行的铺垫,我们开展学习前首先要有正确的心态。结合老师在博客中提到的实验楼所给Linux学习路径,我相信它可以帮助我们理清思路,对学习内容有个系统了解以至更高效的去学习。
    实验2:

  • Linux终端:通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的。在图形界面中对实际体验带来差异的不是上述的不同发行版的各种终端模拟器,而是这个 Shell(壳)。有壳就有核,这里的核就是指 UNIX/Linux 内核,Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe 。

  • Tab键:使用Tab键来进行命令补全,当忘记某个命令的全称时可以只输入它的开头的一部分然后按下Tab键就可以得到提示或者帮助完成。补全命令,补全目录,补全命令参数都是可以的。

  • Ctrl+c:使用Ctrl+c键来强行终止当前程序(并不会使终端退出)。

  • 通配符:主要有星号(*):匹配 0 或多个字符和问号(?):匹配任意一个字符。通配符用来对字符串进行模糊匹配(比如文件名,参数名)。当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后由命令进行处理。

  • 一次性创建多个文件可以直接输入:
    $ touch 文件名{1..10}

  • 在命令行中获取帮助:
    $ man 命令的名字
    一般包括以下部分内容:NAME(名称)、SYNOPSIS(概要)、DESCRIPTION(说明)、EXAMPLES(示例)、SEE ALSO(参见)
    作业:

以toilet为例

$ sudo apt-get install toilet```

**实验3**:

- 查看用户
输入``` who am i ``` 可看到查看当前伪终端的用户的用户名
其他常用参数
whoami 查看当前登录用户的用户名
who -a 打印能打印的全部
who -d 打印死掉的进程
who -m 同am i,mom likes
who -q 打印当前登录用户数及用户名
who -u 打印当前登录用户登录信息
who -r 打印运行等级
- 创建用户
创建用户需要 root 权限,要用到sudo命令。使用该命令有两个大前提,一是要知道当前登录用户的密码,二是当前用户必须在sudo用户组。注:Linux 下密码输入不显示任何内容。
- 添加账户
```$ sudo adduser 用户名```
- 切换登录用户
退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d。
```$ su -l 用户名```
- 在 Linux 里面如何知道自己属于哪些用户组
```$ groups 用户名```

- 将其它用户加入 sudo 用户组
用在sudo用户组的用户执行 sudo 命令将用户添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限
``` $ su 在sudo用户组的用户名
$ groups 需要添加到sudo用户组的用户名
$ sudo usermod -G sudo 需要添加到sudo用户组的用户名
$ groups 需要添加到sudo用户组的用户名```
**实验4**
目录结构

- FHS 标准
FHS(文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS 定义了两层规范:
第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。
- 路径
使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录, - 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
```cd (所去往目录)```
- 绝对路径
关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如:/usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。

- 相对路径
相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如:
```usr/local/bin ```(假设当前目录为根目录)。

Linux 文件的基本操作

- 新建空白文件:
创建名为 test 的空白文件,因为在其他目录没有权限,所以需要先 cd ~ 切换回用户的 /home/shiyanlou 目录。
```$ cd ~
$ touch test```

- 新建目录:
使用 mkdir(make directories)命令可以创建一个名为"mydir"的空目录:
```$ mkdir mydir```
使用 -p 参数,同时创建父目录(如果不存在该父目录),创建一个多级目录(这在有时候安装软件,配置安装路径时非常有用):
```$ mkdir -p father/son/grandson```

- 复制文件:
使用cp(copy)命令复制一个文件或目录到指定目录。将之前创建的"test"文件复制到"/home/shiyanlou/father/son/grandson"目录中:
```$ cp test father/son/grandson```

- 删除文件:使用rm(remove files or directories)命令,删除一个文件或目录:(可以使用-f参数强制删除)
```$ rm test
$ rm -f test```
删除目录:跟复制目录类似,要删除一个目录,也需要加上-r或-R参数:
```$ rm -r family```

- 移动文件:
使用mv(move or rename files)命令,移动文件(剪切)。将文件"file1"移动到"Documents"目录mv 源目录文件 目的目录:
```$ mkdir Documents
$ mv file1 Documents```

- 重命名文件:
将文件"file1"重命名为"myfile" mv 旧的文件名 新的文件名:
```$ mv file1 myfile```

- 查看文件
查看之前从 /etc 目录下拷贝来的 passwd 文件:
```$ cat passwd```
可以加上 -n 参数显示行号:
```$ cat -n passwd```
此外,还有more 和 less 命令分页查看文件以及head 和 tail 命令查看文件

- 查看文件类型
我们通常使用 file 命令查看文件的类型:
```$ file /bin/ls```

作业:
创建homework目录:
```$ mkdir homework```
在建立文件{1..10}.txt:
```$ cd homework
```$ touch {1..10}.txt```
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171328902-1666095064.jpg)
在目录下删除文件 {1..5}.txt:
```$ rm {1..5}.txt```
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171337584-1634560.jpg)

**实验5**

- 环境变量
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171401325-2020743425.jpg)

- 文件查找
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171429475-1849183455.jpg)
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171437421-1069051535.jpg)
作业:
```locate /etc/*.list```
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171453671-1856760756.jpg)
**实验6**
打包与解压缩常用参数
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171531692-883292083.jpg)
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171539453-1358741760.jpg)
作业:创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。
创建一个名为test的文件:
```$ sudo touch test```

zip压缩文件:
```$ zip -r -2 -o test.zip test```

解压该文件到目录:
```$ unzip -q test.zip -d /home/shiyanlou```
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171612864-687977521.jpg)
tar压缩文件:
```$ tar -cf test.tar test```
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171628606-334752969.jpg)


解压该文件到目录:
```$ tar -xf test.tar -C /home/shiyanlou```
**实验7**
简单文件系统操作

- 查看磁盘和目录的容量:使用 df 命令查看磁盘的容量
```$ df
$ df -h```

- 使用 du 命令查看目录的容量
```$ du 
$ du -h
$ du -h -d 0 ~ //只查看1级目录的信息
$ du -h -d 1 ~ //查看2级```
简单的磁盘管理

- 创建虚拟磁盘:用dd命令从标准输入读入用户输入到标准输出或者一个文件
```$ dd of=test bs=10 count=1 //输出到文件
$ dd if=/dev/stdin of=/dev/stdout bs=10 count=1 ```

- 将输出的英文字符转换为大写再写入文件:
```$ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase```

- 使用 dd 命令创建虚拟镜像文件:从/dev/zero设备创建一个容量为 256M 的空文件:
```$ dd if=/dev/zero of=virtual.img bs=1M count=256
$ du -h virtual.img```

- 使用 mkfs 命令格式化磁盘:使用下面的命令来将我们的虚拟磁盘镜像格式化为ext4文件系统:
```$ sudo mkfs.ext4 virtual.img```

- 一些常用操作:
```mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]```

- 使用 fdisk 为磁盘分区
```$ sudo fdisk -l```

作业
找出当前目录下面占用最大的前十个文件
```$ du -a | sort -n -r | head -n 10```
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171655658-435575834.jpg)


**实验8**
内部命令与外部命令
![](https://images2018.cnblogs.com/blog/1297055/201802/1297055-20180223171706217-826220080.jpg)


帮助命令的使用
help 命令:zsh 中内置并没有 help 命令,我们可以进入 bash 中,在 bash 中内置有该命令
```bash
help ls //用于内建命令
ls --help //用于外建命令```
man 命令:没有内建与外部命令的区分
```man ls ```
info 命令:info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息
```info ls```
原文地址:https://www.cnblogs.com/jhs888/p/8461559.html