目录
一.Linux系统的组成
(一) 内核
(二) shell
二.目录结构
三.目录管理
四.文件管理
(一)目录管理
(二)查看文件内容
(三)创建文件
(四)删除文件
(五)移动文件
(六)复制文件
五.编辑文件内容
(一)命令模式
(二)插入模式
(三)视图模式
(四)视图块模式
(五)末行模式
六,系统信息查看与修改
(一)主机名
(二)时间查看
(三)显示输出系统信息 uname
(四)文件的详细属性查看
(五)连接文件 in
(六)生成指定容量的文件 dd
(七)查找
(八)容量
(九)数量 wc
(十)过滤 grep
总结
(1)进程管理:在 Linux 中,所有运行的程序都是作为进程来执行的,内核负责创建、调度、管理和终止进程。
(2)存储管理:Linux 内核管理物理内存、虚拟内存、交换空间等存储资源,并提供对它们的分配、回收和访问控制等功能。
(3)文件系统:Linux 内核通过文件系统提供对文件和目录的管理和访问。它支持多种文件系统类型,包括 ext4、Btrfs、XFS、NTFS 等。
(4)网络协议栈:Linux 内核支持常见的网络协议,如 TCP/IP、UDP、HTTP 等,提供了套接字(socket)API,方便应用程序进行网络通信。
(5)设备驱动程序:Linux 内核通过设备驱动程序实现对硬件设备的管理和操作。它支持多种设备类型,包括网络设备、磁盘驱动器、声卡、USB 设备等。
(6)系统调用接口:Linux 内核通过系统调用接口向用户态程序暴露其功能和服务。应用程序可以通过系统调用接口请求内核提供各种服务。
Shell是一种命令语言解释器,是一种在操作系统中直接与用户交互的程序。它通过读取用户输入的命令,并将其翻译成操作系统能够理解的语言来实现与操作系统交互,并将输出结果显示给用户。Shell可以简化命令和任务的执行,提高效率和自动化程度。
(三)用户操作或应用程序
(四)基本构成
(1)用户态:Shell是一种命令语言解释器,是一种在操作系统中直接与用户交互的程序。它通过读取用户输入的命令,并将其翻译成操作系统能够理解的语言来实现与操作系统交互,并将输出结果显示给用户。Shell可以简化命令和任务的执行,提高效率和自动化程度。
(2)内核态:内核态下的程序运行在更高的特权级别下,可以访问系统所有资源和硬件设备,执行更高特权级别的指令,负责处理操作系统的各种核心服务。当一个进程需要使用系统资源或者进行系统调用时,需要切换到内核态执行相关代码,并经由内核态完成后再次返回用户态。切换模式的开销比较大,因此尽量减少用户态和内核态之间的频繁切换是提高系统性能的一个关键点。
/root root用户的家目录
/home 普通用户家目录的存储目录
/etc 系统及应用程序的配置文件的默认存放目录
/usr
(1) local 自定义安装的应用程序存储目录
(2)bin 存储所有用户都有权限操作的命令
(3)sbin 存储只有管理员有权限操作的命令
/sbin /usr/sbin的连接文件
/bin /usr/bin的连接文件
/dev 设备文件存储目录
/proc 设备信息文件及内核配置文件存储目录
/run 进程PID及相关文件存储目录
/var
(1) log 系统及硬件或程序日志存储目录
(2)spool mail 用户邮件存储目录
(3)cache 缓存存放目录
(4)run 是/run的连接文件
/lib 32位依赖库
/lib64 64位依赖库
/boot 内核文件及启动信息文件存储目录
/sys 操作系统及硬件相关信息及日志、状态等文件的存储目录
/mnt 测试挂载的空目录
/opt 一般会将拷贝的文件放置此目录
/media 外部媒体设备默认挂载目录
(一)切换目录
cd 返回当前登录用户的家目录
cd.. 返回上级目录
cd~ 返回当前登录用户的家目录
cd- 返回上次跳转到当前的目录的目录
cd /path 查看指定目录的内容
(二)查看目录内容
ls 查看当前目录内容
ls /path 查看指定目录内容
ls的选项
(1)-l 以长格式选项显示目录内容
(2)-t 按照时间戳排序,与-l结合使用
(3)-a 显示所有隐藏文件
隐藏文件以.开始
(4)-A 显示除.和..之外的隐藏文件
(5)-R 递归显示目录内容
(6)-h 以人性化方式显示
(7)-r 翻转排列,可以与-t结合使用
(8)-d 查看目录本身,一般与-l结合使用
(三)创建目录
mkdir
命令:mkdir /path/dirname
选项:-p 递归创建目录
mkdir -p dirname/child _dirname
(四)删除目录
rm
选项 -i 交互式询问是否操作
-r 递归删除目录及子文件
-f 强制删除
(五)别名命令
查看系统所有别名 alias
创建别名 alias 自定义命令字=‘系统命令 选项’
取消别名 unalias 自定义命令字=‘系统命令 选项’
(六)移动目录
重命名
当前目录从命名 mv old_dirname new_dirname
移动后重命名 mv /source_path/old_dirname /dest_path/new_pathdirname
移动 move /source_path/dirname /dest_path/
(七)复制目录
cp
选项
-i 当目标文件已存在时,交互式询问是否操作
-r 递归复制目录及子目录
-p 保留属主及属组权限复制目录
-f 当目标文件存在,先删除后复制
(1)切换目录
切换目录
cd 返回当前登录用户的家目录
cd .. 返回上级目录
cd ~ 返回当前登录用户的家目录
cd - 返回上次跳转到当前目录的目录
cd /path 切换到指定目录
(2)查看目录内容
ls 查看当前目录内容
ls /path 查看指定目录内容
ls的选项
-l 以长格式选项显示目录内容
-h 以人性化方式显示
-a 显示所有隐藏文件
隐藏文件以.开始
-A 显示除.和..之外的隐藏文件
-R 递归显示目录内容
-t 按照时间戳排序,与-l结合使用
默认降序
-r 翻转排列,可以与-t结合使用
-d 查看目录本身,一般与-l结合使用
(2)创建目录
mkdir
mkdir /path/dirName
选项 -p 递归创建目录 mkdir -p dirName/child_dirName
(3)删除目录
rm
选项 -i 交互式询问是否操作
-r 递归删除目录及子目录
-f 强制删除
(4)别名名称
查看系统所有别名 alias
创建别名 alias 自定义命令字='系统命令 选项'
取消别名 unalias 自定义命令字
(5)移动目录
重命名
当前目录重命名 mv old_dirName new_dirName
移动后重命名 mv /source_path/old_dirName /dest_path/dirName
移动 mv /source_path/dirName /dest_path/
(6)复制目录
cp
选项
-i 当目标文件已存在时,交互式询问是否操作
-r 递归复制目录及子目录
-p 保留属主及属组权限复制目录
-f 当目标文件存在,先删除后复制
(1)cat
将文件内容直接打印到终端(标准输出)
选项 -n 显示行号
(2)more 将文件内容分页显示到终端
用法 enter 向下翻行
空格 向下翻页
退出 q
缺点 只能向下,不能向上 不支持查找
(3)less
将文件内容分页显示到终端
用法 翻行 enter 方向键
翻页 空格 pgup pgdn
返回文件首页 g home键
跳转到文件末尾 G end键
根据关键字查找 /关键字 n向下查找 N向上查找
退出 q
(4)head
显示文件内容的前几行
默认显示前10行
选项
-n 要显示的行数
- 要显示的行数
(5)tail
显示文件内容的后几行
默认显示10行
选项
-n 要显示的行数
-要显示的行数
-f 动态显示文件内容
监视文件内容的变化
应用场景 动态监视日志
(6)管道符
| 将前一个命令处理的结果交给后一个命令进行再次处理
touch 空文件 touch /path/fileName
重定向符号
正确重定向
> 覆盖
>> 追加
错误重定向
2> 覆盖
2>> 追加
混合重定向
&> 覆盖
&>> 追加
echo
非空文件
echo > /path/fileName
echo 内容 > /path/fileName
vim
默认空文件
vim /path/fileName
:wq!
rm 选项
-i 交互式询问是否操作
-f 强制删除
重命名
当前目录重命名
mv old_fileName new_fileName
移动后重命名
mv /source_path/old_fileName /dest_path/fileName
移动
mv /source_path/fileName /dest_path/
cp
选项
-i 当目标文件已存在时,交互式询问是否操作
-p 保留属主及属组权限复制文件
-f 当目标文件存在,先删除后复制
vim 模式类型
vim进入文件的初始模式
用法 跳转到文件末尾 G
返回文件首行 gg
同行跳转
跳到首字符 home键 ctrl + ^
跳到尾字符 end键 ctrl + $
复制行
单行 yy
多行 要复制的行数yy
从光标所在行开始
粘贴行
p 将光标移动到想要粘贴位置的上一行
P 将光标移动到想要粘贴位置的下一行
撤销操作 u 注意:进行保存且退出后无效
删除行
单行 dd
多行 要删除的行数dd
从光标所在行开始
同行删除部分字段 D 从光标所在字符到行尾
替换某一个字符 r 光标所在字符
删除单个字符 del键 光标所在字符的后一个字符
根据关键字查找 /关键字 n向下查找 N向上查找
保存且退出 ZZ
进入其他模式 插入模式 末行模式
进行文件内容编辑
进入插入模式
在命令模式下输入
a 在当前光标的后一个字符插入
o 在当前光标的下一行插入
i 在当前光标所在字符插入
返回命令模式时会将光标迁移一个字符
A 在光标所在行的尾字符后插入
I(大写i) 在光标所在行的首字符插入
O 在当前光标的上一行插入
返回命令模式 ESC
进行行选中
v
进行列选中
ctrl + v
注释 #
常用操作
批量删除注释 ctrl + v
利用上下方向键选中
del
批量增加注释
ctrl + v
利用上下方向键选中
输入 大写i I
输入#
按两次ESC
保存、退出及字符串替换 :
操作
保存 :w
不保存退出 :q
保存退出 :wq :x
强制 !
设置密码并保存退出 :X 输入密码 :wq
取消密码 :X enter 回车两次 :wq
设置行号 :set nu 退出后失效
取消行号 :set nonu
取消高亮 :nohl
跳转到指定行 :行号
字符串匹配替换
全文替换
首个匹配替换
:%s/keyword/neword/
所有匹配替换
:%s/keyword/neword/g
指定行替换
首个匹配替换
:指定行号s/keyword/neword/
所有匹配替换
:指定行号s/keyword/neword/g
范围替换
首个匹配替换
:起始行号,结束行号s/keyword/neword/
所有匹配替换
:起始行号,结束行号s/keyword/neword/g
(1) 临时修改,重启失效 hostname new_hostname
刷新 bash
(2) 永久修改
命令 hostnamectl set-hostname new_hostname
刷新 bash
配置文件 vim /etc/hostname(重启生效)
(1)date(系统时间)
应用场景 为文件添加时间戳
语法 date [选项] [+格式]
格式 %Y 年
%m 月
%d 日
%H 小时
%M 分钟
%S 秒
创建带有时间戳的文件
touch `date +%Y%m%d%H%M%S`_test.txt
反撇号 `` 调用命令的执行结果
(2)hwclock(硬件时间)
bios中的时间
主板的bios电池
应用场景:查看主机名 查看内核版本 查看32 64位平台
选项: -a 显示所有信息
-n 查看主机名
-r查看内核版本
stat 作用:查看时间戳 查看数字权限
应用场景:命令优化
语法:ln [-s] /path/sourceFile /path/destnationFile
选项:-s 生成软连接
类型:软连接
硬连接
软连接:目录文件都可以,相当于快捷方式,属性变化,修改一方,内容同步,源文件删除或移动,连接文件不可用
硬连接:不能是目录,属性完全一样,修改一方内容同步,原文件删除或移动,连接文件不受影响
语法:dd if=从哪个文件读取数据 of=将数据写到哪里 bs=每次写入的数据大小 count=总共写几次
案例:dd if=/dev/zero of=./txt5 bs=1mb count=5
(1) find:
概述 :查看满足一定条件的目录内容 默认递归查找
语法: find path 条件选项 关键字
选项:
(2) -name
按照名字查找
支持模糊匹配
案例:
查找/etc/所有以.conf结尾的文件
find /etc -name '*.conf'
* 表示所有
(3)-type
文件类型
f 普通文件
d 目录
b 块设备文件
c 字符设备文件
l 软连接文件
(4)-size
单位 : k 千字节
符号: 没有 等于
+ 大于
- 小于
案例: 查找容量小于1024KB的文件 find ./ -size -1024k
(5)-user
(6)-group
(7)时间:
-amin -atime -mmin -mtime -cmin -ctime
du 统计文件占用磁盘的大小
语法: du [-ash] [文件名或目录]
选项: -a 统计所有
概述:输出文件中的行数、单词数、字节数
应用场景: 日志文件的行数 用户数量
选项: -l 行数
(1)概述: 打印匹配给定模式的行
应用场景:过滤错误日志 过滤配置文件
注意事项:先分析需要过滤的文件特征 总结过滤式需要的关键字
(2)选项:-n 在结果中显示行号
-i 结果中忽略大小写
-v 反向显示
(3)基础正则表达式:*表示所有 ^以后面字符开头 $以后面字符结尾
(4)案例
1,过滤错误日志并显示行号
/var/log/messages
grep -n “error” /var/log/messages
2,过滤MySQL数据库的配置文件,只看生效的配置
/etc/my.cnf
配置文件的注释 # ^#
配置文件的空行 ^$
grep -v "^#" /etc/my.cnf |grep -v "^$"
Linux目录结构与文件管理有以下几个用处:
方便管理:了解Linux的目录结构可以帮助管理员更好地组织和管理文件,使得文件的查找、备份、恢复、迁移等工作更加高效。
提高效率:熟悉Linux的文件管理命令可以提高管理员的工作效率,例如通过使用ls命令查看当前目录下的所有文件和子目录,使用cd命令进入到指定目录等。
安全性:理解Linux的权限系统可以帮助管理员更好地控制用户对文件和目录的访问权限,从而提高系统安全性。
开发调试:在进行软件开发时,了解Linux的目录结构和文件管理方式可以帮助开发人员更好地组织代码和资源,并且在调试过程中也能够快速定位问题所在。