目录
Linux的基础
Linux的哲学思想
-
一切都是一个文件。(包括硬件,文本,二进制,源代码)
-
系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
-
当遇到复杂任务,通过不同功能用途的程序组合起来完成。
-
避免令人困惑的用户界面就是没有复杂的图形界面。
-
连配置文件都存储在文本中,方便增删改查。
-
不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
什么是shell
Linux系统中运行的一种特殊程序
PS:程序是执行特殊命令的一串代码
在用户和内核之间充当“翻译官”
用户登录Linux系统时,自动加载一个Shell程序
Bash是Linux系统中默认使用的Shell程序(Bash是一种程序)
文件位于bin/bash
【1】内核:用于调用计算机硬件资源
【2】shell:将用户指令转换成计算机语言让内核去调用计算机硬件资源
【3】bash是一个文件,linux系统中万物皆文件
【4】bash文件位于/bin/bash
Linux命令的分类
内部命令 | 外部命令 |
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
区别内部命令和外部命令
用type来判别,内部命令只有显示是shell的内嵌
外部命令,有程序所在的路径信息
命令格形式
在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令。
严格来说,命令通常只代表实现某一类功能的程序的名称。
命令字 空格 [选项] 空格 [参数]
释命令字 选项 参数各自的作用
命令字
是整条命令中最关键的一部分 唯一确定一条命令
选项
短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词
参数
命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个
可以隔开命令,执行多个命令
Linux辅助操作
快捷键 | 功能 |
Tab键 | 自动补齐(两次可以显示所有选项) |
反斜杠“\” | 强制换行 |
Ctrl+a | 光标移到最前 |
Ctrl+e或end 键 | 光标移到最后 |
Ctrl+U | 清空至行首不包括当前光标处的字符 |
Ctrl+K | 清空至行尾包括当前光标处的字符 |
Ctrl+w | 从当前光标删除到开头 |
ALT+d | 从当前光标删除末尾 |
Ctrl+l | 清屏 |
Ctrl+c | 取消本次命令编辑 |
Ctrl+s/Ctrl+q | 锁屏/解锁 |
向上下箭头 | 回看执行过的命令 |
Linux获取命令帮助方法
help
查看ls命令怎么用
使用man命令阅读手册页
使用上下箭头滚动一行文本
使用Page UP和Page Down键翻页
按Q或q键退出阅读环境
按“\”键查找内容
info
info也可以查看相关的帮助信息
目录与文件的基本操作
当前的工作目录在/root下
切换到工作目录
cd
命令 | 效果 |
cd cd~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头 | 表示以当前的工作目录作为起点(已点开头的是) |
两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
ls
ls [选项] [文件或目录… ] ls ./ 显示当前目录下的文件和文件夹
命令 | 效果 |
-l | 已长格式显示文件和目录列表 ll=ls -l |
-a | 显示全部包括隐藏文件 |
-A | 显示全部文件和隐藏文件,但不包括.和.. |
-d | 只显示当前目录 |
-h | 友好显示文件大小 |
-R | 递归显示该目录及该目录的子目录下的所有内容 |
--color | 显示颜色 |
-S | 按从大到小排序 |
例:已长格式显示文件和目录列表 ll=ls -l
显示全部包括隐藏文件
颜色表示的文件类型:
黑色数据文件 TXT
绿色 可执行文件
黄色 块设备文件
红色 压缩包
蓝色 文件夹
天蓝色 链接文件(快捷方式)
不同文件的表示
文件类型
- | 普通文件 |
d | 目录文件directory |
l | 链接文件 |
b | 块文件 |
c | 字节文件 |
p | 管道文件 |
s | 套接字文件 |
通配符
符号 | 功能 |
? | 匹配任意一个字符 |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a…z} | a到z |
{A..Z} | A到Z |
[123] | 取其中之一有就显示没有也无所谓 |
[0-9] | 匹配数字范围 |
[a-z] | 范围需要注意 |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhou] | 匹配列表中的所有字符以外的字 |
[[:digit:]] | 任意数字,相当于0-9 |
例:file{1..9} 1到9.txt
* 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
? 匹配任意一个字符
[123] :取其中之一有就显示没有也无所谓
alias
alias 命令别名 = ’命令‘
unalias 别名命令 删除别名
\加别名命令 (显示原始命令)
unalias 别名命令 删除别名
绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)
du
du [选项] [文件或目录… ]
选项 | 说明 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n | 最大显示到第n层 |
注意a s无法同时使用
du -a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
du -as无法同时使用
创建新目录-mkdir
文件名最长255个字节
包括路径在内文件名称最长4095个字节
除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用
mkdir 创建多个文件夹a b c d
递归创建文件夹
yum install tree -y
touch
touch 新文件…(可为空)
touch 不会破坏已有文件 刷新时间
每个文件有三个时间戳:
1.access time 访问时间,atime,读取文件内容
2.modify time 修改时间,mtime,改变文件内容(数据)
3.change time 改变时间,ctime,元数据发生改变(元数据 大小 权限)
刷新时间
硬连接与软连接文件
硬连接
同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问。
软连接 类似于windows里快捷方式,软连接,符号连
ln(link)
ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
对比项 | 硬链接 | 软连接 |
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除新建不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同 | 源文件的路径的长度 |
硬连接的创建及验证
软连接的创建及验证
复制文件或目录-cp
cp(copy)备份
cp [选项]… 源文件 目标 相当改名复制
cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项 | 说明 |
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持原文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份 |
如果已有文件夹会生成子目录
如果对同一个文件连续复制三次,第一次复制 可以改名;第二次复制 将变成改名后的子目录,第三次复制 覆盖了,问是否覆盖
移动 改名
mv [选项] … 源文件或目录… 目标文件或目录 单个文件
rename log log.bak* //所有 log文件改成 log.bak
rename 旧字符 新字符 目标文件
移动目录
重命名
批量改名
删除文件
rm [选项] 要删除的文件或目录
-f | 不提醒,直接强制删除 |
-i | 提醒用户确认 |
-r | 递归(删除目录需要) |
精细查找文件或目录——find
命令的特点:
精确查找
实时查找
支持查找条件较
格式:
查找路径:指定具体目标路径;不指定为默认为当前目录
查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
查找类型 | 关键字 | 说明 |
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 将你的文件已分级的形式查找 |
各表达式之间使用逻辑运算符 “-a”表示 而且(and) “-o”表示 或者(or)
使用通配符“*”及“?”查找
-size:根据目录文件的大小进行查找,一般使用“+”“-”号设置超过或小于指定的大小作为查找条件,常用的单位包括kB(注意k小写)、MB、GB
-size 10M 表示9M到10M 且不包括9M
-size -10M 表示9M以内 包括9M
-size +10M 表示10M以上 不包括 10M
-type:根据文件的类型进行查找,类型指的是普通文件(f)、目录(d)、块设备(b)、字符设备文件(c)、链接(l)
块设备是指成块读取数据的设备,多个字节组合成一块(如硬盘、内存等)而字符设备指的是按单个字符读取数据的设备
-ok COMMAND{}\;对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND{}\;对查找到的每个文件执行由COMMAND指定的命令号:用于引用查找到的文件名称自身
[root@localhost opt]# find -name "*.txt" -ok mv {} /mnt \;
[root@localhost opt]# find -name "*.txt" -exec mv {} /mnt \;
#以“天”为单位
-atime [+|-]#
# #表示[#,#+1)
+# #表示[#+1,∞]
-# #表示[0,#)
-mtime
-ctime
#以“分钟”为单位
-amin
-mmin
-cmin
find -mtime 10
#10天到11天
find -mtime +10
#代表11天以上
find -mtime -10
#10天以内
硬件信息及其他系统信息
lscpu命令可以查看cpu信息
cat/proc/cpuinfo 也可以查看到
查看内存大小
查看内核版本
系统时间
date查看当前系统时间
-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F 完整日期格式,等价于 %Y-%m-%d
% T 时间(24小时制)(hh:mm:ss)
[root@localhost ~]# date -d '-1 day' +%F
前一天
[root@localhost ~]# date +%F
当前日期 yy-mm-dd(年月日)
[root@localhost ~]# date -d '1 day ' +%F-%T
后一天
[root@localhost mnt]# date -d "-3 day"
前三天
[root@localhost mnt]# date -d "+3 day"
后三天