Linux基础命令和原理总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础命令和原理总结相关的知识,希望对你有一定的参考价值。

参考技术A 作为一个程序员或者测试开发人员,我们在进行项目部署和运维时,经常会用到一些linux命令,可是这些命令老是忘记,每次用到的时候都要去谷歌百度,很是麻烦!这不,为了自己使用方便,对常见的linux命令, SHELL, VIM, Linux性能调优和linux kernel的总结,以便在用到时能够快速地找到相关命令,同时有需要的朋友也可以参考搜藏该篇文章!文章对讲到的每个命令都有详细的参数解释,并且给出一些常用例子,因此也非常适合用来学习!

shell(命令解释器)自带的命令称为内部命令,其它的是外部命令
内部命令使用help帮助:help cd
外部命令使用help帮助:ls --help
type命令:用于区分是内部命令还是外部命令:

ls is aliased to `ls --color=auto' #外部命令

cd is a shell builtin #内部命令
pwd命令:显示当前目录
ls命令:查看目录和文件名称
ls -l 查看目录各个字段含义

第一字段:首字母代表的是文件类型 ,其中"-"为普通文件、"d"为目录文件、"c"为字符设备文件、"b"为块设备文件、"p"为管道文件、"l"为链接文件、"s"为socket文件。“rwx”分别代表拥有读、写和执行权限,"-代表无对应权限。三个"rwx"依次代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。
第二字段:文件硬连接数量
第三字段:文件拥有者
第四字段:文件拥有者所在组
第五字段:文件大小(以字节为单位)
第六字段:文件最后更改时间
第七字段:文件名(若为链接文件则追加显示其链接的原文件的路径)

ls命令其它参数含义:
-a显示隐藏文件(.开头的文件)
-r逆序排序
-t按照时间顺序显示
-R递归显示
ls -lartR : 按照时间顺序倒序显示所有文件及其文件夹的文件

cd命令:更改当前的工作目录
cd /path/... 绝对路径
cd ./path/... 相对路径(./可以省略)
cd ../path/... 相对路径

mkdir -p 递归目录:递归创建目录

rmdir命令:删除目录
rmdir a/b/c/d/e/ #删除空目录
rm -r a/b/c/d/ #递归删除目录,但是系统会做多次询问
rm -rf a/b/c/d/ #删除目录,不做任何询问

cp命令:复制文件和目录
-r 复制目录
-p 保留用户、权限、时间等文件属性

mv命令:移动文件和重命名
mv *.log 目标目录

通配符:
*匹配任何字符串
?匹配一个字符串
[xyz]任何一个字符串
[a-z]匹配一个范围

cat命令:文本内容显示到终端

head命令:查看文件开头
head -3 文件名称 #显示文件开头3行

tail命令:查看文件末尾
tail -3 文件名称 #显示文件末尾3行
tail常用参数-f,文件内容更新后,同步显示更新的文件信息
tail -f 文件名称

wc命令:统计文件内容信息
wc 文件名称

useradd命令:新建用户
useradd 用户名

userdel命令:删除用户
userdel 用户名 用户所在的家目录不会被删除
userdel -r 用户名 用户相关的所有配置都会被删除

passwd命令:修改用户密码
passwd 用户名

usermod命令:修改用户属性

/etc/passwd文件:查看用户文件
tail /etc/passwd

/etc/shadow文件:查看用户密码
tail /etc/shadow

groupadd命令:添加用户组
groupadd 用户组

groupdel命令:删除用户组
groupdel 用户组

用户切换
su 用户名 切换用户,但是用户所在环境不变,即pwd路径不会变化
su - 用户名 切换用户,同时会切换到用户家目录,即/home/用户名

sudo命令:普通用户需要执行root用户权限的解决方案。

以下是一些常用命令汇总;The following table provides a reminder of most of the commands that we have covered so far. If you include the three, as-yet-unmentioned, commands in the last column, then you will probably be able to achieve >95% of everything that you will ever want to do in Unix (remember, you can use the man command to find out more about top , ps , and kill ). The power comes from how you can use combinations of these commands.

-c 'cc-address' -b 'bcc-address'
'to-address' | Command to send email | | mail -s "Subject"
to-address < Filename` | Command to send email with attachment |

File Permission commands

Hope this Linux reference guide helps you!

希望这些常用的命令和系统原理,以及linux操作可以帮助大家提升linux命令和操作!!!

20145322 《信息安全系统设计基础》课程总结

#20145322 《信息安全系统设计基础》课程总结

每周作业链接汇总

第零周 预习课程知识,安装环境

第一周 Linux 目录结构及一些基本的linux操作和命令

第二周 

学习内容

熟悉Linux系统下的开发环境

熟悉vi的基本操作

熟悉gcc编译器的基本原理

熟练使用gcc编译器的常用选项

熟练使用gdb调试技术

熟悉makefile基本原理及语法规范

掌握静态库和动态库的生成与调用方法

理解C程序中模块的概仿,模块分解的“高内聚,低耦合”的原则

了解链接的概念

 

第三周 

学习内容

理解二进制在计算机中的重要地位

掌握布尔运算在C语言中的应用

理解有符号整数、无符号整数、浮点数的表示

理解补码的重要性

能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞

进一步理解“信息=位+上下文”

 

第五周

学习内容

理解逆向的概念

掌握X86汇编基础,能够阅读(反)汇编代码

了解ISA(指令集体系结构)

理解函数调用栈帧的概念,并能用GDB进行调试

 

 

第五周续

 

第六周

学习内容

了解ISA抽象的作用

掌握ISA,并能举一反三学习其他体系结构

了解流水线和实现方式

 

第六周续

 

第七周 

学习内容

了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)

理解局部性原理

理解缓存思想

理解局部性原理和缓存思想在存储层次结构中的应用

高速缓存的原理和应用

 

第七周续

 

第八周

学习内容

复习 Linux常用命令

复习 教材1-7章

 

期中总结

 

第九周

学习内容

掌握系统编程和系统调用的概念

掌握系统编程错误处理的方式

掌握Unix/Linux系统级I/O:open close read write seek stat

掌握RIO

掌握I/O重定向的方法

 

第九周续

 

第十周

学习内容

掌握系统编程和系统调用的概念

掌握系统编程错误处理的方式

掌握Unix/Linux系统级I/O:open close read write seek stat

掌握RIO

掌握I/O重定向的方法

 

第十一周

学习内容

了解异常及其种类

理解进程和并发的概念

掌握进程创建和控制的系统调用及函数使用

理解数组指针、指针数组、函数指针、指针函数的区别

理解信号机制:kill,alarm,signal,sigaction

掌握管道和I/O重定向:pipe, dup, dup2

 

第十二周

学习内容

第九周代码检查

第十周代码检查

第十一周代码检查

 

第十三周

学习内容

掌握三种并发的方式:进程、线程、I/O多路复用

掌握线程控制及相关系统调用

掌握线程同步互斥及相关系统调用

 

第十四周

学习内容

理解虚拟存储器的概念和作用

理解地址翻译的概念

理解存储器映射

掌握动态存储器分配的方法

理解垃圾收集的概念

了解C语言中与存储器有关的错误

 

实验报告链接汇总

实验一

 

实验二

 

实验三

 

实验四

 

实验五

 

 

代码托管链接和二维码

截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果:

 

代码量汇总

 

代码驱动的学习做到没有?

按照老师的指导去完成了代码驱动的学习任务,但是一定要把自己的ubuntu。vmx文件保管好,不要误删了,不然全部git又得重新弄一遍,我就装了两次虚拟机。

加点代码,改点代码是理解的最好方式,谈谈你的心得

能够在原有的代码基础上加改代码并且能成功运行,这说明已经掌握了原有的代码。而且这样的学习方式对此代码更加印象深刻。

实践上有什么经验教训

当天任务当天完成,拖泥带水只会越拖越累,因为我们无法预知下一秒会遇到什么问题,之前的问题不解决只会成为后面的累赘。

回答一下第0周作业中自己提出的总题

第一章

什么原因促使我们必须了解编译系统是如何工作的?

1 优化程序性能

2 理解链接时出现的错误

3 避免安全漏洞

第二章

计算机算数运算怎么引发计算机的安全漏洞?

P53 函数getpeername的安全漏洞里讲到,还有例如有符号数转无符号数的隐式转换,也会导致漏洞。

第三章

机器级代码是如何转换的?

例如

汇编C语言的代码用:gcc -01 -S xxx.c

汇编并编译:gcc -01 -c xxx.c

第四章

处理器的体系结构

各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理

 

第五章

怎样优化程序?需要注意哪些方面?

消除循环的低效率;减少过程调用和消除不必要的存储器引用,在第五章里有详细说明。

第六章

存储器的结构

第七章

静态链接和动态链接有何区别?

静态链接

在生成可执行文件的时候,把所有需要的函数的二进制代码都包含到可执行文件中去。链接器需要知道参与链接的目标文件需要哪些函数,同时也要知道每个目标文件都能提供什么函数,这样链接器才能知道是不是每个目标文件所需要的函数都能正确地链接。

动态链接

 在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库可执行代码,最终达到运行时连接的目的。

第八章

如何回避并处理异常?

通过异常表,进行间接过程调用,到达异常处理程序。

第九章

虚拟存储器的作用

虚拟存储器中运用了虚拟内存技术,拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑会自动调用硬盘来充当内存。

第十章

系统级的I\\O是什么意思?

在主存和外部设备之间拷贝数据的过程。

第十一章

十一:如何编写一个Web服务器

Web服务器使用HTTP协议和它们的客户端彼此通信的。浏览器向服务器请求静态或者动态的内容。对静态内容的请求是通过从服务器磁盘取得文件并把它返回给客户端来服务的。

你有什么项目被加分,谈谈你的经验

GDB调试堆栈过程分析

 

优缺点

优点就是能把我们学习任务分的很清楚,我们不会混淆,跟着老师的进度走很顺利的学习。没有缺点,老是这么负责认而且效率这么高,我认为没有缺点。

课程收获与不足

这门课我学到最重要的一点是在每周的开始把自己一门科目的学习任务定好了,然后在本周内必须学完,这样既能提前计划好学习进度又不能落下,是个很好的学习方法。对于写博客这块,我感觉书上的学习内容写在博客园上,一方面复习了自己学习的知识,另一方面还可以在周一的考试中忘了那一块知识点的时候能迅速找到答案。不足就是自己在开学的时候没好好学,欠下了学习的债,后面还的很辛苦,并且学习状态不稳定,还是得调整学习心态,在学习的时候屏蔽掉无关紧要的事情,专心学习。

给学弟学妹的学习建议

真的真的不要欠债,欠自己学习的债,不但不能让自己轻松,反而更累,大家都是学生,来上学,欠下的总要还的,所以一定要紧跟老师的指导步骤,甚至提前预习。

多动手,多思考。尤其多动手,加改代码,可以让自己更加深刻地理解代码。

作息一定要规律,不然哪能每次都集中注意力学习,要不然就会学的时间特别多完了还学不到多少知识,就是学不进去的意思(深有体会)

问卷调查

你平均每周投入到本课程多长时间?

20个小时

每周的学习效率有提高吗?

端正学习态度之后效率高了

学习效果自己满意吗?

不满意,很多时候精力不集中

课程结束后会继续一周至少一篇博客吗?

写的话一定是自己觉得必须用博客记录。

你觉得这门课老师应该继续做哪一件事情?

每周博客总结以及测试,还有扇贝打卡!

你觉得这门课老师应该停止做哪一件事情?

没有

你觉得这门课老师应该开始做什么新的事情?

对我们要求做您推荐的书的笔记,可加分

 

本文链接

以上是关于Linux基础命令和原理总结的主要内容,如果未能解决你的问题,请参考以下文章

linux20190519

Linux基础命令总结

linux 基础知识总结-----基本命令

四十一Linux基础命令,用户管理和文件系统总结

Linux 基础命令总结案列

20145322 《信息安全系统设计基础》课程总结