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