Linux基础指令

1.ls指令

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

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

选项:

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

1.1 ls -l

  • 列出文件更详细的内容

关于文件的扩展内容:

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

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

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

1.2 ls -a

  • 列出隐藏文件

在Linux中,.开头的文件表示该文件是隐藏文件 ,需要用ls -a指令才能显现出来,同时每个目录中都默认有两个文件...

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

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

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

2.pwd指令

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

3.cd指令

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

选项:

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

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

Linux的目录结构是一颗树

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

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

比如:

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

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

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

3.1 cd \~

  • 进入家目录

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

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

3.2 cd -

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

4.touch指令

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

  • 创建一个普通文件

5.which指令

【语法】which + 指令

  • 打印指令所处的路径

重新认识指令:

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


6.mkdir指令

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

  • 创建一个目录

选项:

  • -p:递归创建多个目录

7.rmdir和rm指令

7.1 rmdir

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

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

选项:

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

7.2 rm

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

选项:

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

8.man指令

【语法】man + 选项 + 指令

选项:

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

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

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


9.cp指令

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

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

选项:

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

10.mv指令

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

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

选项:

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

11.cat指令

【语法】cat + 文件名

选项:

  • -n:输出时带上序号
  • 查看文件中的内容

11.1 tac

  • 逆向查看文件中的内容

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

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


echo指令:

【语法】echo + 字符串

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

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

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

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

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

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

我们再来看看下面的操作

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

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

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

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


追加重定向:

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

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


输入重定向:

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

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

可以看到,cat file.txtcat \< 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的前面一部分内容(中间的是被我剪掉了,原本不是这样输出的)

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


13.less指令

【语法】less + 选项 + 文件

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

选项:

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

同样是显示文件内容,与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行的内容

方法2:使用管道符号\|

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


16.时间相关的指令

16.1 date

【语法】date + 选项 + 格式

格式:

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

16.2 时间戳

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

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

17.cal指令

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

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

选项:

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

18.find指令

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

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

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. 压缩在一起,文件不容易丢失

相关推荐
FoldWinCard1 天前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计1 天前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1231 天前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质1 天前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX1 天前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.1 天前
Linux系统管理
linux·运维
阿龙的工作记录1 天前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手1 天前
Linux的基本指令
linux·运维·服务器
hkj88081 天前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动1 天前
Linux编程笔记3【个人用】
linux·笔记