Linux常用基本指令和shell
目录
1. cd指令
2. pwd指令
3. ls指令
4. touch指令
5. mkdir指令
6. rmdir 和 rm指令
7. man指令
8. cp指令
9. mv指令
10. 输入/输出重定向 编辑
11. more/less指令
12. head/tail指令
13. 时间相关的指令
14. cal 指令
15. find指令
16. grep指令
17. zip/unzip指令
18. 其它指令
19. shell的简单讲解
1. cd指令
Linux系统中,磁盘上的 文件和目录(文件夹)的组成结构是一颗 “多叉树”,每个节点都是目录或文件。
如下示例:
叶子节点:一定是文件或空目录。
非叶子节点:一定是目录。
所以,访问一个文件,首先要找到它,找到文件的本质就是:在一棵多叉树中进行节点的查找 ——> 路径的本质就是这个多叉树的搜索路径,具有 唯一性!
绝对路径:从 / 开始,定位一个目录或文件的的方式(/ 也做路径分隔符)
比如:目录:/ 或 /usr/ 或 usr/lib/ 或 /usr/bin/ 或 /home/nxf/
文件: /etc/passwd 或 /home/nxf/test.c
相对路径:以当前所处目录为参考点,定位一个目录或文件的方式
注意:. (1个点) 表示 当前所处目录;..(2个点)表示 上级目录
比如:当前所处目录是:/home/nxf/
那么:. / test.c 或者 /test.c 表示:/home/nxf/test.c
.. 或者 ../ 表示:/home/
../.. 或者 ../../ 表示: /
../../dev/ 表示:/dev/
指令:cd 目录的相对 / 绝对路径
功能: 将当前工作目录改变到指定的目录下
2. pwd指令
语法:pwd
功能:显示用户当前所在的工作目录(process working directory)
3. ls指令
功能:对于目录,列出该目录下所有子目录和文件信息
对于普通文件,仅列出文件信息
语法:ls 【选项】【目录名或文件名(绝对和相对路径)】
不带选项: 列出目录下的所有文件/目录名;比如:
不带路径:列出当前工作目录下的文件/目录
常用选项:
-a 列出目录下的所有文件,包含以 . 或 ..开头的隐藏目录 。比如:
-d 将目录像文件一样显示,而不是显示其下的文件。比如:
-l 列出文件的详细信息(属性:类型,读写权限,所属用户,大小等),可简写成 ll。比如:
-n 用数字的UID,GID代替 用户ID和组ID,相当于系统用来识别判断用户的身份证。比如:
(可用 cat /etc/group 输出到屏幕上查看)
-F 在每个文件名后附上一个字符以说明该文件的类型。
* 表示可执行的普通文件;/ 表示目录
@ 表示符号链接(软链接,类似于快捷方式);| 表示FIFOs;= 表示套接字(进程间通信)
-r 对目录反向排序(主要基于文件名称的字母顺序)
-t 按文件最新修改时间,倒序输出
-S 按文件大小排序并倒序显示
-R 列出所有子目录下的文件
-l 一行输出一个文件
可组合使用,常用比如:ls -al;ll (ls -l),......
4. touch指令
在介绍touch指令之前,先介绍另一个指令:stat 显示文件/目录的详细信息,如下示例:
touch指令:
功能:新建一个不存在的文件,或者通过选项参数更改文档或目录的日期时间,包括存取时间和更改时间。
语法:touch [选项] ...文件...
常用选项:
-a 更改访问时间(Access)为当前时间,Change也随同被修改
-m 更改 内容修改时间(Modify)为当前时间,Access和Change也随同被修改
-t 指定时间戳(Modify):touch -t [[CC]YY]MMDDhhmm[.ss] filename
CC
和 YY
为世纪和年份(可选)
MMDDhhmm
为月、日、小时和分钟
可选的 .ss
表示秒
比如:touch -t 202301250650.20 filename
-d 使用类似自然语言的时间描述来设置文件时间戳(Modify)(相对或绝对时间)
比如:
绝对时间:touch -d "2024-11-02 16:30" filename
相对时间(当前):touch -d "yestarday" filename
还有:now,today(当前的时间),tomorrow(明天的相同时间), 加减时间:支持年(years)、月(months)、日(days)、小时(hours)、分钟(minutes)、秒(seconds)等时间单位;比如:
- 2 天前的 3 小时:
touch -d "2 days ago 3 hours" filename
- 1 年 2 个月前:
touch -d "1 year 2 months ago" filename
-c 在文件不存在时不创建文件,仅在文件存在时更新时间戳(Modify)为当前时间
-r 使用参考文件的时间,比如:touch -r reference_file filename
注意,Access/Modify/Changes 存在一些相互影响的关系
5. mkdir指令
功能:创建目录
语法:mkdir [选项,常用:-p] 目录名(当前目录下或指定路径)
比如:mkdir -p test/t1/tt1 递归创建多个目录
6. rmdir 和 rm指令
rmdir 删除目录:常用选项-p :当子目录被删除后如果父目录也成空,就一起删除
但是常用:rm 【选项】文件或目录
常用选项:-f 即使文件被读写保护,也强制删除
-i 删除前逐一询问
-r 删除目录及其下所有文件
7. man指令
Linux 和 Unix 系统中显示命令的手册页(manual page),提供有关命令、系统调用、库函数、配置文件等的详细信息, 是帮助用户学习和了解系统内命令的首选工具。
格式: man [section_number] command_name
常用的章节编号:
- 1:用户命令(如
ls
、cd
) - 2:系统调用(如
open
、read
) - 3:库函数(如
printf
) - 4:特殊文件(如设备文件)
- 5:文件格式和配置文件(如
passwd
) - 6:游戏和屏保
- 7:杂项(如
man 7 regex
) - 8:系统管理命令(如
ifconfig
)
在手册页中可以使用以下快捷键:
- 上下箭头 或 PgUp/PgDn:滚动浏览。
- q:退出手册页。
- /keyword:搜索关键字,按 n 查找下一个匹配项。
- h:查看帮助。
使用 -k
选项搜索包含特定关键字的手册页
使用 -f
选项可以获取命令的简短描述,类似于 whatis
命令
使用 -L
选项指定显示的语言(如果支持多语言),比如:man -L zh_CN ls
使用 -a选项将所有章节都显示出来,比如man printf 从1章(用户指令)开始搜索,找到就停止,按q就退出,继续往后继续搜索,直到所有章节都搜索完毕
8. cp指令
功能:复制文件或目录
语法:cp [选项] 源文件或目录 目标文件或目录
常用选项:-f 强行复制,即使不存在
-i 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件和子目录一并处理,如果源不属于目录或符号链接,则一律视为普通文件处理
-R 递归处理,将指定目录下的文件及子目录一并处理
示例:
9. mv指令
功能:移动文件/目录 或者 改名
格式:mv [选项] 源文件或目录 目标文件或目录
常用选项:-f 即使目标文件或目录已经存在,不会询问直接覆盖
-i 询问是否覆盖
示例:
10. 输入/输出重定向
11. more/less指令
more:功能类似cat,不同的是:逐页显示文件内容,方便查看内容较长的文件
格式:more [选项] 文件
主要选项:
-num
:每次显示指定行数。-d
:启用错误提示及底部帮助信息。-c
:翻页时先清屏,避免覆盖旧内容。-s
:压缩连续的空行。+num
:从指定行数开始显示。+/string
:从首次匹配字符串的位置开始显示。
q 退出more
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,g功能极其强大;其用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup][pagedown]等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容,并且less在查看之前不会加载整个文件。
格式:less [选项] 文件
less
的常用选项
-N
:显示行号。-S
:禁止自动换行(可左右滚动)。-X
:退出后不清屏。-i
:搜索时忽略大小写(除非包含大写字母)。-p pattern
:打开文件时直接定位到匹配的字符串。+F
:实时跟踪文件更新(类似tail -f
)。
less
的常用快捷键
- 上下箭头 / PgUp / PgDn:向上/下滚动一行或一页。
- Space:下一页。
- b:上一页。
- /pattern:向下搜索字符串pattern
- ?pattern:向上搜索字符串pattern
- n:重复上次搜索。
- N:反向重复上次搜索。
- g:跳到文件开头。
- G:跳到文件末尾。
- q:退出。
12. head/tail指令
就像它们的名字一样,用来显示开头或结尾某个数量的区块 到标准输出中 (默认10行)。
格式:head [-n 显示的函数] 文件
tail [-n 显示函数 或者 -f循环显示最后一行数据(比如查看日志文件的不断更新)] 文
13. 时间相关的指令
14. cal 指令
15. find指令
功能:在文件目录树中查找文件
格式:find 开始搜索路径 【选项】 ......
常用选项:
1. -name:按名称查找
find /home -name "test.txt" # 查找名为 test.txt 的文件
2. -iname:按名称查找,忽略大小写
find /home -iname "Test.TXT" # 查找名为 Test.TXT(忽略大小写)的文件
3. -type:按类型查找
find /var -type d # 查找 /var 目录中的所有目录
4. -size:按文件大小查找
find /tmp -size +10M # 查找 /tmp 中大于 10 MB 的文件
5. -user:按文件所属用户查找
find /home -user alice # 查找属于用户 alice 的文件
6. -mtime / -ctime / -atime:按文件时间查找
find /var/log -mtime -7 # 查找 7 天内修改过的文件
7. -exec:对找到的文件执行命令
find /home -name "*.tmp" -exec rm {} \; # 删除所有 .tmp 文件
8. -perm:按权限查找
find /var -perm 644 # 查找权限为 644 的文件
9. -maxdepth:限制最大搜索深度
find /home -maxdepth 1 -name "*.log" # 仅在当前目录查找 .log 文件
10. -mindepth:指定搜索的最小深度
find /home -mindepth 2 -name "*.conf" # 从第二层子目录开始查找 .conf 文件
16. grep指令
功能:在文件中搜索字符串,将找到的行打出来
格式:grep [选项] 搜索字符串 文件
常用选项:-i 忽略大小写
-n 输出行号
-v 反向选择,即显示没有 搜索字符串 内容的一行
17. zip/unzip指令
18. tar指令(打包或解压)
18. 其它指令
uname指令:
-a | 显示所有系统信息(以下内容) |
-s | 显示操作系统名称 |
-n | 显示主机名 |
-r | 显示内核版本 |
-v | 显示内核版本详细信息 |
-m | 显示硬件架构 |
-p | 显示处理器类型 |
-i | 显示硬件平台信息 |
-o | 显示操作系统名称 |
lrzse:
scp:实现文件/目录递归传输、端口选择、压缩传输、权限保留、私钥身份验证以及静默模式,使得文件在本地和远程间安全高效传输。
格式:
1 从本地传输到远程
scp 【选项】/path/to/local/file username@remote_host:/path/to/remote/destination
2 从远程传输到本地
scp 【选项】username@remote_host:/path/to/remote/file /path/to/local/destination
常用选项有:
-r | 递归复制目录及其内容 |
-P | 指定远程服务器的 SSH 端口(大写 P) |
-C | 启用传输压缩 |
-p | 保留文件的修改时间、访问时间和权限 |
-i | 指定 SSH 私钥文件 |
-q | 静默模式,不显示传输进度 |