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.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的前面一部分内容**(中间的是被我剪掉了,原本不是这样输出的) ![](https://file.jishuzhan.net/article/1730106157848072194/00275249cfec51049eb54a56b6d84602.webp) 但用more指令还有问题,就是要查看下面的内容需要不停的按enter,还是不方便 *** ** * ** *** ## 13.less指令 【语法】less + 选项 + 文件 * 显示文件中的内容(适合显示大文件) * 打开文件后提供搜索功能 > 选项: > > * -N:输出时显示行号 > * -i:搜索时不区分大小写进行搜索 > * /字符串:向下搜索字符串 > * ?字符串:向上搜索字符串 > * q:退出 > * n:执行上一次搜索 ![](https://file.jishuzhan.net/article/1730106157848072194/ce30b548f8dc2c49f810f928cbab836b.webp) 同样是显示文件内容,与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行的内容![](https://file.jishuzhan.net/article/1730106157848072194/e3b1f2f840850dbcee8c65af0d377a8f.webp) 方法2:**使用管道符号\[\|\]** ![](https://file.jishuzhan.net/article/1730106157848072194/5880c8c06fbbe2a488f35cc6eab2d47c.webp) **所谓管道,就是将上一次命令处理完的数据交给下一个命令进一步处理;**有点像生活中的流水线,一个人处理完东西后交给下一个人加工 *** ** * ** *** ## 16.时间相关的指令 ### 16.1 *date* 【语法】date + 选项 + 格式 > 格式: > > * %Y:年 > * %m:月 > * %d:日 > * %H:时 > * %M:分 > * %S:秒 * date不加任何选项,以英文的方式显示日期 * 可以通过选项自己修改打印日期的格式,每两个格式之间可以加符号来调整格式 ![](https://file.jishuzhan.net/article/1730106157848072194/84290aff12ddedacd8c2a6e618e9c041.webp) ### 16.2 *时间戳* 由于地区的不同,我们日常使用的时间表示在另一个国家可能是错误的,因此,为了统一化时间,设计出了时间戳这样的概念;时间戳一直在递增 > * 当前时间转化为时间戳:date +%s > * 时间戳转化为一个时间:date -d@时间戳 *** ** * ** *** ## 17.cal指令 【语法】cal + 选项/月份和年份 * 如果cal后面只有一个参数,表示年份,显示指定年份的日立 * 如果cal后面有两个参数,第一个参数表示月,第二个参数表示年,显示指定年份中指定月的日立 > 选项: > > * -3:显示当前月,上一个月和下一个月的日立 > * -y:显示当前年份的日立 > * -j:显示当前天处于该年中的哪一天 *** ** * ** *** ## 18.find指令 【语法】find + 开始查找的路径 + 选项\[-name\] + 文件 * 从指定路径开始,以指定的方式(名字)查找文件 ![](https://file.jishuzhan.net/article/1730106157848072194/df999527a2bd9673c68ad616e5bb18ab.webp) *** ** * ** *** ## 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. 压缩在一起,文件不容易丢失 *** ** * ** ***

相关推荐
像风一样的男人@31 分钟前
Linux --systemctl损坏
linux·运维·服务器
南棱笑笑生34 分钟前
20250515测试飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG时跑iperf3的极速
linux·服务器·网络
南方以南_36 分钟前
【云实验】搭建个人网盘实验
linux·运维·服务器
酷爱码1 小时前
Linux实现临时RAM登录的方法汇总
linux·前端·javascript
muxue1781 小时前
chmod 777含义:
linux
帷幄庸者1 小时前
CentOS 上配置 Docker 使用 NVIDIA GPU
linux·docker·centos
xbd_zc2 小时前
【Linux Nano Vim快捷键大全】
linux·运维·vim
shane-u2 小时前
Dockerfile实战:从零构建自定义CentOS镜像
linux·运维·centos
XiaoCCCcCCccCcccC2 小时前
Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器
linux·网络·udp
风暴智能2 小时前
获取相机图像(ROS2)
linux·机器人·无人机