20145215《信息安全系统设计基础》第一周学习总结

20145215《信息安全系统设计基础》第一周学习总结

教材学习内容总结

Ubuntu下常用快捷键

  • Ctrl+Alt+T: 打开终端
  • Ctrl+D: 键盘输入结束或退出终端
  • Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行
  • Ctrl+C: 中断程序运行
  • Ctrl+Z: 将当前程序放到后台运行,恢复到前台为命令fg
  • Ctrl+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中的指令帮助、配置文件帮助和编程帮助等信息。
  • 常用选项:
    1. -a:在所有的man帮助手册中搜索
    2. -k:根据关键字搜索联机帮助,是一种模糊搜索
    3. -f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息
    4. -P:指定内容时使用分页程序
    5. -M:指定man手册搜索的路径
  • 参数:
    1. 数字:指定从哪本man手册中搜索帮助
    2. 关键字:指定要搜索帮助的关键字
  • 举例:查看函数库中的printf函数的帮助

cheat命令

  • 在linux上,man命令几乎是万能的,但它却不是最高效的。由于它给出的帮助信息很长,在短时间内不好理解,所以在这种情况下,用cheat命令更方便,cheat命令简单来说,就是告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用。
  • Ubuntu上没有自带cheat命令,大家可以参照娄老师提供的文章进行安装配置。
  • 举例:cheat find一下,查看find命令的帮助

find命令

  • find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
  • 命令格式:find pathname -options [-print -exec -ok ...]
  • 参数:
    1. pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录
    2. print:find命令将匹配的文件输出到标准输出
    3. exec:find命令对匹配的文件执行该参数所给出的shell命令,相应命令的形式为'command' { } ;,注意{ }和\;之间的空格
    4. ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
  • 常用选项:
    1. -name:按照文件名查找文件
    2. -perm:按照文件权限来查找文件
    3. mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
    4. -newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件
    5. -type:查找某一类型的文件,诸如:b - 块设备文件,d - 目录,c - 字符设备文件,p - 管道文件,l - 符号链接文件,f - 普通文件
    6. -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
    7. -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
  • 举例:查找当前目录下大小大于50M的文件,查找大小大于10K的文件

locate命令

  • locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
  • 命令格式:locate [选择参数] [样式]
  • 命令参数:
    1. -e:将排除在寻找的范围之外
    2. -1:如果是1则启动安全模式,在安全模式下,使用者不会看到权限无法看到的档案。这会使速度减慢,因为 locate必须至实际的档案系统中取得档案的权限资料
    3. -f:将特定的档案系统排除在外,例如我们没有到必要把proc档案系统中的档案放在资料库中
    4. -q:安静模式,不会显示任何错误讯息
    5. -n:至多显示 n个输出
    6. -r:使用正规运算式 做寻找的条件
    7. -o:指定资料库存的名称
    8. -d:指定资料库的路径
    9. -h:显示辅助讯息
    10. -V:显示程式的版本讯息
  • 举例:搜索etc目录下所有以sh开头的文件

grep命令

  • grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
  • 命令格式:grep [options]
  • [options]主要参数:
    1. -c:只输出匹配行的计数
    2. -I:不区分大小写(只适用于单字符)
    3. -h:查询多文件时不显示文件名
    4. -l:查询多文件时只输出包含匹配字符的文件名
    5. -n:显示匹配行及行号
    6. -s:不显示不存在或无匹配文本的错误信息
    7. -v:显示不包含匹配文本的所有行
  • 正则表达式主要参数:
    1. \:忽略正则表达式中特殊字符的原有含义
    2. ^:匹配正则表达式的开始行
    3. $:匹配正则表达式的结束行
    4. \<:从匹配正则表达式的行开始
    5. \>:到匹配正则表达式的行结束
    6. [ ]:单个字符,如[A]即A符合要求
    7. [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求
    8. :所有的单个字符
    9. *:有字符,长度可以为0
  • 举例:查找指定进程个数

whereis命令

  • whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
  • 命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名
  • 主要参数:
    1. -b:定位可执行文件
    2. -m:定位帮助文件
    3. -s:定位源代码文件
    4. -u:搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件
    5. -B:指定搜索可执行文件的路径
    6. -M:指定搜索帮助文件的路径
    7. -S:指定搜索源代码文件的路径
  • 举例:查找date的可执行文件、源代码和man手册的位置

which命令

  • which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。which是根据使用者所配置的PATH变量内的目录去搜寻可运行档的,所以,不同的PATH配置内容所找到的命令是不一样的。
  • 命令格式:which 可执行文件名称
  • 命令参数:
    1. -n:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
    2. -p:与-n参数相同,但此处的包括了文件的路径
    3. -w:指定输出时栏位的宽度
    4. -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,tacnl命令查看文件:这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示;使用moreless命令分页查看文件;使用headtail命令查看文件。

  • 召唤“眼睛”:

环境变量与文件查找

  • 使用declare命令创建一个变量名为tmp的变量:$ declare tmp,其实也可以不用declare预声明一个变量,直接即用即创建;使用=号赋值运算符为变量tmp赋值为shiyanlou:$ tmp=shiyanlou;读取变量的值,使用echo命令和$符号($符号用于表示引用一个变量的值):$ echo $tmp关于变量名,并不是任何形式的变量名都是可用的,变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。

  • set:显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量;env:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行;export:显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量;使用vimdiff工具比较setenvexport的差别:

  • 关于环境变量,可以简单的理解成在当前进程的子进程是否有效,有效则为环境变量,否则不是(有些人也将所有变量统称为环境变量,只是以全局环境变量和局部环境变量进行区分,我们只要理解它们的实质区别即可);为了与普通变量区分,通常我们习惯将环境变量名设为大写。

  • 可以使用unset命令删除一个环境变量。

  • 召唤“数字雨”:

文件打包和解压缩

  • 使用zip打包文件夹:zip -r -q -o shiyanlou.zip /home/shiyanloudu -h shiyanlou.zipfile 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/locksudo rm /var/lib/dpkg/lock

心得体会

刚刚开始接触Linux,感觉上手起来还是比较快,主要是要熟练掌握那几个核心的Linux命令,这样当我们遇到一条新命令的时候,可以通过查找它的帮助文档来学习使用。另外,虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,学习如何在安全的环境中执行系统命令,包括有关文件、目录、文件系统、进程等概念,如何使用相应的命令对文件、目录、进程等进行管理,了解遇到问题时,如何找到帮助信息等,这些对于我们深入去理解Linux来说,都有着非同寻常的意义。学好Linux不是一件一蹴而就的事,我相信只要多动手,就一定会有收获。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/2 25/45 学习了几个Linux核心命令

参考资料

posted @ 2016-09-18 15:43  L.X.M  阅读(729)  评论(4编辑  收藏  举报