文章目录
- 🤖1. 为何使用命令行操作
- 🫙2. Linux基本指令
- 🐧2.1 pwd 指令
- 🐧2.2 mkdir 指令
- 🐧2.3 ls 指令
- 🐧2.4 cd 指令
- 🐧2.5 touch 指令
- 🐧2.6 rmdir指令 && rm 指令
- 🐧2.7 man 指令
- 🐧2.8 echo 指令
- 🐧2.9 cat 指令
- 🐧2.10 cp 指令
- 🐧2.11 mv 指令
- 🐧2.12 more 指令
- 🐧2.13 less 指令
- 🐧2.14 head 指令
- 🐧2.15 tail 指令
- 🐧2.16 时间指令
- 🐧2.17 cal 指令
- 🐧2.18 find 指令
- 🐧2.19 grep 指令
- 🐧2.20 zip/unzip 指令
- 🐧2.21 tar 指令
- 🐧2.22 bc 指令
- 🐧2.23 uname 指令
- 🐧2.23 uname 指令
- 🧮3. 结语
🤖1. 为何使用命令行操作
Linux操作系统对于程序员来说,最好是采用命令行操作,在熟悉命令行的情况下,使用命令行工具可以比使用图形化界面(GUI)更快速和高效。命令行中的命令通常比GUI中的菜单和按钮更快捷,因为它们可以用更少的击键来完成相同的任务。通过命令行可以对Linux系统的每个方面进行控制,让我们更深入地了解Linux系统。
现在主流的操作系统(Windows Mac OS),都采用的是GUI,因为这对于普通用户更加友好,但早期的操作系统,都是采用纯命令行操作,没有GUI。所以Windows(Mac OS)也是可以用指令操作。
随着Linux的不断发展,Windows操作系统上也是兼容Linux指令的。
🫙2. Linux基本指令
Tips:
在xshell中,复制是ctrl + inert
,粘贴是shift + insert
🐧2.1 pwd 指令
语法:pwd
功能:显示当前用户所在目录
🐧2.2 mkdir 指令
语法:mkdir [选项]dirname
功能:在当前目录下创建一个名为"dirname"的目录
我们也可以一次性建立多个目录,指令为mkdir -p dir1/dir2
Tips:
tree .
指令是将当前目录结构以树状结构显示。新系统里面是没有安装这个tree的,可用指令:
yum install -y tree
进行安装(需使用root账户进行安装)。
🐧2.3 ls 指令
语法:ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a
列出所有文件和子目录,包括以.
开头的隐藏文件。-l
以详细信息的格式列出文件和子目录,包括文件的权限、所有者、文件大小、创建时间等信息。-F
在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。-r
以相反的顺序列出文件和子目录,即逆序排序。-t
按时间排序列出文件和子目录,最新的在前面。-s
按文件大小排序列出文件和子目录,文件大小从大到小排序。-R
递归地列出子目录中的文件和子目录,包括隐藏文件。G
以彩色显示文件和目录,不同类型的文件和目录会以不同的颜色显示。
Tips:
文件里面什么都不写入,也是占据磁盘空间的
文件有它的文件名(text),有它的类型(.txt),这些都是属于文件的属性,属性也是数据,需要存储。文件 = 文件内容 + 文件属性
那么我们在对文件进行操作的时候,就是对其文件内容操作或者文件属性操作。
我们这里发现,这些文件有drwxr
和 -
开头的,还有的是.
和..
,这些都是有区别的:
d
开头表示这这是一个目录
-
开头表示是一个普通文件
在Linux任何一个目录下,都有两个隐藏文件.
和..
.
表示当前路径,是用来定位当前目录的一个文件
..
表示当前目录的上级目录
🐧2.4 cd 指令
语法:cd 目录名
功能:进入指定目录
刚才讲到了..
是回退到上一级目录,可是我们退到最后时却发现退到/
就退不动了。
/
表示Linux的根目录,目录里面又可以放目录或者普通文件,这就代表了Linux的整个目录结构,是一个多叉树结构。
所以我们对所以文件或者目录的增删改查,本质都是对这棵多叉树的增删改查。
那么我们就可以从/
开始往下找到我们想要的位置,这种叫做绝对路径,该路径有唯一性,所以一般用于一些固定场景
反之,我们也可以以当前所处的路径作为参照,来进行特点位置的定位,这种叫相对路径,该路径比较短,我们在命令行输入时,比较常用。
常用:
cd ..
: 返回上级目录
cd /home/d1/d2/d3
: 绝对路径
cd ../day02/
: 相对路径
cd ~
:进入用户家目
cd -
:返回最近访问目录
🐧2.5 touch 指令
语法:touch [选项]
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
🐧2.6 rmdir指令 && rm 指令
rmdir dirname
,删除空目录
-
rm filename(dirname)
,删除文件夹rm -f
,直接删除,无需确认(root用户下,删除文件或目录会确认)rm -r
,递归删除(目录是递归定义)
使用
rm -rf
需要谨慎,因为这是直接把目录删除了,在Linux系统中,删除的目录或文件,很难找回。
rm -rf /
h或者rm -rf /*
,这是直接删除根目录,意思就是把这个Linux系统文件全部删除了,因为博主的也是新服务器,所以实验了一下:这个系统文件删除之后,就连接不上了,然后直接去网页端重装系统就行。
🐧2.7 man 指令
man
指令就相当于一个“字典”,Linux里面的指令很多,全部记住是较困难的,我们可采用man
指令进行查询。
语法:man [选项] 命令
常见示例:
-
man man
查询自己如何使用
-
man ls
man -3 printf
库里面的函数,例如C语言里面的printf
函数
Tips:
man手册是需要安装的,同样也是需要root用户
man手册下载:yum install man
man手册安装:yum install man-pages
man手册章节:
- 用户命令:包含用户常用的命令的手册,如ls,cd,cp等等。
- 系统调用:包含操作系统提供的系统调用的手册,如read,write,open等等。
- C库函数:包含C语言标准库函数的手册,如printf,scanf,malloc等等。
- 设备和特殊文件:包含设备驱动程序和特殊文件的手册,如/dev/null,/dev/tty等等。
- 文件格式和约定:包含文件格式和约定的手册,如/etc/passwd,/etc/group等等。
- 游戏和演示:包含游戏和演示程序的手册,如tetris,snake等等。
- 其他杂项:包含其他一些杂项的手册,如troff,groff等等。
- 系统管理命令:包含系统管理员使用的命令的手册,如mount,fsck,passwd等等。
- 内核例程:包含内核例程的手册,如fork,exec等等。
🐧2.8 echo 指令
语法:echo [optoin] [str]
功能:向终端输出,文本或变量值
常用示例:
-
echo "hello world"
-
echo "hello world > test.txt"
,将echo输出内容重定向到文件中(会将原文件内容清空,再继续写入) -
echo "linux" >> test.txt
,追加重定向。
🐧2.9 cat 指令
功能: 将一个或多个文件连接起来,或者显示文件内容。
常用示例:
-
cat
Tips:
在Linux中,一切皆文件,比如显示器(向显示器写入数据,然后显示器读出来)、键盘(从键盘读取内容)、普通文件。
-
cat test.txt
,指定了内容,从指定文件读取,输入重定向,显示文件内容。 -
cat > newtest.txt
,创建一个新文件,并在终端上显示一个空白的行,用户可以在该行输入内容,按Ctrl+D
键表示输入结束。
🐧2.10 cp 指令
语法:cp [选项] 源文件 目标文件
**功能:**复制文件或目录
常用命令选项:
-r
:递归复制整个目录树。-i
:在复制前询问是否覆盖目标文件。-u
:仅复制源文件中更新的文件到目标目录。-p
:保留文件的权限、所有者和时间戳等属性。-f
:强制复制,不询问是否覆盖目标文件。
常用示例:
-
cp test.txt test_backup.txt
,复制文件 -
cp test.txt ../mytest.txt
,拷贝到指定路径 -
cp -r d1 ../dd1
,拷贝目录到指定路径(目录是递归定义的,所以要采用-r
)
🐧2.11 mv 指令
语法:mv [options] source destination
**功能:**用于移动或重命名文件或目录。
常见选项:
-f
:强制移动,即使目标文件已经存在也不会提示。-i
:交互式移动,如果目标文件已经存在,会提示用户是否覆盖。-n
:不覆盖已经存在的文件。-u
:只会在源文件比目标文件新的时候才会执行移动。
常用示例:
-
mv test_backup.txt mytest.txt
,重命名文件(目录)名 -
mv rd1 ../
,剪切到指定位置
这里的
mv
,既能重命名,又能剪切,哪我们该如何分辩呢?如果源文件或目录和目标文件或目录在同一个文件系统内,那么
mv
命令执行后只是进行重命名操作;如果源文件或目录和目标文件或目录在不同的文件系统内,那么mv
命令执行后会进行剪切操作。
如果在当前文件(目录)重命名,可理解为mv test.txt ./mytest.txt
,那这样的话,我们就可以默认为mv
指令就是剪切并重命名。
🐧2.12 more 指令
功能:more
指令可以将文本内容显示按需求显示一部分。
cat
能将文本内容显示,但是如果文本内容过大,cat一次性显示完毕,那我们看这个文本的话就比较头疼。
常用选项:
- -n 对输出的所有行编号
- q 退出more
🐧2.13 less 指令
less
指令和more
指令类似,但是more
指令只能向下翻,无法向上翻,less
指令更加强大,支持前后滚动。
常见选项:
less filename
: 查看指定文件的内容less +num filename
: 从文件的第num行开始查看less -N filename
: 显示行号/pattern
: 在文件中搜索指定的字符串patternn
: 查找下一个匹配的字符串N
: 查找上一个匹配的字符串g
: 跳转到文件的开头G
: 跳转到文件的结尾q
: 退出less
程序
🐧2.14 head 指令
**功能:**按下去显示开头内容
语法:```head [参数] [文件]
常用示例:
-
head test.txt
或head -3 test.txt
🐧2.15 tail 指令
功能: 用于查看文件的末尾内容,默认情况下,它会输出文件的最后10行。tail
还支持实时追踪文件的变化,非常适合用于日志文件的实时监控。
语法:tail [OPTION]... [FILE]...
常用命令:
tail filename
: 查看文件的最后10行内容tail -n num filename
: 查看文件的最后num行内容tail -f filename
: 实时追踪文件的变化,输出新增的内容tail -F filename
: 实时追踪文件的变化,当文件被删除或重命名后,会自动重新打开文件
知道了
head
和tail
指令,再加上前面的重定向,我们就可以将一个文本的部分内容节选出来。
🐧2.16 时间指令
时间这个概念,在计算机里是十分重要的,很多大型的工程,都是需要用日志来记录的,日志可以记录我们程序运行的情况。如果程序出现问题,我们可以通过查看日志来很快的排除问题,查看出现问题的时间、事故的等级和基本信息。
在Linux中date
指令可以显示时间:
这个时间不是按我们习惯的形式显示的,可用这些格式进行调整:
- %H : 小时(00…23)
- %M : 分钟(00…59)
- %S : 秒(00…61)
- %X : 相当于 %H:%M:%S
- %d : 日 (01…31)
- %m : 月份 (01…12)
- %Y : 完整年份 (0000…9999)
- %F : 相当于 %Y-%m-%d
例如:date +%Y-%m-%d_%H:%M:%S
就可以按我们习惯的格式显示
时间这个概念,其实也是人为定义的,我们现在所采用的公历时间,其实是从1970年1月1日午夜00:00分开始所经过的秒数,这个叫时间戳。
-
时间->时间戳:
date +%s
-
时间戳->时间:
date -d@1684112488
当我们
@0
的时候,如图我们发现,显示的时间是1970年1月1日8时00分,这其实是我们因为我们国家和定义这个时间的地区有8小时的时差。
我们发现这个时间戳,一直是在单调递增的,那么这肯定是会溢出的,通过查询当时间到达2038年1月19日3时14分08秒(北京时间2038年1月19日11时14分08秒)时,数值位全部向前进1,导致符号位被置1,其余31位为0。介时,将出现“时间回归”的情况,系统时间变为1901年12月13日20时45分52秒,系统将会出现错误。
有兴趣的可以查看此篇文章了解详情:时间溢出问题及解决办法
🐧2.17 cal 指令
功能:cal
指令可以显示一年的日历、一个月的日历或指定时间段的日历(显示的是公历)。
命令格式: Cal [参数] [月份] [年份]
常用选项:
-m
: 将周从星期一开始显示(默认是从星期日开始)。-3
: 在输出日历的上一个月和下一个月显示上一个月和下一个月的日期。-y
: 将一整年的日历显示出来。
🐧2.18 find 指令
功能: 用于在文件系统中查找符合条件的文件和目录。
语法:find [path] [expression]
常用示例:
-
find ~ name "*.txt"
查找该路径下后缀为.txt
的文件
find
命令的功能非常强大,可以实现各种复杂的查找操作,例如按文件权限、文件属主、文件内容等等。需要注意的是,由于find
命令的语法比较复杂,使用时需要仔细阅读帮助文档,并且小心使用-delete
等危险选项,以免误删除文件。
🐧2.19 grep 指令
功能: 用于在文本文件中查找符合模式的行,并将其输出到屏幕或者保存到文件中。
语法:grep [options] pattern [file]
,pattern
表示要查找的模式,可以是一个字符串或者正则表达式;file
表示要查找的文件名,可以省略,省略时默认从标准输入中读取数据。
常用选项:
-i
:忽略大小写。-v
:输出不匹配的行。-w
:仅匹配整个单词。-n
:输出匹配的行号。-r
:递归查找子目录。
常用示例:
-
grep '999' log.txt
-
grep -i 'abc' log2.txt
忽略大小写过滤 -
grep -n '999' log.txt
,将匹配到的过滤行附上编号
🐧2.20 zip/unzip 指令
功能: zip
和 unzip
是用于压缩和解压缩文件的命令行工具。
语法:zip [options] zipfile.zip file1 file2 ... filen
压缩;unzip zipfile.zip
解压
在疫情时期,经常会有通知,将核酸采用截图发给XX,然后再由XX打包压缩发给上一级
这样的就是将所以截图打包,但是还未进行压缩,例如现在的微信、QQ,一般的打包文件都是需要进行压缩才能进行发送
打包的作用就是将多个文件汇总成一个文件,这样不容易造成文件的缺失
压缩可使体积变小,减少占据内存。
使用示例:zip -r d1.zip d1
压缩,unzip d1.zip
解压
这里的zip/unzip指令是需要安装的(root用户):
zip安装:
yum install zip
unzip安装:yum install unzip
🐧2.21 tar 指令
tar
也是属于一个打包压缩指令。
常用选项:
-c
:创建归档文件。-x
:解包归档文件。-z
:使用 gzip 压缩和解压缩。-j
:使用 bzip2 压缩和解压缩。-f
:指定归档文件名。-v
:显示操作过程。-C
:解包时指定解压缩目录。
常用示例:
-
tar czf dd1.tar.gz d1
,打包压缩 -
tar tzf dd1.tar.gz
,不解压,预览 -
tar xzf dd1.tar.gz
,解压tar xzf dd1.tar.gz -C ..
,解压到指定路径
🐧2.22 bc 指令
bc
指令是Linux里面的计算器:
🐧2.23 uname 指令
**功能:**获取电脑和操作系统的信息
语法:uname [选项]
常用选项:
-a
:查看所以系统信息。-r
:显示操作系统版本。
示例:
🐧2.23 uname 指令
功能: 获取电脑和操作系统的信息
语法:uname [选项]
常用选项:
-a
:查看所以系统信息。-r
:显示操作系统版本。
示例:
🧮3. 结语
这一篇讲解了Linux的一些指令,在我们平时写的一些程序,是可执行的,而这些指令也是可以执行的,所以指令本质上也是属于可执行程序。当我们胡乱输入指令时,会显示该指令不存在,这表明在执行这些指令时,系统会进行查找。
我们可用指令ls /usr/bin/
查看这个系统中默认的指令。
知道了这些知识,指令这东西也没啥高科技,本质上就是一个文件,只不过它可以执行并达到某种效果。
感谢大家收看,如果有帮助的话三连支持一下,我们下期再见,如果还有下一期的话。