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

20165312 预备作业3 Linux安装及学习的更多相关文章

  1. 20165226 预备作业3 Linux安装及学习

    20165226 预备作业3 Linux安装及学习 Linux安装 一.下载安装VirtualBox 1.首先在官网下载,点开基于VirtualBox虚拟机安装Ubuntu图文教程 找到版本进行下载安 ...

  2. 20165230 预备作业3 Linux安装及学习

    20165230 预备作业3 Linux安装及学习 安装Linux操作系统 通过学习实践基于VirtualBox虚拟机安装Ubuntu图文教程,开始了虚拟机的安装,根据教程按着步骤一步一步的完成. 遇 ...

  3. 20165327 预备作业3 Linux安装及学习

    20165327 预备作业3 Linux安装及学习 一.学习基于VirtualBox虚拟机安装Ubuntu图文教程,在自己笔记本上安装Linux操作系统,注意尽量选用最新版本的VirtualBox和U ...

  4. 20165303 预备作业3 Linux安装及学习

    =20165303 预备作业3 Linux安装及学习 安装虚拟机 按照http://www.cnblogs.com/rocedu/p/6012545.html步骤进行逐步操作,安装虚拟机. 遇到的问题 ...

  5. 20165315 预备作业3 Linux安装及学习

    20165315 预备作业3 Linux安装及学习 一.在自己笔记本上安装Linux操作系统 因为对操作电脑的不熟悉,我在第一项任务上就花费了一定的时间,在安装过程有如下问题: 我的电脑是苹果公司的M ...

  6. 20165310 预备作业3 Linux安装及学习

    预备作业3 Linux安装及学习 安装虚拟机 之前在win7系统下通过EasyBCD安装过Ubuntu虚拟机,这次阅读<基于VirtualBox虚拟机安装Ubuntu图文教程>又学习到了一 ...

  7. 20165211 预备作业3 Linux安装与学习

    20165211 预备作业3 Linux安装与学习 1. Linux安装 涉及软件:VirtualBox,Ubuntu 参考教程:基于VirtualBox安装Ubuntu图文教程 安装过程的问题 在安 ...

  8. 20165227朱越 预备作业3 Linux安装及学习

    预备作业3 Linux安装及学习 Linux的安装 虚拟机的安装远没有想象中的那样容易,下载还没有出现什么问题,当我安装的时候,第一个问题出现在创建虚拟机时选择安装的虚拟机版本和类型的时候的错误 当时 ...

  9. 20165333 预备作业3 Linux安装及学习

    预备作业3 Linux安装及学习 Linux系统安装 在老师的教程帮助下成功的完成了虚拟机的安装,但安装过程中也遇到了一些问题.在下载ubuntu时,总是下载失败,在求助同学后,在中文版官网的网址,才 ...

随机推荐

  1. The difference among ioctl, unlocked_ioctl and compat_ioctl (RT)

    Meta-answer: All the raw stuff happening to the Linux kernel goes through lkml (the Linux kernel mai ...

  2. adb command

  3. Java Scanner学习记录

    1. Java.util.Scanner可以用来从键盘获取输入 Scanner.next()  只能读取字符,遇到任何的符合都不会输出 Scanner.nextLine()  会完全按照用户输入的st ...

  4. Day 37 视图、存储过程、触发器、函数、事物、锁

    一 .存储过程 1 create view stu_view as select * from ren 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图有 ...

  5. Spring5 新特性

    Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 最大特点之一是响应式编程(Reactive Programming). 响应式编程核 ...

  6. 洛谷 2234 [HNOI2002]营业额统计——treap(入门)

    题目:https://www.luogu.org/problemnew/show/P2234 学习了一下 treap 的写法. 学习材料:https://blog.csdn.net/litble/ar ...

  7. 会话状态Session

    一.会话状态Session Session用于服务器端状态管理,使用Session之后,每个客户端都可以将实际的数据保存在服务器上,对于每个客户端的数据,将会生成一个对应的唯一的key(保存在客户端) ...

  8. shell 变量的默认值

    默认值表达式1 ${a-defaultvalue} a如果没有定义,则表达式返回默认值,否则返回a的值: demo1 a="" ret1=${a-"/usr/local& ...

  9. scala IDE for Eclipse开发Spark程序

    1.开发环境准备 scala IDE for Eclipse:版本(4.6.1) 官网下载:http://scala-ide.org/download/sdk.html 百度云盘下载:链接:http: ...

  10. 5分钟搭建 nginx +php --------------(LNMP)新手专用

    5分钟搭建 nginx +php --------------(LNMP)新手专用 2014-11-14 16:48 88876人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允 ...