《信息安全系统设计基础》第1周学习总结
20145336张子扬 《信息安全系统设计基础》第1周学习总结
教材学习内容总结
在linux中快捷键:
- CTRL+ALT+T:打开终端,天天使用终端,用鼠标打开太低效了
- CTRL+SHIFT+T:新建标签页,编程时有重要应用
- ALT+数字N:终端中切换到第N个标签页,编程时有重要应用
- Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成
- 上下键盘:切换命令历史,刚输入一个很长的命令,按上键就可以恢复
- CTRL+C:中断程序运行
- Ctrl+Z: 将当前程序放到后台运行,恢复到前台为命令fg
- Ctrl+A: 将光标移至输入行头,相当于Home键
- Ctrl+E: 将光标移至输入行末,相当于End键
- Ctrl+K: 删除从光标所在位置到行末
在linux命令行中,命令格式一般为:
command [options] [arguments] //命令 【选项】(可选)【参数】(可选)
ls命令:显示当前文件夹的文件
ls.命令:这里.是一个参数,指当前文件,和命令有所冲突,语句和ls是一样的效果
ls -a .命令:显示当前文件夹所有文件包括隐藏文件和目录
如果你想创建多个文件
$ touch love_{1..10}_linux.txt
查找时可以使用*和?来代替未知或者忘记的字符
man
在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。
在man的手册中一般包括以下及部分内容
- name(名称):该命令或函数的名称,接着是一行简介
- synopsis(概要):对于命令,正式的描述它如何运行,以及需要什么样的命令行参数。对于函数,介绍函数所需的参数,以及哪个头文件包含该函数的定义。
- description(说明):命令或者函数功能的文本描述
- examples(示例):常用的示例
- see also(参见):相关的命令或者函数列表
查找到后你可以使用n键切换到下一个关键字所在处,shift+n为上一个关键字所在处。使用Space(空格键)翻页,Enter(回车键)向下滚动一行,或者使用j,k(vim编辑器的移动键)进行向前向后滚动一行。按下h键为显示使用帮助(因为man使用less作为阅读器,实为less工具的帮助),按下q退出,如果想获得更详细的帮助,可以使用info命令。如果只想查看某个具体参数的作用,可以使用--help。
man -k:可以帮助我们学习代码,像是一个搜索引擎。可以结合man -k key|grep来实现关键词查找。man -k等价于apropos。man -f cmd可以查看命令的基本功能,等同于whatis。
cheat
cheat命令可以提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
它比man命令提供的信息更加简单,但是同样更加易懂,用实例来告诉你这一条命令应该如何使用。
cheat命令在linux里并没有安装,需要自己安装
find
find命令可以查找一个文件在系统的位置
locate
locate是神速版的find
grep
grep可以对全文件进行全文检索,比如寻找main函数在那个文件中,可以通过grep -n main*.c,快速找到main在那个c文件中并指出第几行。
whreris和whicd
whereis和which命令可以快速找到文件安装的位置
我对linux自带的firefox浏览器进行了实验操作:
apt-cache
apt-cache可以在使用apt-get install安装一个程序时先找软件源库中是否有这个程序
用户的创建
可以使用who am i来查找当前的用户
如果你想要新建一个用户,可以使用sudo adduser xxx来进行创建新用户
查看etc/group文件
使用 cat /etc/group | sort
使用 cat /etc/group | grep -E "shiyanlou"只显示与实验楼相关的信息
etc文件格式说明
groupname:password:GID:userlist
将其它用户加入sudo用户组
使用usermod命令将用户添加入用户组,但需要root权限
su shiyanlou(输入用户的密码)
groups zzy
sudo usermod -G sudo zzy
groups zzy
删除用户
sudo deluser zzy --remove-home
linux查看文件权限
https://dn-anything-about-doc.qbox.me/linux_base/3-10.png/logoblackfont
文件权限
cat <file name>之类的命令读取某个文件的内容
一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件
链接数:链接到该文件所在的 inode 结点的文件名数目
文件大小:以inode结点大小为单位表示文件的大小,给ls加上 -lh参数来更直接的查看文件的大小
ls -A 显示当前目录和上一级目录下所有文件包含隐藏文件,在linux中开头为.的文件为隐藏文件
ls -dl<目录名> 显示该目录的完整属性
ls -AsSh 用比较简介的形式展现
变更文件所有者,将在zzy下的xxx变更到shiyanlou
cd /home/zzy
ls xxx
sudo chown shiyanlou xxx
cp xxx home/shiyanlou
Linux 目录结构及文件基本操作
1、Linux 的文件组织目录结构。
Linux 是以树形目录结构的形式来构建整个系统的,虽然目录存储和系统内核都是在磁盘里,但是磁盘是挂载(这里的挂载是什么意思)在目录上的
linux中大部分目录结构是规定好了(FHS 标准)
fhs标准
fhs定义了两层规范:第一层是/下面的各个目录应该放置什么样的文件规范,例如:/etc应该放置设置文件,/bin和/sbin则应该放置可执行文件
第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登陆文件,/usr/share放置共享数据等等。
2、相对路径和绝对路径。
绝对路劲:是以根"/"目录为起点的完整路径,以你所要到的目录为终点。例如:/usr/local/bin
相对路径:是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点。例如:usr/local/bin
3、对文件的移动、复制、重命名、编辑等操作。
Linux 文件的基本操作
touch:创建空白文件,主要是用来更改时间戳的,但是在不加任何参数的条件下,只指定一个用户名,可以创建一个空白文件
mkdir xx:创建一个名为“xx”的目录
mkdir -p father/son/grandson:可以创建一个多级目录
cp xx father/son/grandson:将xx文件复制到father/son/grandson中
cp -r father family:将这个目录整个复制到family中
rm xx:删除文件,前提是要在这个目录下
rm -f xx:强制删除
rm -r xx:删除目录
mv file1 Documents:将文件移动到目的文件夹中
mv file1 myfile:更改名字
批量命名:rename,需要用到正则表达式
cat xx:显示文件,
cat -n xx:显示行号
tac:倒叙显示 tac:正序显示 nl:添加行号并打印(这样打开方式只能用鼠标滚轮来翻页)
more xx:打开文件,可以使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出。(这种显示只能向下滚动,怎么向上滚动啊)
tail和head:只显示头和尾 -n <紧跟行数> -f 动态不停的读取某个文件的内容并显示,起到实时监视的作用
file命令查看类型
环境变量与文件查找
declear可以声明一个变量,使用=号赋值运算符为变量赋值。
读取变量的值,使用echo命令和$符号($符号用于表示引用一个变量的值)
三种环境变量
1. 当前 Shell 进程私有用户自定义变量
2. Shell 本身内建的变量
3. 从自定义变量导出的环境变量
教材学习中的问题和解决过程
在一开始使用vmware虚拟机时,更新了虚拟机,不知为何虚拟机奔溃了
在网上寻找了原因,需要在安装目录文件中删去三个文件,虚拟机回复正常
课后作业中的问题和解决过程
在使用man命令时,man 手册的内容很多,涉及了 Linux 使用过程中的方方面面,为了便于查找,是做了分册(分区段)处理的,在Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为8个区段,安排如下:
我在命令行中尝试了一下man printf,man 1 printf
,man 3 printf
:
实现banner的安装
banner是一个可以输出图形字符的linux命令,但使用之前需要先安装
$ sudo apt-get update
$ sudo apt-get install sysvbanner
其他(感悟、思考等,可选)
第一次接触linux系统,带给我的新奇的感觉,新奇的是它带个用户不同于windows系统的体验。在windows系统中,用户可以通过键盘,鼠标在图形界面上进行操作。但在linux系统中,我们更多的是使用键盘输入在命令行中完成对计算机的操作,不再依赖于图形化界面。这种模式对于用户来说更难掌握,需要更加丰富的知识才能进行操作,同样当你熟练运用linux后,它的效率也会比windows系统高很多的。
在linux系统中都是使用命令行输入命令对计算机进行操作,在命令行中基本是纯英语的,由于我英语水平不高,有些命令行的提示还得去百度,很尴尬。
我觉得刚开始学一门新知识都是比较费劲的,应为你不仅要去学习相对应的知识,还要去适应它的 学习方法。学习linux我觉得对于每一条命令,动手去操作,了解它的用途,对应的参数,每种选项有什么效果,就像学英语要像先记单词一样。而老师建议我们去熟练掌握man方法,cheat方法就是让我们掌握查字典的方法。久而久之,我们就能够掌握自主学习的方法。
本周进度有点慢,因为在准备复习,在下周要加快进度,多动手操作。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | ||
---|---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | ||
第一周 | / | 1/2 | 19/20 | ||