实验

使用touch创建文件:

man手册的内容很多,涉及了Linux使用过程中的方方面面,为了便于查找,是做了分册(分区段)处理的,在Research UNIX、BSD、OS X和Linux中,手册通常被分为8个区段:

要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:

man 1 ls

会显示第一区段中的ls命令man页面。

如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help参数,大部分命令都会带有这个参数,如:

输出图形字符的命令banner:

先使用如下命令安装

$ sudo apt-get update   // 更新最新的套件资讯
$ sudo apt-get install sysvbanner //安装sysvbanner软件

'-w'参数指定打印宽度,因为我们的环境在屏幕中显示比较小,必须要加上宽度限制:

作业安装toilet:

sudo apt-get install toilet

用户及文件权限管理



输入的第一列表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用 whoami 即可),上面即可看出差别。第二列的 pts/0 中 pts 表示伪终端,所谓伪是相对于 /dev/tty(表示控制终端)设备而言的。

who 命令其它常用参数的试验:

在 Linux 系统里, root 账户拥有整个系统至高无上的权利,比如 新建/添加用户。我们一般登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。shiyanlou 用户也属于 sudo 用户组。

下面我们新建一个用户:



如图所示,已经创建成功。

接下来我们切换登陆用户:

ls -l是显示当前目录下文件详细信息,su -l lilei切换登录用户。

用户组:

shiyanlou 用户也可以使用 sudo 命令,为什么这里没有显示在 sudo 用户组里呢?可以查看下 /etc/sudoers.d/shiyanlou 文件,我们在 /etc/sudoers.d目录下创建了这个文件,从而给 shiyanlou 用户赋予了 sudo 权限:



cat 命令用于读取指定文件的内容并打印到终端输出,| sort 表示将读取的文本进行一个字典排序再输出:



-e<范本样式> 指定字符串作为查找文件内容的范本样式



将其它用户加入sudo组:使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限。这里我用 shiyanlou 用户执行 sudo 命令将 djw添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:





删除用户:



linux文件权限

查看文件权限

ls -l

变更文件所有者

每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "rwx"

修改文件权限



加减赋值操作



'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。

添加一个用户loutest,使用sudo创建文件/opt/forloutest,设置成用户loutest可以读写



新建目录

使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在有时候安装软件,配置安装路径时非常有用):

如果直接使用cp命令,复制一个目录的话,会出现错误。要成功复制目录需要加上-r或者-R参数,表示递归复制

删除文件

删除目录

批量重命名



查看文件



head、tail查看文件



查看文件类型

变量

读取变量的值,使用echo命令和\(符号(\)符号用于表示引用一个变量的值):



在 Shell 中设置一个变量temp=shiyanlou,然后再新创建一个子 Shell 查看temp变量的值:

whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。

如果想要获得更全面的搜索结果可以使用locate命令。



列出 home 目录中,当天(24 小时之内)有改动的文件:

$ find ~ -mtime 0

列出用户家目录下比Code文件夹新的文件:

$ find ~ -newer /home/shiyanlou/Code

zip打包

第一行命令中,-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。使用du命令查看打包后文件的大小

设置压缩级别为9和1(9最大,1最小),重新打包,-x是为了排除我们上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中:

du命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小。h, --human-readable;d, --max-depth



-e参数可以创建加密压缩包

$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou

Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改

$ zip -r -l -o shiyanlou.zip /home/shiyanlou

使用unzip命令解压缩zip文件

$ unzip shiyanlou.zip

安静模式,将文件解压到指定目录:

$ unzip -q shiyanlou.zip -d ziptest

如果你不想解压只想查看压缩包的内容你可以使用-l参数:

$ unzip -l shiyanlou.zip

tar打包工具



自动去掉路径开头的“/”避免解包到根目录;只是打包没有压缩

-c表示创建一个 tar 包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后,比如不能写成tar -fc shiyanlou.tar,可以写成tar -f shiyanlou.tar -c ~。

解包一个文件(-x参数)到指定路径的已存在目录(-C参数):

 tar -xf shiyanlou.tar -C tardir

实验遇到的问题及解决方法

一、已解决问题

1.为什么用shiyanlou账户创建的文件的拥有者会是root?

我猜想因为在创建文件的时候加入了sudo命令,使得该操作是以最高权限进行操作的,而shiyanlou本身并不在root组,所以,我们查看到的拥有者是root而不是shiyanlou。后来又另外创建了额外的两个文件,此次不加入sudo命令,再看文件的属性,就发现拥有者是shiyanlou了,从而验证了之前的猜想。

2.为什么当前目录下的文件不能直接执行,加上./才能执行?

文档告诉我们,我们在 Shell 中输入一个命令,Shell是通过环境变量PATH来进行搜索的,熟悉 Windows 的用户可能知道 Windows 中的也是有这么一个 PATH 环境变量,这个PATH里面就保存了Shell中执行的命令的搜索路径。而PATH中保存的是一些目录路径,通常这一类目录下放的都是可执行文件,当我们在 Shell 中执行一个命令时,系统就会按照 PATH 中设定的路径按照顺序依次到目录中去查找,如果存在同名的命令,则执行先找到的那个。“./”代表的是当前目录,所以我们在执行当前目录下我们自己编写的脚本或是编译的可执行文件的时候,不加“./”的话shell就会去PATH环境变量保存的路径依次顺序查找,显然是查找不到的,所以系统会出现错误提示。

如果要让当前目录下的文件不需添加“./”即可运行,只需将“./”加入路径参数PATH中即可,代码如下所示:

export PATH=$PATH:./

(其中冒号作为路径的分隔符,跟Windows系统中 PATH 路径中的分号一样的效果)。但是基于安全性的考虑,系统是不会将“./”加入路径参数的。同样是对安全性的考虑,

export PATH=$PATH:./

的安全性将优于下面的代码很多(因为系统会按照PATH中设定的路径的先后顺序查找,将“./”放在后面,可以让系统先查找原先PATH路径目录中的可执行文件)

export PATH=./:$PATH

参考资料

3.rar打包压缩命令遇到的问题

在按照实验文档做实验的时候,输入

rm *.zip

的时候,出现如下提示



当时就比较疑惑,后来仔细想了想,因为时间原因重新打开的实验环境,所以上一次实验创建的shiyanlou.zip文件已经不存在了,我这次再去删除这个文件,就提示找不到这个文件了。

4.du命令查看目录容量

之前学习的时候,照着文档做,写

du -h -d 0 *.zip ~ | sort

一直没有弄明白这句话具体的意思,只知道“du”是查看目录容量的命令。“-h”是以易读的形式呈现, “-d”是查看深度,然后后面那些代码就不知道什么意思。随着学习的深入和自己上网查询资料,才知道“-d”是查看深度

du -d 0 ~

是查看1级目录的信息

du -d 1 ~

是查看2级。 *.zip表示所有后缀名是 .zip的文件, ~表示主目录。所以,竖线之前的命令表示查看主目录下(1级)所有后缀名为.zip文件的大小

那么,竖线的作用又是什么呢?

经查询,得知那是linux下的管道符号,用法: command1 | command2 ;其功能是把第一个命令command1执行的结果作为command2的输入再执行command2. 所以整句完整的命令就是先找出主目录下(1级)所有后缀名为 .zip文件再排序输出,如图所示

关于管道符号的参考:linux shell中的竖线(|)——管道符号

二、未解决问题

在执行

find /etc/ -name interfaces
```的时候虽然返回了文件的位置,可是还弹出了一个权限不够的报错如图所示![](http://images2015.cnblogs.com/blog/1028919/201609/1028919-20160925221816499-848846089.jpg) 上网查询了一下,说有可能是当前登录的用户对该文件没有可读或者是可执行的权限造成的,所以去查看该文件的权限

ll /etc/network/interfaces


发现当前拥有者是root,所属组也是root组,于是我更改了其文件权限以及拥有者,再执行刚刚的寻找命令,发现还是会报权限不够的错误。 网上还有回答说请使用root用户,鉴于实验平台的原因,无法用root用户登录尝试,**所以此问题未解决!** 通过此次的linux学习还发现了很多好玩的游戏,比如监视的眼睛等,让自己在Linux学习的历程上不再那么枯燥无聊。

20169212《Linux内核原理与分析》第一周作业的更多相关文章

  1. Linux内核原理与分析-第一周作业

    本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...

  2. 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业

    前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...

  3. 2019-2020-1 20199303<Linux内核原理与分析>第二周作业

    2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...

  4. 20169219 linux内核原理与分析第二周作业

    "linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...

  5. 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业

    1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...

  6. Linux内核原理与分析-第二周作业

    写之前回看了一遍秒速五厘米:如果

  7. 2018-2019-1 20189221《Linux内核原理与分析》第一周作业

    Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...

  8. 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...

  9. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

  10. 20169212《Linux内核原理与分析》课程总结

    20169212<Linux内核原理与分析>课程总结 每周作业链接汇总 第一周作业:完成linux基础入门实验,了解一些基础的命令操作. 第二周作业:学习MOOC课程--计算机是如何工作的 ...

随机推荐

  1. cocoa pods报错The dependency `Reveal-iOS-SDK` is not used in any concrete target.

    Podfile错误写法,会报错The dependency `Reveal-iOS-SDK` is not used in any concrete target. platform:ios,'7.0 ...

  2. 安装django

    我已经有Python3.5的环境了.我们去下载Django.https://github.com/django/django.git  直接下载为zip解压即可. 然后在命令提示符下安装 1.  切换 ...

  3. 提高网站性能的 5 个 Grunt任务//////////////////z

    提高网站性能的 5 个 Grunt任务 时间 2015-03-06 09:13:02  极客头条 原文  http://hugnew.com/wordpress/提高网站性能的-5-个-grunt任务 ...

  4. android 加载大图片

    引用:http://my.eoe.cn/littlebirds/archive/4646.html 尽量不要使用setImageBitmap或setImageResource或BitmapFactor ...

  5. Qt之重写QLabel类

    在mylabel.h 文件中#ifndef MYLABEL_H#define MYLABEL_H #include <QLabel>/*重新实现QLabel类,使其支持点击事件*/clas ...

  6. 连续最短路算法(Successive Shortest Path)(最小费用最大流)

    #include <cstdio> #include <cstring> #include <queue> #include <vector> #inc ...

  7. Prince2是怎么考试的?

    Prince2是怎么考试的? 在前几年,对于项目经理来讲关注的很多是单项目管理的工具技术模板,谈论最多的是,进度延期,成本超支,范围蔓延等等!有一个不成文的形态就是--去考个PMP吧!一时间PMP成为 ...

  8. WampServer中MySQL中文乱码解决

    1.修改mysql的my.ini文件: 在 [client] 下面增加 default-character-set=utf8 在 [mysqld] 下面增加: character_set_server ...

  9. [课程设计]Scrum 1.4 多鱼点餐系统开发进度(点餐页面框架布置)

    Scrum 1.4 多鱼点餐系统开发进度 (点餐页面框架布置) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系 ...

  10. python(四)函数

    一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 ...