2020-2021-1 20209320 《Linux内核原理与分析》第一周作业
总结与思考
1.用户及文件权限管理
1.1 修改文件权限方法
mode法 格式:chmod who opt per file
数字法 格式:chmod XXX file
1.2 set,env,export的区别
env 这是一个工具,或者说一个Linux命令,显示用户的环境变量。
set 显示用户的局部变量和用户环境变量。
export 显示导出成用户变量的shell局部变量,并显示变量的属性;就是显示由局部变量导出成环境变量的那些变量 (比如可以 export WWC导出一个环境变量,也可通过 declare -X LCY导出一个环境变量)
declare 跟set一样,显示用户的shell变量 (局部变量和环境变量)
1.3linux权限s权限和t权限
s权限: 设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份. 典型的文件是passwd 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码。
t权限:要删除一个文档,不一定要有这个文档的写权限,但一定要有这个文档的上级目录的写权限。也就是说,即使没有一个文档的写权限,但有这个文档的上级目录的写权限,也能够把这个文档给删除,而假如没有一个目录的写权限,也就不能在这个目录下创建文档。
2.文件基本操作
- 新建文件:touch test
- 新建目录:mkdir mydir mkdir -p father/son/grandson
- 复制目录:cp test father/son/grandson 要成功复制目录需要加上 -r 或者 -R 参数,表示递归复制
- 删除文件:使用 rm(remove files or directories)命令删除一个文件,可以使用 -f 参数强制删除,要删除一个目录,也需要加上 -r 或 -R 参数,遇到权限不足删除不了的目录也可以和删除文件一样加上 -f 参数。
- 移动文件:使用 mv(move or rename files)命令移动文件(剪切)。命令格式是 mv 源目录文件 目的目录
- 重命名文件:mv 命令除了能移动文件外,还能给文件重命名。命令格式为 mv 旧的文件名 新的文件名
- 批量重命名:使用通配符批量创建 5 个文件:touch file{1..5}.txt
批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文
件:rename 's/.txt/.c/' *.txt- 查看文件: 使用 cat,tac 和 nl 命令查看文件,加上 -n 参数显示行号,使用 more 和 less 命令分页查看文件,使用 head 和 tail 命令查看文件只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行.
3. 文件打包与压缩
3.1 zip压缩打包
- cd /home/shiyanlou
zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
du -h shiyanlou.zip
file shiyanlou.zip
-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向
屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用 du
命令查看打包后文件的大小 - 使用 -e 参数可以创建加密压缩包
zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou/Desktop - 将 shiyanlou.zip 解压到当前目录:unzip shiyanlou.zip
将文件解压到指定目录:unzip -q shiyanlou.zip -d ziptest
创建一个 tar 包 tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop
解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):
mkdir tardir
tar -xf shiyanlou.tar -C tardir
只查看不解包文件 -t 参数:tar -tf shiyanlou.tar
4. 文件系统操作与磁盘管理
- df 命令查看磁盘的容量 加-h易读
du 命令查看目录的容量 只查看 1 级目录的信息du -h -d 0 ~ - 创建虚拟硬盘
dd 命令从标准输入读入用户的输入到标准输出或者一个文件中
dd if=/dev/stdin of=/dev/stdout bs=10 count=1
5. 帮助命令
5.1 help命令
help 命令只能用于显示内建命令的帮助信息,ls --help
5.2 man命令
5.3 info命令
查看 ls 命令的 info ,info ls 空格翻页
6. crontab
crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell 脚本。
- 添加一个计划任务:crontab -e
- 查看我们添加了哪些任务:crontab -l
- 查看到执行任务命令之后在日志中的信息反馈:sudo tail -f
/var/log/syslog - 删除任务:crontab -r
7. 命令执行顺序控制与管道
7.1 顺序执行多条命令
简单的顺序执行你可以使用 ; 来完成
7.2 管道
- 试用:ls -al /etc | less
通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看 - cut 命令,打印每一行的某一字段
打印 /etc/passwd 文件中以 : 为分隔符的第 1 个字段和第 6 个字段分别表
示用户名和其家目录:ut /etc/passwd -d ':' -f 1,6 - grep 命令,在文本中或 stdin 中查找匹配字符串
grep 命令的一般形式为:grep [命令选项]... 用于匹配的表达式 [文件]...
-r 参数表示递归搜索子目录中的文件,-n 表示打印匹配项行号,-I 表示忽略二进制文件. - wc 命令,简单小巧的计数工具
行数:wc -l /etc/passwd ;单词数:wc -w /etc/passwd;
字节数:wc -c /etc/passwd;字符数:wc -m /etc/passwd;
最长行字节数:wc -L /etc/passwd
结合管道来操作一下,下面统计 /etc 下面所有目录数:
ls -dl /etc/*/ | wc -l - sort命令
默认为字典排序: cat /etc/passwd | sort
反转排序:cat /etc/passwd | sort -r
按特定字段排序:cat /etc/passwd | sort -t':' -k 3 - uniq 去重命令
过滤重复行: history | cut -c 8- | cut -d ' ' -f 1 | uniq
8. 简单的文本处理
8.1 tr命令
- tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。
- -d:删除和 set1 匹配的字符,注意不是全词匹配也不是按字符顺序匹配
- -s:去除 set1 指定的在输入文本中连续并重复的字符
8.2 col命令
- col 命令可以将Tab换成对等数量的空格键,或反转这个操作。
- -x:将Tab转换为空格
- -h:将空格转换为Tab(默认选项)
8.3 join命令
- 用于将两个文件中包含相同内容的那一行合并在一起。
- -t:指定分隔符,默认为空格
- -i:忽略大小写的差异
- -1:指明第一个文件要用哪个字段来对比,默认对比第一个字段
- -2:指明第二个文件要用哪个字段来对比,默认对比第一个字段
8.4 paste命令
- paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
- -d:指定合并的分隔符,默认为 Tab
- -s:不合并到一行,每个文件为一行
9. 数据流重定向
- 0 /dev/stdin 标准输入
- 1 /dev/stdout 标准输出
- 2 /dev/stderr 标准错误
- 将一个文件作为命令的输入,标准输出作为命令的输出:
cat Documents/test.c - 将 echo 命令通过管道传过来的数据作为 cat 命令的输入,将标准输出作为命
令的输出:echo 'hi' | cat - 将 echo 命令的输出从默认的标准输出重定向到一个普通文件:
echo 'hello shiyanlou' > redirect
cat redirect