小tip:选项是可以不使用的,每个指令都有它的默认选项
以下命名的说明,我都进行了实践操作,加以我自己的理解和官方解释加以实现
1.pwd命令
这个命令是用来查看你现在所处的目录的,我们的Linux使用没有图形化界面,所以我们无法直接看到我们所处的目录位置,pwd这个指令就可以帮助我们明了我们现在所处的路径;
2.ls指令
ls这个指令默认是输出当前目录下的所有文件和子文件,它也有很多的选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-l,输出文件的基本属性;
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件 -l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。
3.cd指令
我们可以在cd后空格再数输入路径(这里的路径可以是绝对路径也可以是相对路径),或者本目录中的文件,我们就可以改变进入到目标文件中;
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
小tip:每个目录都包括.和..两个文件,其中.文件是代表着当前文件路径;..文件是代表着上一级文件路径;我们可以通过cd..回到上一级路径;我们这里利用的cd..就是使用的相对路径;而绝对路径就是从根目录/目录1/目录2/当前目录;例如这样子的路径;
拓展:我们linux的路径分隔符和windows的是不一样的;linux的路径分隔符是 /斜杠,而windows的路径分隔符是 \反斜杠;如果你现在是用网站访问的我这篇结构那么你可以发现你现在访问的网址分隔符是用的 / ,我们通过这个小细节我们也可以推测出我们现在访问的网站他的服务器使用的是linux操作系统;
4.touch指令
我们可以通过这个指令来创建文件;还可以用它来更改文件或者目录的日期时间;
如图:我们创建了d1文件
选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
5.mkdir
这个指令的作用是创建目录;我们可以通过mkdir 【选项】 文件名 的方式来创建目录;
选项:-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录
如图我们没有使用选项直接创建了d2我们使用选项利用路径创建了多个目录;
6.删除指令
我们既然又了增加文件和目录的指令那么我们肯定也得有删除指令;
rmdir:它与我们的mkdir对立我们可以使用rmdir直接删除空目录;
rm:它可以删除文件也可以删除目录;
选项:
-r:当我们的目录不为空的时候我们可以使用-r来递归删除;
-f:我们不需要被询问就可以直接删除文件或目录;
我们可以-rf这样搭配使用使得我们不用被询问就可以直接删除大量文件;
由上面两图我们也可以清晰的看到没有-f我们会有linux的保护机制询问我们是否要删除文件;
7.tree指令
tree 文件或路径(如果直接输入tree默认当前目录)
我们通过这个指令我们可以获得一个树的结构,这个树我们可以看到这个目录下的文件一切文件下的文件
如果输入tree指令显示没有安装可以使用yum install -y tree这条指令来安装tree指令
8.cp指令
操作方式:cp 【选项】 源文件 目标文件
这个指令可以说是复制指令,我们可以把我们的文件复制到其他文件中去;
选项:
f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
这个选项其实很多很多指令都有,他们的作用其实大多都是跳过系统询问直接操作;
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理
我们一般在复制文件的时候使用的就是此选项,我们可以把此目录下的所有文件和文件夹的内容进行复制
如图我们通过tree命令首先看到我们的d1文件为空,而我们的mydir文件不为空
当我们直接复制mydir文件到d1的时候系统会提示,我们无法复制;
如图如果我们使用了-r指令我们就可以进行递归复制将mydir文件进行复制了;
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
这是-r与-R的不同:(下面的不同摘选自百度)
1、复制不同
-r:既复制当前目录下的文件,也复制当前目录下的文件夹。
-R:只复制当前目录下的文件,不复制当前目录下的文件夹。
2、覆盖不同
-r:含文件的文件夹会覆盖不含文件的同名文件夹,文件也会覆盖。
-R:不会覆盖含内容的文件夹,但是会覆盖同名的空文件。
9.mv指令
mv指令其实和我们windows中的剪切指令很像我们可以用来移动文件;我们在移动的过程中还可以通过改变目标路径的方式更改我们新地点的名字;
操作:: mv [选项] 源文件或目录 目标文件或目录
由此图我们可以看到我们将我们的mydir移动到了d1文件下方;
选项:-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
如图我们的d1中本来就有mydir文件(我没展现出来,因为上面的步骤中有操作)我们没有用-f选项时系统就会提示是否要overwrite我们输入y(es)就是确认覆盖,n则反之;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
10.cat指令
这个指令就类似与我们c语言中的printf指令我们可以将文件中的内容打印到屏幕上;
操作:cat [选项][文件]
我先使用nano code.txt指令打开了文本框输入了一段c语言代码,并把它保存在了我们的文件夹中;
当我们需要查看这个code文件的时候我们就可以用cat指令了
如果我们还想看到更多信息的话,我们可以加上它的选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
小拓展:我们还可以输入tac这样可以倒着输出文本;指令根据不同场景灵活变通使用;
11.echo指令
这个指令的作用是把内容打印到文件上方;
说到文件我们要知道一个概念linux下一切皆文件,应为linux需要学习的内容非常非常多,为了方便我们学习我们的大牛将指令路径等封装成了文件,就比如我们的 . 和 ..文件,它们本来是本文件和上级文件的路径但linux把它们封装成了文件,为了方便我们对linux系统的操作;
选项:
-n 不要输出衍生的新行
-e 启用反斜线转义解释
-E 禁用反斜线转义解释(默认)
我们echo指令,可以通过>输出重定向和>>追加重定向向文件中写入数据;当我们想要覆盖文件内容,写入新的内容时我们就可以使用echo “字符串” > 文件;
如果我们不想覆盖原有内容我们可以使用echo “字符串” >> 文件;
拓展:既然我们说到了linux下一切皆文件,那么我们的默认输出流——屏幕,它也是文件!它是只能写入无法写出的文件,我们直接echo“字符串” 的时候,我们可以在屏幕上看到我们的字符串又出现了一次;
这说明我们echo写入的文件是屏幕,这也论证了linux下一切皆文件的说法;
同理,我们的键盘——标准输入流,它也是文件,它是只能写入,无法写出的文件;
< 是 输入重定向,可以从文件中输入数据;我们可以使用cat < 文件,向屏幕输出数据;
小tip:我在使用echo的时候我发现 “” 和 ‘’ 单双引号的限制有所不同,单引号的限制大,它引用的所有字符都当作普通字符,而我们的双引号引用的字符只限制了部分的字符有些特殊字符是没有被限制的,比如说!;大家可以自己试着操作一下;
12.more指令
more指令它的作用和cat类似都是用来查阅文件的;
操作:more [选项][文件]
我们这个指令在打开大文件时,如果文件内容很多,屏幕没有装下,我们可以使用回车键,向下查阅内容;但是more的弊端就是只能向下查阅;
选项:-n 对输出的所有行编号
q 退出more
13.less指令
这个指令是查阅文件最好的一个指令;它包含了more的功能,而且它还可以上下搜索与翻阅,功能很强大;
操作:less [参数] 文件
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
14.head和tail指令
这两个指令和前面的more和less相似都是查看我们文件内容的;
操作:head -参数(多少行)
tail -参数(多少行)
head是查看文件头部开始多少行的内容,tail是查看从末尾开始参数表示的多少行内容
我们可以运用这两个指令来访问文件中具体多少行到多少行的内容;
1.我们可以通过创建临时文件的办法head -a(行数) 源文件 临时文件;再使用tail -b(行数) 临时文件 输出我们的b-a行到第a行的内容;
2.我们还可以通过使用管道的方式直接输出b-a行到第a行的内容;
我们的tail指令接受到管道中的数据直接输出;不需要创建临时文件;
15.date和cal指令
这两个指令从名字上看就是和时间有关的指令;
date:
操作:date 用法:date [OPTION]... [+FORMAT]
date 指定格式显示时间: date +%Y:%m:%d date
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%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
2.时间戳
时间戳是独一无二的每个时间的时间戳都是不一样的,时间戳和时间是可以进行转换的;
时间->时间戳:date +%s
时间戳->时间:date -d@1694768950
unix时间戳是从1970年1月1日(utc的午夜就是我们那个时候的8点(时差原因))到现在的秒数就是时间戳;
cal:
这个指令很简单就是输出一个日历
操作:cal [参数][月份][年份]
选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
16.find指令
操作: find -[选项] 文件
使用这样的操作会输出我们所有此名字文件的相应的文件的路径;
选项:-name 按照文件名查找文件。
17.grep指令
这个指令是用来搜素文件内容的,如果我们的文件内容很多,我们需要找到对应的内容时我们可以使用此指令,搜索后会将我们需要的内容的行打印出来
操作:grep [选项] 搜寻字符串 文件
小tip:我们的grep指令是默认大小写敏感的,我们如果不带选项搜索的话,需要注意大小写;
选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
18.zip和unzip指令
这两条指令是用来压缩和解压缩的;
操作:zip [选项] 压缩文件名 源文件
选项: -r 递 归处理,将指定目录下的所有文件和子目录一并处理
操作:unzip [选项] 压缩文件名 -d 解压文件名(路径)如果不加-d会默认解压到当前目录;
如图我们可以看到,我们将d1压缩成了d1.zip
如果我们不加-r会发生什么呢
我们会发现,虽然我们把d1压缩了但是它的压缩过程只有一行,和之前我们加了-r选项的差距很大,这是因为我们没有递归,只压缩了d1这个文件夹,没有压缩它里面的文件;
我们可以用unzip来解压我们的压缩包来查看到底是不是真的如我们所说这样:
我们可以发现我们解压d1并打开进入后该目录中没有任何文件;这也论证了我们的说法;
19.tar指令
操作:tar [-cxtzjvf] 文件与目录 .... 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
我们只需要记住两个选项组和:czvf压缩,和xzvf解压;我们这样可以把我们的文件压缩为.tar.gz后缀的压缩包,后缀简写.tgz;
解压:
原:
解压后:
我们将mydir.tgz解压到了d1文件中;
压缩:
可以看到我们压缩出了,高亮的a1.tgz文件;
20.which指令
在系统路径中,去查找特定的指令所在的路径;
21.alias指令
操作:alias 别名='指令'
我们可以使用这个命令给我们的指令起别名来使用这个指令;
小tip:我们等号两边不能有空格;
22.xargs指令
xargs充当命令行;将管道中的输出结构,作为命令行参数,交给后面的程序;
下面是图片示例:
23.bc指令
这就是一个linux的计算器工具,我们输入bc就可以进入,我们在里面输入我们的算数方程就可以获得答案;再用ctrl+c就可以退出了
24.uname指令
uname用来获取电脑和操作系统的相关信息;我们可以通过这个指令获得我们linux主机的各种基本信息;
选项:-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类 型,硬件平台类型,操作系统名称
25.重要快捷键
[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit
[Ctrl]-r按键---历史命令搜索功能(history也可实现此功能)
26.shutdown命令
这个命令我非常熟悉,因为在之前我上C语言课的时候我的老师教了我在windows下使用这个命令使得电脑关机,我就用这个指令编辑了一个小程序发送给同学,让同学打开这个程序的时候电脑直接关机。其实代码的学习也是有乐趣的!
这个指令最好不用,因为公司的服务器一般是24小时服务的是不会停的,我们如果不小心使用这个指令关掉了公司服务器会带来很大的麻烦;
操作:shutdown [选项] ** 常见选项:**
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
以上就是我所实践的linux指令,指令也不多,但是需要多多练习,熟能生巧!
2023.9.14-2023.9.15