Linux常用命令集
●Linux命令帮助
●目录与文件基本操作
Shell
Linux系统中运行的一种特殊程序
在用户和内核之间充当“翻译官”
用户登陆Linux系统时,自动加载一个shell程序
Bash是Linux系统中默认使用的shell程序
Shell 能够接收用户输入的命令,并对命令进行处理,处理完毕后再将结果反馈给用户,
Shell只能去调用内核提供的 open() 和 read() 函数,然后内核就按照 Shell 的吩咐去读取文件,并将读取到的文件内容交给 Shell,最后再由 Shell 呈现给用户(其实呈现到显示器上还得依赖内核)。整个过程中 Shell 就是一个“中间商”,它在用户和内核之间“倒卖”数据.
Linux命令
优点,优势
1.一切都是一个文件。(包括硬件,文本,二进制,源代码)
2.系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
3.当遇到复杂任务,通过不同功能用途的程序组合起来完成。
4.避免令人困惑的用户界面就是没有复杂的图形界面。
5.连配置文件都存储在文本中,方便增删改查。
6.不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
基础知识:
root 表示用户
localhost 主机名
~ 家目录
# 管理员用户
$ 普通用户
root root的家目录
opt opt目录
Linux命令的分类
● 内部命令与外部命令
内部命令 | 外部命令 |
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
命令行格式
通用的命令行使格式
命令字 【选项】 【参数】
命令字是唯一确定一条命令,是整条命令中最关键的一部分
选项,短格式使用"-"引导,长格式使用"--"引导
参数,命令的处理对象,可以是文件名、目录(路径)名或用户名等,个数可以是零到多个
编辑Linux命令行的辅助操作
功能 | |
---|---|
Tab 键 | 自动补齐(两次可以显示所有选项) |
反斜杠“\” | 强制换行或转义 |
Ctrl+a | 光标移到最前 |
Ctrl+e end 键 | 光标移到最后 |
Ctrl+U | 清空至行首不包括当前光标处的 字符 |
Ctrl+K | 清空至行尾包括当前光标处的字符 |
Ctrl+w | 从当前光标删除到开头 |
ALT+d | 从当前光标删除末尾 |
Ctrl+l | 清屏 |
Ctrl+c | 取消本次命令编辑 |
Ctrl+s/Ctrl+q | 锁屏/解锁 |
向上下箭头 |
获得命令帮助的方法
■ 内部命令 help
查看shell内部命令的帮助信息
■ 命令的 --help选项
适用于大多数Linux外部命令
■ 使用man命令阅读手册页
使用 “↑”、“↓”方向键滚动一行文本
使用page Up和Page Down 键翻页
使用Q或q退出阅读环境
按“\”键查找内容,n向下 N向上
小结
shell在用户和内核间充当“翻译官”
Linux命令分为内部命令和外部命令
获得Linux命令帮助的方法
1.1 命令
pwd命令为英文print work directory的缩写 ,print work directory翻译为查看所在路径
cd命令为英文change directory的缩写,change directory翻译为 切换目录; 更改目录; 更换目录; 转换目录;
效果 | |
---|---|
cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头 | 表示以当前的工作目录作为起点(已点开头的是) |
两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 |
想对路径的表现形式
表现形式 | 说明 | 示例 |
直接使用目录名或文件名 | 表示当前工作目录中的子目录、文件的位置 | grub.comf |
以一个点号“.”开头 | 表示以当前的工作目录作为起点 | ./grub.conf |
以两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 | ../vmlinuz |
以“~用户名”形式开头 | 表示以指定用户的宿主目录作为起点 | ~teacher |
绝对路径以根为起点
想对路径以当前工作目录为起点
1.2 ls-显示指定工作目录下的内容及属性信息
ls 命令是Linux下最常用的指令之一。
ls命令为英文单词list的缩写,list翻译为 :列表; 名单; 清单; 目录; 一览表;
正如英文单词 list 的意思,其功能是列出指定目录下的内容及其相关属性信息。
默认状态下,ls命令会列出当前目录的内容。而带上参数后,我们可以用ls做更多的事情。作为最基础同时又是使用频率很高的命令,我们很有必要搞清楚ls命令的用法,
语法格式: ls [选项] [文件]
常用参数
-a | 显示所有文件及目录 (包括以“.”开头的隐藏文件) |
-l | 使用长格式列出文件及目录信息 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-t | 根据最后的修改时间排序 |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录) |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
参考示例
ls -a 列出所有文件(包括隐藏文件)
ls -l 列出文件的详细信息
ls / 列出根目录(/)下的所有目录
ls -AS 列出当前工作目录下所有文件及目录并以文件的大小进行排序
ls -l -AS
ls -d 仅列出目录本身,而不是列出目录内的文件数据
ls -ld 只显示目录本身信息
1.3 通配符
符号 | 效果 |
---|---|
? | 匹配一个字符 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:]] |
1. ?
[root@localhost lianxiJ#ls a?.txt 匹配一个字符 a?.txt
2. *
[root@localhost lianxiJ#ls *.txt 匹配所有非隐藏的字符(除“.”)
3. {1..10}
[root@localhost lianxiJ#touch file{1..10}.txt 数字1到10
4. {a..z}
[root@localhost lianxiJ#touch {a..z}.txt 字母a到z
5. {A..Z}
[root@localhost lianxiJ#touch {A..Z}.txt 字母A到Z
6. [a-z]
[root@localhost lianxiJ#ls [a-z].txt 字母aA到zY不包括Z
7. [123]
[root@localhost lianxiJ#ls [123] 取其中之一有就显示没有也无所谓
[root@localhost lianxiJ#ls [123][123] 取其中之一有就显示没有也无所谓
[root@localhost lianxiJ#ls [123][123][123] 取其中之一有就显示没有也无所谓
8. [[:lower:]]
[root@localhost lianxiJ#ls [[:lower:]].txt 只取小写字母
9. [[:upper:]]
[root@localhost lianxiJ#ls [[:upper:]].txt 只取大写字母
10.[^ufo]
[root@localhost lianxiJ#ls [^ufo].txt 取除了[ ]内字母外的所有字母
11. [[:digit:]]
[root@localhost lianxiJ#ls [[:digit:]] 任意数字,相当于0-9
12.\
\cd 123 转义符,表示原来的意思
注释:这里先用别名修改了cd=ls,把打开文件目录变成了查看,所以之后再用cd输入“123”的时候是查看了“123”目录下的文件
\ 转义之后恢复原来意思进入“123”文件的 目录
1.4 设置别名-alias
通过别名机制简化常用的、比较长的命令
alias 命令别名 = 命令
alias myvim='vim /sysconfig/network-scripts/ifcfg-ens33' 定义别名
unalias myvim 取消别名
1.5 du-统计目录及文件空间占用情况
du是英文单词Disk Usage的缩写,翻译为查看磁盘占用空间
语法格式:du [选项] [文件或目录...] (包括隐藏文件)
选项 | 说明 |
-a | 统计吸磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占用空间总得(Summary)大小,而不是统计每个子目录、文件的大小 |
参考示例
du -a 统计每个子目录、文件的大小
du -h 以更人性化的方式显示出统计结果
du -s 统计显示所有文件总大小
扩展:
du --max-depth=1 /root/lianxi 只统计某一层文件的大小
du --max-depth=2 /root/lianxi
简易命令du -d n n为任意层数字
统计排除所有.txt格式的文件
du --exclude=*.txt
1.5 mkdir 创建新目录
mkdir 创建新的空目录
语法格式:mkdir [选项] 目录位置及名称
参考示例
mkdir 123 创建单个文件夹
mkdir aa bb cc 创建多个文件夹
mkdir -p ./aa/bb/cc 递归创建目录,在文件夹下创建aa,并在aa下创建bb,bb下创建cc
1.6 touch 创建空文件
touch 用于更新文件的时间标记,创建多个新的空文件
语法格式:touch 文件...
参考示例
touch aaa.txt 创建一个新文件
如若创建的文件名已存在,则会刷新文件的时间
文件的时间有三种
access time→atime 最后访问时间 ls -lu
change time→ctime 最后状态更改时间 ls -lc
modify time→mtime 最后修改时间 ls -l
同时显示三种时间 stat filename
1.7 ln 创建链接文件
ln 为文件或目录建力链接文件,类似于windows系统的快捷方式
链接文件类型
硬连接 同一个文件取不同的名字,不支持文件夹
软连接 类似于windows系统的快捷方式,软连接,符号连接
语法格式:ln [-s] 源文件或目录... 链接文件或目标位置
参考示例
ln -s /root/lianxi/aaa /root/lianxi/123 做了一个lianxi文件夹下的aaa文件软连接,到lianxi文件夹下的123里面
ln -s /root/lianxi/aaa /root/lianxi/123/bbb 做了一个lianxi文件夹下的aaa文件软连接,到lianxi文件夹下的123里面并改名为bbb
ln /root/lianxi/aaa /root/lianxi/123/ccc 做了一个lianxi文件夹下的aaa文件的硬连接,到lianxi文件夹下的123里面并改名为ccc
此时可以看到ccc是一个文件而不是一个链接
对比项 | 硬连接 | 软连接 |
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode | 相同 | 不同 |
连接数 | 创建新的硬连接,链接数会增加,删除硬连接。链接数减少 | 删除新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是连接数减一,但连接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同 |
1.8 cp 复制文件或目录
cp命令是英文copy的缩写,其功能为复制文件或目录。
语法格式:cp [参数] [文件]
常用选项
选项 | 说明 |
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
参考示例
cp 111 aa 同一目录下复制111到aa
cp 111 /root/aa/223 复制111到aa下并改名为223
cp 111 222 /root/lianxi/bb 将多个文件复制到lianxi下的bb
cp -r aa cc 复制目录aa到目录cc
cp -f 111 /root/lianxi/aa
本身-f覆盖文件不应被询问是否覆盖,这边提示是因为alias别名定义了cp=cp -i,所以-f强制无效
这里如果要-f生效的话可以使用\转义
转义之后并无跳出系统提示
1.9 rm 删除文件或目录
rm删除指定的文件或目录
语法格式:rm [选项] 要删除的文件或目录
常用参数
选项 | 说明 |
-f | 忽略不存在的文件,不会出现警告信息 |
-i | 删除前会询问用户是否操作 |
-r | 递归删除 |
2.0 mv 移动文件或目录
mv命令是“move”单词的缩写,其功能大致和英文含义一样,可以移动文件或对其改名。
这是一个使用频率超高的文件管理命令,我们需要特别留意它与复制的区别:mv与cp的结果不同。mv命令好像文件“搬家”,文件名称发生改变,但个数并未增加。而cp命令是对文件进行复制操作,文件个数是有增加的。
语法格式:mv [参数]
常用参数:
-i | 若存在同名文件,则向用户询问是否覆盖 |
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
参考示例
mv 1.txt 2.txt 移动1.txt.并改名为2.txt
mv 2.txt aa 移动2.txt到目录aa
补充:
如何批量改名1.写脚本 2. rename
rename .txt .bak *.txt rename 旧字符 新字符 目标文件
rename只能改后缀名相同的文件
2.1 which 查找命令、文件存放目录
which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
搜索范围由环境变量PATH决定(echo $PATH)
语法格式:which [参数] [文件]
主要用来找命令位置的
2.2 find 查找文件或目录
find 采用递归方式,根据目录的名称、类型、大小等不通属性进行精细查找
语法格式:find [参数] [路径] [查找和搜索范围]
常用参数:
查找类型 | 关键字 | 说明 |
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
按文件大小查找 | -size |
根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括kB(注意k是小写)、MB、GB |
按文件属性查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type |
根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
参考示例
find /etc/ -name passwd 找到etc下名称为passwd的文件
find /etc/ -name "*p" 找到etc下以p结尾的所有文件(注意*p需要加双引号)
find /etc/ -size +100k 找到etc下大于100k的文件
补充:
当你按大小查找两个文件时
dd复制一个99M到名为99的文件
dd复制一个100M到名为100的文件
当find第一次查找100M大小文件时显示了100的文件
此时给99的文件追加一个字符,并非1M
当再次find查找100M大小时,99和100同时出现
这是因为linux种的100M不是正好100M,而是99到100之间(不包括99)
同理,当你需要找1G左右的文件时,find -size 处应为1024M,
1024M代表1023M-1024M不包括1023
1G代表0G-1G不包括0G
-size 10k表示9k-10k不包括9k
-size -10k表示9k以内不包括9k
-size +10k表示10k以上不包括10k
find /etc/ -maxdepth 2 -mindepth 2 只看第二级目录
使用find命令实现多个查找条件
个表达式之间使用逻辑运算符
-a 表示而且(and)
-o 表示或者(or)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了