首页 > 技术文章 > 20165312 预备作业3 Linux安装及学习

cxgg 2018-02-24 17:06 原文

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命令更加详细

推荐阅读