VBox&vmware虚拟机安装Linux及Linux基础入门学习
通过VMware workstation安装Linux
在安装虚拟机之前,我特意上网搜索了一下目前常使用的虚拟机软件,了解了相关知识之后,我先选择通过VMware workstation安装Linux。
我选择VMware版本为: VMware workstation 12.5 pro
我选择安装的Linux版本为: 深度(deepin)的Ubuntu
首先安装 VMware workstation 12.5 pro ,十分简单就不再赘述。接下来便开始安装Linux:
1.首先新建虚拟机,先将Ubuntu的镜像放在自己指定的位置,方便后面安装,然后选择稍后安装镜像,先进行一些基本设置:
2.接下来是一些基本设置:
3.其次是创建虚拟磁盘:
4.开始安装操作系统,选择CD设备,把启动时的连接改成之前放置镜像的位置:
5.从bios启动,在左侧点击我们的虚拟机名称,把鼠标悬停在电源上,然后选择并点击“打开电源时进入固件”。在BIOS设置中找到BOOT设置,使用“+”将CD-ROM的优先级提到最上面,点击F10保存设置,弹出对话框之后,选择yes,直接回车确定即可:
6.开始安装操作系统,选择第一项Install Deepin,等待一会儿:
7.选择语言,设置用户
8.接下来开始分区,这里我上网查阅了一下资料,发现一个基本的linux系统中都有最少两个挂载点,分别是“/”(根目录)及 /swap(交换分区),于是我设置了上面两个挂载点后又加了一个home挂载点,具体分区知识可以点击此处:
9.设置好分区后,选择确定,等待片刻,大至就安装完成了:
10.此刻别忘记将之前的虚拟机中的CD设置改回“物理驱动器”,然后再重启虚拟机:
通过VMware workstation安装Linux
首先在官网下载VirtualBox 5.1.14
然后开始安装VirtualBox,安装过程很简单,按照默认即可:
然后配置虚拟机:
我设置的是一台内存为1G,硬盘容量为16G的虚拟机:
虚拟硬盘就按照默认设置就好,为了保持虚拟机的流畅,使用动态分配:
设置好虚拟机后,我开始安装镜像文件,这里使用的是老师提供的镜像。
在启动盘中设置好镜像的路径,然后安装:
等待一会儿就安装完成了,这里发现相比于之前的VMware,少了分区这一步,在之后我查看Linux系统配置后了解到这个是自动分区了:
下面安装虚拟增强功能:
首先按照老师给的教程,VBox菜单栏的“设备”项,选择最下面的“安装增强功能”,等待出现图标。
当我选择运行的时候,系统自动弹出命令行窗口,好像就给安装好了。:
然后我又按照教程所说“体验”了一把,开始是按照教程上面的图输入命令的,但是一直提示没有那个文件目录,发现确实我和教程中的版本好像不一样,但是我又忘记我那个文件放在哪里了:
后来“机智”的我发现既然是要运行文件当然是之前弹出来的那个东东,于是我把鼠标往新弹出的图标上面一放,文件名就出来了,然后通过命令行的方式也安装成功了:
关于实验楼Linux入门学习
一、Linux是什么?
通过实验楼课程上的讲解,我了解到Linux 就是一个操作系统,如 Windows 和 Mac OS 。Linux 本身只是操作系统的内核,内核是使其他程序能够运行的基础,它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。在实验楼中的实验环境其实只是运行在 Linux 上的一个程序,而将用户的命令与 Linux 内核相连的是命令行解释器(shell),它用于用户交互和编写 shell 脚本。
二、Linux 与 Windows 到底有重要区别?
1.软件
- Windows 平台:数量和质量的优势,不过大部分为收费软件;由微软官方提供重要支持和服务;
- Linux 平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体验欠缺;有全球所有的 Linux 开发者和自由软件社区提供支持。
2.安全性
- Windows 平台:三天两头打补丁安装系统安全更新,还是会中病毒木马;
- Linux 平台:要说 Linux 没有安全问题,那当然是不可能的,这一点仁者见仁智者见智,相对来说肯定比 Windows 平台要更加安全,使用 Linux 你也不用装某杀毒,某毒霸。
3.是否有图形界面
- Windows:普通用户基本都是纯图形界面下操作使用,依靠鼠标和键盘完成一切操作,用户上手容易入门简单;
- Linux:兼具图形界面操作(需要使用带有桌面环境的发行版)和完全的命令行操作,可以只用键盘完成一切操作,新手入门较困难,需要一些学习和指导(这正是我们要做的事情),一旦熟练之后效率极高。
4.可定制性
- Windows:这些年之前算是全封闭的,系统可定制性很差;
- Linux:你想怎么做就怎么做,Windows 能做到得它都能,Windows 做不到的,它也能。
5.应用范畴
其实在 Windows 上使用百度,谷歌,上淘宝,聊 QQ 时,支撑这些软件和服务的,是后台成千上万的 Linux 服务器主机,它们时时刻刻都在进行着忙碌的数据处理和运算,可以说世界上大部分软件和服务都是运行在 Linux 之上的。
6.其他
- 稳定的系统
- 安全性和漏洞的快速修补
- 多用户
- 用户和用户组的规划
- 相对较少的系统资源占用
- 可定制裁剪,移植到嵌入式平台(如安卓设备)
- 可选择的多种图形用户界面(如 GNOME,KDE)
三、Linux的一个重要组成部分:Shell
通常在我们使用 Linux 时,我们并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,这里记录一下Shell的概念:
图形界面中对实际体验带来差异的不是上述的不同发行版的各种终端模拟器,而大都是这个 Shell(壳),有壳就有核,这里的核就是指的 UNIX/Linux 内核,Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe。普通意义上的 Shell 就是可以接受用户输入命令的程序。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。同样的 Unix/Linux 下的图形用户界面 GNOME 和 KDE,有时也被叫做“虚拟 shell”或“图形 shell”。
Unix/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。当然在这点也有别于 Windows 下的命令行,虽然也提供了很简单的控制语句。在Windows 操作系统下,可能有些用户从来都不会直接的使用 Shell,然而在 UNIX 系列操作系统下,Shell 仍然是控制系统启动、X11 启动和很多其他实用工具的脚本解释程序。
在 UNIX/Linux 中比较流行的常见的 Shell 有 bash,zsh,ksh,csh 等等,Ubuntu 终端默认使用的是 bash,默认的桌面环境是 GNOME 或者 Unity(基于 GNOME)。
四、命令行的相关操作
如图,在实验楼的环境中的桌面上,点击Xfce终端
图标,打开终端,打开终端后会自动运行 Shell 程序,然后就可以输入命令让系统来执行了:
1).重要快捷键:
下面开始学习命令行,首先是实验楼给我介绍的快捷键:
1. [Tab]
使用Tab
键来进行命令补全,Tab
键一般键盘是在字母Q
旁边,它最大的好处就是当你忘记某个命令、目录、命令参数的全称时你可以只输入它的开头的一部分然后按下Tab
键就可以得到提示或者帮助完成,下面是一个动态gif的展示:
2.[Ctrl+c]
当在 Linux 命令行中无意输入了一个不知道的命令,或者错误的使用了一个命令,导致在终端里出现了你无法预料的情况,比如,只有光标在闪烁无法继续输入命令,或者不停地在输出一大堆你不想要的结果。想要立即停止并恢复到你可控的状态,这时候就可以使用Ctrl+c
键来强行终止当前程序(你可以放心它并不会使终端退出,并且这是我们在win中常用的复制快捷键,注意别混淆!)。
P.S. 学到这里的时候我深有感触,因为我有一次实验中输入文件地址的时候偷懒,想来一手复制粘贴结果“熟练”的按了[Ctrl+c],整个输入就被打断了,害的我又重新手打了一遍,所以这个快捷键因慎用!并且有时在命令行没有任何反应或提示的情况下,可能只是程序在运行的需要等一下!需要耐心等待。
3.然后记录一些常用快捷键:
按键 | 作用 |
---|---|
Ctrl+d |
键盘输入结束或退出终端 |
Ctrl+s |
暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z |
将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a |
将光标移至输入行头,相当于Home 键 |
Ctrl+e |
将光标移至输入行末,相当于End 键 |
Ctrl+k |
删除从光标所在位置到行末 |
Alt+Backspace |
向前删除一个单词 |
Shift+PgUp |
将终端显示向上滚动 |
Shift+PgDn |
将终端显示向下滚动 |
4.通配符
首先通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
终端里面输入的通配符是由 Shell 处理的,不是由所涉及到命令语句处理的,它只会出现在命令的“参数值”里(它不用在 命令名称里, 命令不记得,那就用Tab
补全)。当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符 实际上就是一种 Shell 实现的路径扩展功能。在 通配符被处理后, Shell 会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。
其实上面说了一大堆难以理解的话,按照我简单的理解就是把自己忘记的部分用星号(*)和问号(?)代替,让系统自动帮你找出相关文件。下面是一个小例子来帮助理解:
Shell 常用通配符:
字符 | 含义 |
---|---|
* |
匹配 0 或多个字符 |
? |
匹配任意一个字符 |
[list] |
匹配 list 中的任意单一字符 |
[!list] |
匹配 除list 中的任意单一字符以外的字符 |
[c1-c2] |
匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} |
匹配 sring1 或 string2 (或更多)其一字符串 |
{c1..c2} |
匹配 c1-c2 中全部字符 如{1..10} |
manner
命令
Manual pages 是在 UNIX 或类 UNIX 操作系统在线软件文档的一种普遍的形式。 内容包括计算机程序(包括库和系统调用),正式的标准和惯例,甚至是抽象的概念。用户可以通过执行 man 命令调用手册页。
其实简单的来说就是通过
man
来将一种类似帮助手册的东西调出来。
通常格式是:man
+ 你想要了解的东西
比如你想查看 man 命令本身的使用方式,你可以输入:
man man
通常情况下,man 手册里面的内容都是英文的,这就要求你有一定的英文基础。man 手册的内容很多,涉及了 Linux 使用过程中的方方面面,为了便于查找,是做了分册(分区段)处理的,在Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为8个区段,安排如下:
区段 | 说明 |
---|---|
1 | 一般命令 |
2 | 系统调用 |
3 | 库函数,涵盖了C标准函数库 |
4 | 特殊文件(通常是/dev中的设备)和驱动程序 |
5 | 文件格式和约定 |
6 | 游戏和屏保 |
7 | 杂项 |
8 | 系统管理命令和守护进程 |
要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:
$ man 1 ls
会显示第一区段中的ls
命令man页面。
想要获得更详细的帮助,还可以使用
info
命令。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help
参数,大部分命令都会带有这个参数.
下面是实验楼的一个实验作业:
五、账户管理相关命令
1 who
命令
最常用的就是查看用户,在终端中输入$ who am I或者$ who mom likes可以显示。
who
命令其它常用参数
参数 | 说明 |
---|---|
-a |
打印能打印的全部 |
-d |
打印死掉的进程 |
-m |
同am i ,mom likes |
-q |
打印当前登录用户数及用户名 |
-u |
打印当前登录用户登录信息 |
-r |
打印运行等级 |
2. sudo
命令
我们一般登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo
这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo
用户组。
关于
root
: root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,用 Windows 的方法理解也就是将自己的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
su user
可以切换到用户user,执行时需要输入目标用户的密码。sudo cmd
可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码。su - user
命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
下面是我的实验:
这里需要注意在输入密码的时候他是不会显示出来的(之前的我以为是系统卡死了)
这里是将我新建的blackay03
用户加入sudo
用户组来获得root
权限:
这里是删除用户所需要输入的:
$ sudo deluser blackay03 --remove-home
3. groups
命令
这个命令是用来查看用户所属的用户组的。
Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,你的兄弟姐妹(不同的用户)属于同一个家(用户组),你们可以共同拥有这个家(共享资源),爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的.
下面是我的实验:
在这里前一个blackay03
表示用户,后面的表示该用户所属的用户组blackay03
,也就是 blackay03
用户属于 blackay03
用户组。
- 每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。
- 默认情况下在sudo用户组里的可以使用sudo命令获得root权限。
六、文件的相关知识
Linux 里面一切皆文件
可以通过
$ ls -l
来列出并显示当前目录下的文件。一般格式如下图:
1. 文件类型
2. 文件权限
文件权限表示的一般形式如下图:
-
‘r’读权限,表示你可以使用
cat file name
之类的命令来读取某个文件的内容。 -
‘w’写权限,表示你可以编辑和修改某个文件.
-
‘x’执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 'exe' 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
-
所有者权限,这点顾名思义,哪个用户对这个文件有权限。
-
所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个艾派德,那么这个用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。
3. 写到这里必须要记住一个与之相关的命令:ls
命令 参数 | 说明 |
---|---|
ls -l |
使用较长格式列出文件 |
ls -lh |
查看文件的大小 |
ls -A |
显示除了 . (当前目录),.. (上一级目录)之外的所有包含隐藏文件 |
ls -Al |
长格式显示隐藏文件 |
ls -dl |
查看某一个目录的完整属性 |
ls -AsSh |
显示所有文件大小,并以普通人类能看懂的方式呈现 |
4. 变更文件所有者
下面是实验:
- 首先是在用户
blackay123
下新建了一个“xinjian”文件
这里用到
touch
命令,意思为创建一个空文件。
- 然后换回
shiyanlou
用户,输入如下命令行:
cd /home/blackay123
ls xinjian
sudo chown shiyanlou xinjian
cp xinjian /home/shiyanlou
- 然后在输入
ll xinjian
查看“xinjian”文件的文件属性可以看出文件的所有者已经变成shiyanlou
了:
5. 修改权限
-
首先我在
blackay123
和shiyanlou
上都新建了一个文件“xinjian”并且往里面分别输入了“nihao”和“hello” -
然后我在
shiyanlou
用户中修改了“xinjian”的权限,变为只有我自己可以,通过命令行$ chmod 700 xinjian
-
然后再换回
blackay123
用户查看,发现自己的home里面的“xinjian”可以查看,内容依旧为“nihao”,但是再打开路径“/home/shiyanlou/xinjian”的时候发现已经“permission denied”了
如图:
6. tree
命令
这里说的是查看Linux 目录结构的一个命令:
$ tree + 地址
7. cd
命令
进入上一级目录:
$ cd ..
进入你的“home”目录:
$ cd ~
# 或者 cd /home/用户名
使用 pwd
获取当前路径:
$ pwd
8. touch
命令
其主要是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个为指定文件名的空白文件(不会覆盖已有同名文件)
9. mkdir
命令
使用 mkdir
(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
在mkdir
后加-p
参数可以同时创建父目录(如果不存在该父目录),例如:
$ mkdir -p dir1/dir2/dir3
10. cp
命令
cp
(copy)命令是复制一个文件或目录到指定目录,例如:
$ cp test dir1/dir2/dir3
就是将test
文件复制到dir1/dir2/dir3
目录下。
要成功复制目录需要加上
-r
或者-R
参数,表示递归复制。
11. rm
命令
使用rm
(remove files or directories)命令,删除一个文件或目录:
$ rm test
有时候你会遇到想要删除一些为只读权限的文件,需要加上参数
-f
强制删除。
12. mv
命令
使用mv
(move or rename files)命令,移动文件(剪切),将文件移动到指定目录:
$ mkdir dir1/dir2/dir3
$ mv lala dir1/dir2/dir3
mv
命令还有一个功能就是重命名:
13. nl
命令
nl
命令是指添加行号并打印。
$ nl passwd
这里简单列举它的常用的几个参数:
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
14.| sort
命令
表示将读取的文本进行一个字典排序再输出。
15. cat
命令
用于读取指定文件的内容并打印到终端输出。正序显示,可以加上-n
参数显示行号:
$ cat -n passwd
在这里我们通过命令行:$ cat /etc/group | sort
来查看我之前新建的用户blackay03
:
-
| sort
表示将读取的文本进行一个字典排序再输出 -
/etc/group
的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。其格式为:group_name:password:GID:user_list
16. head
和tail
命令
也是查看文件的命令,head
是只查看的头几行(默认为10行,不足10行则显示全部),另一个是查看尾几行。
由于时间关系,在进行大扫除大采购大包装后,即将回到并没有被网络的老家,所以关于Linux的学习暂时到这里(所以本篇随笔还是会像其他随笔一样,不断更新中~)。