目录
一.Linux哲学思想
- 一切都是一个文件。容易看(包括硬件,文本,二进制,源代码)
- 系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
-
当遇到复杂任务,通过不同功能用途的程序组合起来完成。 轻量级,一台服务 dhcp ip 数据库服务 网页
-
避免令人困惑的用户界面就是没有复杂的图形界面。
-
不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
二.shell
1.shell的定义
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
2.shell的作用
- 提供了一个登录环境
- 将人类的高级语言翻译成机器语言
3.shell的类型
- bash(默认的shell类型)
- sh
- csh
- nologin(如果使用这个shell,用户无法登录)
4.命令的分类
- 内部命令:集成在shell里,shell在系统里,所以内部命令集成在系统里,无独立文件。
- 外部命令:后台安装,有对应的独立文件,系统要知道其对应位置才可以运行
5.命令的执行过程
5.1 命令的优先级
alias>内部命令>hash>外部命令
5.2命令执行过程
如果是第一次执行命令,先看这个命令是内部还是外部命令,如果是内部命令直接执行;如果是外部命令,那么会去归定路径下找,找到执行,找不到报错。
如果不是第一次执行,外部命令会有缓存hash,先看这个命令是外部还是内部,如果是内部直接执行,如果是外部,那么回去缓存中找,找到执行,找不到报错。
三.命令的格式
1.格式
命令字 空格 [选项] 空格 [参数]
-
命令字: 是整条命令中最关键的一部分 唯一确定
-
选项: 短格式选项:使用“-”符号引导 通常 一个字母 ;长格式选项:使用“--”符号引导 通常完整的单词
-
参数 :命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个
2.快捷键
四.基本命令
1.pwd
告诉当前位置,显示系统所在路径
2.cd
cd:切换目录(cd目标位置的名称指向的是目录名,只能目录之间切换,不能切换文件)
cd ~:切换到家目录
cd /:切换到/目录
cd -:回到上次执行的目录
cd ..:返回上一级目录
cd .:留在当前目录不动
~:用户的家目录
/:根目录
绝对路径: 以根目录 / 为起点的路径,如 /usr/local/bin/cfssl
相对路径: 直接使用文件名/目录名,代表的是以当前目录为起点的文件/目录
./XXX :以当前目录为起点的 XXX 文件/目录
../XXX :以上一层目录为起点的 XXX 文件/目录
~/XXX :以当前用户的家目录为起点的 XXX 文件/目录
~用户名/XXX:以指定用户的家目录为起点的 XXX 文件/目录
3.ls
ls:展现当前目录下的所有文件和目录,不包含隐藏文件,而且是简略查看不是详细查看
ls [选项] [文件或目录… ]
-
-l 已长格式显示文件和目录列表 ll=ls -l
-
-a 显示全部包括隐藏文件
-
-A 显示全部文件或隐藏文件,但不包括 . 和..
-
-d 仅列出目录本身,而不是列出目录内的文件数据
-
-h 友好显示文件大小(human,人性化)
-
-R 递归显示该目录及该目录的子目录下的所有内容
-
-t 已时间顺序显示
-
-r 倒序显示
-
--color 显示颜色
-
-S 以文件容量大小排序
4.通配符
作用:匹配文件名和目录名 不能匹配文件内容(只能进行匹配但是不能进行精确匹配)
{a..z}:小写的a到z
{A..Z}:大写的A到Z
{1..10}:表示数字的范围。
[a-z]:范围匹配,匹配所有的a-z,既有大写,也有小写。
[0-9]:匹配0-9的数字。
?:匹配任意单个字符。匹配范围不包含隐藏文件
* :匹配所有字符,长短不限。匹配范围不包含隐藏文件
5.alias
alias 别名命令='命令字 [选项] [参数]' #创建别名命令
alias #显示所有的别名命令
unalias 别名命令 #取消别名命令
6.du(disk usage)
查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。
du [选项] [文件或目录… ]
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n (-d 1) | 最大显示到第n层 |
--exclude | 不计入统计 |
7.mkdir
mkdir 目录名 创建空目录
mkdir -p 递归创建文件夹
8.touch
touch:创建空文件,更新文件时间
特点:如果文件已存在,创建相同名称不会提示文件名重读,也不会覆盖原文件的内容
9.硬链接与软链接
ln(link)
ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
例子
ln -s 绝对路径的源文件 软连接位置
ls 绝对路径源文件 硬连接位置
10.cp
cp(copy)备份
-
cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为
-
cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
11.mv
mv [选项] … 源文件或目录… 目标文件或目录 单个文件
移动 或者改名
-
-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
-
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
-
-v:显示文件或目录的移动过程;
12.find
命令的特点:
-
精确查找
-
实时查找
-
支持查找条件巨多
常用可选项
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 find /etc -maxdepth 2 -mindepth 2 |
13.其他搜索命令
whereis:搜索系统命令,不能搜索系统命令。不仅能够查找到二进制命令的位置,还可以查找到
命令的帮助文档位置
which:就是查找命令的位置,如果命令有别名,还可以查找到他的别名。
located:这是在系统的db数据库中查找,速度快,但是数据库有延迟(了解即可)