1、Linux指令分类:
Linux指令分为内部命令和外部命令
(
1
)内部命令:
shell
【是一个程序也是一个交互平台
--->
就是写
linux
指令的黑窗】内部集成的命令,无
需人为安装
(
2
)外部命令:通过外部介质安装的命令工具包,比如通过
yum
,
rpm
等进行安装
*
2
、指令生效流程:
ps
:用户输入命令
-->shell
解释命令
-->
传递给系统内核执行
--->硬件
内部命令和外部命令二者区别
ps
:程序运行在内存,因此一个程序的运行需要先调入内存中
3
、命令执行顺序
(1)
、单条命令执行顺序
alias
【别名】
> shell
内部
> hash >
外部
#
名词解释
<1>
、
hash
:
hash
表,当开一个
SHELL
的时候,这个
hash
表为空,每当你执行过一条命令时,
hash
表会记录
下这条命令的路径,就相当于缓存一样。第一次执行命令
shell
解释器默认的会从
PATH
路径【
PATH
路径:命
令所在的路径,命令也是一个文件】下寻找该命令的路径,当你第二次使用该命令时,
shell
解释器首先会查
看
hash
表,没有该命令才会去
PATH
路径下寻找【加载
+
执行】,如果有该命令就直接执行,因此
hash
表可以
有效提高指令执行效率
<2>
、
alias
:指令别名,给一些指令起一个别名,可以提高执行效率,默认不开启
(2)
、多条命令执行顺序
Linux
执行多条命令时,命令之间需要使用连接符进行链接,格式 :
“
命令
1
连接符
命令
2”
<1>
分号
;
没有任何逻辑关系的连接符,命令会依次执行
" clear ; cd /root"
解释:
clear
: 清屏
cd
:切换路径
<2>
或
||
逻辑或,当前面的命令执行成功后后面的命名就不会执行了
" cd /aaa || cd /usr"
<3>
且
&&
逻辑且,当前面的命令成功后,后面的命令才可以执行,反之都不执行 例如:
" cd /usr && cd local"
<4>
管道
|
管道符,前面的命令正确并输出执行结果给后面的命令进行继续处理 例如:
"ls | grep ‘s’"
解释:ls —>查看当前目录下文件信息
grep ‘s’ —>过滤出带有S
这个字符的
3
、
Linux
操作指令
(1)
、
cd
路径切换指令
# cd
绝对路径
cd /usr/local
ps
:绝对路径就是完整路径
# cd
相对路径:相对于当前路径进行操作
常用写法:
/ ------
这个是个绝对路径,代表根目录
./ ------
代表当前路径 例如:
cd ./local --->
当前路径【
./
】下
local,ps
这个
./
可
以省略
../ ------
代表当前路径的上一级路径 例如:cd ../bin —>当前路径上级目录下的bin
(2)
、
pwd
查看当前的目录路径
(3)
、
ls
查看文件目录
<1>
、
ls
直接写,代表查看当前目录下的所有的文件列表
<2> ls
路径
---
查看该路径下的文件列表
<3> ls [
选项
] [
路径
]
补充: 一般指令是带有一些选项的,可以通过
--help
选项查看指令下额外选项内容 例如:
ls --help
选项:
-l ----
列出文件详细信息列表【可以直接缩写位
ll --- ls -l
某某
== ll
某某】【重点:
ll
是
ls -l
简写】
-a ----
列出目录下所有文件和目录,包括隐藏的【重要,前面带有
.
的都是隐藏的】
-r ----
反序排列
-R ----
递归显示目录中的所有目录和子目录【重要,默认值显示下一级的包含信息列表,加
-R
可以将下一
级中包含子目录也进行罗列】
-t ----
以文件修改时间排序
-S ----
以文件大小排序
-h ----
以文件易读大小显示【显示单位】
-s ----
显示文件或者目录的内存大小【单位
kb
】
-1 ----
将文件一行一个的显示
(4)
、
clear
清除
shell
内容
(5)
、
mkdir
创建目录
<1>
创建单层目录:
mkdir
目录名
<2>
创建多层目录:
mkdir -p
目录
/
子目录
/
子子目录
---->
如果目录不存在会直接创建创建
(6)
、
touch
可以修改文件的时间戳,也可以创建新文件
--
一般用于创建空文件
<1>
创建单个文件:
touch [
路径
/]
文件名
.后缀 —>在xxx
路径下创建一个
xxx
后缀的文件
<2>
创建多个文件:
touch
文件
1
文件
2
文件3.... —>在xxx
路径下创建多个文件
属性:
-a ----
改变
/
更新文件的最新访问时间
-m ----
只更新文件的修改时间
-c ----
不建立新的文件,以当前时间更改文件时间【访问时间
+
修改时间】
-t ----
设置文件日期时间,时间格式
[CC]YY]MMDDhhmm[.ss] ---> 202201201450 [2020
年
1
月
12
号
14
点
50
分
]
-d ----
设置文件时间日期,格式:
touch -d
时间【
mm/dd/YYYY HH:mm:ss
】
ps:如果同时设置多个属性可以连用 例如 不建立新文件,同时设置时间—> -ct
(7)
、
echo
输出
/
打印内容到
shell
中
参数
-n ---
不换行输出
-e ---
输出转义符【转义符就是用一个特殊的符号表达一个含义】
转义符:
\a
响铃。
\b
退格。
\c
取消后续输出。
\e
向右删除一个字符。
\E
向右删除一个字符。
\f
换页。
\n
换行。
\r
回车。
\t
水平制表。
\v
垂直制表。
\\
反斜杠。
\0nnn
八进制数
nnn
所代表的
ASCII
码字符。
\xHH
十六进制
HH
对应的
8
位字符。
HH
可以是一到两位。
\uHHHH
十六进制
HHHH
对应的
Unicode
字符。
HHHH
一到四位。
\UHHHHHHHH
十六进制
HHHHHHHH
对应的
Unicode
字符。
HHHHHHHH
一到八位。
(8)
、输出重定向
作用:将原本在
shell
输出的内容,可以重定向输出到某个文件内
ps
:经常和其他指令组合使用,只要是有输出结果的指令都可以配合
“
输出重定向
”
,例如
echo / ls /ll
/cat ...
ps
:如果输出文件不存在会
(9)
、
cat
查看文件内容
<1> cat
文件名
:
查看某个文件
<2> cat
文件名
1
文件名
2
文件名
3...
:查看多个文件
<3> cat <<EOF/STOP/
一组任意大写的英文
... >/>>
文件: 可以不断输入内容到文件内,直到输入的内
容是
EOF/STOP/
一组任意大写的英文
...
为止
解释:
<<
任意一组大写英文 : 定义输入结束符,只要出现该内容代表输入结束
>/>>
文件: 输出到
xxx
文件
作用:
可以代替大量
echo
操作
cat
属性:
-b ---
对非空的行进行编号,从
1
开始
-n ---
对所有行进行编号,从
1
开始
-s ---
对相邻的多个空行进行合并,只保留一个
-E ---
每行结尾处显示
$
【断行符】
tac
:反序查看
(10)
、
cp
拷贝文件
/
目录
<1> cp
被拷贝的文件 拷贝成的文件
/
目录
例如:
cp test02.txt /usr/local/test/test02copy.txt:
将当前目录下的
test02.txt
拷贝
到
/usr/local/test
文件夹下并命名位
test02copy.txt
注意: 如果复制文件,如果复制到位置结尾写的是一个目录,就是将该文件复制到这个目录,不会重命
名
注意:如果复制文件,如果复制到的位置结尾写的是一个文件名,就是将该文件复制并重命名到某地
<2> cp
文件路径
1
文件路径
2
文件路径
3 ...
目标目录:将多个文件复制到目标目录中
<3> cp -r
目录 目标目录: 将某个目录复制到目标目录下
----
注意复制目录必须加
-r
,否则报错
属性
-r
【
*
】 : 递归复制,只能用于复制目录【复制目录必须
-r
,否则不行】,会将该目录和该目录中子内容
【里面的文件
/
目录】全部复制到目标目录
-p
: 连同文件属性【只读
/
隐藏】一起复制
-i :
如果目标已经存在,会询问是否覆盖【默认不询问】
-f
: 强制执行
-s
: 复制为符号链接文件【即快捷方式,俗称
"
软链接
"
】
语法:
cp -s
文件名【注意要被创建快捷方式的文件需要使用绝对路径】 快捷方式名
-l
: 复制为硬链接文件
-d
: 如果文件啊属于链接文件,则复制链接文件而非文件本身
(11)
、
mv
移动或重命名
<1>
、
mv 被移动的文件 移动到文件 —>将文件移动到新位置并重命名
<2>
、
mv
文件
1
文件
2 ...
移动到目录—>将一个或多个文件移动到某目录,不会重命名
<3>、 mv 被移动的目录 移动到目录 —>将某文件夹移动到另外一个文件夹中
<4>
、可以作为重命名使用:
mv
旧文件名
/
目录名 新文件名
/
目录名
属性:
-f ---
强制移动,如果有重名的会直接覆盖
-i ---
若存在重名的会询问是否覆盖
-t ---
指定移动的目标目录 格式:
mv -t
目标目录路径 文件
1
文件
2 ....
(12)
、
rm
删除文件
/
目录
<1>
、
rm
文件路径
1
文件路径
2
文件路径
3...----
删除一个
/
多个文件
ps
:默认需要确认是否删除,需要输入
y
确定
/ n
取消, 如果想强制删除加
-f
选项
<2>
、
rm -r[f]
目录路径
---> [
强制
]
删除目录,注意删除目录必须加
-r
【递归删除】选择,因为删
除的是目录,目录可能中有东西的,因此删除目录之前需要先将内容删除干净
属性:
-r ---
递归删除,只能用于删除目录
-i ---
删除时提示是否确认删除(多次提醒【删除几个提醒几次】)
-I ---
删除时提示是否确认删除(一次提醒)
-f ---
强制删除【不询问直接删除】
-d ---
只能删除空目录
补充:
rmdir
删除空目录
rmdir
空目录
----
等于
rm -d
属性:
-p
:删除指定目录后,如果该目录删除后,其上级目录也变成空目录则一并删除
-v
:显示删除过程
(13)
、常用快捷键
<1>
、
ctrl + c
:终止指令
<2>
、
ctrl + l
:清屏
==clear
<3>
、
tab
: 提示
/
自动补全 ,如果输入的字符对应唯一指令点击一下可自动补全,不唯一双击两次可以罗
列所有相关内容
<4>
、
↑↓
键 :调出之前输入并执行过的指令
<5>
、
ctrl + a,e :
将光标调到开头【
a
】、结尾【
e
】
<6>
、
ctrl + u
,
k
:删除光标前【
u
】
,
后【
k
】的内容
<7>
、
^...^ :
借用上一个操作指令来执行 例如 先执行
touch aa
,再执行
^aa^bb ---->
相当于
touch bb
(14)
、查看帮助手册
<1>
、 指令
--help
:查看当前指令帮助手册
---
可以查看这个命令下面有什么属性,因此你得记住命名主体
<2>
、
man
指令 :查看
manal
操作说明
ps
:会打开新的窗口,需要使用下列快捷键操作
空格:向下一页
b
:向上一页
home
:回到首页
end
:到达尾页
enter
:下一行
/+
关键词:关键词检索,会标记所有的关键词
小写
n
:标记下一个关键词
大写
N
:标记上一个关键词
q:
退出
(15)
、
find
搜索某文件
/
目录【包括隐藏的】
基本结构:
find
检索的路径 参数【检索条件】 参数值【检索的条件值】
常用参数:
<1> -name
: 名,查询带有该名的目录
/
文件 ,例如:find /etc -name passwd —>找etc
下名为
passwd
的目录
/
文件
<2>
层数参数
-maxdepth
:最大层数
--->
几层以内, 例如 find /etc -maxdepth 3 —>从/etc
开始往下
3
层以内的
-mindepth
:最小层数
--->
几层以外, 例如 find /etc -mindepth 3 —>从/etc
开始往下
3
层以外的
<3> -group :
查找属于某组的目录
/
文件,例如 find /etc -group root —>找etc
下所有
root
组
的目录
/
文件
<4> -user :
查找属于某用户的目录
/
文件,例如 find /etc -user root —>找etc
下所有
root
用
户的目录
/
文件
<5> -a :
连接符
and
可以组合多个参数 ,例如 find /etc -user root -a -group root—>
找
etc
下所有
root
用户 并且
root
组的目录
/
文件
<6> -o :
连接符
or
可以组合多个参数 , 例如 find /etc -user root -o -group root —>
找
etc
下所有
root
用户 或者
root
组的目录
/
文件
<7> -not :
非 ,例如
find /etc -not -user root --->
找
etc
下所有不是
root
用户的目录
/
文件
<8> -size :
通过文件大小查询 ,单位
G/M/k/c
ps: -size
可以和
+
【大于】
/ -【小于】组合 例如: —> find /etc -size +100M —>找
etc
下大于
100MB
的文件
/
目录
<9>
时间查找
-amin n :
在过去
n
分钟内被读取过
-atime n :
在过去
n
天内被读取过的文件
-cmin n :
在过去
n
分钟内被修改过
-ctime n :
在过去
n
天内创建的文件
-mmin n :
在过去
n
分钟内修改过的文件
,
例如
find /usr/local -mmin 1 —>
找
/usr/local
下一分钟内被修改过的目录
/
文件
-mtime n :
在过去
n
天内修改过的文件
<10> -type
:查找某个类型的文件
d:
目录
,
例如
find /etc -type d --->
找
etc
下所有目录
c:
字型装置文件
b:
区块装置文件
p:
命名管道【
FIFO
】
f:
一般文件
l:
符号连结
s: socket
(16)
、
chown
改变文件所属的用户和用户组
格式:chown
参数 用户
:
用户组 文件路径
参数:
-c
显示更改的部分信息
-f
强制执行
-v
显示详细的处理信息
-R
处理指定目录以及其子目录内容
----->
改变当前目录和目录下所有内容的所属用户和组
**
-h
修复符号连接
(17)
、
chmod
改变文件
/
目录权限
格式
: chmod
权限 参数 路径
参数:
-R
处理指定目录以及其子目录内容
----->
改变当前目录和目录下所有内容的权限
(18)
、
wc
统计文本的行数、字符串数、字节数
格式 :
wc
参数 文件路径
参数:
-l
统计行数
-w
统计字符串数
(
按照空格划分
)
-c
统计字节数
-L
打印输出最长行的行的长度
(
字节数
)
(19)
、
ln
创建连接文件
/
目录
Linux
中连接文件分为两类
“
软连接
”
和
“
硬链接
”
硬链接:指通过索引节点【任何文件最终存储在磁盘上的,系统会给它分配一个唯一编号,这个编号可
以用于快速的找到这个文件,这就是索引节点
Inode index
】来进行连接,多个文件名指向同一个索引节
点这就是硬连接
---
硬链接类似于
软连接:也叫符号连接【
ll
时 显示的时
l ......
】,它实际上是一个特殊文件,其中包含着另外一个文件的
位置信息,也就是说软连接文件和被连接文件有着不同的索引节点【
inode
】
-----
软连接 类似 快捷方式
软连接硬链接的特点
/
不同点【重点概念】:
1
、软连接可以对目录,文件创建连接,硬链接只能对文件创建不能对目录
----
为什么硬链接不能对目录创建:
linux
系统目录结构是树状的,硬链接的
inode
是不变的,可能会出现
“
某个硬链接连接它的父目录
”
,就成了一个闭环了
2
、软连接和原文件有不同的
inode
,硬链接和原文件的
inode
一致
3
、软连接可以跨文件系统操作,硬链接不可以
----
文件系统:文件系统也叫文件管理系统,简单就是用于管理数据文件的,文件系统是操作系统用于明确
存储设备
(
常见的是磁盘
/
分区
)
,
linux
和
window
不同,没有
DEC
盘,将分区挂载到具体目录下,可以通过
df
-h
指令查看当前
linux
中文件系统挂载情况
格式:
ln
参数 源文件
/
目录 目标文件
/
目录
参数:
-f
强制执行
-i
文件存在提示是否覆盖
-n
把将符号连接视为一般文件
-s
建立软连接【如果不写
-s
默认是硬连接(不能对目录创建)】
-v
显示详细处理过程
(20)
、
head
【头】,
tail
【尾
】:查看文件的前
/
后
n
行
格式:
head/tail
参数 文件路径
参数:
-n
数字: 显示文件前
/
后
xx
行
-c
数字: 显示文件前
/
后
xx
字节
-q :
隐藏文件名
-v
:显示文件名
(21)
、
grep
在文本中查找某个字符串
格式:
grep
参数 要被匹配的字符串 文件路径
参数:
-c
指输出匹配行的计数
---->
有几行满足
-i
不区分大小写
-h 查询多个文件时不显示文件名
-l 查询多个文件时只显示满足条件文件名
-n 显示匹配行和行号
-v 显示不匹配的行和行号
-o 只显示匹配的字符串,不显示整行
-A 值:匹配显示的行和后面多少行
-B 值:匹配显示的行和前面多少行
-C 值:匹配显示的行和后后多少行
(22)
、管道符
|
一般用于
“
过滤操作
”
,管道符不能单独使用,作用将前面指令的结果作为条件输给后面的指令,并将其
组合一起执行,将结果返回
例如:
ls
查看
/usr/local
下的列表,并将列表中带有
test
的字段的列表名输出