欢迎光临
我们一直在努力

1.linux的基础指令

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

我们这里在进行讲解这些指令的时候,会结合着演示进行讲解,但是我们可以看到大多数指令的选项是非常多的,我们详细讲解经常用的;

1.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 一行只输出一个文件。

演示:

这里我们可以看到我们是有2个目录和2个文件的;

1.-l选项

-l 列出文件的详细信息。

我们正常情况下,在win中进行查看一个文件的时候,会像上图这样,后面会显示出来我们文件的详细信息;但是我们发现上面我们使用linux进行查看的时候,只有文件和目录名;但是如果我们想查看文件的更详细信息需要怎么做的?此时,-l选项就出现了;

我们进行对比一下ls和ls -l就可以发现区别,这里的详细信息,我们后面会讲,这里不过多进行阐述;

注意:linux中的大多数指令是可以进行组合的;比如:我们的ls -l等价于ll;

2.-a选项

-a 列出目录下的所有文件,包括以。开头的隐含文件。

我们知道,我们的win是可以设置隐藏文件夹的,当然linux也可以

这里我们可以看到我们这里设置了一个目录;这个目录前面加上了一个点;但是为什么我们使用ls进行查看的时候看不到这个文件呢?

在linux中以一个点开头的文件就是隐藏文件;

所以我们想看这个隐藏文件就需要加上-a选项;

这样我们就可以看到这个隐藏文件了;

当然,我们也可以使用:ls -al,查看详细信息;

3.-d选项

-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录

就是当我们想查看一个目录的详细信息的时候,如果这个目录里面有其他文件,就会自动显示里面文件的详细信息,而不会显示目录的详细信息,我们想查看目录的详细信息只能-d指定查看目录;

这里我们在dir1目录下创建一个文件,我们来演示一下,这里的tree就是以树形结构显示指定目录;

看到没,这里我们直接显示的是目录中的文件;

我们这里加上-d选项之后就成功的显示了目录的详细信息;

问题:

1.当我们创建一个空目录的时候占不占用磁盘空间呢?

我们这里创建了一个空文件夹,但是这个文件真的不占用磁盘空间吗?

答案是:要占用;

我们看这个文件夹的属性(元数据),这些属性里面有这个文件的位置,大小,类型等这些信息的存储肯定是占用空间的;

文件的真正大小=文件内容数据+文件的属性数据;

所以,我们看到一个文件的大小可能是1gb,但是实际大小会比1gb大一些;

所以,我们后续学习文件的时候,也是学习操作文件的内容和文件的属性;

2.一个点和两个点之间的区别;

一个点表示当前目录;

两个点表示上级目录;

2.pwd指令

语法:pwd

功能:显示用户当前所在目录;

在linux系统中,磁盘上的文件和目录都会被组成一课目录数;

这里给大家扩展一点知识:这个home里面存储的基本都是一些普通用户的信息;而root用户会自己创建一个目录;

3.cd指令

语法:cd 目录名

功能:改变工作目录,将当前工作目录改变到指定的目录下;

在win中我们的目录里面也可以放目录,这里的目录其实就是文件夹,当然linux中的目录也可以放目录;

演示:

我们先看一下我们所在的位置,我们的目录下面是有两个文件夹的,我们就使用这两个文件夹做演示;

1. ..回到上级目录

我们这里进入了dir1文件目录下;

我们这里直接使用cd..就回到了上级目录;

2. 进入用户家目录

方式:cd ~

我们先查看一下我们的当前目录:

我们进入家目录:

3. 返回最近访问的目录;

4. 绝对路径;

绝对路径就是从家目录开始指定一直到我们想进入的目录,我们直接看操作:

我们刚开始在家目录,然后进入了dir1,我们怎么在不返回上级目录的同时进入dir2呢?就可以使用绝对路径;

5. 相对路径

这里的../dir2的意思就是:进入上级目录中的dir2文件夹中;

4.touch指令

语法:touch [选项]… 文件…

功能: touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

常用选项:

-a 或 –time=atime 或 –time=access 或 –time=use 只更改存取时间。

-c 或 –no-create 不建立任何文档。

-d 使用指定的日期时间,而非现在的时间。

-f 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。

-m 或 –time=mtime 或 –time=modify 只更改变动时间。

-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。

-t 使用指定的日期时间,而非现在的时间。

这个touch指令其实就是创建一些普通文件;

touch还可以修改文件的时间,这个时间即是文件的创建时间,也是文件最后一次进行修改的时间;

5.mkdir指令

语法:mkdir [选项] dirname…

功能:在当前目录下创建一个名为 “dirname” 的目录

常用选项:

-p, –parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

这里我们就创建了一个叫3的目录;

这里的-p选项是什么意思呢?

-p选项

这里的-p选项其实就是递归创建:

我们有时候可能会需要创建一个目录,然后目录里面在创建一个目录等等,我们总不能每次创建一个目录,然后进入这个目录,之后再进行创建吧,这样真的费时费力;怎么做呢?我们就可以递归创建;

6.rmdir指令和rm指令;

rmdir 是一个与 mkdir 相对应的命令。mkdir 是建立目录,而 rmdir 是删除命令。

语法:rmdir [-p][dirName]

适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录

常用选项:

-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

rm 命令可以同时删除文件或目录

语法:rm [-f-i-r-v][dirName/dir]

适用对象:所有使用者

功能:删除文件或目录

我们这里发现我们使用rmdir删除a的时候,删不掉,这是怎么回事呢?因为rmdir只能删除空目录;

可以看到我们这里删除dir2这个空目录一下就删除掉了;

我们发现我们使用rm删除文件的时候一下就可以删除掉,但是如果删除的是目录的话,也是删除不掉,这是怎么回事呢?

这是因为我们rm是默认删除普通文件的,我们想删除文件夹,只能进行递归删除;

-r:递归删除

-f:是强制删除指定文件

此时我们的a就被删除掉了;

-i选项是:删除之前先问我一下;

7.man指令

Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问 Linux 手册页的命令是

man 语法: man [选项] 命令

常用选项

-k 根据关键字搜索联机帮助

num 只在第 num 章节找

-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用 a 选项,当按下 q 退出,他会继续往后面搜索,直到所有章节都搜索完毕。

解释一下,面手册分为 8 章

1 是普通的命令

2 是系统调用,如 open,write 之类的 (通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)

3 是库函数,如 printf,fread

4 是特殊文件,也就是 /dev 下的各种设备文件

5 是指文件的格式,比如 passwd, 就会说明这个文件中各个字段的含义

由于linux有很多的指令和选项,我们很有可能会记不住,但是,我们可以先c语言那样去查看文档;

我们比如想查看ls的选项:

输入:man ls

man的查询逻辑:

一般情况下我们直接使用man + 指令,他就会从手册1开始进行一次往后查询,我们可以使用上我们的-nun选项,来指定让man去哪个手册找:

上图是在手册1中找printf;

8.alias指令:创建命令别名

alias是一个用于创建命令别名的内置命令,通过别名,你可以为常用的复杂命令设置简短的代替名称,从而提高工作效率;

创建命令别名的语法:alias 别名 = "原命令”

删除命名别名的语法:unalias 别名

注意:我们的等号两边需要紧贴着,不然会报错,因为空格在这里也属于是一个参数;

此时我们在删除这个别名;

9.echo指令:向显示器/向文件中打印;

用法一:echo直接加字符串

注意:echo后面不管加不加莎宁引号,都会认为后面是一个字符串,如果不加双引号,则用空格进行分界

用法二:echo 字符串>>文件

这里其实如果我们这个文件不存在,echo就会自动去创建一个;

注意:这里的>写入文件是进行覆盖的形式写入,也就是每次我们进行写入文件的时候,都会先将文件中的内容进行清空之后写入;而使用>>进行写入是追加;

cat是进行查看的指令

我们继续演示覆盖;

追加:

10.nano指令:文本编辑器

语法:nano 文件名

功能:进入文件中,可以编辑文件的内容

11.cat指令:查看文件的内容

语法:cat [选项] [文件] 

功能: 查看目标文件的内容 

常用选项: 

-b 对非空输出行编号 

-n 对输出的所有行编号 

-s 不输出多行空行

用法1:cat直接加上文件名

用法2:输入重定向

允许用户将命令的输入源从默认的键盘输入,改为从文件等;

需要注意的是:看下图这里是从文件中读取,进行打印,虽然这里看起来和上面的cat直接加上文件名的效果是一样的,但是 只是两者的输出相同,底层实现的原理并不一样

用法三:cat -b 文件名

-b 对非空输出行编号 

用法四:cat -n 文件名

-n 对输出的所有行编号 

用法三:cat -s 文件名

-s 不输出多行空行

这里的意思就是连续的多个空行只会留下一行空行

用法四:tac指令

这个指令其实就是cat指令反过来这样以来,我们打印的内容也就反过来了;

12.cp指令

语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录,从源文件或目录拷贝到目标文件或目录

常用选项:
-f 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 覆盖文件之前先询问用户
-r 或 -R 递归复制目录及其子内容

用法:cp -i 源 目标

这里进行注意一下:

1.在使用-i进行拷贝的时候,只有这个目录下有同名的文件,才会进行询问是否进行覆盖这个文件,如果没有就不会进行询问;

2.拷贝目录的时候要递归进行拷贝

13.mv指令

mv指令是move指令的缩写;和我们win中的剪切功能相似;

语法:mv [选项] 源 目标

功能:移动文件和目录,也可以将文件进行重命名

选项:-i:询问

-f :强制移动

用法一:重命名

格式:mv 原文件名 新文件名

用法二:mv 原文件名 目录路径

这里直接将文件放到目标目录下面

用法三:mv 原文件 某目录下的新文件名

这里就是先进行剪切,之后进行重命名

14.more指令:主要是用来浏览大文件

语法:more [选项][文件]
功能:more命令,功能类似 cat ,不同的是当文件内容较长时,more 可以逐页(占满一屏)显示,避免信息快速滚屏,方便用户阅读。

常用选项:

  • q 退出more

more文件名:逐页显示文件内容,通过q退出

注意:more只能按enter键向下进行翻看,但是不能向上翻看

如果不想逐页进行翻看,也可以使用more -函数 文件名,就可以指定行数进行显示

也可以记性查找,在执行more指令之后输入:/要搜索的数据

但是更推荐使用less指令进行查看,因为这个指令是可以使用上下键位进行翻阅的

15.less指令

语法: less [参数] 文件

功能: less与more类似,但使用less可以随意浏览文件,即支持前后双向翻页(上下滚动),而more仅支持向前翻页(向下滚动),几乎所有 more 的功能 less 都支持。

选项:

-i 忽略搜索时的大小写,即认为搜索是a和A是一样的来进行搜索

-N 显示行号,便于定位内容(如 less -N log.txt)。

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

q:退出浏览

16.head指令

语法: head [选项] 文件
功能: head 用来显示档案的开头至标准输出中,head命令默认是打印其相应文件的开头前10行。

常用选项:

  • -行数: 显示的行数

17.tail指令

语法: tail [选项] 文件
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件

常用选项:

  • -行数 显示的行数

18.管道运算符;

符号:|

a|b :就是将a的输出,直接喂给b的输入

19.history指令:显示历史指令

直接输入history指令就可以显示历史指令,但是显示的只有最新的1000行指令

20.date指令:时间

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
  • 在设定时间方面
    date -s // 设置当前时间,只有 root 权限才能设置,其他只能查看。
    date -s 20080523 // 设置成 20080523,这样会把具体时间设置成空 00:00:00
    date -s 01:01:01 // 设置具体时间,不会对日期做更改
    date -s "01:01:01 2008-05-23" // 这样可以设置全部时间
    date -s "01:01:01 20080523" // 这样可以设置全部时间
    date -s "2008-05-23 01:01:01" // 这样可以设置全部时间
    date -s "20080523 01:01:01" // 这样可以设置全部时间
  • 时间戳
    时间 -> 时间戳: date +% s
    时间戳 -> 时间: date -d@1508749502
    Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。
  • 时间戳的重要性:

    没有时间戳,就没有“先后”——日志、提交、漏洞、文件全都变成一堆无法排序的事实,复现和定责都无从谈起。而且如果我们的时间戳溢出,我们的飞机,高铁等都无法运行,这里只是讲一下这个时间戳的重要性,当然在未来这个时间戳的溢出问题还是会出现的,不过不是我们考虑的问题,这个时间戳不出意外是可以将笔者送走都不会出现溢出的;

    21.cal指令:查看日历

    格式: cal [选项] [月份][年份]

    功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

    常用选项:

    • -3 显示系统前一个月,当前月,下一个月的月历 

    • -j  显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数) 

    • -y  显示当前年份的日历

    22.find指令:在指定中进行查找

    语法: find 路径 选项 查找对象
    功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
    常用选项:

    • -name 按照文件名查找文件

    补充:*匹配符

    当我们需要进行查找的类型的文件比较多的时候,一个一个查找,非常的麻烦,所以我们可以使用匹配符进行快速的匹配文件;

    上图就是匹配以.txt结尾的文件

    这里加上双引号可以进行避免shell的通配符扩展

    23.which指令:在指定路径下进行查找

    which指令是一个在linux系统中常用的命令行工具,它可以在我们的系统指令路径下(/bin/sh)来进行查找,搜索指令文件等;

    24.whereis指令:在系统特定的路径下进行查找

    语法:whereis 查找对象

    whereis是在系统指定的路径下进行查找,即可以找到可执行程序,还会搜索相关的帮助文档和源码文件等;

    25.grep指令:文本过滤器

    语法: grep [选项] 搜寻字符串 文件

    功能: 在文件(不能是目录)中搜索字符串,按行匹配过滤,将找到包含该字符串的的行打印出来

    常用选项:

    -i :忽略大小写的不同,所以大小写视为相同

    -n :顺便输出行号

    -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

    26.zip/unzip指令:压缩和解压缩

    语法: zip 压缩文件.zip 目录或文件

    功能: 将目录或文件压缩成zip格式

    常用选项:

    -r 递归处理,将指定目录下的所有文件和子目录一并处理

    使用的方式:

    压缩普通文件:

    zip 打包压缩后的名称 需要压缩的文件

    解压缩文件

    unzip 压缩包名称

    压缩目录的时候需要和之前一样递归压缩:

    zip -r 压缩后新的目录名称 目录

    unzip 压缩包名称

    27.tar指令:打包和接包,不打开就可以看到里面的格式

    语法:tar [选项] 新名称 文件与目录
    选项:
    • -c :建立一个压缩文件的参数指令(create 的意思); 
    • -x :解开一个压缩文件的参数指令! 
    • -t :查看 tarfile 里面的文件! 
    • -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
    • -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
    • -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
    • -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
    • -C : 解压到指定目录
    可以发现tar指令的选项是有很多的,并且它们还是比较容易混的。所以我们只需要掌握以下三种情况即可:

  • tar -czf XXX.tgz XXX       打包压缩()
  • tar -tzf XXX.tgz                预览查看
  • tar -xzf XXX.tgz               解压解包
    其中的.tgz是  .tar.gz 的缩写,.tar是打包的后缀,.gz是压缩的后缀。
  • tar -xzf xxx.tagz 解压解包是可以进行指定目录 : tar -xaf xxx.tgz 指定目录就可以了
  • 打包和压缩之间的区别:

    打包就是将多个文件整到一个文件中去,压缩是文件的体积变小了;

    28.uname指令:获取系统内核和硬件信息

    语法:uname [选项]

    功能: uname用来获取电脑和操作系统的相关信息。 

    选项:

    • -a    详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

    • -r    查体系结构。

    29.free:插内存

    赞(0)
    未经允许不得转载:171主机测评 » 1.linux的基础指令
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址