掘金 后端 ( ) • 2024-06-29 16:43

[TOC]

Linux初识——基本指令的使用

image-20240111152540668

前言

​(在学生阶段)我们现在普遍使用的都是windows操作系统,很少使用Linux操作系统;因为windows操作系统采用的是图形化界面,给使用者带来很多方便;Linux由于都是命令行,所以相对使用较少,但不影响Linux是一个优秀的操作系统;在学习Linux之前,我们需要搭建Linux环境: ​1.直接安装在物理机上,但是由于Linux桌面使用起来非常不友好,不推荐。 ​2.使用虚拟机软件,将Linux搭建在虚拟机上,但是由于当前虚拟机软件(如VMWare之类的)存在一些bug,会导致环境上出现各种莫名其妙的问题,比较折腾。 ​3.使用云服务器,可以直接在腾讯云,阿里云或者华为云等服务器厂商处直接购买一个云服务器。 当环境有了以后,怎么登录到Linux呢? ​接下来需要安装Xshell软件,它是一款远程终端软件。

一、用户名的创建与删除

​当我们环境搭建好了以后,登录上xshell后,需要我们输入用户名,由于我们还没有创建任何用户名,默认的用户名是root,它的权限是很高的,我们一般需要自己去创建一个用户名;

1.adduser命令

功能说明:添加/创建用户 语法:adduser 用户名 passwd 命令 功能说明:给创建的用户设置密码 语法:passwd 用户名 注:如果你不给用户添加密码也是可以的,但是当你想要使用这个用户时,没有密码是无法登陆的。 image-20240111153602197

2.userdel命令

功能说明:删除用户 语法:userdel -r 用户名 补充说明:userdel可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。 参数说明: -r:删除用户登入目录以及目录中的所有文件。 -f:强制删除用户(甚至当用户已经登入Linux系统时此选项依旧生效)。 image-20240111153904265

==以上创建和删除用户都需要在root权限下使用;==

二、Linux下文件访问指令

Linux系统中,磁盘上的文件和目录被组织成一颗目录树,每个节点都是目录或文件 image-20240111154053945

1.绝对路径与相对路径

绝对路径:从根目录出发去找相应的文件,就叫做绝对路径;在上图中 / 是根目录; 相对路径:从当前文件的所在路径出发去找相应的文件,就叫做相对路径;

2.ls指令

功能说明:1.对于目录,该命令列出该目录下的所有子目录与文件 2.对于文件,将列出文件名以及其他信息 语法: ls 选项 目录或文件 常用选项: -a:列出目录下的所有文件,包括以.开头的隐含文件 -d:将目录像文件一样显示,而不是显示其下的文件。如:ls -d 指定目录 -i:输出文件的i节点的索引信息。如ls -ai 指定文件 -k:以k字节的形式表示文件的大小。ls -alk 指定文件 -l:列出文件的详细信息;ls -l 通常可以写成ll -r:对目录反向排序 -t:以时间排序 -s:在文件名后输出该文件的大小。(大小递归,如何找到目录下最大的文件) -R:列出所有子目录下的文件。(递归) -1:一行只输出一个文 image-20240111162934582

3.pwd命令

功能说明:显示用户当前所在的目录 语法:pwd image-20240111163047553

4.cd指令

功能说明:改变工作目录。将当前工作目录改变到指定的目录下。 语法:cd 目录名 举例: cd .. :返回上级目录 cd /home/ljh/1_11/:绝对路径 cd ../1_11/:相对路径 cd ~:进入用户家目录 cd -:返回最近访问目录

image-20240111163652390

三、Linux下文件的创建与删除指令

1.touch指令

功能说明:在当前目录下创建普通文件 语法:touch 文件名 注:这里暂时只做简单介绍及使用 image-20240111165147670

2.mkdir指令

功能说明:在当前目录下创建一个文件夹 语法:mkdir 目录名 -p:–parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统会自动创建好那些尚不存在的目录,即一次可以建立多个目录; image-20240111165716902

3.rmdir指令&&rm指令

rmdir是一个与mkdir相对应的指令。mkdir是建立目录,而rmdir是删除目录。 功能说明:删除空目录 语法:rmdir 选项 目录 适用对象:具有当前目录操作权限的所有使用者 常用选项: -p:当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除 image-20240111170358425

rm命令可以同时删除文件或目录 功能说明:删除文件或目录 语法:rm 选项 目录名或文件名 适用对象:所有使用者 常用选项: -f:即使文件属性为只读(即写保护),亦直接删除 -i:删除前逐一询问确认 -r:删除目录及其下所有文件 image-20240111170823440

四、Linux下文件拷贝与剪切指令

1.cp指令

功能说明:复制文件或目录 语法:cp 选项 源文件或者目录 目标文件或目录 ==注:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现信息错误== 常用选项: -f:或 –force 强行复制文件或目录,不论目的文件或目录是否已经存在 -i:或 –interactive 覆盖文件之前先询问用户 -r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理 -R:或 –recursive递归处理,将指定目录下的文件及子目录一并处理 image-20240111201449999

image-20240111201611255

除了以上的操作以外,我们还可以在拷贝的过程中重命名 image-20240111202039709

2.mv指令

mv指令是move指令的缩写,可以用来移动文件或者将文件改名(move (rename)files),是Linux系统下常用的命令,经常用来备份文件或者目录。 语法:mv [选项] 源文件或目录 目标文件或目录 功能: 1.视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。 2.当第二个参数类型是文件时,mv命令完成文件的重命名,此时,源文件只能有一个(也可以是源文件名),它将所给的源文件或目录重命名为给定的目标文件名。 3.当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。 常用选项: -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i:若目标文件(destination)已经存在时,就会询问是否覆盖! image-20240111203013519

五、Linux下文件查看指令

1.cat指令

功能说明:查看目标文件的内容 语法:cat 选项 文件 常用选项: -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 image-20240111203453661

​nano是一个字符终端的文本编辑器,它比vi/vim要简单很多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano ​nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方法来处理某些文件可能会带来问题,比如Linux系统的配置文件,自动断行就会使原本只能写一行上的内容折断成多行了,有可能造成系统不灵了。因此,如果你想避免这种情况出现,就加上-w选项吧。 image-20240111204103325

2.more指令 && less指令

语法:more 选项 文件 功能:more命令,功能类型 cat 常用选项: -n 对输出的所有行编号 q 退出more ==注意:more的缺点是只能向下查看,不能向上查看==

image-20240111210149417

​less工具也是对文件或其他输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能及其强大。 ​less的用法比起more更加具有弹性。在more的时候,我们并没有办法向前面翻,只能往后看,但若使用less时,就可以使用[pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜

语法:less 选项 文件 功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前 不会加载整个文件。 选项: -i:忽略搜索时的大小写 -N:显示每行的行号 /:字符串:向下搜索”字符串“的功能 ?:字符串:向上搜索”字符串“的功能 n:重复前一个搜索(与/或?有关) q:退出

3.head指令&&tail指令

​head与tail就像它的名字用于的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,而tail相当然就是看档案的结尾。 语法:head 参数 文件 功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。 选项: -n <行数> 显示的行数

​tail 命令从指定点开始将文件写道标准输出,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename 会把filename里最尾部的内容显示到屏幕上,并且不但刷新,使你看到最新的文件内容。 语法:tail 必要参数 选择参数 文件 功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。 选项: ​-f:循环读取 ​-n:<行数>显示行数

查看前10行和后10行的内容

image-20240111211717799

如果想要查看第100行到120行的内容,该怎么办呢? 首先,补充两个重要的知识:==重定向和管道==

1.echo指令

echo命令的意思是在显示器上显示一段文字,起到提示的作用。 该命令的常规格式为:echo [字符串] image-20240111212014974

当我们在上述指令中做一些变化: image-20240111212136843

​本来应该输出到屏幕上的内容,它却输出到了file.txt文件中,我们把这种操作叫做重定向:对于file.txt这个文件,如果我们没有创建,它会自动创建再输出到文件中,如果存在,就不会创建,直接输出到文件中。

image-20240111212348835

​当我们再次重定向后,它会将之前的内容覆盖 如果不想对之前的内容进行覆盖,就需要使用追加重定向,使用方法就是将原来的>改为>>; image-20240111212538359

既然有输出重定向,那么一定就有输入重定向: image-20240111212651338

​单独的cat指令是从键盘读取,当想要从文件读取,就要用到<符号,我们把这种叫做输入重定向。

​那么以上和我们查找100~120之间的内容有说明关系呢?

我们可以采用一种策略:

  1. 先将前120行的内容重定向到一个文件中
  2. 再截取后20行的内容

即 1.head -120 file.txt > test1.txt 2.tail -20 test1.txt

2.管道技术

​上面的方法略显麻烦,能不能用一个指令就完成这样的操作呢?当然是可以的;这就用到了管道技术:在两个指令之间加上 |;即:head -120 file.txt | tail -20 将前120行的数据流向管道,然后截取这段数据的后20行的数

4.find指令和which指令

功能说明:用于在文件树中查找文件,并做出相应的处理(可能访问磁盘) 语法:find 文件路径 -name 文件名 常见选项: -name 按照文件名查找文件 image-20240111213445932

也可以使用通配符来进行查找 image-20240111213537002

which指令: 功能说明:将命令的完整路径写入标准输入 语法:which 指令名 image-20240111213635864

5.grep指令

功能说明:在文件中搜索字符串,将找到的行打印出来 语法:grep 选项 搜寻字符串 文件 常用选项: -i:忽略大小写的不同,所以大小写视为相同 -n:顺序输出行号 -v:反向选择,亦即显示出没有”搜寻字符串“内容的那一行 image-20240111214732197

六、Linux下文件打包和压缩指令

1.zip指令 && unzip指令

功能说明:将目录或文件压缩成zip格式 语法:zip 压缩文件.zip 目录或文件 常用选项: -r 递归处理,将指定目录下的所有文件和子目录一并处理 unzip指令 功能说明:将目录或文件解压缩 语法:unzip 压缩文件.zip

image-20240111215129794

2.tar指令

功能说明:将目录或文件打包 语法:tar 选项 文件与目录 … 参数: -c:建立一个压缩文件的参数指令(create的意思); -x:解开一个压缩文件的参数指令! -t:查看tarfile 里面的文件! -z:是否同时具有gzip的属性?亦即是否需要用gzip压缩? -j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩? -v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f:使用档名,请留意,在f之后要立即接档名哦!不要再加参数! -C:解压到指定目录 image-20240111215855034

七、其他指令

1.man指令

​Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。一般来讲,刚开始使用时是没有man指令的,我们需要进行下载,需要在root用户下输入yum install -y man-pages 进行下载。 功能说明:访问Linux手册页 语法:man 选项 命令 ​1.是普通的命令 ​2.是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数需要加什么头文件) ​3.是库函数,如printf,fread ​4.是特殊文件,也就是/dev下的各种设备文件 ​5.是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义 ​6.是给游戏留的,由各个游戏自己定义 ​7.是附件还有一些变量,比如向environ这种全局变量在这里就有说明 ​8.是系统管理用的命令,这些命令只能由root使用,如ifconfig ​9.内核例程【非标准】

如果你不知道man是说明,也可以输入man man image-20240111220646853

例如:我对C语言中的printf函数不理解,想查看手册 输入 man printf 即可查看C语言中的printf

2.bc指令

bc命令可以很方便的进行浮点运算

image-20240111220911934

按ctrl +c 退出

3.uname指令

功能说明:用来获取电脑和操作系统的相关信息。 语法:uname 选项 补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。 常用选项: -a 或 -all 纤细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 image-20240111222013746

image-20240111222036329

4.shutdown指令

功能说明:关机 语法:shutdown 选项 选项说明: -t second:设定在几秒钟之后进行关机程序 -k:并不会真的关机,只是将警告讯息传给所有使用者 -r:关机后重新开机。 -h:关机后停机 -n:不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自动关机 -c:取消目前已经进行中的关机动作 -f:关机时,不做fsck动作(检查Linux档系统)。 -F:关机时,强迫进行fsck动作。 time:设定关机的时间 message:传送给所有使用者的警告讯息。

八、重要的几个热键

​1.Tab 按键 —— 具有【命令补全】和【档案补全】的功能 ​2.ctrl + c 按键 ——让当前的程序 【停掉】 ​3.ctrl + d 按键 —— 通常代表着:【键盘输入结束End Of File 或 End Oflnput】的意思;另外,他也可以用来取代exit ​4.键盘上的”上“键和”下“键,可以用来查看历史指令并使用。