当前位置: 首页 > news >正文

Linux-Linux的基础指令4

1.cat指令

之前我使用过很多的cat指令,大家都应该知道cat指令的作用了。

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

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

1.1基本用法

cat用于查看文件的内容,比如,我们创建一个新文件后,在里面写入内容然后用cat查看:

如果我们写入几行会怎么样?

可以看到它会输出空行,并且在文件末尾自动换行。

我们发现如果cat后面不接文件也可以([]里面内容代表可以省略),那么我们不接文件会怎么样呢?

1.2不接文件

我们直接cat会发现:

cat后面不接文件代表它会从键盘文件读取,然后把从键盘文件读取内容显示在显示器上,如:

只要我们回车,它就会继续等待我们输入,这是因为读入键盘文件时,这个键盘文件没有结尾,只能不停等待用户输入,直到我们自己退出该文件为止。

想要退出这个操作,直接Ctrl+C即可

1.3接选项

我们在add.txt中进行nano add.txt操作,然后输入以下内容:

Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day! Today is Mar twenty-five day!

这样操作主要是为了后面看出各个选项的区别。

用Ctrl+X保存后回车退出即可。

这样cat add.txt的结果是:

1.3.1-b选项

-b对非空输出行进行编号:

也就是说,如果是非空行它将会从数字1开始往下编号,对空行则不编号,很好理解。

1.3.2-n选项

功能:对输出的所有行编号:

也就是相当于给原来文件的每个行(包括空行进行编号)

1.3.3-s选项

功能:不输出多行空行:

对比我们不接选项:

我们会发现,第三个today行到第四个today行中间只有一个空行,省略了两个,也就是说:-s选项可以合并多个相邻空行为一个空行输出!

1.4输入重定向

cat不接任何东西时是从键盘文件进行输入,而我们如果不想要它从键盘文件读取,而想从add.txt文件中读取,我们除了用cat add.txt外,还可以用cat < add.txt,比如:

如果各位有两台Linux机器的话,可以完成一个机器输入echo "hello world" > /dev/pts/1(这是另外一个机器的显示器文件路径),然后在另一个机器上就会显示:hello world。

如果想要知道自己的显示器文件路径,直接:

ls /dev/pts

而我们的显示器文件的路径就是/dev/pts/n这个n是指我们ls /dev/pts后的第一个结果,如果我们只打开了一个Xshell,则只有1个显示器,若我们又用另外一个用户登录Xshell,这时候用ls /dev/pts就会出现0 1 ptmx,也就是另外一个用户的显示器文件路径为/dev/pts/1,(我们每次登录系统,系统会在ptmx下新建一个文件,即显示器文件)。

当我们只有一台显示器登录该地址,如果我们使用echo "hello world" > /dev/pts/0,则会在自己屏幕上显示出:hello world,比如:

这就相当于/dev/pts/0 < /dev/pts/0前面那个文件代表我们的输入重定向的文件,而后面那个代表我们显示器的路径,这也就相当于其他人的显示器文件从我们的echo指令输入的内容读取了!

如果我们在没有另外一个显示器的情况下使用输出重定向,则不被允许了:

这个表示:你没有权限向/dev/pts/1这个终端设备写入内容。

总之,这个输入重定向在cat中有应用,之后的指令可能也有应用,这里先提示一下,以后用到了至少知道。

2.mv指令

mv指令是move的缩写,有移动的意思。

语法:mv [选项] 源文件或目录 目标文件或目录

功能:用来移动文件或为文件改名

2.1基本用法

文件重命名:

当第二个参数(目标文件或目录)是文件时,mv指令将会把原文件名重命名为目标文件名:

我们发现,mv后,原文件会被删除,那么如果目标文件不存在呢?

我们发现,只要目标文件不存在,它会直接改名,不管后缀是否对应!

那我们能不能把某个文件移动到其他路径下呢?

也就是说,如果第二个参数(目标文件或目录)为目录时,则会把第一个参数作为第二个参数的子目录或文件?

如果第一个参数为目录呢?

我们看到最后一句话是:无法移动hello目录到12.06下:目录不为空。

这是因为12.06下的hello目录与要移动的hello目录名相同,为了防止覆盖原路径下的同名目录,所以这个操作被拒绝了。

有两种方案,第一种是不推荐的:把./12.06/hello下的所有子目录和文件都删除,然后再移动就行:

因为我们删除了./12.06/hello下的所有子目录或文件,所以使得该目录为空,从而可以被安全覆盖,因此这操作是被允许的!

但是这样成本也太大了吧,只是移动一个文件,我却要把文件给删除,难道两个不能都保存下来吗?

第二种方法:我移动到12.06路径下,但是我还要自己命名为hello2:

我们通过这种方式的目的是:12.06目录下不存在hello2目录,因此新建了一个,也就相当于把原hello的目录名改成了hello2,这种方式成本大大降低了。

2.2常用选项

-f:force,如果目标文件已存在,不会询问直接覆盖;

-i:若目标文件已经存在,就会询问是否覆盖。

这两个如果同时使用时,优先级高低根据系统来,但是建议不要用第一个选项,防止不小心覆盖了原文件而出错,建议各位自己使用mv时使用-i选项,或者自己在vim ~/.bashrc里面增加:

alias mv='mv -i'

然后用Shift+ZZ保存退出之后就可以每次进行mv操作时默认询问了。

3.总结

这两个指令用得还是比较多的,而且比较抽象,需要加以应用才能理解更透彻,这些指令还有一些选项需要各位自己去问AI大模型了。

http://www.cnnetsun.cn/news/1498315.html

相关文章:

  • hass-xiaomi-miot 集成配置与固件兼容性管理实践指南
  • Allegro Orcad 生成网表方法
  • SDMatte效果对比图谱:SDMatte/RemBG/BackgroundMattingV2在玻璃场景PK
  • springMVC-常见视图组件与RESTFul编程风格
  • 深入解析WIFI中EAP-TLS认证流程与安全机制
  • 7 年加班 1 分都没有?猝死程序员妻子:已申请公开 CVTE “不定时工作制”文件
  • OpenClaw 实战:3 分钟打造一个真正能「干活」的 AI 员工
  • AIGlasses_for_navigation性能调优:剖析LSTM模块对时序轨迹预测的贡献
  • DCT-Net人像卡通化模型GPU镜像一键部署教程:3步实现AI艺术创作
  • WP-Hackademic.RTB1
  • 2026整家定制一线品牌选购报告:基于物理指标与国标数据的多维交叉验证
  • OpenClaw怎么搭建?2026年3月OpenClaw(Clawdbot)在腾讯云一键部署超全攻略
  • Compiler Explorer:开发者工具中的汇编可视化与代码分析指南
  • 你好吗吗吗吗吗
  • 当ChatGPT开始‘胡说八道’:普通人也能看懂的LLM幻觉避雷手册
  • 用Python从零实现一个天气预测模型:马尔可夫链实战(附完整代码)
  • 桶排序:分布式排序的高效实现
  • python编程语法基础笔记(3.25)
  • League-Toolkit:英雄联盟玩家的终极辅助工具集完整指南
  • OpenClaw QQ 插件 v0.6.0 发布:率先适配OpenClaw新版本Plugin-SDK
  • ClickHouse集群部署与管理:从0到1的实战指南
  • 无限级数求和与Java实现优化教程
  • CSS 渐变的高级应用:色彩的流动艺术
  • 西门子1500PLC饮料罐装线:从代码到螺丝刀的全栈开发实录
  • 基于Matlab的Tamura纹理特征提取
  • Javascript提高:JavaScript Promise 超通俗解释-由Deepseek产生
  • 改进下垂控制的孤岛型并联分布式电源微电网系统
  • 建行江门市分行:银发关爱在行动 暖心服务送到家
  • 多策略改进的鲸鱼优化算法(MWOA),与其他三种变体和几种2024最新算法比较,策略都是很新颖的策略
  • 快速验证openclaw启动命令:用快马AI一键生成原型测试脚本