【Linux】一篇文章轻松搞懂基本指令

打印 上一主题 下一主题

主题 1765|帖子 1765|积分 5295

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本篇所有展示代码均是在超等用户的权限下举行的,假如不是超等用户而且一些命令执行的和我的不太一样,那么可以试着在对应命令前暂且加上sudo,我们在下一篇会讲权限题目,到时间再转换为普通用户。
本篇展示的内容是基于CentOs举行的,假如你是Ubuntu或是其他的发行版,也不影响正常学习,各种命令的使用和功能险些一样,大家可以放心食用。
我所用的软件是Xshell。Xshell 可以通过 SSH 协议安全地连接到 Linux 服务器,使得体系管理员或开发者可以在本地计算机上执行命令、举行文件传输等操纵,就像直接在服务器前操纵一样。
一、指令(命令)

(1)whoami

查看当前用户是谁。
(2)ls

表现当前目录下的文件。(当前目录是指当前用户所处的目录)

这里的ls是一个命令,背面的-l是一个命令行选项,它们的中间由空格隔开。其中,命令行选项可以有多个,而且如有多个则它们都必要用空格隔开。
那么ls和ls -l的区别是什么呢?
说到区别,我们必要先思量别的一个题目。
在Windows环境下,我们创建一个空文件(里面没有任何内容),这个文件在磁盘中占据空间吗?

答案是这个文件会在磁盘中占用空间,即使里面内容什么也没有。因为文件会著名称、对应的创建时间、修改时间、访问时间、文件的类型、文件的大小等等,这些统称为文件的属性,文件的属性也是数据(必要被保存起来),就像你的名字,性别、身高一样,它们不是你的"内容",但却是你的属性,这些东西要保存起来,"属性+内容"才构成完整的你。所以,文件要维护本身的属性数据也要在磁盘上占用空间,所以文件是由"内容+属性"所构成的
ls的作用就是查看文件属性的,仅仅一个ls就是查看文件名(属性)的,而ls -l是查看文件更多的属性。

我们知道在Windows环境下查看文件的类型就是看看它的后缀是什么,那在Linux环境下怎样查看文件的类型呢?
Linux环境下的文件通常是没有后缀的,所以我们要想知道它的类型是什么可以用ls -l这个命令,ls -l执行后的第一个字符是d(directory),就是指这个文件是一个目录,所谓目录就是和Windows下的文件夹是一个意思。
ls -a:-a是ls的别的一个命令行选项,它的作用就是列出目录下的所有文件。这就希奇了?ls不也是列出目录下的所有文件吗?
ls与ls -a的区别就是:ls列出目录下的所有文件(不包罗隐藏文件),ls -a列出目录下的所有文件(包罗隐藏文件)。隐藏文件就是以.开头的文件。在Windows环境下,隐藏文件也是以.开头的。

详细.和..到底是什么意思,我们待会说。
一个命令背面可以有多个命令行选项,所以我们可以搭配使用:

当一个命令背面有多个命令行选项时,我们可以随意地调用它们的相对位置,甚至可以合并着写。 
(3)touch

新建一个普通文件。

ls -l执行后的第一个字符是-,就是指这个文件是一个普通文件。
在Linux中以.开头的文件为隐藏文件,所以我们也可以创建一个隐藏文件:

不难发现,现在我们固然不知道.和..到底是什么,但它们一定都是目录,因为执行ls -la后第一个字符是d。 
touch一个存在的文件可以更新它的创建时间:

(4)mkdir

创建一个目录(文件夹)。

 我们也可以一次创建一连串目录,可以用"mkdir -p 一连串",比如下面这样:

我们可以使用tree指令来清晰的看到这种结构:

有些同学大概没有安装tree,那么输入"sudo yum install tree"来举行安装(Centos),假如是用的是Ubuntu,那么只需将yum换为apt即可。 
(5)pwd

查看当前目录所处的路径。
初学时我们可以将pwd理解为person work directory,即用户工作目录。

 在Windows上也可以快速找到工作目录:

但有一点不同的是:
在Windows环境下,\(反斜杠)是路径分隔符
在Linux环境下,/(斜杠)是路径分隔符 
两个反斜杠或斜杠之间的一定是一个文件夹(目录)。在Windows环境下我们常说文件夹,在Linux环境下我们常说目录。
在路径的最背面,大概是一个目录也大概是一个文件;前面一定是目录。
(6)cd

更改工作目录,将当前工作目录改变到指定的目录下。cd可以理解为change directory。
cd 目录:通过cd命令,可以进入到指定的目录。

起首pwd查看当前目录的路径,ls看看当前目录下有哪些文件,"cd 113/"到113这个目录下...

从上面的代码中可以看出,不管是非空目录还是空目录,它们中都有.和..这两个隐藏目录,接下来我们就说一下它们的作用:
.表示当前目录。
..表示上级目录。 

.是一个隐藏目录,归根结底它是一个目录,所以我们可以使用cd . 来到.这个目录下,上面代码阐明.就是当前目录的意思。


..和.一样,它也是一个隐藏目录,它表示当前路径下的上级目录,cd ..就可以回退到上级目录。

一直举行cd ..当到一定程度就不能回退了,这是必然的,因为路径不大概无穷长。在Linux中,/是路径分隔符,但有一种特殊的/,如上图所示,回退到一定程度不能回退时出现的/,我们称其为根目录。
接下来,再来看一看ls的其它搭配用法:

"ls -l"是查看当前目录下的文件属性。
"ls -l 指定目录"是查看指定目录下的文件属性。

假如我们就单纯想看113这个目录的属性,可以用"ls -l ./113 -d":
同样地,我们也可以用这种方式查看根目录的信息:

通过上面的学习,我们知道了在Linux中,最上一层是一个根目录,我们知道一个目录中既可以放目录也可以放文件,所以Linux的文件结构其实是从根目录(/)开始的一颗多叉树。 
这棵树的叶子结点一定是普通文件或者空目录;非叶子节点一定是非空目录。雷同下面的结构: 

假如我们想要找到test.c,那么我们就可以通过"/home/bit/test.c"这种方式到达目的。
为什么可以用这种方式来找test.c呢?
在多叉树中,每个结点大概有多个孩子,但一定只有一个父亲,所以通过test.c我们可以找到bit,通过bit我们可以找到home,通过home我们可以找到/,所以/home/bit/test.c这条路径是唯一的,所以就可以通过这种方式找到test.c,这种从根目录开始一直到目的文件的这种形式称为绝对路径。绝对路径用来标识路径的唯一性。
我们要想访问一个文件,前提是我们必须先找到它,要想找到它,就必要通过路径这种方式。
路径分为:绝对路径相对路径两种。
绝对路径具有唯一性,所以一定能找到目的文件。
相对路径是以非/为参照位置,定位一个文件。

在Linux中,绝对路径一般在配置文件中举行使用,相对路径往往在一样平常操纵中用的多(简单)。
所以.和..的作用就更显着了,通过.我们可以定位到当前目录下的任意文件,通过..可以方便的找到其它目录下的文件。 
任何一个目录,即使是空的,体系也要默认给该目录自动生成.和..
特别阐明的是根目录(/)的..就是它本身。
Windows环境下的文件结构同样是多叉树。Windows环境下的根目录是此电脑,C盘、D盘...是文件夹。
在Linux中,~被称为当前用户的家目录。

通过"cd ~"可以直接到当前用户的家目录下。
任何一个linux用户,用特定的用户名登岸体系时,默认在什么路径下呢?
答:默认在家目录下。
家目录就是用户登岸体系时的默认目录。我们当前时root用户,它的家目录就是/root。
Windows环境下,是可以创建多用户的,每个用户都有属于本身的家目录,C盘中有一个名为用户目录,在这个目录中,会有详细的一个个用户名称,每个用户目录下有一个名为桌面的目录,这个目录就是这个用户的家目录,每次打开电脑时,我们的桌面图标其实就是当前用户下桌面这个文件夹中的内容图像化表现了出来的结果。所以多用户登录同一个Windows操纵体系时,它们的桌面是不一样的。

User文件夹中大概有多个用户,Administrator只是当前的用户,Desktop就是当前用户的桌面,打开电脑时就是将Desktop中的内容以图形化的形式展示了出来,Desktop就是当前用户的家目录。
通俗来讲,Windows下的桌面其实就是一个文件夹。
所以Linux和Windows都有家目录。
"cd -"返回近来访问目录,其中-表示近来所处的路径。

(7)which

which指令用于查找并表现可执行文件的位置路径。它主要用于确认某个命令或程序的执行文件在哪个路径下,以便确认当前环境下实际使用的是哪个版本的命令。

通过which指令我们可以看到,我们平时所使用的指令其实都是一个个普通文件。 
所以,ls和/usr/bin/ls执行后,会出现一样的效果:

所以,指令的本质就是可执行文件,等同于我们写的C/C++程序。 
所以上面我们安装的tree指令,就是将tree命令从网络中下载下来,安装拷贝到指定的/usr/bin目录下。

 安装指令的本质就是拷贝,将指令拷贝到/usr/bin目录下就可以直接使用了。
(8)alias

alias指令用于创建命令的别名,使用户可以用更简短的命令或自定义的名称来代替本来的长命令。这可以帮助提高服从、减少输入错误,或为一些常用命令添加特定的参数。

在CentOs下,ll是ls -l的别名:

我们可以通过which指令看到:

至于--color是什么意思,我们看下面:

它会给特殊文件表现特殊颜色。
我们平时直接用ls就有颜色是因为,ls其实是ls --color=auto的别名:

 所以,在CentOs中,ll指令就等同于ls -l。
我们现在起的别名(zhangsan、lisi)都是临时的,关闭体系后再打开,这些别名就不起作用了。
但ll这个别名是永久性的(是体系默认给的),要想起永久别名,我们就必要更改配置文件,这里我们暂且不细谈。
假如在命令行中出现了不可控的因素(非常),比如输不上字符、按什么也不起作用,那就尝试多按几次Ctrl+C来试图停止。
(9)rmdir

rmdir命令用于删除空目录。假如该目录中有文件或者其它目录则不能删除该目录

(10)rm

rm命令用于删除文件或目录。与rmdir不同,rm可以删除非空目录,通常用于删除文件和文件夹。rm命令没有回收站功能,删除后无法直接规复,所以要小心使用。
仅仅一个rm只能删除普通文件,它不能删除目录。

因为我们现在是root用户(超等管理员),所以在删除文件前它会问你是否确认删除,输入y代表确认,输入n代表不删。假如我们不想让它问,rm背面加上一个 -f (f可以理解为force)即可。

假如我们想要一次性删除多个文件,可以直接"rm file1 file2..." 
我们怎样用rm删除目录呢?
使用-r或-R选项来递归删除目录及其中的所有内容。所以rm不仅能删除空目录,它连非空目录都可以删。

这时将a中的全部内容一并删除了(包罗a本身),假如我们不想让它询问,可以直接"rm -rf 指定目录"
使用-i选项,在删除每个文件或目录前会询问确认,适合谨慎删除。

 必要注意的是:rm -rf命令非常危险,尤其是在根目录或重要目录下使用时,大概会误删大量文件,请小心使用。一旦使用rm删除文件或目录,在没有备份的环境下通常无法规复。
比如," rm -rf / "当有权限输入这条命令时,你大概立刻就会经历”从删库,到跑路“的流程了。
Linux中,*是一个通配符,表示匹配任意数目的字符。比方:ls *.txt会列出当前目录下所有.txt结尾的文件。

同样的,删除也可以这样用:

假如删除背面只有一个*,则表示删除当前目录下的所有文件(不会删除当前目录下的隐藏文件):

要想删除隐藏文件,必须"指名道姓" :

(11)man

man命令用于查看体系中的手册页(manual pages),即帮助文档。它提供了 Linux 各种命令、配置文件、体系调用等的详细阐明,方便用户查阅相干的使用方法和参数阐明。
Linux 手册页通常分为多个章节,常见的章节如下:

  • 用户命令(一般可执行的命令或工具)
  • 体系调用(由内核提供的函数)
  • 库函数(程序库中的函数,一般为 C 库)
  • 设备阐明(设备文件及驱动程序)
  • 文件格式(配置文件的格式)
  • 游戏和娱乐
  • 杂项(如标准、协议及文件体系等的概述)
  • 体系管理命令(仅供超等用户使用的命令)
因为man是一个命令,所以我们也可以直接man man来查看man的功能:

其中man手册中每个章节的提供的帮助内容是不一样的。

man背面直接跟命令则会默认从1号手册开始找。这里的printf是Linux中的一个命令,不是c语言中的printf函数,假如要查看c语言中的printf的功能先容,必须指定手册章节号,如"man 3 printf",它会直接在3号章节开始找,假如找到就表现出来。 

首次装体系的同学大概会出现上面的提示信息,我们只需安装一个即可:
 然后再运行:

(12)nano

nano是Linux体系中的一种简单易用的文本编辑器,通常用于编辑配置文件或编写简单的脚本。

cat是用于查看文件内容的。 假如执行"nano test.txt"前,test.txt不存在,那么执行后会自动创建出来一个test.txt文件,假如存在,直接就打开了,然后操纵相应内容。
假如没有安装则可以用下面代码举行安装:

(13)cp

cp指令用于复制文件或目录。
假如f1是一个普通文件:"cp f1 f2"执行这条指令后,会有以下几种环境:
1、假如f2不存在则会自动生成一个f2文件然后将f1中的内容拷贝到f2中;
2、假如f2存在且为普通文件,则会将f1中的内容拷贝到f2中,f2中原来的内容会被覆盖掉;
3、假如f2存在且为一个目录,则会将f1拷贝一份放到f2这个目录下面,f2不能是当前目录,因为同一个目录下不能存在雷同名字的文件。
环境一:

环境二:

环境三:

上面说的都是拷贝普通文件的环境,那假如我们想要拷贝目录,该怎么办?

我们可以用-r选项举行递归拷贝:

假如递归拷贝前,mydir-backup这个目录已经存在,那么就会将mydir这个目录拷贝一份放到mydir-backup这个目录下。

假如拷贝前mydir-backup中已经有一份mydir,再执行"cp -r mydir mydir-backup"这句代码时就会询问你是否要覆盖原先的mydir(前提是两份mydir中都有内容):

假如不想出现询问,则可以加上-f选项逼迫复制。 
(14)clear

clear命令用于清空终端屏幕,让屏幕变得整洁,方便后续的操纵或查看输出。
执行后,clear会清除终端上已有的内容,并将光标移到屏幕的顶部。实际上,这并不会删除之前的命令输出,而只是将内容“滚动”到了屏幕上方,仍可以通过向上滚动来查看之前的输出记录。
clear常用于整理终端,特别是在输出信息许多的时间,有助于更清晰地查看接下来的内容。
(15)echo

用于将指定的文本或变量输出到终端屏幕。

它的用法非常简单,注意背面是用单引号引起来的字符串。
Linux中printf指令(不是c语言中的库函数)也可以到达这样的效果:

许多同学轻易把cat和echo混为一谈。其实,cat背面跟一个文件名,它是将这个文件的内容打印出来;echo背面跟一个文件名,它会把这个文件名当作是一个字符串,从而将文件名这个字符串打印出来(不会打印文件内容):

知识点:
1、在Linux体系中,一切皆文件!!! 
Linux不仅会把各种文件、可执行程序等当作是文件,它还把磁盘、网卡、显卡、键盘、鼠标、表现器这样的设备在体系层面被计划成了以文件的形式呈现出来。在背面的文件体系篇幅,我们再细谈(我尽量快点写出来供大家学习)。
我们现在学习只需知道在Linux体系中一切皆是文件即可。
我们现在最常见的文件有:1.本身创建的文件 
在Linux体系中还有三种比力常见的设备文件:2.键盘    3.表现器1     4.表现器2
看到这里,大家大概会不理解,没关系,我来试着解释一下:
我们在学C语言或C++语言时,用printf或cout时可以直接在表现器上举行打印,因为C/C++也要在Linux环境下运行,Linux下一切皆文件,所以打印的本质其实就是文件操纵。所以printf/scanf或cin/cout的本质都是文件操纵,任何文件被操纵时都必须先被打开。我们在C语言中要想访问一个文件起首要用fopen打开,在C++中要先用fstream的方式打开文件。所以,这些设备文件在访问之前要必须被打开。但是我们平时可以直接使用scanf/printf或cin/cout而无需主动打开什么文件,这是因为体系在启动时默认给我们打开了相应的文件。
以C语言为例,我们要想打开一个文件必要调用fopen函数:

它的返回值时FIILE*,程序运行前,体系会默认打开三个文件:

这三个文件的类型都是FILE*,相当于就是用fopen打开的,其中stdin对应的就是键盘,stdout、stderr对应的是表现器,所以程序在启动时默认会打开三个设备文件,这三个设备文件以FILE*的形式呈现出来,方便我们使用。之前我们直接用printf并没有出现stdout,那是因为在printf内部已经封装上了,我们只是看不到。那体系为什么要帮我们打开呢?我们的数据最终是要交给程序的,让程序帮助我们计算,然后将计算结果返回,默认打开是为了让用户默认环境下就能直接输入和直接表现,为了方便操纵(不用手动打开了)。为什么不打开其他的?那是因为默认的三个就已经够我们基本使用了,假如必要打开其它的,我们本技艺动打开即可。
所以"echo 字符串"这条指令就是将字符串写到表现器文件中,所以我们直接就可以看到。
2、重定向操纵
echo指令背面假如只跟了一个字符串,那么它就是将该字符串写到表现器文件中。
那我们也可以将该字符串写到其它文件中:

 本来要写到表现器文件中现在却写到hello.txt这个普通文件中,这个过程被称为输出重定向
这里的hello.txt会有两种环境:1、假如当前目录下hello.txt不存在,那么会在当前目录下新建一个helloc.txt文件,然后将内容写进去  2、假如当前目录下hello.txt存在,那么会先清空helloc.txt的内容然后再写入。
所以我们以后新建普通文件时可以不用touch命令,直接这样写:

我们创建普通文件可以用上述方式,但要确保>背面的文件本身不存在;假如存在,上述操纵会将>背面临应的文件内容清空。
假如我们在举行重定向时不想让原有文件的内容清空,而是想在原有文件的底子上追加内容,这也是可以的:

这个过程叫做追加重定向。
上面的重定向都是输出重定向,与输出重定向对应的是输入重定向

执行cat后,它默认从键盘文件中获取内容然后写入到表现器文件中,所以我们输入了一个aa,然后紧接着就打印了出来,输入bb,紧接着打印出来,输入cc,紧接着打印出来,我们要想结束可以按Ctrl+C。
当我们执行"cat < hello.txt"后,它会从hello.txt中的读取内容,然后将内容写到表现器文件中,打印出来。
cat本身是从键盘中获取内容,然后变到从文件中获取内容,这就是输入重定向
对文件举行操纵时,必须先打开文件,在C语言中打开文件时,会有各种方式(已读的方式打开,以写的方式打开,以追加的方式打开),比如w,r,a...,上面的>相当于就是w(写),而>>相当于就是a(追加)。
终端(通俗理解就是我们写Linux代码的地方)本质上也是一个文件,这个文件被放在/dev/pts/xxx中。每打开一个终端,在/dev/pts/这个目录下就会多一个终端文件,我们可以用"ll /dev/pts"查看,通常文件名是0,1,2,3...,当开多个终端时,我们就可以用输出重定向来将终端1中的内容写到终端2中的终端文件中,这样就可以在终端2中表现终端1重定向的内容,由于这个过程是动态的,我无法在此展示出来,大家可以在本身的设备上演示。

上面我们已经提到过"ls -l"命令会详细的打印文件的属性,其中第一个字符代表文件的类型。
接下来我们就谈谈文件的类型有哪些:
1、-:普通文件
2、d:目录
3、c:字符文件(常见的有:键盘文件、表现器文件、终端文件),它的特点是数据具有序次性
4、b:块设备文件(磁盘)
5、l:链接文件
6、p:管道文件
7、socket:套接字文件
磁盘是典型的块设备文件:

其中/dev/vda就是一块磁盘,/dev/vda1是该磁盘下的一个分区,块设备支持随机读写。 固然它是文件,但它是磁盘,我们可不敢直接打开文件并向里面写内容啊。
Linux中大部分都是普通文件,普通文件包罗:文本文件、可执行文件、库、图片、视频...
在Linux中,文件的区分是不看后缀的,但不代表克制使用后缀。我们知道gcc是c语言代码的编译器,Linux体系本身是不关心后缀的,但这并不代表一些工具(gcc)不关心后缀。假如用gcc去编译一个不是以.c为结尾的文件,即使里面的内容是C语言写的代码,照样也不会通过。体系不关心后缀并不代表你不能用后缀,假如加上后缀体系会把它以为是文件名的一部分,所以平时我们创建文件时能加后缀的尽量都加上后缀。
(16)mv

用于移动文件或目录,也可以用来重定名文件或目录。
在Windows环境下,我们可以移动文件的位置。在Linux环境下,我们也可以通过mv指令来移动文件的位置:

 "mv srcfile destdir"这条指令中的第一个命令行选项既可以是普通文件也可以是目录,第二个命令行选项就是你要移动到的位置(目录)。
mv的第二个功能就是对文件或目录举行重定名:

"mv src dst"可以对指定文件重定名,那怎样区分是移动文件位置还是对文件举行重定名呢?
我们可以看第二个命令行参数,假如第二个命令行参数是目录(且该目录存在)就是移动文件(剪贴),假如不是目录(且不存在)就是重定名。mv背面的第一个参数可以是目录也可以是普通文件,执行后的效果是一样的。
(17)cat

主要用于表现文件内容、合并文件以及创建文件。
上面我们已经接触过cat这个指令了,下面我们再详细的说一下:

cat指令一般是比力适合看短文件的。与cat命令相反的还有一个tac命令,它是反向表现内容:

在Linux体系中,会有日志文件,日志文件起着至关重要的作用,主要表现在以下几个方面:
1. 故障清除:当体系出现题目或应用程序遇到错误时,日志文件记录了详细的错误信息、告诫和其他相干事件。管理员可以通过查看这些日志来诊断题目的原因,从而快速定位并办理题目。
2. 安全审计:日志文件可以帮助追踪潜在的安全威胁。比方,登录尝试、权限更改、文件访问等都被记录下来,这对于发现未经授权的行为非常重要。通过分析这些日志,可以识别出可疑活动,如多次失败的登录尝试大概表明有人试图非法入侵体系。
3. 性能监控:体系和服务的日志包罗了运行状态的信息,如CPU使用率、内存消耗、磁盘I/O等。这些信息有助于评估体系的康健状况和性能表现,对于优化资源分配和提升服从非常有帮助。
4. 合规性与陈诉:许多组织必要遵守特定的法规要求,比如PCI DSS(支付卡行业数据安全标准)、HIPAA(康健保险流畅与责任法案)等,这些规定往往要求保存某些类型的日志记录作为证据。此外,日志还可用作生成业务陈诉的底子。
5. 服务维护:通过定期查抄日志,运维人员可以大概相识哪些服务正在正常工作,哪些服务大概存在潜在的题目。这有助于提前接纳步调预防大概出现的服务中断。
6. 用户行为分析:除了技术层面的应用外,日志还可以用来分析用户的在线行为,帮助企业更好地理解客户需求,改进产物和服务。
日志可以记录我们的各种操纵信息,Linux中日志信息通常放在/var/log/messages这个文件下。日志文件的内容通常是非常多的,我们直接用cat定名的话是不轻易看到我们所必要的信息的。
(18)more

more命令的功能和cat差不多也是查看文件的内容的,但与cat命令不同的是,假如文件过大,它不会一次性的展示全部内容,而是先铺满一页,按回车键可以逐行看,按空格键可以一页一页看,按q退出观看。但它有一个缺点,就是它不能往回看,我们正在看当前页就不能再看上一页了。
在用more命令查看文件时,我们可以输入"/字符串",就会将该字符串所在的那一页内容显现出来(只会在当前页向后查找,假如你要找的字符串在当前页的前面,那是找不到的)。
(19)less

less命令同样是查看文件内容的,但它可以支持上翻(上箭头)下翻(下箭头)。
less也有许多命令行选项:
-i 忽略搜索时的大小写;-N 表现每行的行号;/字符串:向下搜索“字符串”的功能;?字符串:向上搜索“字符串”的功能;n:重复前一个搜索(与 / 或 ? 有关);N:反向重复前一个搜索(与 / 或 ? 有关);q:退出
(20)head

用于表现文件的开头部分。默认环境下,head会表现文件的前10行,但可以通过选项来自定义要表现的行数。

(21)tail

用于表现文件的末尾部分。默认环境下,head会表现文件的后10行,但可以通过选项来自定义要表现的行数。

head和tail命令只能查看前面部分或背面部分的内容,假如我们现在就想看看中间某几行的内容该怎么办?
我们现在需求是看到文件的11-15行内容,可以将head和tail搭配起来使用:

这样做可以办理题目,但是必要产生临时文件,我们还可以换种方式,比如这样:

这里出现了一个新的符号|,|是管道的意思,大家可以开端理解为|前的命令执行的结果会交给|背面的命令举行处置惩罚。这样我们的操纵空间会更大:

这里还有一个命令"wc -l",(w可以理解为word,c理解为count,l理解为line),来统计文件中内容的行数:

(22)与时间相干的指令

1、date
表现体系当中默认的时间。

date 指定格式表现时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
在表现方面,我们可以设定欲表现的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:


  • %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周、3周、一个月、二个月等这么长时间,这个纽扣电池会让体系主板一直给我们记录时间,所以开机之后可以准确识别时间。假如纽扣电池没电了,开机后就不会识别时间了。

上面代码中我们每执行一次"date +%s"表现的是一大串数字,而且每次还表现的不太一样,这串数字是什么意思?
它其实是时间戳。Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的半夜)开始所经过的秒数,不思量闰秒。
任何一个计算机做时间记录时,它不是记录年代日时分秒这种样子,它都是按照以秒为单元,在内部会维持一个线性递增的计数器,每隔1秒,让这个计数器++,时间是从1970年1月1日开始到现在所累积经过的秒数,这个秒数被称为时间戳。 
这个时间戳有什么用?
1、转换为详细时间
2、区间查找。每条日志必要有时间戳,假如实际中某个文件在一个时间段出现题目,就可以通过时间戳锁定一个范围,那么我们只需在这个范围内查找题目所在。
怎样将这个时间戳转换为详细的时间呢?
我们可以这样:

@背面跟上时间戳。我们通过这也可以看到它就是从1970年1月1日开始计时的:

我们这里看到是8点而不是半夜,这是因为我们是有时差的,时间戳的定义是以格林威治为标准的,北京与格林威治有8个小时的时差。这样不会出现时间紊乱,时间是非常重要的,我们做任何事情都会有时间,时间一旦不统一就会有大麻烦,整个世界就会紊乱。
2、cal
cal命令用于表现日历。

这个日历其实也是根据时间戳生成的。
它又有几个常见的命令行选项:
-3 表现体系前一个月,当前月,下一个月的月历
-j 表现在当年中的第几天(一年日期按天算,从1月1号算起,默认表现当前月在一年中的天数)
-y 表现当前年份的日历

(23)find

 在文件体系中查找文件和目录。
在上面我们其实已经接触了一个查找命令which,但它只会在指定的目录下,去查找指定的命令;这个指定的目录通常是/usr/bin。
find用法如下:

我们知道文件体系其实就是一颗多叉树,find查找的过程可以以为是深度遍历,假如从根目录开始找一个文件,那么大概服从不是那么高。find的命令行选项有许多,这里我们先学会用-name。
(24)grep

在文件中搜索字符串,将找到的内容的行打印出来。

grep也被称为行文本过滤工具,它会把包罗某种关键字的行给我们展示出来供我们筛选。
grep也有一些常见的命令行选项:
-i  :忽略大小写的不同,所以大小写视为雷同
-n :趁便输出所处文件的行号
-v :反向选择,亦即表现出没有 '搜寻字符串' 内容的那一行

(25)zip/unzip

先容这两个命令前我们先来阐明一下打包压缩到底是什么意思?
打包:文件合并。
压缩:文件合并后大概会比力大,所以我们必要用一些压缩算法来减少文件的大小。
那么为什么要将文件打包压缩呢?
打包:防止文件丢失。我们通常下载的软件通常是由多个文件构成的,假设我们下载软件时少了一个文件,那么就大概导致我们无法使用该软件;我们假如将一个软件的所有文件举行打包,那么在下载时就不会出现少文件的环境。
压缩:减少打包后文件的体积。这样的利益有:节省存储空间。我们下载各种文件时,都要经过网络传送,压缩可以有效减少网络传送时间。
那么我们就应该学习一下如安在Linux上对文件举行打包压缩和解压的。
在Linux中zip的功能是将目录或文件压缩成zip格式,uzip用来解压 ZIP 格式的压缩文件。
在使用zip/uzip之前我们看看我们的体系上是否装了zip/uzip命令:

假如是Ubuntu用户,将yum换为apt即可。
下面是压缩和解压的过程:

出现上述题目,是由有我们在打包压缩过程中没有递归式举行导致的,所以我们应该这样写:

我们在打包压缩时尽量带上.zip,Linux体系的确不会识别后缀,但是zip/unzip这些工具会识别,假如压缩文件后缀不是zip,那么unzip大概就不起作用了。在CentOs下假如在打包压缩的过程中没有加上.zip,那么在执行zip命令后后,它也会自动给你加上的。
我们在执行unzip后一般是将压缩包减压到当前目录下,在Windows体系中,我们在解压时可以选择解压在指定目录下;在Linux中,我们也可以选择解压到指定目录下:

现在,假如我们要将云服务器上(Linux体系)的压缩包传到Windows体系上,该怎么传?
1、必要用到sz和rz命令(sz:sent zip / rz:receive zip)
首次使用若没有安装,可以先安装一下:

安装完毕后,我们就可以使用sz和rz命令了:

当我们使用执行"sz 压缩包"时:会弹出一个弹框,让我们选择放在Windows体系哪个文件夹下:

我这里是选择将它放在了桌面上。 
上面的操纵是将Linux中的压缩包传到Windows上,那么我们也可以将Windows上的压缩包传到Linux上:

让我们输入rz命令时,也会弹出一个弹窗让我们选择要传的文件:

我们就将Windows上的blue.zip传到了Linux上了:

我们也可以直接将Windows中的压缩包文件直接拖拽到Xshell上,完成传送文件:

上述操纵对文件也是如此的。 
(26)tar

tar命令也是用来举行打包压缩和解压的,tar命令一般是体系自带的,我们不必要主动安装。
tar背面的命令行选项比力多:


  • -c :创建一个压缩文件的参数指令(create的意思);
  • -x :解开一个压缩文件的参数指令!
  • -z :将文件压缩。是否同时具有 gzip 的属性?亦即是否必要用 gzip 压缩?
  • -v :压缩的过程中表现文件!这个常用,但不建议用在配景执行过程!
  • -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
  • -C : 解压到指定目录
压缩过程:

解压过程:

 所以,tar命令在打包压缩时不必要加-r选项。使用tar在压缩文件时指定的压缩文件名背面必须加上.tar.gz或者.tgz。
tar还有其它的命令行选项,比如-v就是表现文件压缩或解压的详细过程。假如文件包非常大时,我们可以用-v选项来看到压缩和解压的过程。
我们也可以将tar命令解压解包后的将文件放在指定目录下:

 上面的tar命令后的xzf或czf前都带上了-,我们也可以去掉-。有些同学带上-大概会出错,所以我们在写时尽量不带-。
用tar命令生成的压缩文件也能与Windows互传。
我们上面所说的互传其实都是Linux与Windows之间的,但是我们也是可以在Linux与Linux之间举行互传:
它必要用到scp命令,scp命令一般体系会自带,不必要我们手动下载。
它的用法是:"scp   压缩包文件   目的机器用户名@目的机器公网ip:目的机器指定路径"
(27)bc

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

按Ctrl+C可以退出。 
我们可以配和echo命令使用:

(28)uname 

uname用来获取电脑和操纵体系的相干信息。
uname可表现linux主机所用的操纵体系的版本、硬件的名称等基本信息。
假如想在Linux环境下查看体系结构和体系内核版本,就可以使用uname指令:


"uname -a"这条命令会表现关于体系的全部信息。
现在假如不想看那么多,只想看内核版本和它对应的体系结构,那我们就可以"uname -r"这条命令:

所谓的体系结构其实就是芯片结构:
一般会有两种,它们是:x86_32、x86_64(x64) 。当您看到体系陈诉中的x86_64,这意味着您的操纵体系正在一个 64 位的处置惩罚器上运行,而且安装了一个 64 位的操纵体系。
(29)history

打印历史命令。(最多记录x条,x取决于你的设备)
(30)关机

在Linux中,shutdown, halt, 和 reboot 是用于控制体系电源状态的命令。下面是这些命令的基本用法和寄义:
① shutdown
shutdown命令用于安全地关闭或重启体系。它会关照所有登录用户体系即将关闭,并等待一段时间以便用户可以保存工作并退出。


  • `shutdown -h now` 或 `shutdown -h`:立即关机(`-h` 表示 halt)。
  • `shutdown -r now` 或 `shutdown -r`:立即重启(`-r` 表示 reboot)。
  • `shutdown -h +10`:在 10 分钟后关机。
  • `shutdown -t 10`:在10秒后关机。
  • `shutdown -c`:取消一个已经筹划的关机操纵。
② halt
halt命令用于停止体系的运行,并使体系处于待机状态,但不会堵截电源。通常必要超等用户权限才气执行此命令。


  • `halt`:停止体系运行,但不堵截电源。
  • `halt -p` 或 `halt --poweroff`:停止体系运行并堵截电源,等同于关机。
③reboot
`reboot` 命令用于重启体系。同样,这通常也必要超等用户权限。


  • `reboot`:立即重启体系。
注意事项
- 使用这些命令时,请确保所有重要的数据已经被保存,因为这些操纵会导致未保存的工作丢失。
- 在执行这些命令之前,请确认是否有其他用户正在使用体系,特别是当使用 `shutdown` 命令时,因为它会发送关机关照给所有效户。
- 假如你在图形界面下,大概也有图形化的选项来执行这些操纵,通常位于体系菜单中。
请谨慎使用这些命令,特别是在生产环境或共享体系中。假如您不是体系管理员,大概没有权限执行这些命令。
二、快捷键

(1)Alt + Enter:全屏/退出全屏(基于Xshell)
(2)Ctrl + C:停止非常任务
(3)上下键:查看上下命令
(4)Tab键:自动补全命令(比如一个命令touch,你输入tou后忘记背面是什么就可以按下tab键补全命令,有时间也可以提高敲代码的服从,假如以tou为开头的命令有多个,那么按两下tab键就可以将所有的以tou开头的命令罗列出来)
(5)Ctrl + R:搜索历史命令
(6)Ctrl + D:退出当前用户账号
三、shell命令以及运行原理

先容shell命令前,我们先来相识一些东西:

命令行这一长串字符串不是凭空而来的,它不是由操纵体系本身给我们提供的功能,而是由一个叫外壳程序的"家伙"给我们提供的一个可以读取命令和识别命令的东西。

Linux严酷意义上说的是一个操纵体系,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的Shell。
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter),它主要包罗:将使用者的命令翻译给核心(kernel)处置惩罚,同时,将核心的处置惩罚结果翻译给使用者。
我们以一个故事来感性的理解一下shell:
在一个村子中,有一个人名叫小王。他的家里非常有钱,他是只身,他非常害羞,和女孩说话时就会脸红。现在,他想找一个女朋友,由于不敢和女孩说话,于是他找到了村中的牙婆,让牙婆来搭这条线,于是牙婆问他喜欢什么类型的女孩,他只说了一句,"我只喜欢隔壁的如花",于是牙婆就跑到如花家中,询问如花是否愿意,如花说,"我并不喜欢他",所以牙婆收到信息后,返回到小王家中,并告诉了他这个消息,小王听到后对牙婆说再帮他夺取夺取,于是外婆又跑到如花家中,如花又给拒绝了,然后牙婆返回小王家并告知小王,小王听后还是不甘心,于是又让牙婆去夺取夺取,就这样反反复复好几次,当牙婆再一次去如花家中,还没走到就看到隔壁的小帅在如花家中吃饭,并有说有笑,牙婆就想"算了吧,不进如花家门了",于是返回小王家并将看到的告知小王,小王听后伤心的哭了......。
上述故事中小王就是我们用户,而如花就是操纵体系,牙婆就是外壳程序,小王说"我就喜欢如花"就是在外壳程序上输入了命令,牙婆跑到如花家并告诉她这个消息,这个过程就是将命令交给操纵体系,如花对他不感兴趣,这就表示我们执行命令出错了,牙婆听过到这个消息后就返回小王家中,并告诉他这个消息,这叫做外壳程序返回错误信息给用户。
在这个过程中,由于小王不适合与女孩打交道,所以牙婆这个脚色是必须存在的。
所以我们用户为什么一定要用命令行指令来操纵访问操纵体系,为什么不直接访问操纵体系呢?
因为用户不擅长与操纵体系内核直接打交道,实际中也是很难做到的,所以就必须存在这个外壳程序来间接帮助我们和操纵体系内核产生接洽。
上述故事的最后一部分,牙婆没进如花家的门,就变相的保护了如花家和谐的氛围。所以假如我们用户输入一个非法指令,shell一旦识别到你这个请求特别不公道,shell外壳就直接拦住你,不会将该指令交给操纵体系,此时,外壳程序就变相保护了内核(也提高了一定的服从)。
所以,为什么存在外壳程序?
1、方便用户访问操纵体系内核
2、保护内核
对于外壳程序,我们暂且理解到这。
我们上面说过在Linux中一切皆文件,命令行解释器是一个文件,它的名为bash,它的绝对路径是:/bin/bash

那么shell和bash有什么区别呢?
我们可以将shell看作是牙婆,将bash看作是王婆。也就是,shell是所有外壳程序的统称,而Linux中详细的shell外壳程序叫bash。还有其它的操纵体系的shell外壳程序叫其它的名字(sh,xsh...)
在Windows环境下,我们操纵Windows也不是直接操纵Windows内核,而是通过图形接口,点击,从而完成我们的操纵(比如进入D盘的操纵,我们通常是双击D盘盘符.或者运行起来一个应用程序),这个我们就可以将图形化界面理解为外壳程序,从而间接访问Windows内核,然后结果通过外壳程序以图形化的形式返回给我们用户。
四、结语

本篇内容到这里就结束了,主要讲了Linux中常用到的基本指令,希望对大家有帮助,祝生存愉快!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表