1.一切皆是一个文件
2.系统小型,轻量级
3.避免令人困惑的用户界面,没有复杂的图形界面
4.不在乎有没有后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型
5.免费
分为 root用户和普通用户
root用户:超级管理员,使用权限不受限制,拥有近乎于完整的权限,对系统的损害几乎有无限的能力。除非必要,不要登录root
普通用户:权限有限,造成的伤害有限
root: 当前用户
localhost:当前主机的名字
~:当前所在文件夹 波浪号:当前用户的家目录
#:代表超级管理员
$:普通用户
linux中一切皆文件
linux需要记住文件路径
/ 根是linux系统的起点,最开始的文件夹
文件夹的作用:文件和文件夹
如何使用一个文件
描述路径的方式去打开文件
路径:描述一个文件在系统中的位置
/ 根下的文件夹
挑重点介绍
bin:里面存放二进制文件
二进制文件:系统可以直接运行的文件,并且是普通用户使用的二进制文件
etc:里面存放配置文件
配置文件:系统的用户信息,密码等信息,软件配置等
lib:被调用的库 32位操作系统使用(里面存放 一些功能代码)
lib64:被调用的库 64位操作系统使用
*现在基本上不可能出现32位操作系统,32位最大支持4G内存
dev:存放硬件设备。 典型:磁盘,光驱, 输入(键盘,鼠标)输出(显示器)设备
proc:内存环境的程序现状
boot:开机启动需要的文件,操作系统 最重要的文件是 内核文件,内核在boot文件夹中
mnt:挂载点 空文件夹,经常用到mnt
opt: 空文件夹,存放后天安装的软件
tmp: 存放临时文件
var:子目录 /var/log 日志
home: 普通用户存放家目录的地方,可以称为家目录的上级目录
家目录:每一个用户都有一个家目录,存放用户的基本配置信息及个性化设置,存放用户自己的文档使用一旦你建立了一个用户,会有一个同名的 家目录在home下诞生
root: root用户的家目录存放在root中
usr: 小根 存放一些根里不好存放的东西
Shell是Linux系统中运行的一种特殊程序
程序:执行特定任意的一串代码
操作系统也是程序,他的作用是管理调度硬件
Shell执行什么任务?翻译
将人类使用的高级语言(人话,Java,c++等)翻译成二进制交给内核,内核交给硬件执行
内核:约等于操作系统
无论是 windows用户还是linux用户,一旦登录系统必须加载一个翻译官
linux用户一旦登录系统必须加载一个shell程序,这个程序在/bin/bash(bash是二进制文件)
centos7 默认的shell就是/bin/bash 因为他功能全,tab补全就是bash功能
命令的本质是什么?
ls命令为例:ls命令 是由代码构成 ,其执行的任务就是寻找你当前文件夹的所有文件
ls就是一个程序
所有的命令都是程序
用一个程序必须先安装这个程序
linux中的命令分为 内部 和 外部
内部是自带的命令
外部是后加的命令
type+命令 可以查看命令是内部还是外部命令
enable可以查看所有的内部命令
内部命令是shell(/bin/bash)一部分,只要登录系统,就会自动载入内存,内部命令就可以运行
外部命令是Linux能执行的特定任务的程序,每一个外部命令对应了系统的一个文件,必须知道其位置,由shell加载才能运行
系统中由5个特殊文件夹,你和系统之间由个约定,如果外部命令也在这5个特殊文件夹,就可以直接写程序的名字调用,不用关注文件具体在什么位置
以冒号为分隔符,分别是
/usr/local/sbin /usr/local/bin /usr/sbin /user/bin /root/bin
如果程序不在规定的 这 5 个文件夹 ,就需要将程序的位置 写完整 (从根开始,描述程序的位置)
echo这个命令比较特殊,即属于内部又属于外部
命令的执行过程
首先判断是内部命令还是外部命令,如果是内部命令直接执行。
如果是外部命令,先看缓存空间是否有,如果有按照缓存空间中的位置执行,如果缓存位置中没有,直接报错。如果是第一次执行,去看看那5个文件夹是否有,有直接执行,没有报错。
我打了一个命令,提示不存在?
1.命令打错了
2.命令没有安装
3.命令不在规定的路径
4.运行过命令,但命令的位置发生改变了
命令的格式
命令 空格 [选项] 空格 [对象] (空格必须有,有几个无所谓)
命令: 你要干什么 cp cd。。。(linux区分大小写)
选项: 修饰命令,添加额外的功能(长格式 --单词 短格式 -字母)
选项一般是没有顺序要求,选项可以叠加使用,选项放在对象后面也可以
对象: 对谁做 文件 文件夹 用户名 不写则默认当前文件或文件夹
; 用于分隔命令,一次执行多条命令
编辑Linux命令行的辅助操作
全是/bin/bash的功能
tab:补全 如果唯一,直接补全,如果不唯一,按两次显示所有可能
ctrl+a:光标跳至行首
ctrl+k:从光标处清空到行尾
ctrl+l:清屏 将光标移动到顶行
上下键:回看命令
ctrl+r:输入关键字查询命令,回车再次执行,左键显示在屏幕上
\:强制换行,调整格式
帮助
man info help
man:
man 1(可以省略) 命令 显示命令的用法
man 5 passwd 代表passwd文件的格式
上下 键 一行
空格键 1页
q 退出
/ 关键字 查找关键字 找到以后 n 向下匹配 N 向上匹配
help:
help命令
内部命令使用:
例:help cp
外部命令使用:
例:ls --help
pwd:显示当前所在目录的完整路径
cd:切换目录(文件夹)
cd ~ 代表的意思是 当前用户的家目录
cd 什么也不加,也是当前用户的家目录
cd - 返回上一次目录的所在位置 (只能返回最近的一次,如电视遥控器的返回键)
路径的表示
路径:描述文件在系统的所在位置
绝对路径:从根开始描述文件的位置 有且唯一 无论在哪里都可以准确找到某一个文件
相对路径:从当前路径开始描述文件的位置 有可能不唯一 如果参照物变了,路径也会变
相对路径的表项形式:
1.直接使用目录名或文件名:表示当前工作目录的子目录,文件的位置
2.以一个 . 开头:表示以当前目录作为起点
3.以两个 .. 开头:表示以当前目录的上一级目录(父目录)作为起点
4.以 ~用户名 形式开头:表示以指定用户的宿主目录作为起点
挂载:将系统中的文件夹和磁盘做上关联,使用文件夹就等于使用磁盘
linux 唯一使用外来设备的方式
显示当前文件夹下的所有文件
-l 长格式显示(显示文件属性,详细信息) 等价于 ll
d 文件属性 rwxr-xr-x 权限 2硬链接个数 root 文件的主人 root 属组 6 文件大小
12月 19 14.56 文件的创建/最近一次打开时间 2 文件名
linux 的七大属性:
d 目录 - 普通文件,文本 c 字符设备,一次只能录入一个设备 键盘
b 块设备 硬盘 读写文件的时候,是一整块一整块的读和写
s 套接字 ip 端口号 传递信息 主机A---主机B 系统程序之间
p 管道符 单向 数据只能沿一个方向传输 | 管道
l 软连接 快捷方式 类似于win桌面图标快捷方式
-d 只显示文件夹 ls -ld 只显示目录 不显示 目录下的文件
-a 显示隐藏文件 带 . 的是隐藏文件
-A 显示隐藏文件 不包括 . 和 ..
-R 递归显示 递归:从第一层到最后一层
-r 倒序显示
-t 时间显示 ls - tr 按照时间排序倒序显示(组合选项)
-S 文件大小排序
-i 显示文件的inode号(类似于身份证号码)
-h 人性化显示 加个单位
ls 最好不要直接使用 生产环境中文件可能很庞大,容易死机
通配符的作用:去匹配文件的名字
1. * :代表任意字符的长度 不能显示隐藏文件
例:匹配以p开头的 :p*
匹配以conf结尾 :*conf
包含conf :*conf*
数字开头 :[0-9]*
字母开头 :[a-z]*
2. ?:代表任意一个字符
3.{1..10}:1-10
4.{a-z}:a b c ....z (大写同理)
5.[123](括号里值代表一个字符) 取其中之一有就显示,没有就不显示
6. \ 转义符 表示原来的意思
7.[ a-z] 单个小写字母 范围需要注意
8.[0-9]单个数字 匹配数字范围(0123456789)
9. [[:lower:]] 小写字母表示a-z
10.[[:upper:]] 大写字母表示A-Z
11.[^zhou] 匹配列表中的所有字符以外的字符
12.[[:digit:]] 任意数字,相当于0-9
13.[[:alpha:]] 任意字母
正则表达式的作用:匹配文章中的内容
alias 别名
通式:alias 自定义命令='原始命令'(单引号,双引号无所谓)
显示所有别名:alias
取消别名:unalias+自定义命令
别名的优先级:别名---->内部---->hash---->外部
使用alisa建立的别名是临时的,重启之后就没有了
du :磁盘使用情况
磁盘 块设备 4k
du 默认是全显示
-s 总大小
-a 每个文件的大小
-h 显示文件格式
--max-depth=n(-d 1) 最大显示到第n层
--exclude 不计入统计
a和s不能同时使用
ll看的是文件的 真实大小,du看到的是 文件占了磁盘多少块(4k)一个文件不足4k ,按4k算
5.mkdir
mkdir 创建文件夹
mkdir aa 创建名为aa文件夹
mkdir aa bb cc 一次性创建三个文件夹
mkdir -p 递归建立
mkdir -p aa/bb/cc 建立aa文件夹再aa文件夹下建立bb文件夹,再bb文件夹下建立cc文件夹
mkdir -pv 一次建立多个文件
touch 建立 空文件
touch的作用:1.建立空文件,touch后面跟的文件名不存在
2.刷新文件时间 后面跟的文件已存在
硬连接原理
语法: ln 源文件 目的位置
源文件:一定使用绝对路径
软连接:
语法:ln -s 源文件 目的位置
硬连接和软连接的区别:
注意:删除连接文件夹的时候一定不能 加 /
cp 复制
语法:cp 源文件 目标地址
如果要复制文件夹要加 -r
cp -r 源文件夹 目标位置
cp /etc/passwd /opt/123
复制并改名
保留属性: -p -a(更厉害)
-u:增备 备份每天新增的量
mv:移动或改名
源文件和目标文件路径位置一样,是改名
源文件和目标文件路径位置不一样,是移动 ,也可以是移动就并改名
只能一个一个改名
rm:删除
语法: rm 要删除的文件和目录
-f 强制
-i 交互
-r 递归 (删除目录需要)
如果删除目录空间不释放,有人在使用
查找外部命令: which 命令 或 whereis 命令
which ls
which是在那5个特殊文件夹内找(each$PATH)
查普通文件:locate
优点:快
缺点:1.找的是系统的数据库文件,不具备实时性
2.模糊查找不够精确
3.不是去磁盘上找
locate多用于查找一些 老旧文件
find:查找
缺点:慢,但真的去磁盘上一块一块的给你查找
优点:精确查找
选项多,查找的功能多
命令的使用格式:find 范围 查找条件 处理动作
查找类型:
1.按照名称查找:-name
根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写
2.按照文件大小查找:-size
根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB
3.按照用户名查找:-user
根据文件是否属于目标用户进行查找
4.按照文件类型查找:-type
根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
5.按inode号查找:-inum 根据文件inode号查找
6.按照权限查找:-perm 按照文件权限查找
7.最大搜索目录深度: -maxdepthlevel 将你的文件以分级的形式查找
8.最小搜索目录深度: -mindepthlevel 将你的文件以分级的形式查找
find /etc -maxdepth 2 -mindepth 2
查找 最大为2 最小为2的文件
find实现多个查找条件
1. -a 表示 而且(and)
2. -o 表示 或者(or)
示例:
find /boot -size +1024k -a -name 'vmlinuz'
find /boot -size +1024k -o -name 'vmlinuz'
根据时间戳
找到30天以上, 以log结尾的普通文件 移动到opt目录
find / -name '*log' -type f -mtime +30 -ok mv {} / opt \ ;
-exec mv {} / opt \;
处理动作
-ls 显示详细信息
-delete 删除
-ok 询问是否要操作
-exec 不询问直接操作