Linux -初识 与基础指令2

博客主页:【夜泉_ly

本文专栏:【Linux

欢迎点赞👍收藏⭐关注❤️

文章目录

  • [📚 前言](#📚 前言)
    • [🔑 概念一](#🔑 概念一)
    • [🔑 概念二](#🔑 概念二)
  • [📖 man](#📖 man)
  • [💬 echo](#💬 echo)
  • [📁 cp](#📁 cp)
  • [📂 mv](#📂 mv)
    • [🔑 概念三](#🔑 概念三)
    • [🔑 概念四](#🔑 概念四)
    • [🔄 输入输出重定向](#🔄 输入输出重定向)
    • [🏷️ Ctrl c](#🏷️ Ctrl c)

📚 前言

本文主要内容:

Linux -初识 与基础指令1中,

我简单介绍了几个Linux的常见指令。其实啥也没讲

由于写得比较激动,把几个重要的概念给忘了,

所以本篇先补补之前涉及的相关概念,

后面继续讲基础指令。。加相关概念。

🔑 概念一

概念一:文件 = 文件内容 + 文件属性。

首先来看个东西:

复制代码
touch test.txt
mkdir testdir

touch 创建了一个空文件,又 mkdir 创建了一个空目录。

那么这些 的文件/目录,占不占空间?

答案是要占空间,因为下面这些信息也是需要空间来存的:

🔑 概念二

概念二:Linux 中的任何文件操作,本质上都是对文件系统树的修改。

在前一篇,我通过不断 cd .. ,一直退到了 / 目录:

这个 / 目录就是 Linux 系统中树形结构的文件系统的起点。

在这颗树中,任何一个文件都可以被当作这颗树的节点。

因此,修改任何一个文件,等价于修改这颗多叉树。

举几个例子:

  • 创建文件或目录:在树中添加一个新节点。
  • 删除文件或目录:从树中移除一个节点。
  • 修改文件内容:修改树中某个节点的内容。

📖 man

接下来看看本篇的第一条指令:man

这是Linux中的手册,用来介绍指令是怎么用的。

比如,你现在连 man 都不会用,那你就直接输入:

复制代码
man man

查看 man 怎么用:

往下翻翻可以看到 man 手册分了几个章节:

这个章节主要看一三就行,一是指令,三是库函数。

这个库函数主要是C语言的,比如你可以查 printf 怎么用。

不过 man 默认是顺着手册查,因此当你直接:

复制代码
man printf

你会发现查到了第一章的指令:

是的,printf 也是一条指令,不过这里就不过多介绍了。

先要查看库函数里的 printf ,需要加上章节名:

复制代码
man 3 printf

💬 echo

echo 指令用于将我们输入的内容加个换行后再输出。

复制代码
echo "Hello World"

后面加个 > 可以用来写文件。

复制代码
echo "Hello World" > test.txt

可以看见:

  • 屏幕上没有输出。
  • 文件大小被改变。

至于检查内容是否被写入,我们还需要一个指令:
cat,用于把文件内容显示到屏幕。

因此在 echo 后跟个 > 符号,再跟个文件名,发现本该输出到屏幕的东西进文件了,我们把这个叫做输出重定向

📁 cp

现在先来看看拷贝指令 cp

复制代码
cp test.txt cp.txt

上面这条可以将 test.txt 的内容拷贝到 cp.txt:

也可以改改路径:

复制代码
cp test.txt ./test/cp.txt

如果要拷贝整个目录,加个 -r 就行:

复制代码
cp -r test cp

📂 mv

mv 指令,用来:重命名 + 剪切。

先来看看重命名( + 剪切):

复制代码
mv test.txt test_mv.txt

再看看(重命名 + )剪切:

复制代码
mv test_mv.txt d1

再看看重命名 + 剪切:

复制代码
mv test_mv.txt ../test.txt

目录同理:

复制代码
mv d2 d1

🔑 概念三

概念三:指令是可执行程序。

在了解了这么多指令的用法后,也应该了解一下指令的本质了:

指令就是可执行程序!

当我们输入了abcdefg后,会提示我们指令未找到:

这意味着想要运行一条指令,必须先找到它的位置。

当我们执行 rm -rf /* 后,再输入指令,就会显示它的位置:

🤣开个玩笑,你们可万万不能输 rm -rf /*

当我们输入 which 加指令,就能看见对应的位置:

可以看见,大多指令都是放在 /usr/bin 下的。
cd 过去看看:

上面这绿色的一片就是指令。

我又用C语言简单写段代码,并 gcc 出了可执行程序:

简单运行一下:

但如果想像指令那样运行,还是会提示未找到:

这好办,把它移到指令在的目录里面就行了:

看见了吧,我写的 Hello World 也可以像指令一样用。

那么问题来了:

指令和我们写的可执行程序有区别吗?

当然有!别人写得更好。。

🔑 概念四

概念四:Linux中一切皆文件。

在了解了指令不过就是可执行程序后,我们可以更深一步的理解:Linux中一切皆文件。

比如,显示器。

在Linux系统看来,显示器是个文件。

当直接 echo 时,相当于向这个文件写入。

比如,键盘。

在Linux系统看来,键盘也是个文件。

当我们打字时,就是在从这个文件读数据。

🔄 输入输出重定向

在简单了解了,或者说知道了Linux中一切皆文件后,我们再来看一下重定向。

首先是 echo ,我们可以看见它默认写是显示器:

复制代码
echo Hello World

此时,加上 > ,可以向文件写入:

复制代码
echo Hello World > test.txt

这个 > 我们叫做输入重定向。

再看看输入重定向的特点:

复制代码
ls -l          // 确认当前目录没有test2.txt
echo Hello World > test2.txt
echo Hello World > test2.txt
echo Hello World > test2.txt
cat test2.txt  // 确认是否有test2.txt,以及其内容
  • 如果没有对应文件,会创建个新的
  • 如果有对应文件,会覆盖写

如果想要快速清空一个文件,可以直接 > 加文件名:

复制代码
> test2.txt

如果想要追加,可以使用追加重定向 >>

复制代码
echo Hello World >> test2.txt

再看看 cat,如果直接输入,不加文件:

可以看见,cat 默认从键盘读取,默认向显示器打印。

如果想让 cat 读取文件的内容,需要用到输入重定向 <

复制代码
cat < test.txt

🏷️ Ctrl c

Ctrl c可以帮助我们中断程序,常用于完结死循环:


希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!

本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
matlab的学徒16 分钟前
Web与Nginx网站服务(改)
linux·运维·前端·nginx·tomcat
Insist75321 分钟前
prometheus安装部署与alertmanager邮箱告警
linux·运维·grafana·prometheus
BAGAE1 小时前
MODBUS 通信协议详细介绍
linux·嵌入式硬件·物联网·硬件架构·iot·嵌入式实时数据库·rtdbs
灿烂阳光g1 小时前
SELinux 策略文件编写
android·linux
xqlily1 小时前
Linux操作系统之Ubuntu
linux·运维·ubuntu
阿部多瑞 ABU1 小时前
《基于国产Linux的机房终端安全重构方案》
linux·安全
倔强的石头1062 小时前
【Linux指南】Makefile入门:从概念到基础语法
linux·运维·服务器
ajassi20002 小时前
linux C 语言开发 (七) 文件 IO 和标准 IO
linux·运维·服务器
程序猿编码2 小时前
基于 Linux 内核模块的字符设备 FIFO 驱动设计与实现解析(C/C++代码实现)
linux·c语言·c++·内核模块·fifo·字符设备
一只游鱼2 小时前
Zookeeper介绍与部署(Linux)
linux·运维·服务器·zookeeper