20145215《信息安全系统设计基础》第一周学习总结
20145215《信息安全系统设计基础》第一周学习总结
教材学习内容总结
Ubuntu下常用快捷键
Ctrl+Alt+T
: 打开终端Ctrl+D
: 键盘输入结束或退出终端Ctrl+S
: 暂定当前程序,暂停后按下任意键恢复运行Ctrl+C
: 中断程序运行Ctrl+Z
: 将当前程序放到后台运行,恢复到前台为命令fgCtrl+A
: 将光标移至输入行头,相当于Home
键Ctrl+E
: 将光标移至输入行末,相当于End
键Ctrl+K
: 删除从光标所在位置到行末Ctrl+Shift+T
: 新建标签页Alt+数字N
: 终端中切换到第N个标签页Alt+Backspace
: 向前删除一个单词Tab
: 终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成上下键盘
: 切换命令历史,刚输入一个很长的命令,按上
键就可以恢复Shift+PgUp
: 将终端显示向上滚动Shift+PgDn
: 将终端显示向下滚动
Linux核心命令
- Linux中命令格式为:
command [options] [arguments] []表示是可选的
,即组成结构为:命令 [选项] [参数]
man命令
man命令
是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。- 常用选项:
-a
:在所有的man帮助手册中搜索-k
:根据关键字搜索联机帮助,是一种模糊搜索-f
:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息-P
:指定内容时使用分页程序-M
:指定man手册搜索的路径
- 参数:
数字
:指定从哪本man手册中搜索帮助关键字
:指定要搜索帮助的关键字
- 举例:查看函数库中的printf函数的帮助
cheat命令
- 在linux上,
man命令
几乎是万能的,但它却不是最高效的。由于它给出的帮助信息很长,在短时间内不好理解,所以在这种情况下,用cheat命令
更方便,cheat命令
简单来说,就是告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用。 - Ubuntu上没有自带
cheat命令
,大家可以参照娄老师提供的文章进行安装配置。 - 举例:cheat find一下,查看find命令的帮助
find命令
find命令
用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令
将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。- 命令格式:
find pathname -options [-print -exec -ok ...]
- 参数:
pathname
:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录print
:find命令将匹配的文件输出到标准输出exec
:find命令对匹配的文件执行该参数所给出的shell命令,相应命令的形式为'command' { } ;,注意{ }和\;之间的空格ok
:和-exec
的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
- 常用选项:
-name
:按照文件名查找文件-perm
:按照文件权限来查找文件mtime -n +n
:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前-newer file1 ! file2
:查找更改时间比文件file1新但比文件file2旧的文件-type
:查找某一类型的文件,诸如:b - 块设备文件,d - 目录,c - 字符设备文件,p - 管道文件,l - 符号链接文件,f - 普通文件-size n
:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计-depth
:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
- 举例:查找当前目录下大小大于50M的文件,查找大小大于10K的文件
locate命令
locate命令
其实是find -name
的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。- 命令格式:
locate [选择参数] [样式]
- 命令参数:
-e
:将排除在寻找的范围之外-1
:如果是1则启动安全模式,在安全模式下,使用者不会看到权限无法看到的档案。这会使速度减慢,因为locate
必须至实际的档案系统中取得档案的权限资料-f
:将特定的档案系统排除在外,例如我们没有到必要把proc
档案系统中的档案放在资料库中-q
:安静模式,不会显示任何错误讯息-n
:至多显示 n个输出-r
:使用正规运算式 做寻找的条件-o
:指定资料库存的名称-d
:指定资料库的路径-h
:显示辅助讯息-V
:显示程式的版本讯息
- 举例:搜索etc目录下所有以sh开头的文件
grep命令
grep命令
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep
全称是Global Regular Expression Print
,表示全局正则表达式版本,它的使用权限是所有用户。- 命令格式:
grep [options]
- [options]主要参数:
-c
:只输出匹配行的计数-I
:不区分大小写(只适用于单字符)-h
:查询多文件时不显示文件名-l
:查询多文件时只输出包含匹配字符的文件名-n
:显示匹配行及行号-s
:不显示不存在或无匹配文本的错误信息-v
:显示不包含匹配文本的所有行
- 正则表达式主要参数:
\
:忽略正则表达式中特殊字符的原有含义^
:匹配正则表达式的开始行$
:匹配正则表达式的结束行\<
:从匹配正则表达式的行开始\>
:到匹配正则表达式的行结束[ ]
:单个字符,如[A]即A符合要求[ - ]
:范围,如[A-Z],即A、B、C一直到Z都符合要求。
:所有的单个字符*
:有字符,长度可以为0
- 举例:查找指定进程个数
whereis命令
whereis命令
是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis
程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。whereis命令
只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。- 命令格式:
whereis [-bmsu] [BMS 目录名 -f ] 文件名
- 主要参数:
-b
:定位可执行文件-m
:定位帮助文件-s
:定位源代码文件-u
:搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件-B
:指定搜索可执行文件的路径-M
:指定搜索帮助文件的路径-S
:指定搜索源代码文件的路径
- 举例:查找
date
的可执行文件、源代码和man手册的位置
which命令
which指令
会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。which
是根据使用者所配置的PATH
变量内的目录去搜寻可运行档的,所以,不同的PATH
配置内容所找到的命令是不一样的。- 命令格式:
which 可执行文件名称
- 命令参数:
-n
:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名-p
:与-n参数相同,但此处的包括了文件的路径-w
:指定输出时栏位的宽度-V
:显示版本信息
- 举例:用
which
去找出which
,查找文件
有趣的Linux命令
banner命令
banner命令
可以用于输出图形字符,可以利用'-w'参数指定打印宽度- 输入命令
sudo apt-get update``sudo apt-get install sysvbanner
进行安装,安装完成后输入命令banner linux
,便可以输出图形化的字符LINUX
toilet命令
-
toilet命令
能够把文本显示成标题栏,安装方法与banner安装过程类似,依然是用apt-get install
命令
-
还可以利用它添加颜色
figlet命令
figlet命令
会用大写方式把我们输入的字符串显示在标题栏,显示效果由ASCII字符组成
用户及文件权限管理
-
使用
who am i
指令查看用户,使用sudo adduser
指令新建用户,使用su -l
指令切换登录用户,Ctrl+D
退出当前用户
-
每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组,默认情况下在sudo用户组里的可以使用sudo命令获得root权限
-
使用
usermod
命令可以为用户添加用户组,同样使用该命令你必需有root权限,你可以直接使用root用户为其它用户添加用户组,或者用其它已经在sudo用户组的用户使用sudo命令获取权限来执行该命令
-
使用
sudo deluser xxx --remove-home
删除用户 -
用
ls -l
查看文件权限,文件类型:Linux中一切皆文件;文件权限:一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息;链接数:链接到该文件所在的 inode 结点的文件名数目;文件大小:以 inode 结点大小为单位来表示的文件大小。ls 加上 -lh 参数来更直观的查看文件的大小。
-
使用
ls -Al
查看某一个目录的完整属性,而不是显示目录里面的文件属性;使用ls -dl <目录名>
显示所有文件大小,并以普通人类能看懂的方式呈现;使用ls -AsSh
,其中小s为显示文件大小,大S为按文件大小排序。 -
变更文件所有者:
-
如果有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,方法一:二进制数字表示,方法二:加减赋值操作,'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。
Linux 目录结构及文件基本操作
-
使用
cd ..
指令返回上一级目录,使用cd ~
或者cd /home/<你的用户名>
进入home目录,使用pwd
获取当前路径。 -
以"home"目录为起点,分别以绝对路径和相对路径的方式进入
/usr/local/bin
目录:
-
使用
touch命令
创建空白文件,其主要是来更改已有文件的时间戳的(如最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个为指定文件名的空白文件(不会覆盖已有同名文件),也可以同时指定该文件的时间戳。 -
使用
mkdir(make directories)命令
可以创建一个空目录,也可同时指定创建目录的权限属性,使用-p
参数,同时创建父目录(如果不存在该父目录)。 -
使用
cp命令
复制一个文件或目录到指定目录,如果直接使用cp命令
,复制一个目录的话,会出现错误,要成功复制目录需要加上-r
或者-R
参数,表示递归复制。 -
使用
rm命令
,删除一个文件或目录;如果想忽略提示,直接删除文件,可以使用-f
参数强制删除;要删除一个目录,也需要加上-r
或-R
参数。 -
使用
mv命令
,移动文件(剪切),mv 源目录文件 目的目录
;文件重命名:mv 旧的文件名 新的文件名
;使用rename命令
可以批量重命名。 -
使用
cat
,tac
和nl
命令查看文件:这两个命令都是用来打印文件内容到标准输出(终端),其中cat
为正序显示,tac
倒序显示;使用more
和less
命令分页查看文件;使用head
和tail
命令查看文件。 -
召唤“眼睛”:
环境变量与文件查找
-
使用declare命令创建一个变量名为
tmp
的变量:$ declare tmp,其实也可以不用declare预声明一个变量,直接即用即创建;使用=号赋值运算符为变量tmp
赋值为shiyanlou:$ tmp=shiyanlou
;读取变量的值,使用echo命令和$符号($符号用于表示引用一个变量的值):$ echo $tmp
;关于变量名,并不是任何形式的变量名都是可用的,变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。 -
set
:显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量;env
:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行;export
:显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量;使用vimdiff工具比较set
、env
、export
的差别:
-
关于环境变量,可以简单的理解成在当前进程的子进程是否有效,有效则为环境变量,否则不是(有些人也将所有变量统称为环境变量,只是以全局环境变量和局部环境变量进行区分,我们只要理解它们的实质区别即可);为了与普通变量区分,通常我们习惯将环境变量名设为大写。
-
可以使用
unset命令
删除一个环境变量。 -
召唤“数字雨”:
文件打包和解压缩
-
使用zip打包文件夹:
zip -r -q -o shiyanlou.zip /home/shiyanlou
、du -h shiyanlou.zip
、file shiyanlou.zip
。
-
使用-e参数可以创建加密压缩包:
zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou
。 -
使用unzip命令解压缩zip文件:将shiyanlou.zip解压到当前目录
unzip shiyanlou.zip
;使用安静模式,将文件解压到指定目录:unzip -q shiyanlou.zip -d ziptest
。
文件系统操作与磁盘管理
-
使用
df
指令查看磁盘的容量,1k-blocks表示以磁盘块大小的方式显示容量,后面为相应的以块大小表示的已用和可用容量,我们可以使用df -h
指令能更直观的查看磁盘容量。
-
使用
du
命令查看目录的容量,加上-h
参数,以更易读的方式展示,du(estimate file space usage)命令与df(report file system disk space usage)只用一字只差,首先就希望注意不要弄混淆了,可以从man手册中获取命令的完整描述,记全称就不会搞混了。 -
dd命令
用于转换和复制文件,不过它的复制不同于cp
,在 Linux 上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/random)都像普通文件一样,只要在各自的驱动程序中实现了对应的功能,dd 也可以读取自和/或写入到这些文件。这样,dd也可以用在备份硬件的引导扇区、获取一定数量的随机数据或者空数据等任务中。dd程序
也可以在复制时处理数据,例如转换字节序、或在ASCII与EBCDIC编码间互换。 -
dd的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的--选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
教材学习中的问题和解决过程
-
安装cheat时报错
-
原因是因为权限不够,在命令前加上
sudo
便可成功解决。
课后作业中的问题和解决过程
-
问题:安装DDD软件时出现错误:无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)
-
解决:因为有另外一个程序在运行,导致锁不可用。原因可能是上次运行更新或安装没有正常完成,解决办法就是杀死此进程,输入命令
sudo rm /var/cache/apt/archives/lock
、sudo rm /var/lib/dpkg/lock
心得体会
刚刚开始接触Linux,感觉上手起来还是比较快,主要是要熟练掌握那几个核心的Linux命令,这样当我们遇到一条新命令的时候,可以通过查找它的帮助文档来学习使用。另外,虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,学习如何在安全的环境中执行系统命令,包括有关文件、目录、文件系统、进程等概念,如何使用相应的命令对文件、目录、进程等进行管理,了解遇到问题时,如何找到帮助信息等,这些对于我们深入去理解Linux来说,都有着非同寻常的意义。学好Linux不是一件一蹴而就的事,我相信只要多动手,就一定会有收获。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 25/45 | 学习了几个Linux核心命令 |