Linux基础指令

1.ls指令

【语法】ls + 目录/普通文件

  • 对于目录,列出目录中的所有文件
  • 对于普通文件,列出文件的基本属性

选项:

  • -l  详细列出文件的属性
  • -a 列出当前目录下的文件和隐藏文件
  • -i 显示文件的索引信息
  • -R 以递归的方式显示目录下的文件 

1.1 [ls -l]

  • 列出文件更详细的内容

关于文件的扩展内容:

不管是在windows,还是Linux下,文件都被分为两个部分,文件 = 内容 + 属性

未来我们对文件进行操作,要么修改文件属性,要么修改内容

在Linux底下,使用ls指令仅仅列出文件属性中的文件名,想要查看一个文件更详细的属性,要用[ls -l]

Linux基础指令_第1张图片

1.2 [ls -a]

  • 列出隐藏文件

在Linux中,以[.]开头的文件表示该文件是隐藏文件,需要用[ls -a]指令才能显现出来,同时每个目录中都默认有两个文件[.]和[..]Linux基础指令_第2张图片

其中,[.]表示当前目录,[..]表示上级目录

为什么要自带[.]和[..]两个文件呢?

  • [.]是为了方便查找当前目录下的文件
  • [..]是为了方便返回上级目录

2.pwd指令

  • 显示当前用户所在的路径

3.cd指令

【语法】cd + 绝对路径/相对路径

选项:

  • cd .. 返回上级目录
  • cd /home/code 进入选定目录
  • cd ~ 直接回到用户家目录
  • cd - 回到最近一次操作的目录下

绝对路径和相对路径的扩展内容:

Linux的目录结构是一颗树Linux基础指令_第3张图片

也就是说任何一个目录或文件,如果从根目录开始,有且仅有一条路径与它对应;如果从其他目录开始,可以有多条路径与它对应

  • 绝对路径:从根目录开始,到一个文件/目录的路径,每个文件/目录有且只有一个绝对路劲
  • 相对路径:以其他目录为参照,到一个文件/目录的路径,每个文件/目录可以有多个相对路劲

比如:

假设我在etc目录下,要找到Code.c文件

绝对路径:/home/byh/Code.c

相对路径:../home/byh/Code.c

3.1 [cd ~]

  • 进入家目录

Linux开机时,默认进入家目录,如果你是root用户,会进入root的家目录;如果你是普通用户,会进入普通用户的家目录

使用[cd ~]指令可以快速的进入家目录

Linux基础指令_第4张图片

3.2 [cd -]

  • 进入最近一次所处的路径下

 4.touch指令

【语法】touch + 选项 + 文件名

  • 创建一个普通文件

5.which指令

【语法】which + 指令

  • 打印指令所处的路径

重新认识指令:

指令的本质其实是一个程序;系统在执行一个指令时,首先需要找到该指令的可执行程序,再执行该程序;每个指令都对应着一个文件,which就是显示一个指令所处文件的路径


6.mkdir指令

【语法】:mkdir + 选项 + 目录名

  • 创建一个目录

选项:

  • -p:递归创建多个目录Linux基础指令_第5张图片

7.rmdir和rm指令

7.1 rmdir

【语法】rmdir + 选项 + 目录名

  • 和mkdir相对应,mkdir是创建目录,rmdir是删除目录,只不过直接rmdir只能删除空目录,如果需要递归删除,需要加上-p选项

选项:

  • -p:递归删除一系列目录

7.2 rm

【语法】rm + 选项 + 文件名/目录名

选项:

  • -r:删除目录及其下的所有文件,并在删除时进行确认
  • -f:如果要删除,不进行确认,直接删除
  • -i:删除每一个文件都需要确认
  • 如果rm不加任何选项,只能删除普通文件,不能删除目录,且在删除普通文件时会进行确认Linux基础指令_第6张图片

8.man指令

【语法】man + 选项 + 指令

选项:

  • -a 将章节全部显示出来
  • num 只在第num章节找
  • -k 根据关键字查找

Linux中,有这么多的指令,我们不可能全部记住;man就相当于一个帮助手册,当不知道一个指令怎么用时,man一下指令,就会显示该指令的用法

我们也可以[man man]来查看man手册怎么用;在查找一个指令的用法时,如果不加num,会默认从头开始找,只要找到跟指令重名的就停下来,但找到的不一定是我们要的指令,因此在man时最好加上num,你想查找的指令在哪个章节Linux基础指令_第7张图片


9.cp指令

【语法】cp + 源头 + 目的地

  • 拷贝源头的文件/目录到目的地

选项:

  • -r:如果想拷贝一个目录及其下的所有文件,需要递归拷贝

10.mv指令

【语法】mv + 源头 + 目的地

  • 剪切源头的文件/目录到目的地

选项:

  • -f:强制剪切,如果目的地存在和源文件同名的文件,不会询问,直接覆盖

11.cat指令

【语法】cat + 文件名

选项:

  • -n:输出时带上序号
  • 查看文件中的内容Linux基础指令_第8张图片

11.1 tac

  • 逆向查看文件中的内容Linux基础指令_第9张图片

cat指令只适合查看小文件的内容,不方便查看大文件的内容;想要查看大文件的内容,一般用more指令

在将more指令之前,跟大家讲些额外知识


echo指令:

【语法】echo + 字符串

  • 输出指定的内容到屏幕上
输出重定向:

我们接下来看看这样的操作

Linux基础指令_第10张图片

首先,我们的当前目录没有任何文件;接着我们使用了[echo "hello Linux" > file.txt]这样一串指令,发现当前目录多个一个file.txt的文件;我们再[cat file.txt],发现[file.txt]中的内容是我们刚刚echo指定的内容

经过上面一番操作,本来应当在显示器显示的内容,跑到了我们指定的文件中了,上面的符号[>]我们称为输出重定向

怎么理解输出重定向?这里再跟大家说一个概念,在Linux中,一切皆文件,在屏幕上打印了内容,本质上是因为我们向显示器文件写入了内容,显示器文件再按某种方式输出到我们的屏幕上,让我们看见;通过键盘输入内容本质上是因为键盘文件读取了我们输入的内容

默认状况下,echo向显示器文件写入我们指定的内容,但是通过[>],我们把原本应当向显示器文件写入的内容写到了我们指定的文件中,这就叫做重定向

我们再来看看下面的操作Linux基础指令_第11张图片

输入[echo "abcdefg" > file.txt],我们发现,之前文件中的内容都没了;因此输出重定向的作用:

  1. 输出指定内容到指定文件中,如果指定文件不存在,则会先自动创建一个文件,再输出内容
  2. 每次重定向都会删除原有的数据,再输出新的数据

仔细想想,是不是跟C语言中的写文件操作有点相似;

以后我们创建一个文件和删除文件的内容可以这样写了:[>filename],这个指令相当于我打开一个文件,写空内容到文件中,打开文件时,如果该文件不存在,则会创建该文件,达到了创建文件的效果;如果该文件存在,则先删除文件内容,再往文件写入空内容,达到了删除文件内容的效果


追加重定向:

Linux基础指令_第12张图片

看了上面的操作,我们发现file.txt中的内容不像刚才那样,每次重定向都会先删除原本数据;这次不会删除原本数据,而是在原文追加相应的内容

此时,我们将[>>]符号叫做追加重定向,有点像C语言文件操作中以“a”的方式打开文件


输入重定向:

上面我们简单的介绍的一下cat的用法,是显示一个文件中的内容;来看看下面的操作

Linux基础指令_第13张图片

可以看到,如果cat后面什么都不加,默认是向键盘文件读取数据,而输入[cat < file.txt]指令后,cat就向我们指定的文件读取数据了,再以某种方式输出到我们的屏幕上;我们把[<]叫做输入重定向

Linux基础指令_第14张图片

可以看到,[cat file.txt]和[cat < file.txt]向屏幕输出的内容都是一样的,但要知道,这两个指令在原理上是完全不同的


  • 前面说到,在Linux中,一切皆文件,向显示器打印了数据实质上是因为向显示器文件写入了数据,那能不能在Linux中证明上述内容是正确的

[/dev/pts/0]就对应着我们当前屏幕的显示器文件,可以看到,我们将"Linux"内容重定向到该文件,结果在屏幕上打印了"Linux",进一步证明Linux中一切皆文件

Linux中,为什么要设计一切皆文件这样的理念?可以以统一的方式来对文件/设备访问


12.more指令

【语法】more + 选项 + 文件

  • 显示文件中的内容(适合显示大文件)

选项:

  • q:退出

[i=1; while [ $i -le 10000 ]; do echo "hello Linux $i"; let i++; done > big.txt]我们利用这样的代码创建一个有一万行内容的文件;这时,如果用cat查看big.txt的内容,就会将内容全部显示到屏幕上,如果向查看上面的内容,还要用鼠标去翻,很麻烦;

  • 用more指令,会只显示big.txt的前面一部分内容(中间的是被我剪掉了,原本不是这样输出的)

Linux基础指令_第15张图片

但用more指令还有问题,就是要查看下面的内容需要不停的按enter,还是不方便


13.less指令

【语法】less + 选项 + 文件

  • 显示文件中的内容(适合显示大文件)
  • 打开文件后提供搜索功能

选项:

  • -N:输出时显示行号
  • -i:搜索时不区分大小写进行搜索
  • /字符串:向下搜索字符串
  • ?字符串:向上搜索字符串
  • q:退出
  • n:执行上一次搜索

Linux基础指令_第16张图片

同样是显示文件内容,与more不同的是,使用键盘上的方向键就可以任意访问文件中的内容;因此,在日后学习过程中,想要访问一个文件的内容推荐使用less指令


14.head指令

【语法】head + -n<行数> + 文件

  • 显示文件的前n行

15.tail指令

【语法】tail + -n<行数> + 文件

  • 显示文件的后n行

问:现在有一个100行的文件,我想要查看50~60行的数据,利用head和tail指令,怎么实现?

方法1:先用head前60行,输出到file1.txt中,此时file1.txt中是前60行的内容;再对file1.txt使用tail后11行的内容,输出到file2.txt中,file2.txt就是要查看的50~60行的内容Linux基础指令_第17张图片

方法2:使用管道符号[|]Linux基础指令_第18张图片

所谓管道,就是将上一次命令处理完的数据交给下一个命令进一步处理;有点像生活中的流水线,一个人处理完东西后交给下一个人加工


16.时间相关的指令

16.1 date

【语法】date + 选项 + 格式

格式:

  • %Y:年
  • %m:月
  • %d:日
  • %H:时
  • %M:分
  • %S:秒
  • date不加任何选项,以英文的方式显示日期
  • 可以通过选项自己修改打印日期的格式,每两个格式之间可以加符号来调整格式

Linux基础指令_第19张图片

16.2 时间戳

由于地区的不同,我们日常使用的时间表示在另一个国家可能是错误的,因此,为了统一化时间,设计出了时间戳这样的概念;时间戳一直在递增

  • 当前时间转化为时间戳:date +%s
  • 时间戳转化为一个时间:date -d@时间戳

17.cal指令

【语法】cal + 选项/月份和年份

  • 如果cal后面只有一个参数,表示年份,显示指定年份的日立
  • 如果cal后面有两个参数,第一个参数表示月,第二个参数表示年,显示指定年份中指定月的日立

选项:

  • -3:显示当前月,上一个月和下一个月的日立
  • -y:显示当前年份的日立
  • -j:显示当前天处于该年中的哪一天

18.find指令

【语法】find + 开始查找的路径 + 选项[-name] + 文件

  • 从指定路径开始,以指定的方式(名字)查找文件

Linux基础指令_第20张图片


19.grep指令

【语法】grep + 选项 + 字符串 + 文件名

  • 文本过滤指令,留下有指定字符串的行,并打印到屏幕上

选项:

  • -n:打印时输出行号
  • -i:查找时不区分大小写
  • -v:反向查找,比如要查找“linux”,会显示所有没有“linux”的行

20.zip/unzip指令

20.1 zip

【语法】zip + xxx.zip + 目录

  • 压缩一个目录

选项:

  • -r:递归压缩一个目录中的所有文件

如果zip不加任何选型,默认只压缩一个空目录,想要压缩一个目录中的所有文件,要加上-r选项

20.2 unzip

【语法】unzip + xxx.zip

  • 解压一个压缩文件

为什么要压缩文件?

  1. 压缩文件大小,方便下载
  2. 压缩在一起,文件不容易丢失

你可能感兴趣的:(Linux,linux)