Linux《基础指令》
在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识;因此本篇指令和基础知识的学习方式是在学习指令的过程中将相关的基础知识了解。相信通过本篇的学习能让你了解Linux的更多知识,一起加油吧!!!
1. Linux下基本指令
注:在以下指令的学习默认都是在root账号当中使用的,到接下来我们学习到开发工具之后再切换到普通账号
1.1 adduser与userdel
在之前我们使用Xshell远程登入Linux时使用的其实是root账号登入,那么是不是一个云服务器就只能登入一个root账号呢?
其实除了root能登入之外还可以使用普通账号登入,只不过要先创建相应的普通账号才能进行登入。
那么在Linux当中创建普通账号的指令如下所示:
adduser [用户名]
设置普通账号密码的指令如下所示:
passwd [用户名]
以上操作进行之后就在Linux添加了新的普通账号,那么如果不想使用这个账号了呢,该如何移除创建等账号呢?
在此移除普通用户账号的指令如下所示:
userdel -r [用户名]
注意:以上指令的-r不可省略,现在你还无法理解其中的原因,不必担心,之后学习了更多的知识之后就能理解了
1.2 pwd
在此pwd指令的作用是显示用户当前所在的目录
pwd
在以上就是使用超级用户登入时的默认路径,那么这里的/代表的是什么呢?
在此在linux的文件路径表示当中/表示的是路径分隔符,这和windows是类似的。
注:在windows当中将存储多个文件的叫做文件夹,但在Linux当中一般都叫做目录,在此需要记住
知识点
此外在两个路径分隔符之间的一定是一个目录 ,并且路径的末尾可能是一个目录也可能是一个普通文件
在Linux当中文件的存储其实是一个多叉树的结构,路径当中的/其实表示的就是根目录
因此在使用root账户登入时,使用pwd指令之后显示的是/root,这是因为root账户默认的路径就是/root,在此/表示的就是根目录,root就是根目录内的文件
1.3 whoami
当我们想知道当前用户的名称就可以使用whoami指令
whoami
输入之后点击回车就会显示当前你所登入的账号用户的名称
超级用户(该超级用户被我命名为root)
普通用户(该普通用户被我命名为zhz)
1.4 touch
touch指令的作用是在当前的目录当中创建一个普通文件
touch [文件名]
知识点
在Linux当中文件分为普通文件和目录,普通文件包括文本文件、二进制可执行文件、动静态库、视频、音频、图片等。并且在Linux当中文件的类型是于文件的后缀是无关的,但在此还是建议不同类型的文件带上对应的后缀,这是因为在Linux的一些软件下文件的类型还是和后缀相关的,例如之后要学习的gcc、g++等。
在此我们创建了一个文件之后,此时文件内还任何内容都不存在,是否就说明该文件什么内容都不存在呢?
要解答这个问题就要了解到在Liunx当中文件是由内容加属性组成的,因此以上提到的文件为空是文件的内容为空,而文件被创建出来就拥有文件存储位置,文件的大小等文件属性;这就使得文件的属性不可能为空,因此文件就不为空
知识点
在Linux下文件=文件内容+文件属性,文件内容和文件属性都是数据,都要被保存起来
1.5 mkdir
mkdir指令的作用是在当前的目录下创建一个目录
mkdir [目录名]
那么如果我们要在创建目录时在其内部再创建目录;之后再在目录内创建普通文件以上的指令还能实现对应的功能吗?接下来就来试试看
通过以上到的结果就可以看出mkdir无法实现我们的要求,那么有什么其他的方法呢?
在此我们要知道的是由于Linux的文件存储其实是一个多叉树的结构,因此以上创建一个带路径的目录时一定是要进行递推式的创建的
那么在此在学习ls指令的同时,我们要从此了解到的是在Linux的指令当中除了直接使用指令之外还可以使用携带选项的指令
格式为:指令 空格 -选项
在此在mkdir指令当中就提供了 -p选项 此时-p之后的就是路径,这时系统将自动建立好那些尚不存在的目录,即⼀次可以建立多个目录
mkdir -p [路径]
那么如何验证我们使用mkdir -p指令之后真的创建了我们要求的目录呢?
接下来就在学习mkdir指令的同时再了解一个指令tree,该指令的作用是将指定的目录以树的形式展示出文件和目录结构
tree [目录]
注:在此tree指令一般系统不会自带
需要使用以下的指令进行安装
yum install -y tree
安装了之后就可以使用tree指令来验证之前我们使用mkdir创建的目录是否符合我们的要求
通过以上的输出结果就可以看出是满足我们的要求的
1.6 ls
ls指令的作用如下:
对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
ls [目录或者文件]
例如以下就是使用ls将当前目录下的文件信息展示出来:
在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
在了解ls指令的同时还要了解的是 ,指令之后的选项其实是可以一起传入的
就例如ls当中的-a和-l就可以在同一条ls指令当中使用:ls -l -a ,并且指令其实还也可以组合传入,例如以上的指令就可以变为ls -la,在此选项的顺序是随意的
在了解ls当中-a选项之前先要来理解在Linux当中的隐藏文件是什么
我们知道在windows当中是存在隐藏文件的
其实和windows一样Linux当中也是存在隐藏文件的,在此隐藏文件存在的意义是操作系统一般会将重要的文件默认隐藏起来,这样即使用户误操作也不会将重要的文件删除,保证的操作系统的稳定。
知识点
在Linux当中以.开头的文件或者是目录都是隐藏文件,使用-a选项就可以将隐藏文件展示出来
知识点
在ls指令使用-a选项当中显示出的 . 和 . . 分别表示当前路径和上级路径,并且对于任何一个目录一定都存在 . 和 . .
在ls指令使用-l选项当中每个文件或者目录显示的的第一个字符表示文件的类型;-表示是普通文件,d表示是目录
注:在此文件的类型其实除了以上提到的两种之外还有很多类型的文件,但目前我们还不会接触到,到之后接触到再进行补充
那么这时你可能就会疑惑了,以上提到的 . 和 . .文件有什么作用呢?
在此就先要了解两个概念——绝对路径和相对路径
在以上了解pwd指令时我们就知道在Linux下每个文件都是有路径的,但其实之前提到的都是绝对路径也就是都是从根目录/开始的,通过之前数据结构的学习知道绝对路径是具有唯一性的。
其实寻找一个文件除了从根目录开始的绝对路径之外还可以使用相对路径的方式来查找。
相对于当前用户所处目录,定位⽂件的路径方式
例如以下示例:
在以上的根目录下存在许多的文件和目录,在此如果要定位到名为src的文件可以通过/user/src绝对路径的方式来查找,如果此时处于local下就可以通过local的位置来定位,由于local和src的父节点相同因此使得src相对local的相对路径也是唯一的。
这时 .. 文件的作用就体现出来了,当我们要从local切换到local路径;此时 ../ 就定位到user,../user/src就定位到src文件。
因此通过以上的示例就可以看出 ..可以帮助快速的实现路径的切换,但要切换路径还需要cd指令,接下来我们就来学习该指令的使用方法
知识点
定位文件既可以通过绝对路径也可以通过相对路径,两个路径都具有唯一性
1.7 cd
cd指令的作用是改变工作目录。将当前工作目录改变到指定的目录下
cd [目录名]
例如以下示例:
在之前我们创建一个目录a,那么要进入到该目录内的b目录就可以使用cd指令
我们知道在root用户当中默认登入所处的路径是就是/root,那么普通账号默认的路径是什么呢?
接下来我们就使用几个普通账号来登入看看
通过以上的两个普通账号默认路径就可以看出普通账号一开始都处在home目录下,那么home目录是什么呢?
知识点
在此home路径称为家目录,所有普通账户的数据都是存储在家目录下的,之后不同账户的信息在存储在各自的账户路径下,这样做的目的是为了保护用户的信息,在普通用户登入时默认就处在对应的家目录下。
那么在Linux是任何实现普通账号防止其他人进入其的家目录下的呢?
这个问题等到以下我们讲到权限时再来细致的讲解
那么在了解了家目录的相关知识之后接下来就再来了解cd指令的两个选项
//切换到用户的家目录
cd ~//快速的切换回最近的一次路径
cd -
1.8 rm
rm指令可以实现删除文件或者目录
rm [目录/文件]
在此使用rm删除时如果是普通文件就只需要 rm 文件名 即可
但在删除目录时rm 目录名就无法删除
这是因为目录是递归创建的,那么在删除时也要递归的删除,因此在删除目录时就需要给rm指令带上-r,表示递归删除
在一些情况下在递归删除目录时命令行还会问你是否确定,如果你想直接删除没有这个过程就可以加上-f选项。因此在删除目录时一般使用的是以下所示的指令
rm -rf [目录]
1.9 man
在此在Liunx当中有很多指令,我们不可能将全部指令的功能和使用方法记住,如果想快速的查阅相关的指令就可以使用man手册来查询,在此man手册对应的指令就是man指令
使用方式如下所示:
man [选项] 指令
例如要查阅之前我们学习的ls指令就在命令行当中输入man ls,输入之后就会显示ls指令的相关信息,要退出就只需要点击q
在此man除了可以查询Linux系统当中的·指令之外还可以查询C库当中的函数,例如要想知道C语言中的printf函数的功能就可以使用 man printf 指令来查询,但是以下的输出的printf指令,不是我们想查询的C库内的printf函数,那么这就需要我们来进一步了解man指令
man除了能查询以上的系统指令和C库当中的函数之外还可以查询其他的信息,那么接下来就使用man指令来查询man
在此就可以看出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 指令来查询
1.10 cp
在以上我们学习了文件在Linux下该如何创建和删除,那么有时我们还要将一个文件进行复制粘贴,这时就需要用到cp指令
cp指令得作用是复制文件或目录
指令得形式如下所示:
cp 源⽂件或⽬录 ⽬标文件或⽬录
但在详细了解cp指令之前要再来了解一些Liunx的知识
知识点
在Linux下,一切皆文件
在此我们要了解一个指令——echo,作用是将文本输入到指定的文件当中,默认情况下在为指定文件时就直接将文本输入到显示器文件当中。在使用echo之后的文本内容最好使用" "引起来,这样要输入的内容就更加显著
当我们指定输入的文件时就会将文本的内容该为输入到指定的文件当中
以上出现的一个之前我们没有学习到的指令——cat,其实该指令的作用就是获取指定文件内的文本信息,接下来还会细致讲解,在此只是先使用一下。
以上我们先test文件当中输入了字符串hello world,那么如果在将字符串AAA输入到test文件当中会追加到原来的hello world 之后吗?
接下来就来试试看
通过使用可以看出输入的AAA会将test内原本文本覆盖。其实以上指令当中的 > 叫做输出重定向,在echo之后使用>就会先将原来文件内文本清空;之后再将新的内容写入。并且不带echo直接使用>之后带文件名,当文件之前就存在就会将文件内的文本全部清除
若文件原来不存在就会创建相应名称的文件在当前路径下
那么这时就有问题了,如果此时我们想向指定的文件当中追加指定的文本,以上的 > 就无法满足我们的要求,那么这时有什么办法呢?
在此要实现追加的功能就需要用到 >> 来实现追加重定向
其实除了以上提到的输出重定向和追加重定向,还存在输入重定向,使用到的符号是 <
因此以上的内容就可以总结出以下的知识点
知识点
echo默认是向显示器输出,要向指定的文件写入就需要使用到 > 进行输出重定向, 如果要进行追加重定向就需要使用 >> ,如果进行输入重定向就需要使用到 <
那么在了解echo以及输入重定向的相关知识之后接下来就来进一步的了解cp指令
以下就是将我们之前在b目录下的test文件复制到b目录当中就按照以下的形式实现:
那么若要将test文件复制到zhz目录下并且还要将文件重命名为newtest,那么就需要在指定的目录下再将新的文件名也创建
注:在此新文件名一定要是不存在的
在此要复制一个目录呢,也是直接使用cp指令吗?
在此我们来试着看看
通过以上的报错就可以看出在复制目录时直接使用cp无法满足我们的要求,此时要完成目录的复制也是要带上-r 选项的,就和之前我们删除目录一样,-r 表示递归,毕竟目录是也是一棵子树如果能直接使用cp复制,那么也显的很不合理。
1.11 mv
在以上我们了解了文件的复制,但有时还需要进行文件的剪切,此时就需要使用到mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files,经常用来备份文件或者目录
在此也可以使用mv来实现目录的剪切
1.12 which
如果我们要搜索系统下指令的路径就课使用which指令
which [指令]
那么有了which指令之后就可以来查询之前我们学习的cp、ls等指令在系统内的路径了。
通过以上就可以看出ls、cp都是在 /usr/bin 路径下的文件,那么了解了这些之后就可以引入一个知识了
知识点
在Linux下,一切指令都是程序,并且系统特定路径/usr/bin下的程序
在此使用ls指令将 /usr/bin 内的文件展示出来就可以看到确实系统的指令都是在该目录下的
因此在使用系统的指令时使用带绝对路径的方式也是可以调用的
那么为什么在之前调用系统的指令时我们不用带路径直接输入指令名就可以使用呢?
在此该问题就不进行解答,到之后学习到进程部分再来解答,现在你在需要知道指令就是特定路径下的指令即可
如果我们直接使用绝对路径来调用ls,那么目录就不会带颜色,而直接使用ls就会带,那么这是为什么呢?
这就需要再使用which来观察了
这时就可以看到ls指令其实原来是被加上了 --color=auto选项的,在此alias是给原来的ls起别名,这就使得在使用ls指令时默认的就是使用ls --color=auto
在此再补充一个指令ll,该指令其实就是ls -l 的别名,之后我们要使用ls -l 指令就可以直接使用 ll
1.13 cat
在此cat的作用在之前就已经提到了就是查看目标文件的内容
cat [文件]
若要使得输出的文件内的文本带上行编号就需要用到 -n 选项
cat -n [文件名]
但是如果文件内的文本内容非常多,此时就会刷屏,那么此时想要退出就需要按 CTRL+c 就可以强制退出
![]()
注:在此要从末尾开始查看文件的文本内容可以使用tac指令,其使用方式和cat类型
1.14 more
在以上的cat指令在打开大文本内容的文件会出现刷屏的问题,那么此时就适合适用more指令了
more [文件]
例如当打开系统的日志时就可以使用more来查看
more /var/log/messages
使用more指令打开文件后会先显示满一屏,在左下方会显示出现在所处的进度,要向下翻阅只需要点击ENTER即可
要按照关键字查询就点击 / 之后再输入要查询的关键字,之后再点击 ENTER 就会输出关键字,之后再点击 n 就能继续向下查询
1.15 less
以上我们了解了more指令,其实more在查看大文本的文件是确实是要比cat指令要好用,但是more指令也纯在问题就是在more指令内不能进行前后的翻阅,因此在此我们就来学习一个比more更好用的指令——less
less的功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
在此还是打开系统的日志使用指令 less /var/log/messages
此时在查询关键字就会发现在less指令内还会将查询的关键字高亮标注出来
1.16 head与tail
在以上我们已经了解了cat以及more和less来查看文件的文本内容,但是这几个指令在查看时都是将整个文件的文本都输出出来,要是我们只是想看文件当中的开头几行或者是末尾几行时;这几个指令就会效率较低了
这时以上提到的场景就适合使用 head 以及 tail 指令了。
head 与 tail 就像它的名字⼀样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
head功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应⽂件的开头10行。
tail功能:用于显示指定文件末尾内容,不指定文件时,作为输⼊信息进行处理。常用查看日志文件。
head和tail都拥有选项:• -n <行数> 显示的行数
此时有了head和tail指令确实可以直接将文本的从头开始的指定行输出或者是末尾的指定行输出,但是问题就来了,如果我们要输出的是中间的指定行;就例如要输出50~60行,那么该怎么实现呢?
首先你可能会想到的是先使用head得到前面60行存入到临时文件当中,之后再对临时文件使用tail得到后21行。以上操作下来就可以得到原来文件当中的50~60行
以上这种方式确实能解决问题,但是解决的过程显得较为繁琐,那么有什么更加简便的方式呢?
在此要解决该问题就需要引入管道的相关概念,使用管道来实现以上操作指令如下所示
head -60 /var/log/messages | tail -21
以上的 | 就是管道,实现的大致的过程就是将head之后的文本再使用tail进行加工,最后形成的文本就是我们想要的内容。具体的实现过程之后的篇章再进行讲解
1.17 date
在此如果要在Linux当中获取当前的时间就可以使用到date指令
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指令当中date指令的使用不是最为重要的,在此我们最需要了解的是一个叫做时间戳的概念
知识点
那么首先来看时间戳是什么:
有了时间戳之后世界不同区域的计算机都能有统一的计时的方式,这是互联网的一次大进步。
那么在Liunx当中我们该如何来获取时间戳呢?
在此就来讲解写一个非常简单的方式来获取当前的时间戳。
注:在此我们使用nano只是当前较为容易理解,该记事本不是之后我们要进行使用的,在之后的篇章学习了vim之后,基本都是使用vim进行代码的编写
首先我们要来了解一个叫做nano的文本计事本,你可以类比Windows当中的记事本,nano的作用是和记事本类似的,就是用于记入文本内容的
在Linux当中打开nano只需要输入 nano [文件] 指令(当nano打开的文件不存在会自动的创建对应的文件)
输入以上指令之后就会进入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基础开发工具篇章会进行细致的讲解
运行a.out就可以得到当前的时间戳
其实要快速的获取当前的时间戳可以直接使用以下指令来实现
date +%s
以上我们已经知道该如何获取当前的时间戳了,那么如果要将时间戳转换为 年 月 日 的格式要进行什么样的操作呢?
这时只需要使用以下的指令
date +%Y-%m-%d\ %H:%M:%S -d @0
1.18 cal
al命令可以用来显示公历(阳历)日历。
cal
常用选项:
• -3 显示系统前⼀个月,当前月,下⼀个月的月历
• -j 显示在当年中的第几天(⼀年日期按天算,从1月1号算起,默认显示当前月在⼀年中的天数)
• -y 显示当前年份的日历
此时你可能就会有疑惑了,为什么Linux下要提供日历?
其实在任何操作系统下都是要提供日历的,就例如Windows下就有
那么你可能还会有疑惑就是其他设备上都能看到时间,什么情况下才会使用cal来获取呢?
这对于我们普通用户确实是作用不大的,但对于一些底层开发的系统工程师,他们在开发时可能不能将手机等电子设备带入到机房内,这时date和cal指令的作用就显示出来了
1.19 find
find指令的功能是用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
find -options [文件名]
find当中的常用选项为• -name 作用是按照文件名查找文件
那么find和之前我们学习的which指令有什么区别呢?
find进行的是系统目录的直接查找,可以查找任意的文件;而which只能用来查找系统自带的可执行程序,也就是只能查询 /usr/bin/ 路径下的指令
1.20 whereis
除了以上的which和find指令能进行查询之外,还有一个指令whereis也能进行查询,不同的是whereis用于找到程序的源、二进制文件或手册
例如以下示例:
1.21 grep
在Linux当中当我们要进行行文本的过滤就可以使用grep指令
该指令的功能就是在文件中搜索字符串,将找到的行打印出来
grep [搜索的字符串] [文件]
例如以下示例:
在此如果要在过滤时显示行号就需要带上选项 -n
grep -n [搜索的字符串] [文件]
在grep指令当中除了以上的 -n 选项之外以下的选项也较为常用
• -i :忽略大小写的不同,所以大小写视为相同
• -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
1.22 zip
在以上当中我们了解了在Liunx下如何创建文件,复制、剪切文件,删除文件等操作,但如果要进行文件的传输就需要来了解如何在Linux下进行文件的打包和压缩
知识点
首先要了解的是什么是打包压缩
打包压缩是使用特定的算法将文件进行合并或者压缩的操作,从而达到减小文件的体积,最终实现的效果就是将文件打包压缩为一个整体
那么为什么要进行打包压缩呢?
首先是文件的体积太大在存储时就很浪费空间,将文件进行压缩之后文件的体积减少,就实现了节省资源;节省磁盘空间。
此外打包压缩之后将多个文件转化为一个文件,这就使得在进行文件传输时的容错性大大提升。
了解了打包压缩的作用之后接下来我们就来学习如何进行打包压缩
注:在以下学习的打包压缩当中是将这两个步骤直接使用一个指令来实现,没有分开实现,这样更易于操作
要进行打包压缩就可以使用以下的指令
zip (-r)[目录] dst.zip src
在以上的指令当中src要进行打包压缩的文件,dst是打包之后的文件名,以zip结尾。当要打包的为目录时就需要带上-r 选项
如果在使用以上的指令时,显示出以下,这就说明你的Liunx系统当中没有安装zip软件,此时你就要输入 yum install -y zip unzip
以下就是使用zip指令进行打包压缩的示例展示
学习了如何打包压缩之后接下来我们继续来学习如何进行解压解包
unzip XXX.zip
unzip XXX.zip -d [路径]
以上两个指令就展示如何进行解压解包,如果是直接在unzip之后带压缩包;那么此时就是直接将对应的压缩包解压到当前路径下。如果在之后带上 -d 选项再外加上要解压到的路径就可以实现将压缩包解压到指定的路径上
解压到当前路径下:
解压到指定的路径下:
我们知道在Windows之间是可以进行文件的回传的,其实Linux和Windows之间也是可以进行文件的传输的,那么接下来就来讲解如何操作
知识点
使用lrzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。
使用以下的指令可进行该软件的安装
sudo yum install -y lrzlz
此时要将Linux内的文件传输到Windows当中只需要在命令行当中输入sz 文件名,之后就可以选择Wndows当中接收该文件的位置
要将Windows当中的文件传输到Linux当中就是要指令 rz 来实现,输入之后回车就可以选择要传输的文件
但其实还有一种比以上更简单的方式,那就是直接将Windows中的文件拖拽到Xshell中即可
1.23 tar
除了以上的zip指令将文件压缩为zip格式之外,较为常见的压缩包格式还有tgz格式。要将文件压缩为tgz压缩包就需要使用tar指令
tar -czf dst.tgz src
以上src表示的是要进行压缩的文件,dst.tgz是压缩之后的压缩包名称。选项中的 -c 表示创建一个打包压缩的文件,-z表示进行压缩,-f 表示之后紧跟的文件就是打包压缩之后要形成的文件
注:如果要在执行以上指令时显示过程就要再加上 -v 选项
要将tgz格式的压缩包进行解压解包就要使用以下指令
tar -xzf XXX.tge
以上XXX.tge表示的是要进解压解包的压缩包。选项中的 -x 表示解开一个压缩文件,-z表示进行压缩,-f 表示之后紧跟的文件就是打包压缩之后要形成的文件
注:如果要在执行以上指令时显示解压过程就要再加上 -v 选项
若要将解压出的文件到指定路径下就使用以下指令
tar -xvzf -C [指定路径]
1.24 uname
当我们要获取当前 linux主机所用的操作系统的版本、硬件的名称等基本信息 就可以使用unam指令。
常用选项:
• -a或‒all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理
器类型,硬件平台类型,操作系统名称
1.25 补充热键
在了解以上的基本指令之后接下来我们来了解几个Linux下的热键,学习了之后能显著的提高我们的效率
1.[Tab]按键---具有『命令补全』和『档案补齐』的功能
2. [Ctrl]-c按键---让当前的程序『停掉』
3. 使用上下键可以翻阅之前的历史命令
4.使用[Ctrl]-r可以翻阅历史命令
以上就是本篇的全部内容了,接下来在下一篇章中将继续带来Linux权限的相关知识,未完待续……
相关文章:
Linux《基础指令》
在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识;因此本篇指令和基础知识的…...
Avalonia+ReactiveUI跨平台路由:打造丝滑UI交互的奇幻冒险
一、引言 在当今数字化时代,跨平台应用开发已成为大势所趋。开发者们迫切需要一种高效、灵活的方式,能够让应用程序在不同操作系统上无缝运行,为用户提供一致的体验。Avalonia 和 ReactiveUI 的组合,宛如一对天作之合的舞者&…...
Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)
文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件(金甲模板)5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中,使用角色(Role)来远程部…...
H264原始码流格式分析
1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...
批量解密,再也没有任何限制了
有的时候我们在网上下载了PDF文档。发现没有办法进行任何的操作,就连打印权限都没有。今天给大家介绍的这个软件可以一键帮你进行PDF解密,非常方便,完全免费。 PDF智能助手 批量解密PDF文件 这个软件不是很大,只有10MBÿ…...
认识小程序的基本组成结构
1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件) 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观...
模型I/O
文章目录 什么是模型I/O模型I/O功能之输出解析器输出解析器的功能输出解析器的使用Pydantic JSON输出解析器结构化输出解析器 什么是模型I/O 模型I/O在所有LLM应用中,核心元素无疑都是模型本身。与模型进行有效的交互是实现高效、灵活和可扩展应用的关键。LangChain…...
DeepSeek模型:开启人工智能的新篇章
DeepSeek模型:开启人工智能的新篇章 在当今快速发展的技术浪潮中,人工智能(AI)已经成为了推动社会进步和创新的核心力量之一。而DeepSeek模型,作为AI领域的一颗璀璨明珠,正以其强大的功能和灵活的用法&…...
git push到远程仓库时无法推送大文件
一、错误 remote: Error: Deny by project hooks setting ‘default’: size of the file ‘scientific_calculator’, is 164 MiB, which has exceeded the limited size (100 MiB) in commit ‘4c91b7e3a04b8034892414d649860bf12416b614’. 二、原因 本地提交过大文件&am…...
初识ExecutorService
设计目的 ExecutorService是Java并发包(java.util.concurrent)的一部分,旨在提供一种更高层次的抽象来管理线程和任务执行。它解决了手动创建和管理线程带来的复杂性和资源浪费问题,通过复用固定数量的线程池来处理大量短生命周期的任务,从而…...
初二回娘家
昨天下午在相亲相爱一家人群里聊天,今天来娘家拜年。 聊天结束后,开始准备今天的菜肴,梳理了一下,凉菜,热菜,碗菜。 上次做菜,粉丝感觉泡的不透,有的硬,这次使用开水浸泡…...
js基础(黑马程序员)
Web APIs(day6) 一、正则表达式 1.介绍 正则表达式(Regular Expression):是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象 通常用来查找、替换那些符合正则表达式的文本&#x…...
Java---猜数字游戏
本篇文章所实现的是Java经典的猜数字游戏 , 运用简单代码来实现基本功能 目录 一.题目要求 二.游戏准备 三.代码实现 一.题目要求 随机生成一个1-100之间的整数(可以自己设置区间),提示用户猜测,猜大提示"猜大了",…...
Oracle Primavera P6 最新版 v24.12 更新 2/2
目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…...
【React】 react路由
这一篇文章的重点在于将React关于路由的问题都给搞清楚。 一个路由就是一个映射关系,key:value。key是路径,value 可能是function或者component。 安装react-router-dom包使用路由服务,我这里想要用的是6版本的包,因此后面加”6&q…...
Linux的常用指令的用法
目录 Linux下基本指令 whoami ls指令: 文件: touch clear pwd cd mkdir rmdir指令 && rm 指令 man指令 cp mv cat more less head tail 管道和重定向 1. 重定向(Redirection) 2. 管道(Pipes&a…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则
1.18 逻辑运算引擎:数组条件判断的智能法则 1.18.1 目录 #mermaid-svg-QAFjJvNdJ5P4IVbV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QAFjJvNdJ5P4IVbV .error-icon{fill:#552222;}#mermaid-svg-QAF…...
C语言实现库函数strlen
size_t是 unsigned int fgets会读入\n,用strcspn函数除去 assert判读指针是否为空指针,使用前要引头文件<assert.h> #include <stdio.h> #include <assert.h> size_t mystrlen(const char* str) {assert(str);size_t count 0;while …...
18 大量数据的异步查询方案
在分布式的应用中分库分表大家都已经熟知了。如果我们的程序中需要做一个模糊查询,那就涉及到跨库搜索的情况,这个时候需要看中间件能不能支持跨库求交集的功能。比如mycat就不支持跨库查询,当然现在mycat也渐渐被摒弃了(没有处理笛卡尔交集的…...
FastExcel使用详解
文章目录 FastExcel使用详解一、引言二、环境准备与依赖引入1、Maven 依赖引入2、实体类定义 三、核心操作:读写 Excel1、读取 Excel1.1 自定义监听器1.2 读取文件 2、写入 Excel2.1 简单写入2.2 模板写入 四、Spring Boot 集成示例1、文件上传(导入&…...
深度学习python基础(第四节) 元组、字符串、集合和字典
本节主要介绍元组,字符串,集合,字典的基本语法定义,以及相关的操作. 元组的定义和操作 元组一旦定义完成就不可修改. """ # 定义元组字面量 (元素,元素,....,元素) # 元素可以不同的数据类型# 定义元组变量 变量名称 (元素,…...
QT串口通信,实现单个温湿度传感器数据的采集
1、硬件设备 RS485中继器(一进二出),usb转485模块、电源等等 => 累计115元左右。 2、核心代码 #include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::...
绘制决策树尝试3
目录 代码解读AI 随机状态 种子 定义决策树回归模型 tree的decision regressor fit 还可用来预测 export 效果图 我的X只有一个特征 为何这么多分支 ??? 这是CART回归 CART回归 为什么说代码是CART回归? 不是所有的决…...
【逻辑学导论第15版】A. 推理
识别下列语段中的前提与结论。有些前提确实支持结论,有些并不支持。请注意,前提可能直接或间接地支持结论,而简单的语段也可能包含不止一个论证。 例题: 1.管理得当的民兵组织对于一个自由国家的安全是必需的,因而人民…...
qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别 code review! 参考笔记 1.qt-C笔记之重写QGraphicsItem的paint方法(自定义QGraphicsItem) 文章目录 qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphic…...
[Java]泛型(二)泛型方法
1.定义 在 Java 中,泛型方法是指在方法声明中使用泛型类型参数的一种方法。它使得方法能够处理不同类型的对象,而不需要为每种类型写多个方法,从而提高代码的重用性。 泛型方法与泛型类不同,泛型方法的类型参数仅仅存在于方法的…...
ProfibusDP主机与从机交互
ProfibusDP 主机SD2索要数据下发:68 08 F7 68 01 02 03 21 05 06 07 08 1C 1668:SD2 08:LE F7:LEr 68:SD2 01:目的地址 02:源地址 03:FC_CYCLIC_DATA_EXCHANGE功能码 21:数据地址 05,06,07,08&a…...
jQuery小游戏(二)
jQuery小游戏(二) 今天是新年的第二天,本人在这里祝大家,新年快乐,万事胜意💕 紧接jQuery小游戏(一)的内容,我们开始继续往下咯😜 游戏中使用到的方法 key…...
【MQ】如何保证消息队列的高可用?
RocketMQ NameServer集群部署 Broker做了集群部署 主从模式 类型:同步复制、异步复制 主节点返回消息给客户端的时候是否需要同步从节点 Dledger:要求至少消息复制到半数以上的节点之后,才给客户端返回写入成功 slave定时从master同步数据…...
简易计算器(c++ 实现)
前言 本文将用 c 实现一个终端计算器: 能进行加减乘除、取余乘方运算读取命令行输入,输出计算结果当输入表达式存在语法错误时,报告错误,但程序应能继续运行当输出 ‘q’ 时,退出计算器 【简单演示】 【源码位置】…...
AI大模型开发原理篇-4:神经概率语言模型NPLM
神经概率语言模型(NPLM)概述 神经概率语言模型(Neural Probabilistic Language Model, NPLM) 是一种基于神经网络的语言建模方法,它将传统的语言模型和神经网络结合在一起,能够更好地捕捉语言中的复杂规律…...
SpringBoot 基础特性
SpringBoot 基础特性 SpringApplication 相关特性 自定义 banner 在主配置文件写 banner.txt 的地址 #也可以不写默认路径就是 banner.txt #从类路径下找 banner #类路径就是 编译的target 目录 还有导入的第三方类路径。 spring.banner.locationclasspath:banner.txt#控制…...
网站快速收录:提高页面加载速度的重要性
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/32.html 网站快速收录中,提高页面加载速度具有极其重要的意义。以下从多个方面详细阐述其重要性: 一、提升用户体验 减少用户等待时间:页面加载速度直接…...
如何使用formlinker,重构微软表单创建的数字生产力法则?
仅需三步:上传文件-下载文件-导入文件到微软表单 凌晨两点的格式炼狱:被浪费的300万小时人类创造力 剑桥大学的实验室曾捕捉到一组震撼数据:全球教育工作者每年花在调整试题格式上的时间,足够建造3座迪拜哈利法塔。当北京某高校的…...
从零搭建一个Vue3 + Typescript的脚手架——day3
3.项目拓展配置 (1).配置Pinia Pinia简介 Pinia 是 Vue.js 3 的状态管理库,它是一个轻量级、灵活、易于使用的状态管理库。Pinia 是 Vue.js 3 的官方状态管理库,它可以帮助开发者更好地管理应用的状态。Pinia 是一个开源项目,它有丰富的文档…...
Three.js实战项目02:vue3+three.js实现汽车展厅项目
文章目录 实战项目02项目预览项目创建初始化项目模型加载与展厅灯光加载汽车模型设置灯光材质设置完整项目下载实战项目02 项目预览 完整项目效果: 项目创建 创建项目: pnpm create vue安装包: pnpm add three@0.153.0 pnpm add gsap初始化项目 修改App.js代码&#x…...
Linux——网络(tcp)
文章目录 目录 文章目录 前言 一、TCP逻辑 1. 面向连接 三次握手(建立连接) 四次挥手(关闭连接) 2. 可靠性 3. 流量控制 4. 拥塞控制 5. 基于字节流 6. 全双工通信 7. 状态机 8. TCP头部结构 9. TCP的应用场景 二、编写tcp代码函数…...
Ubuntu Server 安装 XFCE4桌面
Ubuntu Server没有桌面环境,一些软件有桌面环境使用起来才更加方便,所以我尝试安装桌面环境。常用的桌面环境有:GNOME、KDE Plasma、XFCE4等。这里我选择安装XFCE4桌面环境,主要因为它是一个极轻量级的桌面环境,适合内…...
分享|通过Self-Instruct框架将语言模型与自生成指令对齐
结论 在大型 “指令调整” 语言模型依赖的人类编写指令数据存在数量、多样性和创造性局限, 从而阻碍模型通用性的背景下, Self - Instruct 框架, 通过 自动生成 并 筛选指令数据 微调预训练语言模型, 有效提升了其指令遵循能…...
指针空值——nullptr(C++11)——提升指针安全性的利器
C11引入的nullptr是对指针空值的正式支持,它提供了比传统NULL指针更加安全和明确的指针空值表示方式。在C语言中,指针操作是非常基础且常见的,而如何安全地处理指针空值,一直是开发者关注的重要问题。本文将详细讲解nullptr的引入…...
C++游戏开发
C 是游戏开发中广泛使用的编程语言,因其高性能、灵活性和对硬件的直接控制能力而备受青睐。以下是 C 游戏开发的一些关键点: 1. 游戏引擎 Unreal Engine:使用 C 作为主要编程语言,适合开发高质量 3D 游戏。Unity:虽然…...
【Docker】ubuntu中 Docker的使用
之前记录了 docker的安装 【环境配置】ubuntu中 Docker的安装; 本篇博客记录Dockerfile的示例,docker 的使用,包括镜像的构建、容器的启动、docker compose的使用等。 当安装好后,可查看docker的基本信息 docker info ## 查…...
Linux C openssl aes-128-cbc demo
openssl 各版本下载 https://openssl-library.org/source/old/index.html#include <stdio.h> #include <string.h> #include <openssl/aes.h> #include <openssl/rand.h> #include <openssl/evp.h>#define AES_KEY_BITS 128 #define GCM_IV_SIZ…...
【卫星通信】链路预算方法
本文介绍卫星通信中的链路预算方法,应该也适用于地面通信场景。 更多内容请关注gzh【通信Online】 文章目录 下行链路预算卫星侧参数信道参数用户侧参数 上行链路预算链路预算计算示例 下行链路预算 卫星侧参数 令卫星侧天线数为 M t M_t Mt,每根天线…...
【Elasticsearch】 索引模板 ignore_missing_component_templates
解释 ignore_missing_component_templates 配置 在Elasticsearch中,ignore_missing_component_templates 是一个配置选项,用于处理索引模板中引用的组件模板可能不存在的情况。当您创建一个索引模板时,可以指定一个或多个组件模板࿰…...
Github 2025-01-30 Go开源项目日报 Top10
根据Github Trendings的统计,今日(2025-01-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:2724 次关注人…...
Linux 下注册分析(4)
系列文章目录 Linux 设备树 Linux 下注册分析(1) Linux 下注册分析(2) Linux 下注册分析(3) Linux 下注册分析(4) 文章目录 系列文章目录1、device_create简介device_createdevice_c…...
PhotoShop中JSX编辑器安装
1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接: CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装,根据弹出的…...
目前市场主流的AI PC对于大模型本地部署的支持情况分析-Deepseek
以下是目前市场主流AI PC对**大模型本地部署支持情况**的综合分析,结合硬件能力、软件生态及厂商动态进行总结: --- ### **一、硬件配置与算力支持** 1. **核心处理器架构** - **异构计算方案(CPUGPUNPU)**:主流…...
51单片机开发:独立键盘实验
实验目的:按下键盘1时,点亮LED灯1。 键盘原理图如下图所示,可见,由于接GND,当键盘按下时,P3相应的端口为低电平。 键盘按下时会出现抖动,时间通常为5-10ms,代码中通过延时函数delay…...