无论是什么命令,用于什么用途,在 Linux 中,命令有其通用的格式:
- command:命令本身。
- -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节。
- parameter[可选,非必填]命令的参数,多数用于命令的指向目标等。
语法中的[ ],表示可选的意思。
一、ls(List Files)指令
1、语法
2、功能
3、常用选项
- -a 列出目录下的所有文件,包括以 . 开头的隐含文件。(表示 all 的意思)
- -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
- -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
- -l 列出文件的详细信息。(以列表(竖向排列)的形式展示内容,并展示更多内容)
(语法中的选项是可以组合使用的,比如上图中的 -a 和 -l 可以组合应用。写法1:ls -l -a 写法2:ls -la 写法3:ls -al 三种写法都一样)
- -n 用数字的 UID,GID 代替名称,UID:用户ID,GID:组ID。(给用户看到的是名字,实际上计算机处理的是这个数字。)
- -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
- -r 对目录反向排序。
- -t 以时间排序。
- -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
- -R 列出所有子目录下的文件。(递归)
- -1 一行只输出一个文件。
二、pwd(Print Work Directory)命令
1、语法
没有选项,没有参数,直接使用即可。
2、功能
3、常用选项
三、cd(Change Directory)指令
1、语法
- cd 命令无需选项,只有参数,表示要切换到那个目录下。
- cd 命令直接执行,不写参数,表示回到用户的家目录。
2、功能
3、使用举例
cd /home/ll/lesson2/file1 #绝对路径:不管在哪里,该路径对应的文件一直可以找到(一般在系统或者软件的配置文件中使用)
cd lesson2/file1 #相对路径:简单,不过只限于当前路径(一般在命令行上使用的多)
表示当前目录:cd .(比如:cd ./code 表示切换到当前目录下的 code 目录内,和 cd code 效果一致)
返回上级目录:cd ..(cd ../.. 表示切换到上二级的目录)
绝对路径:cd /home/litao/linux/
相对路径:cd ../day02/
进入用户家目录:cd ~(默认登录成功时,所处的路径)(cd ~/code 表示切换到家目录内的 code 目录)
返回最近访问目录:cd -
四、touch(Change File Timestamps)指令
1、语法
2、功能
3、常用选项
【补充】Linux下如何查看文件类型
五、mkdir(Make Directory)指令(重要)
Home - IBM Developer
1、语法
选项(-p)可选,参数必填(表示要创建的目录的路径,相对、绝对、特殊路径符都可以使用)。
2、功能
3、常用选项
4、使用举例
递归创建多个目录:
六、rmdir(Remove Directory)指令 && rm(Remove)指令(重要)
1、rmdir(Remove Directory)指令
(1)语法
(2)适用对象
(3)功能
(4)常用选项
2、rm(Remove)命令
(1)语法
可以一次性删除很多个参数内容,用空格隔开即可。
(2)适用对象
(3)功能
(4)常用选项
七、man(Manual)指令(重要)
Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问 Linux 手册页的命令是 man。
1、语法
2、常用选项
该手册如下有8个章节,一般常用的也就是前3个:
3、使用方法
man ls #查看ls命名手册
man 3 printf #
八、cp(Copy)指令(重要)
1、语法
选项可选,参数 1 表示被复制的文件 / 文件夹(Linux 路径),参数 2 表示要复制去的地方(Linux 路径)。
2、功能
3、说明
4、常用选项
九、mv(Move)指令(重要)
注意:cp 是拷贝,而 mv 是剪切。
1、语法
选项可选,参数 1 表示被移动的文件 / 文件夹(Linux 路径),参数 2 表示要移动去的地方(Linux 路径),如果目标不存在,则进行改名,确保目标存在。
2、功能
3、常用选项
4、举例
(1)对文件或目录重命名
(2)移动文件或目录(相当于剪切复制)
十、cat(Concatenate)指令
1、语法
2、功能
3、补充(tac)
语法:tac [选项][文件]
4、常用选项
注意:cat 不适合查看大文件的内容(比如有一个 10000 行的文本,此时要看第 1 行的内容,就要不断往上翻阅)。
5、举例
⚪tree 指令
1、语法
2、功能
3、安装
4、使用举例
十一、more 指令
1、语法
2、功能
3、常用选项
cat 和 more 的区别是什么?
⚪扩展
1、管道
使用举例:
dmesg 命令配合 more 命令使用。
dmesg | more -5 #把dmesg命令的输出经过管道传递给more
用 more 来阅读 dmesg 打印的信息的前 3 行:
(1)语法
(2)功能
(3)常用选项
(4)使用举例
-
从 ls 显示内容中查找指定字符串的行。
-
从文件内容中查找指定字符串的行。
-
从 dmesg 命令打印的日志信息中查找含有 error 字符串的行,并用 more 命令阅读前 3 行。
dmesg | grep -i 'error' | more -3
2、日志
3、重定向
(1)echo
echo:输出字符串
[ll@VM-0-12-centos lesson3]$ echo "hello Linux"
hello Linux
(2) 输出重定向
本来应该显示到显示器上,现在直接写入到了文件中。输出重定向,会清空原始文件,然后再进行写入,每次都是最新的。
echo "hello Linux" > hello.txt
(3)追加重定向
echo "1234" >> hello.txt #新增写入的内容
(4)输入重定向
5、如何快速清空一个文件
>hello.txt #清空hello.txt文件中的内容
本质上是因为输出重定向会清空文件内容。
十二、less 指令(重要)
1、语法
2、功能
3、选项
十三、head 指令
1、语法
2、功能
3、选项
十四、tail 指令
1、语法
2、功能
3、选项
4、思考
(1)log.txt 文档有一万行,如果需要提取中间的 10 行(4990-5000),该怎么做呢?
a. 方法一:需要临时文件,先取前 5000 行数据到 temp 文件里。
再取 temp 文件的最后十行。
b. 方法二:不需要临时文件,这里利用了管道的功能,先取前 5000 行到管道作为 tail 10 的要取的对象,在此基础上利用了 tac 命令进行逆置即可。
(2)如果需要提取中间的 10 行(4990-5000),并将其逆置,又该怎么做呢?
十五、时间相关的指令
date 显示
1、在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
[ll@VM-0-12-centos lesson3]$ date
Sun Dec 3 19:19:01 CST 2023
[ll@VM-0-12-centos lesson3]$ date +%Y-%m-%d-%H:%M:%S
2023-12-03-19:19:01
2、在设定时间方面
3、时间戳
时间戳是指格林威治时间自 1970 年 1 月 1 日(00:00:00 GMT)至当前时间所经过的总秒数,它也被称为 Unix 时间戳(Unix Timestamp)。
为什么下面显示的是 1970 年 1 月 1 日 08:00:00 呢?难道不应该是 1970 年1 月 1 日 00:00:00 吗?
[ll@VM-0-12-centos ~]$ date +%Y-%m-%d-%H:%M:%S -d @0
1970-01-01-08:00:00 #格林威治与北京的时差是8小时
为什么要有时间戳?
时间戳用无符号整型变量来存储的,那么随着时间递增,时间戳有没有可能溢出呢?
时间戳溢出这个问题有解决方案吗?
十六、cal(Calendar)指令
1、命令格式
2、功能
3、常用选项
4、举例
Cal –y 2018
十七、find 指令(重要)
1、语法
2、功能
3、常用选项
4、扩展(其它查找指令)
(1)whilch(用来查找命令所在路径的命令)
#示例1:
[ll@VM-0-12-centos lesson3]$ which ls
alias ls='ls --color=auto' #alias取别名
/usr/bin/ls
#示例2:
[ll@VM-0-12-centos lesson3]$ which ll
alias ll='ls -l --color=auto' #alias取别名
/usr/bin/ls
#示例3:
[ll@VM-0-12-centos lesson3]$ which pwd
/usr/bin/pwd
【思考】
ls 和 ll 这两个命令,它们有什么区别呢?
alias ls='ls --color=auto'
alias ll='ls -l --color=auto'
可以自己取别名吗?
#给ls -l -a -i命令取别名为lll
[ll@VM-0-12-centos lesson3]$ alias lll='ls -l -a -i --color=auto'
#使用lll命令
[ll@VM-0-12-centos lesson3]$ lll
total 124
655469 drwxrwxr-x 3 ll ll 4096 Jan 2 21:39 .
655457 drwx------ 16 ll ll 4096 Jan 2 22:01 ..
790011 drwxrwxr-x 2 ll ll 4096 Jan 2 19:37 dir
655410 -rw-rw-r-- 1 ll ll 33 Jan 2 18:35 test.c
(2)whereis(在系统中特定路径下,对文档、命令等相关文件的查找,只要包含了这个关键字,都会找出来)
#示例1:
[ll@VM-0-12-centos lesson3]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
#示例2:
[ll@VM-0-12-centos lesson3]$ whereis pwd
pwd: /usr/bin/pwd /usr/include/pwd.h /usr/share/man/mann/pwd.n.gz /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz
十七、grep(Globally Search A Regular Expression And Print)指令
可参考:linux grep命令详解 - ggjucheng - 博客园 (cnblogs.com)
1、语法
2、功能
3、常用选项
十八、zip / unzip 指令
1、语法
2、功能
3、常用选项
4、举例
#将lesson3一级目录下的所有文件压缩
zip lesson3.zip lesson3/*
#将lesson3目录下及其子目录的所有文件压缩
zip -r lesson3.zip lesson3/*
#将lesson3解压到tmp目录下
unzip lesson3.zip -d /tmp #-d解压到指定目录tmp
十九、tar(Tape archive)指令(重要)
1、语法
2、常用选项
3、案例
(1)打包
tar -czf lesson3.tgz lesson3
tar -cvzf lesson3.tgz lesson3 #-v显示压缩的过程,压缩的哪些文件,这样防止遗漏文件
(2)解包
tar -xzf lesson3.tgz #解压到当前目录
tar -xzf lesson3.tgz -C /tmp #-C解压到指定目录tmp
tar -xvzf lesson3.tgz lesson3 #-v显示解压的过程,解压的哪些文件,这样防止遗漏文件
为什么要有压缩包?
二十、bc(Binary Calculator)指令
- 通过管道符
[ll@VM-0-12-centos lesson3]$ echo "(1+2*3+4+5)/3" | bc
5
- scale=2 设小数位,2 代表保留两位
[ll@VM-0-12-centos lesson3]$ echo "scale=2;1+2+3+4+5/3" | bc
11.66
二十一、uname(Unix name)指令
1、语法
2、功能
3、常用选项
二十二、重要的几个热键
1、常用热键
2、举例
(1)Ctrl + R
之前写了一个批量化脚本,这个命令很长,但又忘记了,那么可以利用 Ctrl + r 去找。
(2)Tab
假如我们忘记了某个命令后面是怎么拼的,我们可以按两下 Tab 就可以查看系统下所有以你输入字母开头的命令。如果命令只有一条,那么会直接对命令进行补齐。
如果要显示的命令太多,它会询问我们是否要显示。
(3)Ctrl + C
假如命令行被死循环或者错误程序刷屏了,想结束它就可以使用 Ctrl + C 命令就可以中止。
(4)exit | Ctrl + D
假如使用自己的帐号登录上了 Linux,后续又从自己的帐号登录上其它帐号,这时想退出就可以使用 exit 命令。Ctrl + D,通常代表键盘输入结束(End Of File 或 End Oflnput)的意思,它可以代替 exit 命令。
二十三、关机
1、语法
2、常用选项
注意:开机没有命令,因为它用的是电源。