20145216 《信息安全系统设计基础》第一周学习总结
教材学习内容总结
Linux基础
1.ls命令
ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略。我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录。其中“-a” 就是选项,改变了显示的内容。如图所示:
2.man命令
man命令可以查看帮助文档,如 man man :
若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数;若不加数字,那man命令默认从数字较小的手册中寻找相关命令和函数。例如:
man -k:对所有的联机手册搜寻所指定的字串,如 man -k sort:
3.cheat命令
cheat命令通过实例告诉使用者一些命令的具体使用方法,如 cheat find:
4.其他核心命令
和查找相关的核心命令还有find,locate,grep,whereis,which,其中: find查找一个文件在系统中的什么位置,locate是神速版本的find(Windows下有个Everything工具和locate类似)。grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识。whereis,which告诉你使用的命令工具装在什么地方。上面的命令包括man -k有一个共同特点就是基于“搜索”。
whereis:简单快速,它只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。
locate:快而全,通过"/var/lib/mlocate/mlocate.db"数据库查找,它可以用来查找指定目录下的不同文件类型
。
which:小而精,which本身是 Shell 内建的一个命令,我们通常使用which来确定是否安装了某个指定的软件,因
为它只从PATH环境变量指定的路径中去搜索命令。
find:精而细,find应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件
的属性(如文件的时间戳,文件的权限等)进行搜索。
Linux基本概念及操作
1.Terminal(终端)
终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登录,在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换。
2.Shell
Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe。普通意义上的 Shell 就是可以接受用户输入命令的程序。Unix/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。在 UNIX/Linux 中比较流行的常见的 Shell 有 bash,zsh,ksh,csh 等等,Ubuntu 终端默认使用的是 bash。
3.命令行操作体验
[Tab]
使用Tab键来进行命令补全,Tab键一般键盘是在字母Q旁边,这个技巧带来的最大的好处就是如果忘记某个命令的全称时可以只输入它的开头的一部分然后按下Tab键就可以得到提示或者帮助完成。
[Ctrl+c]
当终端里出现了无法预料的情况时,可以使用Ctrl+c键来强行终止当前程序(但它并不会使终端退出)。
其他一些常用快捷键
按键 作用
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home键
Ctrl+e 将光标移至输入行末,相当于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
4.使用通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
Shell 常用通配符:
字符 含义
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[!list] 匹配 除list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串
{c2..c2} 匹配 c1-c2 中全部字符 如{1..10}
用户及文件权限管理
1.创建用户
su,su- 与 sudo:su 可以切换到用户user,执行时需要输入目标用户的密码,sudo 可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码。su - 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
2.查看所属用户组
方法一:使用groups命令
方法二:查看/etc/group文件,如:$ cat /etc/group | sort
这里 cat 命令用于读取指定文件的内容并打印到终端输出; | sort 表示将读取的文本进行一个字典排序再输出
3.将其他用户加入用户组
$ su shiyanlou # 此处需要输入shiyanlou用户密码,可以点击右侧工具栏中的“SSH直连”查看
$ groups sjy
$ sudo usermod -G sudo sjy
$ groups sjy
4.删除用户
$ sudo deluser sjy --remove-home
Linux 目录结构及文件基本操作
1.Linux 目录结构
FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等;第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。
2.目录路径
使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
绝对路径
关于绝对路径,简单地说就是以根"/"目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local
/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
相对路径
相对路径,也就是相对于当前的目录的路径,相对路径是以当前目录 . 为起点,以所要到的目录为终点,表现形式如
:usr/local/bin (这里假设当前目录为根目录)。注意表示相对路径实际并没有加上表示当前目录的那个 . ,而
是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的;如果是当前目录的上一级目
录,则需要使用 .. ,比如当前目录为“home”目录,根目录就应该表示为 ../../ ,表示上一级目录("home"目录)
的上一级目录("/"目录)。
二、Linux 文件的基本操作
1.新建
新建空白文件:使用touch命令
新建目录:使用 mkdir(make directories)命令
2.复制
复制文件:使用cp命令
复制目录:使用cp -r或者cp -R命令
3.删除
删除文件:使用rm命令(强制删除:使用rm -f命令)
删除目录:使用rm -r或者rm -R命令
4.移动文件与文件重命名
移动文件:使用mv命令(mv 源目录文件 目的目录)
重命名文件:使用mv命令(mv 旧的文件名 新的文件名)
5.查看文件
使用cat,tac和nl命令:cat和tac这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示(cat
-n可以显示行号),tac倒序显示;nl命令,添加行号并打印,这是个比cat -n更专业的行号打印命令。
6.查看文件类型
使用file命令
7.编辑文件
使用vimtutor命令
环境变量与文件查找
1.变量
使用declare命令创建变量;
使用=号赋值运算符为变量赋值;
使用echo命令和$符号读取变量的值;
如图所示:
2.文件查找(见上文中核心命令)
文件打包与解压缩
使用zip打包文件夹;
使用-e参数创建加密压缩包;
使用unzip命令解压缩zip文件;
实验作业截图
教材学习中的问题和解决过程
问题:为什么当前目录为“home”目录,根目录就应该表示为 ../../ ?
解决过程:未解决,因为“home”目录为根目录的子目录,我认为应该表示为 ../ ,虽然反复看了实验内容,但还是没有理解,通过上网百度也没有查到相关解释。
心得体会
本周开始正式学习Linux,通过实验楼熟悉了各种命令,发现有了上学期对java的学习经验,再学习Linux不会觉得无从下手了,并且通过完成实验作业,我体会到了Linux这套操作系统的有趣与特别。这周虽然练习使用了一些核心命令,但是还没有完全掌握,还需要以后多用多练,希望以后我也能继续保持这份热情,好好学Linux。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 30篇 | 300小时 | |
第一周 | 0/0 | 1/2 | 25/40 | 学习了Linux基础知识和核心命令 |