linux指令

255 阅读10分钟

1 shell

1.1 什么是shell

1.1.1shell的定义

​ shell是一类软件的总称:bash,sh,csh。

​ shell将人类的高级语言翻译成二进制语言。

1.png

​ 用户使用应用程序发布指令

​ shell通知 操作系统 需要进行的操作

​ 内核相当于 操作 系统 来 指挥硬件

​ 硬件是 整个系统中的实体工作者

1.1.2shell与内、外部命令

(1)shell分为内部命令和外部命令,一般先执行内部命令,hash再执行外部命令。

内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令
,也称为内建(Built-in)指令
Linux系统中能够完成特定功能的脚本文或二进制程序
属于Shell的一部分属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行

(2)可以使用type命令来区分内外部命令

​ type (命令),如果是内部命令则反馈“(命令)是shell内嵌”。

​ 例:

1687850957424.png

​ 如果是外部命令则反馈程序路径

​ 例:

1687851177461.png

(3)开启或关闭内部命令

关闭:enable -n (内部命令)

开启:enable (内部命令)

(4)hash

​ 缓存空间

​ hash -d 加缓存里的命令 单独删除

​ hash -r 删除所有

​ 将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值后,才能继续使用。

(5)命令的执行过程

​ 判断是否是内部命令 ,是直接执行, 不是 ​ 去看hash缓存表 如果hash 表有直接执行,有 但是找不到 报错 ​ 如果是第一次执行的外部命令,会去规定的文件夹找命令,如果没有会报错。

​ 执行命令,命令不存在的情况: ​ 1.命令打错 ​ 2.hash 缓存中没有 ​ 3.不在$PATH ​ 4.没有安装

linux 指令

1 命令行格式

格式:命令字 空格 [选项] 空格 [参数]

1.命令字

​ 是整条命令中最关键的一部分;唯一确定

2.选项

​ 短格式选项:使用"-"符号引导 通常一个字母

​ 长格式选项:使用"--"符号引导 通常完整的单词

3.参数

​ 命令字的处理对象

​ 可以是文件名、目录(路径)名或用户名等内容

​ 数量可以0到多个

";"可以隔开命令,执行多个命令

快捷键功能
Tab 键自动补齐(两次可以显示所有选项)
反斜杠“\”强制换行或转义
Ctrl+a光标移到最前
Ctrl+e 或 end键光标移到最后
Ctrl+U清空至行首不包括当前光标处的字符
Ctrl+K清空至行尾包括当前光标处的字符
Ctrl+w从当前光标删除到开头
ALT+d从当前光标删除末尾
Ctrl+l清屏
Ctrl+c取消本次命令编辑
Ctrl+s/Ctrl+q锁屏/解锁
向上下箭头回看执行过的命令

2 获得命令帮助

2.1 help

  • []表示可选项

  • CAPS或<>表示可变化的数据

  • ...表示一个列表可加多个一个或多个

  • x|y|z表示 或

  • -abc是-a -b -c (部分命令选项有先后顺序) 多个 -abc一般而言没有顺序先后(绝大多数没有,只有少部分区分先后)

只能查看 内部命令 的 使用方法: tar -zxvf tar zxfv

区分前后 解压 压缩

2.2 --help

查看外部命令帮助

命令 --help

2.3 man

man分为9个章节默认打开第一章节(menu菜单manual手册)

查询命令章节: whatis 命令

1687854070447.png

区段:

区段含义
1用户指令
2系统调用
3程序库调用
4设备
5文件格式
6游戏
7杂项
8系统指令
9内核内部指令
nTcl或TK指令

3 目录操作

3.1 pwd 显示当前路径

pwd -p 显示真实路径

3.2 cd

语法:

cd [dirName]
  • dirName:要切换的目标目录,可以是相对路径或绝对路径
命令效果
cd cd ~若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd -到前一次目录
cd ./表示以当前的工作目录作为起点(已点开头的是)
cd ../表示以当前目录的上一级目录(父目录)作为起点
cd ~用户名表示以指定用户的宿主目录(家目录)作为起点
cd .*表示隐藏文件

3.3 ls 显示当前目录

语法:

ls [选项] [文件或目录… ]
选项作用
-a显示所有文件及目录(. 开头的隐藏文件也会列出)
-d只列出目录(不递归列出目录内的文件)。
-l以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
-h友好化显示
-r倒序显示文件和目录。
-t将按照修改时间排序,最新的文件在最前面。
-A同-a,但不列出"." (目前目录)及".."(父目录)
-F在列出的文件名称后加一符号;例如可执行档则加"*",目录则加"/"
-R递归显示目录中的所有文件和子目录。

文件类型

符号文件类型颜色
-   普通类型黑色
l   连接青色
b   磁盘黄色
c   字符文件黄色
d   目录蓝色
s   套接字                 紫色
p   管道黄色

3.4 通配符

符号效果
匹配一个字符 f?.txt
*匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10}1到10
{a..z}a b c ...z
{A..Z}A B C .....Z
[123]([此处括号里值代表一个字符])取其中之一有就显示没有也无所谓
[a-z]单个小写字母范围需要注意
[0-9]单个数字匹配数字范围(0123456789)
\转义符,表示原来的意思
[[:lower:]]小写字母表示 a-z
[[:upper:]]大写字母表示 A-Z
[^zhou]匹配列表中的所有字符以外的字符
[[:digit:]]任意数字,相当于0-9
[[:alpha:]]任意字母

3.5 alias 别名

语法:

 alias 自定义别名 = '命令'   //定义别名  
 unalias 自定义别名          //删除别名
 \自定义别名                 //显示原始命令

PS:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

3.6 du 查看当前文件夹磁盘大小

语法:

du [选项] [文件或目录… ]
选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize)只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n (-d 1)最大显示到第n层
--exclude不计入统计

4 创建文件夹

4.1 mkdir 创建目录

语法:

mkdir 选项 目录位置与名称
mkdir -p  aa/bb/cc   //递归创建
mkdir -pv /data/{1,2,3}/{a,b,c} 
//可一次性建立多个文件

4.2 touch 创建文件

语法:

touch 新文件(可为空)

文件名不存在就是新建空文件,不会破坏已有文件,但会刷新文件时间

文件的三个时间戳

stat 文件       //查看文件的三种时间
选项作用
atimeaccess time 访问时间,读取文件内容
mtime modify time 修改时间,改变文件内容(数据)
ctimechange time 改变时间,元数据发生改变(元数据  文件大小 权限 )

4.3 ln 连接

语法:

//软连接
ln -s 绝对路径的源文件  软连接位置 
//硬连接
ln  绝对路径源文件  硬连接位置
对比项硬链接软链接
本质本质是同一个文件本质不是同一个文件
inode(身份证号)相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除,新建都不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同(指向硬盘上的同一个文件)源文件的路径的长度

4.4 cp 复制

语法:

cp [选项] 源文件 目标路径 

cp的目标路径 可以使用不同于原文件(文件夹)的名字,相当于另存为

选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息
-v可视化
-u相当于增备,差异备份(只对文件夹起作用)

如果已有文件夹会生成子目录

cp -r /etc/ /opt/b  //第一次复制并改名字
cp -r /etc/ /opt/b  //第二次成为b的字目录
cp -r /etc/ /opt/b  //第三次问是否覆盖

4.5 mv 移动

语法:

 mv [选项] … 源文件或目录… 目标文件或目录 单个文件
选项作用
-f强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
-i交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-n如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
-v显示文件或目录的移动过程;

4.6 rm 删除

语法:

 rm [选项] 要删除的文件或目录
选项作用
-i删除前逐一询问确认。
-f即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r将目录及以下之档案亦逐一删除。

删除特殊字符文件

//删除以-开头的文件
rm -f ./-f
rm -- -f

删除文件后空间不释放: 有别人在使用 这个大文件 造成空间不释放

4.7 shred 安全删除

rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件 语法:

shred [选项] 文件
选项作用
-z最后一次覆盖添加0,以隐藏覆盖操作
-v能够显示操作进度
-u覆盖后截断并删除文件
-n #指定覆盖文件内容的次数(默认值是3次)

5 查找文件

5.1 locate

语法:

locate [选项] 搜索目标

选项:

选项作用
-i不区分大小写的搜索
-n N只列举前N个匹配项目
  • locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db
  • 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库
  • 索引构建过程需要遍历整个根文件系统,很消耗资源
  • locate和updatedb命令来自于mlocate包

5.2 find

语法:

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

根据属主、属组查找

  • -user USERNAME #查找属主为指定用户(UID)的文件
  • -group GRPNAME #查找属组为指定组(GID)的文件
  • -uid UserID #查找属主为指定的UID号的文件
  • -gid GroupID #查找属组为指定的GID号的文件
  • -nouser #查找没有属主的文件 无主
  • -nogroup #查找没有属组的文件

根据文件类型查找

-type TYPE

TYPE可以是以下形式:

  • f: 普通文件
  • d: 目录文件
  • l: 符号链接文件
  • s:套接字文件
  • b: 块设备文件
  • c: 字符设备文件
  • p: 管道文件

组合条件

组合符号作用
-a
-o
-not 或者 !

根据时间戳

'#'以天为单位:

  • -mtime [+|-]#
  • -ctime [+|-]#
  • -atime [+|-]#

PS: '# #'表示[#,#+1) 如#是3 3 到 4天

'+# #'表示[#+1,∞] 如#是3 代表 4天以上

'#'以分钟为单位:

  • -amin [+|-]#
  • -mmin [+|-]#
  • -cmin [+|-]#

处理动作

处理动作作用
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} ;对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} ;对查找到的每个文件执行由COMMAND指定的命令
{}:用于引用查找到的文件名称自身

6 xargs 参数替换

命令格式:

somecommand |xargs -item  command

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 选项

选项作用
-a file从文件中读入作为 stdin
-e flag注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p当每次执行一个argument的时候询问一次用户。
-n num后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t表示先打印命令,然后再执行。
-i 或者是-I,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num从标准输入一次读取 num 行送给 command 命令。
-l同 -L。
-d delim分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-xexit的意思,主要是配合-s使用。。
-P修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

7 which 查找命令

语法:

 which 命令或程序名

在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。