南飓风 发表于 2025-2-12 07:50:45

Linux《底子指令》

在之前的Linux《Linux简介与情况的搭建》当中我们已经开端相识了Linux的由来和怎样搭建Linux情况,那么接下来在本篇当中我们就要来学习Linux的底子指令。在此我们的学习是包罗两个部门,即指令和关于Linux的底子知识;因此本篇指令和底子知识的学习方式是在学习指令的过程中将相干的底子知知趣识。信赖通过本篇的学习能让你相识Linux的更多知识,一起加油吧!!!
https://i-blog.csdnimg.cn/direct/c25f2a2ba53f468cb038bc0ac67808f9.png

1. Linux下根本指令

注:在以下指令的学习默认都是在root账号当中利用的,到接下来我们学习到开发工具之后再切换到普通账号 
1.1 adduser与userdel

在之前我们利用Xshell远程登入Linux时利用的实在是root账号登入,那么是不是一个云服务器就只能登入一个root账号呢?
实在除了root能登入之外还可以利用普通账号登入,只不外要先创建相应的普通账号才华进行登入。
那么在Linux当中创建普通账号的指令如下所示:
adduser [用户名]
设置普通账号暗码的指令如下所示:
 
passwd [用户名] https://i-blog.csdnimg.cn/direct/3e08238d330043e7821ab1a9eb0095b9.png 
以上操作进行之后就在Linux添加了新的普通账号,那么如果不想利用这个账号了呢,该怎样移除创建等账号呢?
在此移除普通用户账号的指令如下所示:
 
userdel -r [用户名] https://i-blog.csdnimg.cn/direct/a295efe8cbf54a95b8b6db18a169179e.png
注意:以上指令的-r不可省略,如今你还无法理解其中的原因,不必担心,之后学习了更多的知识之后就能理解了



1.2 pwd

在此pwd指令的作用是表现用户当前地点的目次
pwd https://i-blog.csdnimg.cn/direct/0efb02b7970d47eb8c6f69b44734001f.png
在以上就是利用超级用户登入时的默认路径,那么这里的/代表的是什么呢?
在此在linux的文件路径表示当中/表示的是路径分隔符,这和windows是类似的。
https://i-blog.csdnimg.cn/direct/9f1099e2a0ed42f5846f36840317a57d.png
注:在windows当中将存储多个文件的叫做文件夹,但在Linux当中一样平常都叫做目次,在此需要记取
   知识点

别的在两个路径分隔符之间的肯定是一个目次 ,并且路径的末端可能是一个目次也可能是一个普通文件
在Linux当中文件的存储实在是一个多叉树的结构,路径当中的/实在表示的就是根目次
https://i-blog.csdnimg.cn/direct/458970b7bb4d47e186d7db44c9b6bc75.png
https://i-blog.csdnimg.cn/direct/c2dce514e1284a1ab9c6236894e0195b.png
因此在利用root账户登入时,利用pwd指令之后表现的是/root,这是因为root账户默认的路径就是/root,在此/表示的就是根目次,root就是根目次内的文件




1.3 whoami

当我们想知道当前用户的名称就可以利用whoami指令
whoami 输入之后点击回车就会表现当前你所登入的账号用户的名称 
   超级用户(该超级用户被我命名为root) 
https://i-blog.csdnimg.cn/direct/fabeb39aef994493af5315bba270a62c.png
    普通用户(该普通用户被我命名为zhz)
https://i-blog.csdnimg.cn/direct/9284b3a02a514cf5b1afc25db02d2176.png


1.4 touch

touch指令的作用是在当前的目次当中创建一个普通文件
touch [文件名] https://i-blog.csdnimg.cn/direct/67009b23e333478289bef2d3e5fe1429.png

   知识点 

在Linux当中文件分为普通文件和目次,普通文件包罗文本文件、二进制可执行文件、动静态库、视频、音频、图片等。并且在Linux当中文件的范例是于文件的后缀是无关的,但在此还是发起差别范例的文件带上对应的后缀,这是因为在Linux的一些软件下文件的范例还是和后缀相干的,例如之后要学习的gcc、g++等。

在此我们创建了一个文件之后,此时文件内还任何内容都不存在,是否就说明该文件什么内容都不存在呢?
要解答这个问题就要相识到在Liunx当中文件是由内容加属性组成的,因此以上提到的文件为空是文件的内容为空,而文件被创建出来就拥有文件存储位置,文件的巨细等文件属性;这就使得文件的属性不可能为空,因此文件就不为空
   知识点

在Linux下文件=文件内容+文件属性,文件内容和文件属性都是数据,都要被生存起来

 
1.5 mkdir

mkdir指令的作用是在当前的目次下创建一个目次
mkdir [目录名] https://i-blog.csdnimg.cn/direct/8e9a1dc7485c4b1583e8a15809899560.png

那么如果我们要在创建目次时在其内部再创建目次;之后再在目次内创建普通文件以上的指令还能实现对应的功能吗?接下来就来试试看
https://i-blog.csdnimg.cn/direct/86ca040c905044f19ea5cd1bafaf2b8f.png
通过以上到的效果就可以看出mkdir无法实现我们的要求,那么有什么其他的方法呢?
在此我们要知道的是由于Linux的文件存储实在是一个多叉树的结构,因此以上创建一个带路径的目次时肯定是要进行递推式的创建的
   那么在此在学习ls指令的同时,我们要从此相识到的是在Linux的指令当中除了直接利用指令之外还可以利用携带选项的指令
格式为:指令 空格 -选项
在此在mkdir指令当中就提供了 -p选项 此时-p之后的就是路径,这时系统将自动创建好那些尚不存在的目次,即⼀次可以创建多个目次
mkdir -p [路径] https://i-blog.csdnimg.cn/direct/71530924eb134fd9abe3ad1053090be5.png
那么怎样验证我们利用mkdir -p指令之后真的创建了我们要求的目次呢?
接下来就在学习mkdir指令的同时再相识一个指令tree,该指令的作用是将指定的目次以树的形式展示出文件和目次结构
tree [目录] 注:在此tree指令一样平常系统不会自带
https://i-blog.csdnimg.cn/direct/74daeadcf9fc4d98aaa952b8aeb0b3c7.png
需要利用以下的指令进行安装
yum install -y tree https://i-blog.csdnimg.cn/direct/81b250c1848744fcb88d17ac9f82bb5d.png
   安装了之后就可以利用tree指令来验证之前我们利用mkdir创建的目次是否符合我们的要求
https://i-blog.csdnimg.cn/direct/3a7cb1f71cad4f6e899ee80a625072db.png
通过以上的输出效果就可以看出是满足我们的要求的 



1.6 ls

ls指令的作用如下:
对于目次,该下令列出该目次下的全部子目次与文件。对于文件,将列出文件名以及其他信息。
ls [目录或者文件] 例如以下就是利用ls将当前目次下的文件信息展示出来:
https://i-blog.csdnimg.cn/direct/c10a48fa451f422998d846bf6ad1af0d.png
   在ls指令当中也是也可以携带选项的,以下的完备的ls选项以及各自的作用
• -a 列出目次下的全部文件,包罗以 . 开头的隐含文件。
• -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 ⼀行只输出⼀个文件。 
以上的选项众多但是实在需要重点把握的只有两个就是-a 和 -l
https://i-blog.csdnimg.cn/direct/152def59ac47437cafd3a8b2454deb81.png
https://i-blog.csdnimg.cn/direct/726a88d6b0d7448ab4ba9033fb89fff5.png
   在相识ls指令的同时还要相识的是 ,指令之后的选项实在是可以一起传入的
就例如ls当中的-a和-l就可以在同一条ls指令当中利用:ls -l -a ,并且指令实在还也可以组合传入,例如以上的指令就可以变为ls -la,在此选项的次序是随意的
在相识ls当中-a选项之前先要来理解在Linux当中的隐藏文件是什么
我们知道在windows当中是存在隐藏文件的
https://i-blog.csdnimg.cn/direct/68cb6f3685874f0a861d4a738805061e.png

实在和windows一样Linux当中也是存在隐藏文件的,在此隐藏文件存在的意义是操作系同一样平常会将重要的文件默认隐藏起来,这样即利用户误操作也不会将重要的文件删除,包管的操作系统的稳固。
   知识点

在Linux当中以.开头的文件大概是目次都是隐藏文件,利用-a选项就可以将隐藏文件展示出来

   知识点

在ls指令利用-a选项当中表现出的 . 和 . . 分别表示当前路径和上级路径,并且对于任何一个目次肯定都存在 . 和 . .
https://i-blog.csdnimg.cn/direct/7c088d3e515e41879cc2466fcc061461.png
在ls指令利用-l选项当中每个文件大概目次表现的的第一个字符表示文件的范例;-表示是普通文件,d表示是目次
https://i-blog.csdnimg.cn/direct/b2c81188d5a04bf0bae98b5e96787ece.png

注:在此文件的范例实在除了以上提到的两种之外尚有很多范例的文件,但目前我们还不会接触到,到之后接触到再进行增补
 那么这时你可能就会迷惑了,以上提到的 . 和 . .文件有什么作用呢?
在此就先要相识两个概念——绝对路径和相对路径
 
在以上相识pwd指令时我们就知道在Linux下每个文件都是有路径的,但实在之条件到的都是绝对路径也就是都是从根目次/开始的,通过之前数据结构的学习知道绝对路径是具有唯一性的。
实在探求一个文件除了从根目次开始的绝对路径之外还可以利用相对路径的方式来查找。
相对于当前用户所处目次,定位⽂件的路径方式
例如以下示例:
https://i-blog.csdnimg.cn/direct/f0eb2b45df8649e3baec90138e5819d6.png
 
在以上的根目次下存在很多的文件和目次,在此如果要定位到名为src的文件可以通过/user/src绝对路径的方式来查找,如果此时处于local下就可以通过local的位置来定位,由于local和src的父节点相同因此使得src相对local的相对路径也是唯一的。
这时 .. 文件的作用就体现出来了,当我们要从local切换到local路径;此时 ../ 就定位到user,../user/src就定位到src文件。

因此通过以上的示例就可以看出 ..可以帮助快速的实现路径的切换,但要切换路径还需要cd指令,接下来我们就来学习该指令的利用方法


   知识点

定位文件既可以通过绝对路径也可以通过相对路径,两个路径都具有唯一性



1.7 cd

cd指令的作用是改变工作目次。将当前工作目次改变到指定的目次下
cd [目录名] 例如以下示例: 
在之前我们创建一个目次a,那么要进入到该目次内的b目次就可以利用cd指令
https://i-blog.csdnimg.cn/direct/73ade79aae5c4fc09929f8d16230d823.png
我们知道在root用户当中默认登入所处的路径是就是/root,那么普通账号默认的路径是什么呢?
接下来我们就利用几个普通账号来登入看看
https://i-blog.csdnimg.cn/direct/29e78ed3d09b423dbfe64337c81c1f10.png
https://i-blog.csdnimg.cn/direct/bc94d0fc26d443f7adb399e3ef3ba5d2.png
通过以上的两个普通账号默认路径就可以看出普通账号一开始都处在home目次下,那么home目次是什么呢?
   知识点

在此home路径称为家目次,全部普通账户的数据都是存储在家目次下的,之后差别账户的信息在存储在各自的账户路径下,这样做的目标是为了保护用户的信息,在普通用户登入时默认就处在对应的家目次下。
    那么在Linux是任何实现普通账号防止其他人进入其的家目次下的呢?
这个问题比及以下我们讲到权限时再来细致的讲解

那么在相识了家目次的相干知识之后接下来就再来相识cd指令的两个选项
//切换到用户的家目录
cd ~

//快速的切换回最近的一次路径
cd - https://i-blog.csdnimg.cn/direct/4e65b00f218242c0ab12630e2a49def5.png
 


1.8 rm

rm指令可以实现删除文件大概目次
rm [目录/文件] 在此利用rm删除时如果是普通文件就只需要 rm 文件名 即可 
https://i-blog.csdnimg.cn/direct/7dd071204d5844cabe22bf603dc32e45.png
但在删除目次时rm 目次名就无法删除
https://i-blog.csdnimg.cn/direct/7b01dd8470eb4d73b400b96922baddcb.png
这是因为目次是递归创建的,那么在删除时也要递归的删除,因此在删除目次时就需要给rm指令带上-r,表示递归删除
https://i-blog.csdnimg.cn/direct/1ea41aa83aa74301aec1adaf58e1562b.png
在一些情况下在递归删除目次时下令行还会问你是否确定,如果你想直接删除没有这个过程就可以加上-f选项。因此在删除目次时一样平常利用的是以下所示的指令
rm -rf [目录]  


1.9 man

在此在Liunx当中有很多指令,我们不可能将全部指令的功能和利用方法记取,如果想快速的查阅相干的指令就可以利用man手册来查询,在此man手册对应的指令就是man指令
利用方式如下所示:
man [选项] 指令 例如要查阅之前我们学习的ls指令就在下令行当中输入man ls,输入之后就会表现ls指令的相干信息,要退出就只需要点击q
https://i-blog.csdnimg.cn/direct/f958c54bb99a4c84a033dd0ebb9845a8.png

在此man除了可以查询Linux系统当中的·指令之外还可以查询C库当中的函数,例如要想知道C语言中的printf函数的功能就可以利用 man printf 指令来查询,但是以下的输出的printf指令,不是我们想查询的C库内的printf函数,那么这就需要我们来进一步相识man指令
https://i-blog.csdnimg.cn/direct/bafbee1eb6c04a5097f65271d8c45280.png
man除了能查询以上的系统指令和C库当中的函数之外还可以查询其他的信息,那么接下来就利用man指令来查询man
https://i-blog.csdnimg.cn/direct/ff078f49635c428aaaca63f2181395ba.png
在此就可以看出man手册一共是有9号的,但一样平常情况下我们自会利用到man手册当中的前三号手册内容,其他的根本不会利用到,因此在此我们也就不做相识
• 1 是普通的下令
• 2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么
头文件)
• 3 是库函数,如printf,fread4是特别文件,也就是/dev下的各种设备⽂件
• 4 略
• 5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
• 6 是给游戏留的,由各个游戏自己定义
• 7 是附件尚有⼀些变量,比如像environ这种全局变量在这里就有说明
• 8 是系统管理用的下令,这些下令只能由root利用,如ifconfig
• 9 略

那么以上我们要查询的C库当中的printf函数就要利用 man 3 printf 指令来查询
https://i-blog.csdnimg.cn/direct/3c7588dd549547d6958542e17a7e9845.png


1.10 cp

在以上我们学习了文件在Linux下该怎样创建和删除,那么有时我们还要将一个文件进行复制粘贴,这时就需要用到cp指令
cp指令得作用是复制文件或目次
指令得形式如下所示:
 
cp 源⽂件或⽬录 ⽬标文件或⽬录 但在详细相识cp指令之前要再来相识一些Liunx的知识
    知识点

在Linux下,统统皆文件
在此我们要相识一个指令——echo,作用是将文本输入到指定的文件当中,默认情况下在为指定文件时就直接将文本输入到表现器文件当中。在利用echo之后的文本内容最好利用" "引起来,这样要输入的内容就更加显著
https://i-blog.csdnimg.cn/direct/51fd318e3061496b961adf0ce1813a10.png 
当我们指定输入的文件时就会将文本的内容该为输入到指定的文件当中
https://i-blog.csdnimg.cn/direct/6410148bf6244bef8e970cad80134e71.png以上出现的一个之前我们没有学习到的指令——cat,实在该指令的作用就是获取指定文件内的文本信息,接下来还会细致讲解,在此只是先利用一下。
以上我们先test文件当中输入了字符串hello world,那么如果在将字符串AAA输入到test文件当中会追加到原来的hello world 之后吗?
接下来就来试试看
https://i-blog.csdnimg.cn/direct/f5b4868788a7409188fce75ea54fae63.png
通过利用可以看出输入的AAA会将test内原本文本覆盖。实在以上指令当中的 >  叫做输出重定向,在echo之后利用>就会先将原来文件内文本清空;之后再将新的内容写入。并且不带echo直接利用>之后带文件名,当文件之前就存在就会将文件内的文本全部清除
https://i-blog.csdnimg.cn/direct/c0d9e05bc9744ab585c1baad290adb7f.png
若文件原来不存在就会创建相应名称的文件在当前路径下https://i-blog.csdnimg.cn/direct/8c994c50ed7c4545b68d0156451afcc2.png 
那么这时就有问题了,如果此时我们想向指定的文件当中追加指定的文本,以上的 > 就无法满足我们的要求,那么这时有什么办法呢?
在此要实现追加的功能就需要用到 >> 来实现追加重定向https://i-blog.csdnimg.cn/direct/580d91b2757a4610ae11b95b9676e80c.png 
实在除了以上提到的输出重定向和追加重定向,还存在输入重定向,利用到的符号是 < 
https://i-blog.csdnimg.cn/direct/a9eabf2083e045f0a8ad7ebd543fa228.png

因此以上的内容就可以总结出以下的知识点
   知识点

echo默认是向表现器输出,要向指定的文件写入就需要利用到  > 进行输出重定向, 如果要进行追加重定向就需要利用 >> ,如果进行输入重定向就需要利用到 < 


那么在相识echo以及输入重定向的相干知识之后接下来就来进一步的相识cp指令
以下就是将我们之前在b目次下的test文件复制到b目次当中就按照以下的形式实现:
https://i-blog.csdnimg.cn/direct/7e3040751b0e41dabaab0bd15fedfd3a.png
那么若要将test文件复制到zhz目次下并且还要将文件重命名为newtest,那么就需要在指定的目次下再将新的文件名也创建
注:在此新文件名肯定要是不存在的
https://i-blog.csdnimg.cn/direct/da13f4972b3b406ba30313ec3a3fd2cc.png
 
 
在此要复制一个目次呢,也是直接利用cp指令吗?
在此我们来试着看看
https://i-blog.csdnimg.cn/direct/2a98441e160d476f835599c366029669.png通过以上的报错就可以看出在复制目次时直接利用cp无法满足我们的要求,此时要完成目次的复制也是要带上-r 选项的,就和之前我们删除目次一样,-r 表示递归,毕竟目次是也是一棵子树如果能直接利用cp复制,那么也显的很不公道。
https://i-blog.csdnimg.cn/direct/e6c00ccb3b85468f95c37b7396bafac5.png                                                                                                                                                                                                                                                                                                                                                            

 1.11 mv

在以上我们相识了文件的复制,但有时还需要进行文件的剪切,此时就需要利用到mv指令
mv下令是move的缩写,可以用来移动文件大概将文件改名(move (rename) files,常常用来备份文件大概目次
https://i-blog.csdnimg.cn/direct/06f267aba8304618bc475d998eecc289.png
在此也可以利用mv来实现目次的剪切
https://i-blog.csdnimg.cn/direct/311e0c510bf64da4a1af9277ec8cc158.png 


1.12 which 

如果我们要搜索系统下指令的路径就课利用which指令
which [指令]  那么有了which指令之后就可以来查询之前我们学习的cp、ls等指令在系统内的路径了。 
https://i-blog.csdnimg.cn/direct/0494ce64722b44218059c4ff45cd8b40.png
通过以上就可以看出ls、cp都是在 /usr/bin 路径下的文件,那么相识了这些之后就可以引入一个知识了
   知识点

在Linux下,统统指令都是程序,并且系统特定路径/usr/bin下的程序
在此利用ls指令将 /usr/bin 内的文件展示出来就可以看到确实系统的指令都是在该目次下的
https://i-blog.csdnimg.cn/direct/50e65c10324d40d396aabc2dc7d065b5.png 
因此在利用系统的指令时利用带绝对路径的方式也是可以调用的
https://i-blog.csdnimg.cn/direct/7c5ed10109a44ff3a4b03624eef2060f.png那么为什么在之前调用系统的指令时我们不用带路径直接输入指令名就可以利用呢?
在此该问题就不进行解答,到之后学习到进程部门再来解答,如今你在需要知道指令就是特定路径下的指令即可
如果我们直接利用绝对路径来调用ls,那么目次就不会带颜色,而直接利用ls就会带,那么这是为什么呢?
https://i-blog.csdnimg.cn/direct/6263abb5d4264884adc61c5d805de2ca.png
这就需要再利用which来观察了
https://i-blog.csdnimg.cn/direct/1572f719d6e349519030e84a8298e7f9.png 
这时就可以看到ls指令实在原来是被加上了 --color=auto选项的,在此alias是给原来的ls起别名,这就使得在利用ls指令时默认的就是利用ls --color=auto 
https://i-blog.csdnimg.cn/direct/d367acbaa33541e1a26d4e3abdb61d31.png


   在此再增补一个指令ll,该指令实在就是ls -l 的别名,之后我们要利用ls -l 指令就可以直接利用 ll
https://i-blog.csdnimg.cn/direct/2ee1c325bfee4c879921a11dcb220659.png
 

 
1.13 cat

在此cat的作用在之前就已经提到了就是检察目标文件的内容
cat [文件] 若要使得输出的文件内的文本带上行编号就需要用到 -n 选项
cat -n [文件名] https://i-blog.csdnimg.cn/direct/4ccd01e455584ec297590bc882665d58.png 
   但是如果文件内的文本内容非常多,此时就会刷屏,那么此时想要退出就需要按 CTRL+c 就可以强制退出
https://i-blog.csdnimg.cn/direct/75fe1417263249a2a92a2bc9a1e6f31b.png 
https://i-blog.csdnimg.cn/direct/62cf6616c5bc463c8311e9d32995491d.png

注:在此要从末端开始检察文件的文本内容可以利用tac指令,其利用方式和cat范例




1.14 more

在以上的cat指令在打开大文本内容的文件会出现刷屏的问题,那么此时就适合适用more指令了
more [文件] 例如当打开系统的日志时就可以利用more来检察
more /var/log/messages
https://i-blog.csdnimg.cn/direct/519708bf11204f0f86df6fedc4bd485e.png 
利用more指令打开文件后会先表现满一屏,在左下方会表现出如今所处的进度,要向下翻阅只需要点击ENTER即可
要按照关键字查询就点击 / 之后再输入要查询的关键字,之后再点击 ENTER 就会输出关键字,之后再点击 n 就能继续向下查询 




1.15 less

以上我们相识了more指令,实在more在检察大文本的文件是确实是要比cat指令要好用,但是more指令也纯在问题就是在more指令内不能进行前后的翻阅,因此在此我们就来学习一个比more更好用的指令——less
less的功能:less与more类似,但利用less可以随意欣赏文件,而more仅能向前移动,却不能向后移动,而且less在检察之前不会加载整个文件。

在此还是打开系统的日志利用指令 less /var/log/messages
https://i-blog.csdnimg.cn/direct/f1d10482ca1640f69bc2e27ba98e525a.png
此时在查询关键字就会发如今less指令内还会将查询的关键字高亮标注出来
 


1.16 head与tail

在以上我们已经相识了cat以及more和less来检察文件的文本内容,但是这几个指令在检察时都是将整个文件的文本都输出出来,要是我们只是想看文件当中的开头几行大概是末端几行时;这几个指令就会服从较低了
这时以上提到的场景就适合利用 head 以及 tail 指令了。
head 与 tail 就像它的名字⼀样的浅近易懂,它是用来表现开头或结尾某个数目的笔墨区块,head 用来表现档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
   head功能:head 用来表现档案的开头至标准输出中,默认head下令打印其相应⽂件的开头10行。
tail功能:用于表现指定文件末端内容,不指定文件时,作为输⼊信息进行处理惩罚。常用检察日志文件。
head和tail都拥有选项:• -n <行数> 表现的行数 
https://i-blog.csdnimg.cn/direct/bc30a4799721492fb501c1c3088e3307.png
https://i-blog.csdnimg.cn/direct/903d2ae45d1c4bd0927ea2434ac800db.png
此时有了head和tail指令确实可以直接将文本的重新开始的指定行输出大概是末端的指定行输出,但是问题就来了,如果我们要输出的是中间的指定行;就例如要输出50~60行,那么该怎么实现呢?
首先你可能会想到的是先利用head得到前面60行存入到临时文件当中,之后再对临时文件利用tail得到后21行。以上操作下来就可以得到原来文件当中的50~60行
以上这种方式确实能办理问题,但是办理的过程显得较为繁琐,那么有什么更加简便的方式呢?
在此要办理该问题就需要引入管道的相干概念,利用管道来实现以上操作指令如下所示
head -60/var/log/messages | tail -21
以上的 | 就是管道,实现的大致的过程就是将head之后的文本再利用tail进行加工,最后形成的文本就是我们想要的内容。详细的实现过程之后的篇章再进行讲解
 https://i-blog.csdnimg.cn/direct/e1c42f60b2044d3a883eb2fd04c1afc4.png


1.17 date

在此如果要在Linux当中获取当前的时间就可以利用到date指令
date https://i-blog.csdnimg.cn/direct/47e5a4de783b4f9aac7f1374bc898c00.png
但是以上天/月/年的形式不太符合我们的直觉,这时要系统输出年/月/日的格式就要输出以下的指令
在表现方面,利用者可以设定欲表现的格式,格式设定为⼀个加号后接数个标志,其中常用的标志
列表如下 
• %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
在每个%之前需要利用-、_等字符进行差别的分别 
https://i-blog.csdnimg.cn/direct/fa009a60b0e14a37aeb1d218ec9a24f9.png
 
但其着实学习date指令当中date指令的利用不是最为重要的,在此我们最需要相识的是一个叫做时间戳的概念
 
   知识点

那么首先来看时间戳是什么:
https://i-blog.csdnimg.cn/direct/4a8171f638604bcbae1ac9cb1327c94e.png
有了时间戳之后天下差别地区的计算机都能有同一的计时的方式,这是互联网的一次大进步。 
那么在Liunx当中我们该怎样来获取时间戳呢?
在此就来讲解写一个非常简单的方式来获取当前的时间戳。
   注:在此我们利用nano只是当前较为容易理解,该记事本不是之后我们要进行利用的,在之后的篇章学习了vim之后,根本都是利用vim进行代码的编写
首先我们要来相识一个叫做nano的文本计事本,你可以类比Windows当中的记事本,nano的作用是和记事本类似的,就是用于记入文本内容的
 https://i-blog.csdnimg.cn/direct/91c6d18454554e1abadb4be5fc10a38f.png
在Linux当中打开nano只需要输入 nano [文件] 指令(当nano打开的文件不存在会自动的创建对应的文件)
https://i-blog.csdnimg.cn/direct/10a801d4e3a544a38fee0f1a3e188ec1.png
输入以上指令之后就会进入nano记事本内
注:之后我们要利用gcc进行编译,这就使得创建的文件后缀要为.c

#include<stdio.h>
#include<time.h>


int main()
{
      printf("%lu",time(NULL));

      return 0;
}

之后在nano记事本内输入以下的代码,之后在nano内点击CTRL+x,再点击y+ENTER即可生存退出nano

#include<stdio.h>
#include<time.h>


int main()
{
      printf("%lu\n",time(NULL));

      return 0;
}

利用gcc编译之后就形成了a.out的可执行程序,在此你可能还无法理解这个过程是怎样实现的,在此不必担心,之后的Linux底子开发工具篇章会进行细致的讲解
https://i-blog.csdnimg.cn/direct/c1187067fe254c4c982cc8c16d19da46.png
 运行a.out就可以得到当前的时间戳
https://i-blog.csdnimg.cn/direct/815770d474e74971870a741483dc7db0.png
实在要快速的获取当前的时间戳可以直接利用以下指令来实现
date +%s 以上我们已经知道该怎样获取当前的时间戳了,那么如果要将时间戳转换为 年 月 日 的格式要进行什么样的操作呢?
这时只需要利用以下的指令
date +%Y-%m-%d\ %H:%M:%S -d @0 https://i-blog.csdnimg.cn/direct/1c9f92387881492cbf9b030793b8eb9d.png

 

1.18 cal

al下令可以用来表现公历(阳历)日历。
cal https://i-blog.csdnimg.cn/direct/ef98fa72a2c54d0a8d62aeb6353305b9.png 
   常用选项:
• -3 表现系统前⼀个月,当前月,下⼀个月的月历
https://i-blog.csdnimg.cn/direct/4cef534f682d42bead75b2027d3c352c.png
• -j 表现在当年中的第几天(⼀年日期按天算,从1月1号算起,默认表现当前月在⼀年中的天数)
https://i-blog.csdnimg.cn/direct/771880cc576e42f1b5eaa9eb056ab02c.png

• -y 表现当前年份的日历
https://i-blog.csdnimg.cn/direct/cc1d241e4890425bbff9f191c0b4c302.png


此时你可能就会有迷惑了,为什么Linux下要提供日历?
其着实任何操作系统下都是要提供日历的,就例如Windows下就有
https://i-blog.csdnimg.cn/direct/cd2297224b3e4340ad26881416d1d816.png
那么你可能还会有迷惑就是其他设备上都能看到时间,什么情况下才会利用cal来获取呢?
这对于我们普通用户确实是作用不大的,但对于一些底层开发的系统工程师,他们在开发时可能不能将手机等电子设备带入到机房内,这时date和cal指令的作用就表现出来了


1.19 find

find指令的功能是用于在文件树中查找文件,并作出相应的处理惩罚(可能访问磁盘)
find -options [文件名]  find当中的常用选项为• -name 作用是按照文件名查找文件
那么find和之前我们学习的which指令有什么区别呢?
find进行的是系统目次的直接查找,可以查找恣意的文件;而which只能用来查找系统自带的可执行程序,也就是只能查询 /usr/bin/ 路径下的指令



1.20 whereis

除了以上的which和find指令能进行查询之外,尚有一个指令whereis也能进行查询,差别的是whereis用于找到程序的源、二进制文件或手册
例如以下示例: 
https://i-blog.csdnimg.cn/direct/d24ce8b3910844f3922d562f32f3fea1.png


1.21 grep

在Linux当中当我们要进行行文本的过滤就可以利用grep指令
该指令的功能就是在文件中搜索字符串,将找到的行打印出来
grep [搜索的字符串] [文件] 例如以下示例: 
https://i-blog.csdnimg.cn/direct/b47946b44eb44f07b2ee0b74093ddd15.png
在此如果要在过滤时表现行号就需要带上选项 -n 
grep -n [搜索的字符串] [文件] https://i-blog.csdnimg.cn/direct/6ee1483247cd479885aad60e6f695918.png
 
在grep指令当中除了以上的 -n 选项之外以下的选项也较为常用
• -i :忽略巨细写的差别,所以巨细写视为相同
• -v :反向选择,亦即表现出没有 '搜寻字符串' 内容的那一行
https://i-blog.csdnimg.cn/direct/a308392f8baa410ebc095e11fb1e35f2.png



1.22 zip 

在以受骗中我们相识了在Liunx下怎样创建文件,复制、剪切文件,删除文件等操作,但如果要进行文件的传输就需要来相识怎样在Linux下进行文件的打包和压缩
   知识点

首先要相识的是什么是打包压缩
打包压缩是利用特定的算法将文件进行归并大概压缩的操作,从而到达减小文件的体积,最终实现的效果就是将文件打包压缩为一个整体
那么为什么要进行打包压缩呢?
首先是文件的体积太大在存储时就很浪费空间,将文件进行压缩之后文件的体积减少,就实现了节省资源;节省磁盘空间。
别的打包压缩之后将多个文件转化为一个文件,这就使得在进行文件传输时的容错性大大提拔。

相识了打包压缩的作用之后接下来我们就来学习怎样进行打包压缩
注:在以下学习的打包压缩当中是将这两个步骤直接利用一个指令来实现,没有分开实现,这样更易于操作
要进行打包压缩就可以利用以下的指令
zip (-r)[目录] dst.zip src 在以上的指令当中src要进行打包压缩的文件,dst是打包之后的文件名,以zip结尾。当要打包的为目次时就需要带上-r 选项
   如果在利用以上的指令时,表现出以下,这就说明你的Liunx系统当中没有安装zip软件,此时你就要输入 yum install -y zip unzip
https://i-blog.csdnimg.cn/direct/4200c9457ead4dc39149762cc2c6f978.png
以下就是利用zip指令进行打包压缩的示例展示 
https://i-blog.csdnimg.cn/direct/255497ee6de34c9f95458bf8d5929e1e.png
 
学习了怎样打包压缩之后接下来我们继续来学习怎样进行解压解包
unzip XXX.zip
unzip XXX.zip -d [路径] 以上两个指令就展示怎样进行解压解包,如果是直接在unzip之后带压缩包;那么此时就是直接将对应的压缩包解压到当前路径下。如果在之后带上 -d 选项再外加上要解压到的路径就可以实现将压缩包解压到指定的路径上
解压到当前路径下:
https://i-blog.csdnimg.cn/direct/74f2139ec9b74a0b8dc6b04a543c4dba.png

解压到指定的路径下:
https://i-blog.csdnimg.cn/direct/1706c1b62f20475698bcc242d25fe08d.png 
我们知道在Windows之间是可以进行文件的回传的,实在Linux和Windows之间也是可以进行文件的传输的,那么接下来就来讲解怎样操作

知识点 

利用lrzsz这个工具用于 windows 呆板和远端的 Linux 呆板通过 XShell 传输文件。
利用以下的指令可进行该软件的安装
sudo yum install -y lrzlz 此时要将Linux内的文件传输到Windows当中只需要在下令行当中输入sz 文件名,之后就可以选择Wndows当中吸收该文件的位置
https://i-blog.csdnimg.cn/direct/10ffdc6d631748fda5929328f2b43d68.png
要将Windows当中的文件传输到Linux当中就是要指令 rz 来实现,输入之后回车就可以选择要传输的文件
https://i-blog.csdnimg.cn/direct/6eb8908f96274ae39276272bf6a9a996.png
但实在尚有一种比以上更简单的方式,那就是直接将Windows中的文件拖拽到Xshell中即可
 


1.23 tar

除了以上的zip指令将文件压缩为zip格式之外,较为常见的压缩包格式尚有tgz格式。要将文件压缩为tgz压缩包就需要利用tar指令
tar -czf dst.tgz src 以上src表示的是要进行压缩的文件,dst.tgz是压缩之后的压缩包名称。选项中的 -c 表示创建一个打包压缩的文件,-z表示进行压缩,-f 表示之后紧跟的文件就是打包压缩之后要形成的文件
注:如果要在执行以上指令时表现过程就要再加上 -v 选项
https://i-blog.csdnimg.cn/direct/4881a7f687124967994590ce602818f1.png
要将tgz格式的压缩包进行解压解包就要利用以下指令
tar -xzf XXX.tge  以上XXX.tge表示的是要进解压解包的压缩包。选项中的 -x 表示解开一个压缩文件,-z表示进行压缩,-f 表示之后紧跟的文件就是打包压缩之后要形成的文件
注:如果要在执行以上指令时表现解压过程就要再加上 -v 选项
https://i-blog.csdnimg.cn/direct/f4c187972df341bca0f1ae94297a3b77.png
若要将解压出的文件到指定路径下就利用以下指令
tar -xvzf -C [指定路径]


1.24 uname

当我们要获取当前 linux主机所用的操作系统的版本、硬件的名称等根本信息 就可以利用unam指令。
https://i-blog.csdnimg.cn/direct/b4895122f9f24282b6cf0309ca87d5ac.png
常用选项:
• -a或‒all 详细输出全部信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理惩罚
器范例,硬件平台范例,操作系统名称 
https://i-blog.csdnimg.cn/direct/0dc64c42ae054297b733e1feb1c04159.png


1.25 增补热键

在相识以上的根本指令之后接下来我们来相识几个Linux下的热键,学习了之后能显著的提高我们的服从
1.按键---具有『下令补全』和『档案补齐』的功能
2. -c按键---让当前的程序『停掉』
3. 利用上下键可以翻阅之前的历史下令
4.利用-r可以翻阅历史下令
 




以上就是本篇的全部内容了,接下来在下一篇章中将继续带来Linux权限的相干知识,未完待续……

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Linux《底子指令》