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语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
Curtis098034 分钟前
RHCE——Ubuntu Linux操作系统
linux·服务器·ubuntu
青瓷看世界1 小时前
华为HarmonyOS 让应用快速拥有账号能力 -- 1 华为账号一键登录
服务器·华为·harmonyos·应用账号能力
YRr YRr4 小时前
在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用
linux·ubuntu·信息可视化
Hansel_Zhang4 小时前
CentOS 7 docker部署jar包
linux·docker·centos
搬砖的果果4 小时前
HTTP代理有那些常见的安全协议?
服务器·python·网络协议·tcp/ip
运维&陈同学5 小时前
【Dubbo03】消息队列与微服务之dubbo-admin 二进制与编译安装
linux·运维·服务器·后端·微服务·云原生·架构·dubbo
不像程序员的程序媛5 小时前
记录下nginx接口代理配置问题
运维·服务器·nginx
Lemon_man_5 小时前
算法——反转字符串中的单词(leetcode151)
java·linux·前端
jupiter_8885 小时前
Java NIO channel
java·服务器·nio
灼华十一5 小时前
消息队列-kafka
linux·docker·golang·kafka