当前位置: 首页 > news >正文

Linux八股文

Linux八股文

第一章 Linux简介

Linux是一种多用户、多任务,支持多线程和多CPU的操作系统,具有免费、稳定、高效的优点,一般运行在大型服务器上。

1.1 常用目录

目录说明
/根目录,有且仅有一个,一般只存放目录
/home家目录,新增用户时,放在此目录下
/root系统管理员root的家目录
/bin/user/bin可执行二进制文件的目录
/etc系统配置文件存放的目录
/media光盘默认挂载点
/tmp一般用户或正在执行的程序临时存放文件的目录
/var存放不断扩充的东西,经常被修改的目录存放在此,包括日志文件

1.2 [root@localhost ~]#

  1. @之前是当前登录用户
  2. localhost是主机名(即开发机的名字)
  3. ~当前所在目录(此时为家目录,而/是根目录)
  4. #是用户表示(#为超级用户,$是普通用户)

1.3 Linux命令写法

命令名 [选项] [参数]
  1. 命令名:功能的单词或缩写
  2. 选项:对命令进行控制,可以省略;格式为-字母-单词字母,并且可以合并(如-a-b可以合并为-ab
  3. 参数:传给命令的参数,可以是0个、1个或多个

第二章 Linux基础命令

2.1 pwd

功能:显示当前用户所在目录

pwd

2.2 ls

功能:

  1. 对于目录:ls将列出该目录下所有子目录与文件
  2. 对于文件:ls将列出文件名及其他信息
ls [选项] [目录或文件]
选项说明
-a查看当前目录下的文件,包括隐藏文件
-l长格式显示文件
-lh以方便阅读的长格式显示

2.3 cd

功能:改变工作目录,将当前工作目录改变到指定目录下

cd [目录名]
命令说明
cd ..返回上一级目录
cd ../..返回上两级目录
cd ~返回家目录
cd /切换根目录
cd /home/chaopro/data绝对路径
cd ./data相对路径

2.4 man

功能:连机查找指令用法

man 指令

2.5 grep

功能:用于查找文件里符合条件的字符串

grep [选项] '字符串' 文件名
选项说明
-a将binaray文件以text文件的方式查找数据
-c计算找到‘查找字符串’的次数
-i忽略大小写
-v反向选择,即显示出没有‘查找字符串’的行

2.6 find

功能:在指定目录下查找文件

find [路径] [选项]
选项说明
-name test查询名为text的文件
-size +100k文件大于100k的文件
-ctime n过去n天被修改过的文件

2.7 chmod

功能:控制用户对文件的权限

chmod [选项] 文件名
选项说明
-r赋予读权限
-w赋予写权限
-x赋予执行权限
777赋予读、写、执行权限(读:4,写:2,执行:1)

说明:(以-rw-r--r-x的权限为645为例)

  • 权限显示位共10位,分为4段,从第2位开始,每3个一组
  1. 第1位为文件类型(-表示普通文件)
  2. 第2-4位为用户权限(rw-:4+2=6)
  3. 第5-7位为用户所属组权限(r--:4)
  4. 第8-10位为其他用户权限(r-x:4+1=5)

2.8 ps

功能:用来列出当前正在运行的进程

ps [选项]
选项说明
-A列出所有进程(!)
-ef查看全格式的所有进程(!)
-w显示加宽可以显示较多资讯
-au显示较详细的咨询
-aux显示所有包含其他使用者的进程

2.9 kill

功能:用于删除执行中的程序或工作

kill [选项]/[信号] 进程号
选项说明
-l列出全部的信息名称
-s指定要送出的信息
信号说明
-1(HUP)重新加载进程
-9(KILL)杀死进程
-15(TERM)正常停止一个进程

2.10 tail

功能:查看测试项目的日志:一般测试项目中有log目录文件会存放xxx.out文件,可以用tail -f动态实时查看日志

tail [选项] 文件名
选项说明
-f实时读取
-1000查看最近1000行日志

例子

tail -f /opt/usr/log/momenta/mff_main_node.log.(⾃动补全Tab键) | grep -i objectdisp

2.11 netstat命令

功能:查看端口

netstat -anp | grep 端口-a,显示所有
-n,不用别名显示,只用数字显示
-p,显示进程号和进程名

2.12 data

功能: 查看当前系统时间

data

2.13 ping

功能:检测是否与主机连通

ping ip地址

2.14 如何查未知命令

man 命令名
命令 -help
info cat 命令名
whatis 命令名
上网查

第三章 文件操作命令

3.1 mkdir

功能:创建空目录

mkdir [选项] [路径] 文件名
选项说明
-p层级创建
-v显示创建顺序

3.2 rmdir

功能:删除空目录,但不能删除非空目录,也不能删除文件

rmdir [选项] [路径] 目录名
选项说明
-p子目录被删除后,如果父目录也变成空目录的话就连带父目录删除

3.3 touch

功能:新建空文件

touch [路径] 文件名

3.4 rm

功能:删除文件或目录

rm [选项] 文件名
选项说明
-f强制删除
-r多级删除
-rf强制删除给定目录下所有文件和目录

rm和rmdir的区别:

  • rmdir只能删除空目录,不能删除文件
  • rm带上选项-r可以删除非空目录

3.5 mv

功能:移动文件

mv [选项] [路径] 旧文件名 [新路径] [新文件名]
选项说明
-f如果目标文件已存在,不会询问直接覆盖
-i如果目标文件存在,会询问是否覆盖

3.6 cp

功能:复制文件或目录

cp [选项] [路径] 旧文件名 [新路径] [新文件名]
选项说明
-f或–force强制复制,无论目标文件或目录是否存在
-i或–interactive覆盖前会询问
-r递归处理,将指定目录下的文件与子目录一并处理,若源文件或目录的形态不属于目录或符号连接,则一律视为普通文件处理
-R或–recursive递归处理,将指定目录下的文件与子目录一并处理

3.7 cat

功能:查看目标文件的内容

cat [选项] 文件名
选项说明
-b对非空输出行编号
-n对输出的所有行编号
-s不输出多行空行

3.8 tar

选项说明
-c–create 建立新的备份文件;
-C–directory= 切换到指定的目录;
-f–file= 指定备份文件(注意:-f 是最后的参数,只能接文件名);
-r–append 新增文件到已存在的备份文件的结尾部分;
-u–update 仅置换较备份文件内的文件更新的文件;
-v–verbose 显示指令执行过程;
-x–extract或–get 从备份文件中还原文件;
-z–gzip或–ungzip 通过gzip指令处理备份文件;
tar -xvf file.tar //解压 tar包tar -xzvf file.tar.gz //解压tar.gztar -xjvf file.tar.bz2   //解压 tar.bz2tar -xZvf file.tar.Z   //解压tar.Zunrar e file.rar //解压rarunzip file.zip //解压zip

第四章 vim使用教程

4.1 vim三种模式

  1. 命令模式:删除、复制、粘贴
  2. 编辑模式:编辑文本内容
  3. 末行模式:保存、退出

4.2 vim三种打开方式

// 1.常规打开:vim ⽂件路径
vim mff_config.json// 2.打开时定位到指定行:vim +行数 文件路径
vim +3 mff_config.json// 3.打开时⾼亮关键词:vim +/关键词 文件路径
vim +/is_hnp_switch_ignore mff_config.json 

4.3 命令模式

打开文件后默认即为命令模式,从其他模式切换回命令模式按Esc

1、移动光标(光标高亮部分表示位于前⼀个字符的后面)

操作说明
h或←光标左移1个单位
l或→光标右移1个单位
k或↑光标上移1个单位
j或↓光标下移1个单位
shift+6光标移动到行首
shift+4光标移动到行尾
gg光标移动到首行头
G光标移动到尾行头

2、搜索替换

操作说明
/字符串+回车向下搜索指定字符串
n继续向下搜索
?字符串+回车向上搜索指定字符串
N继续向上搜索
:%s/word1/word2/g将文件中的word1替换成word2
:%s/word1/word2/gc将文件中的word1替换成word2,需要用户确认

3、删除复制粘贴

操作说明
x删除后⼀个字符
X删除前⼀个字符
dd剪切一行
yy复制一行
p粘贴到下一行
P粘贴到上一行
u撤回

4.4 编辑模式

操作说明
i输⼊模式,左下角显示‒INSTER‒
o在光标下插一行并进入输入模式,左下角显示‒INSTER‒
R取代模式,输入的值会取代光标所在的内容

4.5 末行模式

操作说明
:w保存
:q退出
:wq保存并退出
:q!不保存强制退出
:set nu显示行号
:set nonu不显示行号
:w 文件名将编辑后的内容保存到另⼀个文件中

第五章 GCC/G++编译和GDB调试

5.1 gcc和g++误区

两者都为GNU编译器

  1. 误区一:gcc只能编译c,g++只能编译c++

    • 后缀为.c的,gcc视为c程序,而g++视为c++程序

    • 后缀为.cpp的,gcc和g++都视为c++程序

    • 在编译阶段,gcc命令不能自动和c++程序使用的库链接,通常用g++来完成链接,故为了统一就用g++了

  2. 误区二:gcc不会定__cpluscplus宏,而g++会

    • 如果后缀是.c且用gcc编译则宏是未定义的,其余情况都是定义的(即后缀为.cpp用gcc编译会定义该宏)
  3. 误区三:编译只能用gcc,链接只能用g++

    • 实际上编译可以用gcc/g++,链接可以用g++或者gcc -lstdc++

5.2 编译指令

gcc test.c -E -o test.i  // 该操作为预处理,即将源文件的头文件展开,通过-E进行预处理,其中-o是命名操作
gcc test.i -S -o test.s  // 该操作为编译,即将预处理后的源代码变成汇编,通过-S进行编译
gcc test.s -C -o test.o  // 该操作为汇编,即将汇编代码变为机器码(0、1)
gcc test.c  // 直接获得最后的out文件,其实经历了上面三个步骤。默认生成的文件名为a.out
./a.out  // 运行该out程序

5.3 Makefile

  1. Makefile的特点

    • Makefile文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 文件就像一个 Shell 脚本一样,也可以执行操作系统的命令

    • Makefile文件一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

  2. 命名

    • 文件命名为makefileMakefile,使用vim打开上述文件并进行编辑(注意不用新建这个文件,直接vim即可)
    vim Makefile
    
  3. 书写方法

  • 常规编写方法与案例(编写完成并保存后,在shell中输入make就可以运行Makefile文件)
目标:依赖命令
app:sub.c add.c mult.c div.c main.cgcc sub.c add.c mult.c div.c main.c -o app
  • 如果依赖存在则执行;如果不存在,则向下检查其他规则,检查有没有规则是用来形成依赖的,如果找到了则执行(如下代码)。
  • Makefile中的其它规则一般都是为第一条规则服务的,make默认执行第一条规则,如果下面的规则和第一条规则无关则不会执行
app:sub.o add.o mult.o div.o main.ogcc sub.o add.o mult.o div.o main.o -o appsub.o:sub.cgcc -c sub.c -o sub.oadd.o:add.cgcc -c add.c -o add.omult.o:mult.cgcc -c mult.c -o mult.odiv.o:div.cgcc -c  div.c -o div.omain.o:main.cgcc -c  main.c -o main.o
  • 变量的使用

    • %通配符,匹配一个字符串,例如:

    • 自定义变量:变量名=变量值,例如var=hello

    • 预定义变量(已经定义好了)

变量名变量值
CCgcc
CXXg++
#定义变量
src=sub.o add.o mult.o div.o main.o
target=app$(target):$(src)$(CC) $(src) -o $(target)sub.o:sub.cgcc -c sub.c -o sub.oadd.o:add.cgcc -c add.c -o add.omult.o:mult.cgcc -c mult.c -o mult.odiv.o:div.cgcc -c  div.c -o div.omain.o:main.cgcc -c  main.c -o main.o

5.4 GDB调试

  1. 调试前
  • 编译时一定要打开调试选项(-g),其作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证 gdb 能找到源文件(即源文件与可执行文件在一个文件夹下)
gcc -g program.c -o program
  1. 启动、退出、查看代码
  • 启动:gdb 可执行程序,退出:quit/q
  • 给程序设置参数:set args 10 20, 获取设置参数:show args
  • 查看当前文件代码:list(按enter默认执行上一条命令)
list/l  (默认位置即从main函数的第1行显示到第10行)list/l 行号   (该行号显示在正中间)
list/l 函数名   (该函数显示在中间)
  • 查看其他文件代码
list/l 文件名:行号
list/l 文件名:函数名
  • 查看/设置list行数
show list/listsize
set list/listszie 行数
  1. 断点操作
  • 设置断点(将断点设置在这一行的开始,即程序走到这里,该还还未执行)
break/b 行号
break/b 函数名
break/b 文件名:行号
break/b 文件名:函数名
  • 查看断点信息
info/i break/b
  • 删除断点
delete/del/d 断点编号,编号在断点信息的Num字段
  • 设置断点无效/有效
disable 断点编号,这条命令可从查看断点信息的Enb字段查看
enable 断点编号
  • 设置条件断点(一般是循环位置)
break/b 10 if i==5,即在第10行加条件断点
  1. 调试命令
  • 运行
start 程序会停在第一行,不会继续执行
run 遇到断点才停,如果没有断点则一次性执行完,经常使用run而非start
  • 继续运行,直到下一个断点
c/continue
  • 向下执行一行(不会进入函数体)
n/next
  • 变量操作
p/print 变量名(打印变量值)
ptype 变量名(打印变量类型)
  • 向下单步调试(遇到函数进入函数体)
s/step(不同于n)
finish(跳出函数体,前提是函数体中无断点)until (跳出循环,前提是循环中无断点)
  • 自动变量设置
display 变量名(自动打印指定变量的值)
i/info display 查看自己设置的自动变量
undisplay 编号,删除自动变量

相关文章:

Linux八股文

Linux八股文 第一章 Linux简介 Linux是一种多用户、多任务,支持多线程和多CPU的操作系统,具有免费、稳定、高效的优点,一般运行在大型服务器上。 1.1 常用目录 目录说明/根目录,有且仅有一个,一般只存放目录/home家目…...

SPASS-偏相关分析

基本概念 偏相关分析的任务就是在研究两个变量之间的线性相关关系时控制可能对其产生影响的变量,这种相关系数称为偏相关系数。偏相关系数的数值和简单相关系数的数值常常是不同的,在计算简单相关系数时,所有其他自变量不予考虑。 统计原理 控制一个变量和控制两个变量的偏…...

第二证券:今日投资前瞻:小米汽车引关注 全球风光有望持续高速发展

昨日,两市股指盘中轰动上扬,深成指、创业板指一度涨超1%。到收盘,沪指涨0.55%报3072.83点,深成指涨0.72%报10077.96点,创业板指涨0.53%报2015.36点,北证50指数涨2.64%;两市算计成交9900亿元&…...

Docker中的RabbitMQ已经启动运行,但是管理界面打不开

文章目录 前言一、解决方法方法一方法二 总结 前言 肯定有好多小伙伴在学习RabbitMQ的过程中,发现镜像运行,但是我的管理界面怎么进不去,或者说我第一天可以进去,怎么第二天进不去了,为什么每次重新打开虚拟机都进不去…...

自动化网络图软件

由于 IT 系统的发展、最近向混合劳动力的转变、不断变化的客户需求以及其他原因,网络监控变得更加复杂。IT 管理员需要毫不费力地可视化整个网络基础设施,通过获得对网络的可见性,可以轻松发现模式、主动排除故障、确保关键设备可用性等。 为…...

如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

MyScale 是一款完全托管于亚马逊云科技,支持 SQL 的高效向量数据库。MyScale 的优势在于,它在提供与专用向量数据库相匹敌甚至优于的性能的同时,还支持完整的 SQL 语法。在这篇文章中,我们将阐述 MyScale 是如何借助亚马逊云科技的…...

《轻松入门!快速安装PyCharm,打造高效Python编程环境》

「Pycharm安装包和相关插件(Windows 64位)」https://www.aliyundrive.com/s/jByv6vjShVz 提取码: 1234 视频教程:https://www.douyin.com/video/7303106933521763596?previous_pageapp_code_link 第一步:找到一起下载的Pycharm安…...

Golang环境搭建Win10(简洁版)

Golang环境搭建Win10 Golang环境搭建(Win10)一、前言二、Golang下载三、配置环境变量3.1、配置GOROOT3.2、配置GOPATH3.3、配置GOPROXY代理 Golang环境搭建(Win10) 一、前言 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken…...

【算法每日一练]-分块(保姆级教程 篇1)POJ3648

插讲一下分块 题目:(POJ 3648) 一个简单的整数问题 前缀和往往用于静态的不会修改的区间和。遇到经常修改的区间问题,就要用分块或线段树来维护了。 分块算法是优化后的暴力,分块算法有时可以维护一些线段树维护不了的…...

【华为OD题库-026】通过软盘拷贝文件-java

题目 有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究。但此电脑除了有一个3.5寸软盘驱动器以外,没有任何手段可以将文件拷贝出来,而且只有一张软盘可以使用。因此这一张软盘是唯一可以用来拷贝文件的载体。科学家想要尽可能多地将计算…...

定量数据和定性数据

定量数据本质上是数值,应该是衡量某样东西的数量。 定性数据本质上是类别,应该是描述某样东西的性质。 全部的数据列如下,其中既有定性列也有定量列; import pandas as pdpd.options.display.max_columns None pd.set_option(e…...

【Linux】:体系结构与进程概念

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux体系结构和进程的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入…...

react-router-dom 版本6.18.0中NavLink的api和属性介绍

React Router 是一个基于 React 的路由库,它可以帮助我们在 React 应用中实现页面的切换和路由的管理。而 NavLink 则是 React Router 中的一个组件,它可以帮助我们实现导航栏的样式设置和路由跳转。 在 React Router 版本6.18.0 中,NavLink…...

八叉树(Octree)和KD树区别?2d tree与3d tree区别?

一、八叉树(Octree)和KD树 八叉树(Octree) 结构:八叉树是一种用于三维空间数据的树状结构,每个分支节点恰好有八个子节点。每个节点代表空间中的一个立方体区域,这个立方体区域被均匀地分割成…...

Union(联合体、共用体)

结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。 结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能…...

C++11的互斥包装器

文章目录 1. 为何要引入互斥包装器?2. lock_guard3. unique_lock4. 两者之间的不同5. 总结 1. 为何要引入互斥包装器? 在C多线程中会经常用到mutex,在使用的时候lock后,有时候会忘记使用unlock进行解锁造成死锁,或者在…...

HR应用在线人才测评,给企业招聘带来的好处

一、什么是人才测评? 人才测评是指运用一系列的科学方法,对人的基本素质,专业能力,心理健康,性格进行选拔,评价及发展人才的一种科学方法。近十多年,它被广泛运用于国有大型企业的人才招聘和人…...

深入了解百度爬虫工作原理

在当今数字化时代,互联网已经成为人们获取信息的主要渠道之一。而搜索引擎作为互联网上最重要的工具之一,扮演着连接用户与海量信息的桥梁角色。然而,我们是否曾经好奇过当我们在搜索引擎中输入关键词并点击搜索按钮后,究竟是如何…...

【C语言基础】分享近期学习到的volatile关键字、__NOP__()函数以及# #if 1 #endif

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...

docker容器自启动

场景 当服务器关机重启后,docker容器每次都要去docker start 容器id 怎么可以下次让它自启动呢? 解决 先 # docker ps -a 查到之前启动过的容器id # docker update --restartalways 容器id重启后,reboot,就不用再单独去启动容…...

【C++】:模板的使用

目录 1、泛型编程 2、函数模板 2.1、函数模板概念 2.2、函数模板格式 2.3、函数模板的原理 2.4、函数模板的实例化 2.6、模板参数的匹配原则 3、类模板 3.1、 类模板的定义格式 3.2、 类模板的实例化 4、非类型模板参数 5、模板的特化 5.1、函数模板特化 5.2、类模…...

Springboot框架中使用 Redis + Lua 脚本进行限流功能

Springboot框架中使用 Redis Lua 脚本进行限流功能 限流是一种用于控制系统资源利用率或确保服务质量的策略。在Web应用中,限流通常用于控制接口请求的频率,防止过多的请求导致系统负载过大或者防止恶意攻击。 什么是限流? 限流是一种通过…...

【nlp】2.5(cpu version) 人名分类器实战项目(对比RNN、LSTM、GRU模型)

人名分类器实战项目 0 项目说明1 案例介绍2 案例步骤2.1 导入必备的工具包2.2 数据预处理2.2.1 获取常用的字符数量2.2.2 国家名种类数和个数2.2.3 读数据到python环境中2.2.4 构建数据源NameClassDataset2.2.5 构建迭代器遍历数据2.3 构建RNN及其变体模型2.3.1 构建RNN模型2.3…...

记录基于scapy构造ClientHello报文的尝试

最近有个需求就是用scapy构造https的client hello报文,由用户指定servername构造对应的报文。网上对于此的资料甚少,有的也是怎么去解析https报文,但是对于如果构造基本上没有找到相关的资料。 一直觉得最好的老师就是Python的help功能和dir功…...

程序设计实践学习笔记

第1题 题目描述 创建一个返回四舍五入到最接近整数的分数之和的函数。在矩阵中有每行的第一个数字表示分子,第二个数子表示分母,挑战者需要将该分数的结果进行四舍五入并将矩阵中所有分数结果总和进行返回。 输入输出格式 输入格式 数字 N 表示的是矩阵的行数。…...

Ubuntu中apt-get update显示域名解析失败

第一步 检查主机->虚拟机能否ping成功 ping 红色框中的IPv4地址 能通,表示虚拟机ip配置成功;否则,需要先配置虚拟机ip 第二步 检查是否能ping成功百度网址 ping www.baidu.com 若不成功,可能原因 虚拟机没联网,打开火狐浏览器…...

go学习之简单项目

项目 文章目录 项目1.项目开发流程图2.家庭收支记账软件项目2)项目代码实现3)具体功能实现 3.客户信息管理系统1)项目需求说明2)界面设计3)项目框架图4)流程5)完成显示客户列表的功能6&#xff…...

代码随想录二刷 | 数组 | 总结篇

代码随想录二刷 | 数组 | 总结篇 基础知识二分查找移除元素有序数组的平方长度最小的数组最小覆盖子串螺旋数组 基础知识 定义:数组是存放在连续内存空间上的相同类型数据的集合 特点: 数组下标从 0 开始数组内存空间的地址是连…...

go test 命令详解

文章目录 1.简介2.test flag3.test/binary flags4.常用选项5.示例参考文献 1.简介 go test 是 Go 用来执行测试函数(test function)、基准函数(benchmark function)和示例函数(example function)的命令。 …...

【Mysql学习笔记】1 - Mysql入门

一、Mysql5.7安装配置 下载后会得到zip 安装文件解压的路径最好不要有中文和空格这里我解压到 D:\hspmysql\mysql-5.7.19-winx64 目录下 【根据自己的情况来指定目录,尽量选择空间大的盘】 添加环境变量 : 电脑-属性-高级系统设置-环境变量,在Path 环境变量增加mysq…...