shell:
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口,bash
内部命令和外部命令
命令的本质:一个个程序
内部命令:
1内部命令和 bash 软件是一体的,bash 中集成了很多命令
2没有独立的文件
3不用独立安装
4直接运行在内存中,无需加载
外部命令:
1不在bash软件中,有独立的执行文件
2需要额外安装
3系统需要知道命令文件的位置才可以运行
系统规定了几个文件夹,如果你的命令在这几个文件夹中,那么是不需要写路径的
echo$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
cd 外部(磁盘) 内部(内存)
ls 是否是第一次运行:
如果是第一次运行:先判断是外部还是内部,如果是内部直接执行,外部去规定的路径去找到执行,找不到直接报错
不是第一次运行:先判断是内部还是外部,如果是内部直接执行,如果是外部去查缓存,按照缓存提示去找到执行,找不到直接报错
如果执行一个命令报错,命令未找到:
1 没有安装该命令 软件
2 hash缓存有误,清理hash表
3 不在指定的路径下,需要使用绝对路径,或者将命令复制到规定文件夹下
命令
命令字(空格)选项(空格)参数
命令名:你执行任务,需要挑选相对应的命令
选项:修饰加强命令
参数:对谁使用该命令 1文件 2文件夹 3用户名
选项的类型
1 -字母
2 --完整字母
tab 和 ctrl
tab 补全 (如果你的命令唯一,直接补全 如果你的命令不唯一,会显示全部)
ctrl + l 清空
ctrl + c 停止命令
上下键 回看命令
ctrl + r 搜索执行过的命令
补全的对象是命令或文件名
内部命令
echo$PATH
linux 根下的目录结构
bin:普通用户使用命令
sbin:只有超级管理员可以使用的命令
etc:配置文件 对所有用户有效
mnt:挂载点
opt:放第三方软件的
boot:存放开机启动文件,linux内核
dev:存放硬件 磁盘 光驱
var/log:存放日志
proc:显示内存中的详细信息
root:超级管理员的家目录
家目录:每一个用户都会有家目录, 放用户个性化配置的地方只对当前用户
绝对路径和相对路径:
路径的作用:描述这个文件在系统中的位置
绝对路径:从根开始描述文件的位置 一定不会找错
相对路径:从当前文件夹开始描述文件的位置 有可能出错
文件类型
属主 属组 其他
1代表文件的连接个数,硬连接
第一个root:文件的拥有者
第二个root:文件的拥有组
0或17 文件的大小
时间是文件的最后一次使用时间
123或opt是文件名
颜色表示的文件类型
黑色:数据文件
绿色:可执行文件
黄色:块设备文件硬件设备(硬盘)
红色:压缩包
蓝色:文件夹
天蓝色:连接文件(快捷方式)
硬链接和软链接:
硬链接:多了一种找到文件的方法,无法对文件夹做链接
ln 源文件(绝对路径)硬链接上
软链接:快捷方式,指明了源文件在什么位置
ln -s 源文件(绝对路径)软链接
硬链接和软链接的区别 :
通配符:
*任意长度的字符
?代表单个字符
p* 以p开头
*conf 以conf结尾
*conf * 包含conf的文件名
反斜杠\ 转义符,原来的意思
[[:alnum:]] 任意数字和字母
alias 自定义命令 = ' 原始命令 '
自定义命令:尽量不要使用原有的命令
cd:
cd . 当前文件夹
cd .. 当前文件家的上级目录
cd ~ 当前用户的家目录
cd - 回到上一次所在的目录
ls:
ls (list) : 显示所有的文件
-l 长格式显示 ls -l = ll
ls -a : 显示隐藏文件( 包括 . 和 . . )
ls -A : 显示隐藏文件( 不包括 . 和 . . )
ls -h : 人性化显示 加单位
ls -d :只显示目录的属性
ls -R : 递归显示所有目录
ls -t :按时间顺序显示
ls -S : 按文件大小排序
ls -r :倒序排序
ls -i :显示文件的inode号 是有限的 唯一的
du :
磁盘使用量 在文件夹下使用du可以统计文件占用磁盘的大小
-a 显示所有
-s 显示总和(可统计当前目录总和)
-h 人性化显示(加单位)
-d 数字 显示层级
( 注意 a 和 s 不可以同时使用 )
磁盘是一块设备
du 看到的不是文件的真实大小,而是该文件占用了磁盘的具体空间,不满4k 按4k算
ll 看到的是文件的真实大小
硬盘满了怎么处理 使用du命令查找,占用量较大的文件夹或文件 然后确认,是垃圾或者无用文件可以将其删除
mkdir:
建立文件夹(可以建立多个)
mkdir 选项 文件夹的名字
-p 递归建立
-v 显示过程
0
touch:
建立文件(可建立多个)
touch 选项 文件名
文件名已存在 刷新文件的时间
文件名不存在 新建文件
cp
复制
cp 选项 源文件 存放点/可以改名也可以不改名
-i 提醒覆盖
-f 不提醒强制覆盖
-r 递归复制 复制文件夹一定要加
-p 保持权限复制
-a 更强大的保留权限,可以替代 -r 和 -p
mv:
移动或改名(移动并改名)
mv 源文件 目的地
源文件不改变路径就是改名
源文件改变路径就是移动
也可以移动并且修改名字
rm:
删除
一般用 rm -rf
-f 强制
-i 交互
-r 递归
pwd:
显示当前文件目录
查找命令:
which 命令(常用的外部命令)
查找命令的位置
locate
-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
find 范围 条件表达式 处理动作
范围:你要找的文件范围,不写就是默认在当前文件夹
条件表达式:选项 表达式,描述你要找的文件
处理动作:对找到的文件进行处理(删除,复制,移动,显示)
条件表达式
按时间查找: -mtime +是大于 -是小于
查找空文件: -empty
处理动作
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-delete:删除查找到的文件,慎用
-exec 命令 {} ; :对查找到的每个文件执行指定的命令
-ok 命令 {} ; :对查找到的每个文件执行指定的命令,询问用户是否继续
{} : 用于引用查找到的文件名称自身
组合条件
与:-a (默认多个条件是与关系 -a 可以省略)
或:-o
非:-not
cat:
显示命令
-n 显示行号包括空行
-b 跳过空白行编号
-s 将所有的连续的多个空行替换为一个空行(压缩成一个空行)
-A 显示隐藏字符
head和tail:
head 查看文件的前十行
head -n 10 文件名 (查看前十行)
head -c 取字符
tail 查看文件的后10行
tail -f 文件名(实时查看)
管道符
命令1的输出结果 | 交给命令2当做参数执行
wc:
wc 文件 :行数 单词个数 字节数 文件名
-l 统计行数
-w 统计单词个数
-c 统计字节数
通配符:匹配文件名字(ls find) [a-z] 除了大Z
正则表达式:匹配文章中的内容(grep) [a-z] 都是小写字母
grep:
过滤文本中你感兴趣的内容
grep 选项 "匹配式" 文件名或标准输入
选项:
-i 忽略字符大小写
-n 显示行号
-v 反向匹配
-o 只显示匹配的内容
-r 递归匹配,可以跟文件夹
-w 只匹配单词
-f 已文件作为匹配的条件 两个文件找相同
表示位置:
^ 表示以什么字符开头 就写在最开头
$ 表示以什么字符结尾 就写在最后面
^$ 空行
^root$ 这一行只有root这四个字符
grep ''^$'' 空行
grep -v ''^$'' 非空行
grep -v ''^#'' 不是以#号开头的行
合并文件和拆分文件:
合并文件:paste
上下合并:cat 文件a 文件b > 新文件名
左右合并 paste 文件a 文件b > 新文件名
paste -d 指定分隔符
重定向
标准输出重定向:本来输出在屏幕上的内容,改变了输出方向,输出到了文件中
拆分文件:split
tar
归档
tar 选项 自定义压缩包名字 要压缩的文件
-c 建立归档文件
-f 代表使用归档
-x 解压缩
v 显示过程,解压和压缩
-C 指定解压的文件夹
j 调用bzip2压缩
z 调用gzip压缩
t 不解包的情况下查看里面的文件列表
tar -f 加了- f必须要放在最后,否则无法执行
tar -f 不加- 选项随便