【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)

文章目录

    • 1. Linux背景
      • 1.1 发展史
      • 1.2 开源精神
      • 1.3 官网
      • 1.4 企业应用现状
      • 1.5 发行版本
      • 1.6 os概念,定位
    • 2. Linux下基本指令
      • 2.1 几个常用基本命令演示
      • 2.2 某些概念的解释
      • 2.3 ls 指令
      • 2.4 pwd 指令
      • 2.5 cd 指令
        • Linux的目录结构
        • 绝对路径与相对路径
        • cd 常用快捷命令
      • 2.6 touch指令
      • 2.7 nano介绍和使用
      • 2.8 mkdir指令(重要)
      • 2.9 rmdir指令 && rm 指令(重要)
      • 2.10 .man指令(重要)

1. Linux背景

1.1 发展史

本门课程学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。

UNIX发展的历史

1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。
1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。
UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。
第一个UNIX版本是免费给许多知名大学的计算机系使用的。
1972年,贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。伯克莱给系统增加了许多新的特点,后来成为了标准。
1975年伯克莱由下属部门BSD发行了自己的UNIX版本。UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。
1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发行了第一个商业版本。名叫System Ⅲ,后来被成为对商用软件产品良好支持的System Ⅴ所替代。
同时UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的高科技研究机构科研项目的基础。
其结果,伯克莱发行了一个叫做BSD Release 4.2的有效版本。
它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用。BSD Release 4.2被许多厂商所采用,例如SUN Microsystem。
UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适。
到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今天的书店里你能发现分别适用于这两个版本的不同的UNIX的书,一些是System V,另一些集中在BSD UNIX。
AT&T建立了一个叫UNIX系统实验室的新组织,它的作用就是综合UNIX的不同版本,集中开发一个标准系统。
1991年,UNIX综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发行了System V Release 4。为了与System V Release 4 竞争,一些其它公司,如IBM和惠普Open Software
Foundation(OSF)去产生自己的UNIX标准版本,继而出现了两个标准商业版本OSF版本和System Release 4。
1993年,AT&T把它的UNIX转卖给Novell公司。UNIX系统实验室成为了Novell的UNIX系统小组的一部分。
Novell发行了基于System V Release 4的自己的UNIX版UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发行了Solaris。两个相互竞争的UNIX使用的图形用户界面(一个叫Motif,另一个叫Openlook),已经合并为一个新的工作平台标准,叫做通用平台环境(CDE)。

Linux发展历史

1991年10月5日,赫尔辛基大学的一名研究生Linus BenedictTorvalds在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。
新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。Linus仅仅在第一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。
Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。
Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的。

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第1张图片
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第2张图片

1.2 开源精神

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统
内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。
GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码,Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词

1.3 官网

kernel官网

1.4 企业应用现状

Linux在服务器领域的发展

随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政
府、金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的扶持力度,Linux服务器产品一定能够冲击更大的服务器市场。
据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。

Linux在桌面领域的发展

近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域
得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。

Linux在移动嵌入式领域的发展

Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。在移动设备上广泛使用
的Android操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作系统,据2015年权威部门最新统计,Android操作系统的全球市场份额已达84.6%。
此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了一套基于Linux的操作系统“YunOS”,可用于智能手机、平板电脑和网络电视;常见的数字视频录像机、舞台灯光控制系统等都在逐渐采用定制版本的Linux来实现,而这一切均归功与Linux与开源的力量。

Linux在云计算/大数据领域的发展

互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。

1.5 发行版本

Debian

Debian运行起来极其稳定,这使得它非常适合用于服务器。 debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。

Ubuntu

Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定
爱不释手的一款操作系统。

红帽企业级Linux

这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。

CentOS

CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领
略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。

Fedora

小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常
好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。

Kali Linux

Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用
户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。
毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第3张图片

1.6 os概念,定位

操作系统概念:操作系统是一款进行软硬件管理的软件!
使计算机更好用! 这是操作系统的根本要义!!

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第4张图片

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第5张图片

2. Linux下基本指令

那接下来我们就来学习一下Linux下常见的基本指令,首先我这里用的是云服务器,我们先用xshell远程登陆上我的服务器(这里是root用户登录)。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第6张图片

2.1 几个常用基本命令演示

我先来给大家介绍几个常见的命令,然后我会对比Windows下的操作来帮助大家更好的理解这些指令

,来看第一个,如果我们想在Linux上创建一个目录,我们可以怎么做呢?
就可以用mkdir这个命令,如果我们想创建一个名字为dir的目录,就是
mkdir dir(相当于在Windows上创建文件夹)
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第7张图片
没有报错,这就创建好了,那我想查看一下怎么做?——ls
该命令可以查看当前目录下的子目录和文件列表【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第8张图片

那想查看我当前在哪个目录怎么做?

pwd
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第9张图片
我想进入我创建的目录
cd 目录名
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第10张图片
我们现在不想创建目录了,想创建一个普通文件:
touch 文件名(相当于在Windows上创建一个文件)
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第11张图片

先说这几个,简单总结一下:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第12张图片

2.2 某些概念的解释

上面说到ls是显示当前路径(目录)下的文件列表:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第13张图片
ls默认呢是只显示文件名你或者目录名的,如果我想让它显示的信息多一点呢
那就可以用这条命令:ls -l
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第14张图片
-l 这个l可以理解成list。这样就可以显示更多信息。

那到这里,就要给大家解释几个概念了:

对于ls -l这条命令来说,前面的ls叫做命令,后面跟的-l把它叫做命令选项。
一个命令可以配上不同的命令选项。

然后我们再来看这个:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第15张图片
我们说ls -l可以在ls的基础上显示出文件或目录的更多信息,那图中这里的0其实表示的是这个文件的大小,我们看到test.txt这个文件当前大小是0,因为它是一个空文件嘛,里面啥都没有。
那我现在给它里面写一点东西:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第16张图片
我们看到,写入内容之后它的大小变成了12。

那我来问大家几个问题:

如果我在Windows上创建一个空文件,这个文件是在哪存储的呢?
这个简单,文件存在磁盘上嘛。
那大家再想一下,这个空文件要不要占据磁盘空间大小呢?
在这里插入图片描述
答案是需要占用空间。
为什么呢?
要知道这里的空文件是指文件里面是空的,没有内容
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第17张图片
那没有内容不就不占用空间大小嘛,而且上面显示的也是0kb啊。
在这里插入图片描述
,那我问大家,这个空文件的文件名、修改日期、类型和大小这些东西是不是数据?
当然是数据,这些是文件的属性数据(信息)。
那既然是数据,就需要保存在磁盘中啊。
所以,即使是创建了一个空文件,他也是需要占据磁盘空间大小的。
文件=内容+属性。
对文件的操作无非就两种,对内容的操作和对属性的操作。

所以再来看ls -l(可以写成ll)其实就是以列表的形式显示文件更多的属性(ls只显示文件名属性)

前面大家可以认为是做了一些铺垫,接下来我们正式来一个个学习我们接下来要讲的基本命令。

2.3 ls 指令

语法: ls [选项][目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

刚才我们说到ls -l后面的-l是命令选项,而一个命令可能有多个不同命令选项(命令后面也可以一次性跟多个选项),接下来我们就来看一下ls常见的选项都有哪些:

常用选项:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。

这里有些内容我们现在还不能很好的理解(大家可以自己先练习练习),所以下面我先挑一些最常见的给大家介绍一下:

第一个:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
a可以理解成all
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第18张图片
,还是在上面那个路径下,这次我们在ls -l后面再加一个-a,大家看这两个的结果有什么不同?
我们看到又多出来两个文件,那这两个其实就是该目录下的隐藏文件,因为-a 选项的作用就是列出目录下的所有文件,包括以 . 开头的隐含文件。
那在这里就要告诉大家一个结论:
在Linux下,文件/目录名如果以开头,就是一个隐藏文件/目录
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第19张图片
当然ls -l -a也可以简写成ls -la
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第20张图片
当然大家应该都知道在Windows下也是有隐藏文件的。

PS:没有讲到的选项大家作为一个拓展,有兴趣可以自己试一下。

2.4 pwd 指令

语法: pwd

功能:显示用户当前所在的目录
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第21张图片

常用选项:无

建议每一次登陆,或者长时间没操作,都先执行一下pwd,确认一下自己在哪里

2.5 cd 指令

cd大家可以理解成change direction,更改目录。

语法: cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下

举个栗子:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第22张图片

然后这里要给大家说一下:

在Linux中,.表示当前路径,..表示上一级路径。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第23张图片
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第24张图片
cd…就相当于我们在Windows下某个文件路径回退当上一级目录的过程。

,那这里面呢,还有一个细节需要我们注意:

来看:
D:\gitee本地代码仓库\cpp-programming\STL-vector\Debug
这是我拷贝过来的Windows下的一个路径。
那这里的\叫做Windows下的路径分隔符。
我们再来看下Linux下的路径:
/root/dir/dir3
是这样的,所以/是Linux下的路径分隔符。

然后我们再来看:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第25张图片
Linux下,我们从一个路径开始往上一级一直回退回退,当回退到/的时候就无法再继续回退了。
那其实在Windows下也是这样,我们从某一个路径回退:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第26张图片
一直回退,如果回到此电脑界面的话就也无法继续回退了:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第27张图片
那在Linux中:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第28张图片
回退到/的时候就无法再继续回退了,而这里的/我们把它叫做Linux下的根目录。

那说到这里大家可能就会有疑问了:

上面不是说/是Linux下的路径分隔符嘛,但是这里为啥又说/是Linux下的根目录,这是怎么回事啊?
,那它们其实并不冲突,对于/root/dir/dir3像这样的一个Linux下的路径,最开始的第一个/是根目录,后面的/是路径分隔符。

Linux的目录结构

那接下来我们再来探讨一个问题:

我们知道在Windows下一个文件夹里还可以包含文件夹和普通文件,那大家思考一下,在Linux中,一个目录下面还可以有新的目录吗?
答案是可以的。
即Linux中,根目录下可以有多个目录或文件,这多个目录下还可以再有多个目录或文件。
所以我们可以得出一个结论:
Linux的目录结构其实是一颗多叉树
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第29张图片

绝对路径与相对路径

我们知道:

在Windows中,如果我想快速找到一个文件夹或者文件,我们一般是通过改文件夹的路径去寻找的。
那Windows如此,Linux亦然。
Linux也是通过路径来唯一标识一个文件的。

那大家思考一下,为什么是路径呢?
因为路径具有唯一性。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第30张图片
看这张图,我们想从根节点出发,寻找test.c,路径是不是唯一的啊——/home/bit/test.c
那我们把这种从根目录开始,定位文件的路径称为绝对路径。

那除了绝对路径之外,还有没有其它定位文件的方法呢?

有的,还有一种定位文件的方法就是用相对路径
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第31张图片
假设我现在在dev这个目录下,我想找到test.c文件,怎么找呢?
我是不是可以先回到上一级,然后进入home目录下,在进入bit,然后是不是就找到test.c了。
../home/bit/test.c
那这种定位文件的路径就叫做相对路径——即相对于当前所处路径去定位某个文件的路径

那现在有一个问题,如果我的当前路径变了呢?

,那你这个相对路径是不是就失效了啊。
所以说,相对路径只在特定的路径下有效。
而绝对路径则不会出现这样的情况,因为它是从根目录开始的,放在哪里都不会出错。

那我们来总结一下:

绝对路径呢,从根目录开始定位,他不会失效,放在哪都是正确的,但是,比较麻烦,一般是用在某些配置文件中,进行对应的路径设置。
相对路径,虽然会出现失效的问题,但是用起来比较简单,反而是我们后续指令操作时,常用的路径定位方案。

cd 常用快捷命令

cd ~:进入当前用户(whomi可查看当前用户)的家目录

演示一下:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第32张图片
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第33张图片
我们当前是root用户登录,root用户的家目录就是/root
普通用户的家目录是在/home/用户名下。

cd -:返回最近访问的上一次所处的路径
演示一下:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第34张图片

然后这里再给大家补充一个热键:

就是Tab
有什么作用呢?
假设我现在想使用mkdir,但是我们记不太清除这个命令怎么写了,只记得mkd,那我们就可以输入mkd,然后按Tab键(一次没反应就按两次):
在这里插入图片描述
大家看发生了什么,它把所有以mkd开头的命令都列出来了。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第35张图片
那还有其它作用吗?
有的:
在这里插入图片描述
我cd上一级目录,如果敲回车的话我就进入上一级目录了,但是我们不敲回车,敲Tab键,大家看发生了什么。
把cd后面对应的目录下面的所有文件和目录都列出来了。

2.6 touch指令

那在学习touch之前,先给大家再介绍两个命令:

我们上面已经学习了Linux的目录结构,那有一个命令叫做tree,它可以以树状结构显示Linux指定目录下的目录结构。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第36张图片
但是,大家的系统如果没有安装这个命令的话,可以用不了,会报一个错:
在这里插入图片描述
怎么解决呢?其实很简单,安装一下就行了。
只需在root用户下输入yum install -y tree这条命令就会自动去安装tree命令,然后就可以用了。
另外要给大家介绍的一个命令就是如果我们执行某些命令时,遇到疯狂刷屏的情况,使用ctrl+c可以终止命令的执行。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第37张图片

然后我们来学习touch命令:

那touch其实我们在上面也演示过了
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第38张图片
touch 文件名就可以在当前路径下创建一个普通文件。
当然也可以指定路径去创建
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第39张图片

那除此之外,touch其实还有其它的作用,它的后面也可以跟选项

首先再来认识一个命令叫做stat,它可以获取文件的所有属性:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第40张图片
这里面有的属性我们不认识,但是任何一个文件它都有三种时间
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第41张图片
那这三个时间分别是什么呢?
,那这个问题呢大家有兴趣可以自己先尝试了解一下,我们后面会讲到。

然后,关于touch的更多的用法,大家可以先了解一下:

语法:touch [选项]… 文件…
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a 或- -time=atime或- -time=access或- -time=use只更改存取时间。
-c 或- -no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或- -time=mtime或- -time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间

2.7 nano介绍和使用

这里再给大家介绍一个小工具——nano

它是一个文本编辑器,前期如果我们想打开一个文件并编辑它,就可以使用nano(后面我们会学vim)。
如果第一次也需要我们安装一下:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第42张图片

怎么使用呢,简单演示一下:

比如现在这里有一个test.c文件,我想打开它并写入一段C语言代码,怎么做呢?
直接nano test.c:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第43张图片
打开是这样的,然后就可以直接写东西了
在这里插入图片描述
那写完怎么保存退出呢?
其实下面有提示的,我按着提示操作就行了,退出(exit)就是ctrl+X
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第44张图片
然后出现这个,问你是否保存修改,我们输入Y,然后回车就保存退出来了
在这里插入图片描述
那写好了,我们想查看一下里面的内容,可以用一个命令cat(后面也会讲):
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第45张图片
那怎么编译这个C语言代码呢?
gcc:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第46张图片
我们发现多出来一个文件叫做a.out,这就是生成的可执行程序,怎么运行他呢?
./a.out
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第47张图片
就打印出来了。

2.8 mkdir指令(重要)

mkdir我们上面也用过了,它可以用来创建目录。

那如果我现在想创建一串目录(路径)呢?

比如,mkdir d1/d2/d3/d4/d5,我创建一个d1,在d1里面再创建一个d2,d2里面再创建一个d3,以此类推,创建一串。可以吗?
在这里插入图片描述
我们看到直接这样是不行的,因为一次性创建多个目录需要加一个选项-p
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第48张图片
这下就可以了。

所以,mkdir,总结一下:

语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:-p或–parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

2.9 rmdir指令 && rm 指令(重要)

上面我们学了创建文件和目录的命令,那我们想删除它们有办法吗?

当然有
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第49张图片
当前路径下有4个目录(蓝色的是目录),我想删除一个目录dir3:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第50张图片
使用命令rmdir,发现确实删除了。
再删一个:
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第51张图片
欸,怎么删不了了,我们看报错Directory not empty,说目录不是空的。
是的,rmdir只能删除空目录

那空目录我也想删除怎么办?

可以用rm命令,rm命令可以同时删除文件或目录
也就是它可以删除文件,也可以删除目录。
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第52张图片
那我想删除d1目录呢?
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第53张图片
不行,他报错说这是一个目录,不是说rm文件目录都可以删除吗?
是的,不过删除目录需要加一个选项:-r(递归删除)
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第54张图片
确实删除了,但是我们发现每删一个,它都询问一下。
那我很烦,不想每次都被询问,能做到吗?
可以,加一个选项:-f(force强制)
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第55张图片

总结一下:

rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。

语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

rm命令可以同时删除文件或目录

语法:rm [-f-i-r][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除(强制删除)
-i 删除前逐一询问确认
-r 删除目录及其下所有文件(递归删除)

2.10 .man指令(重要)

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。

访问Linux手册页的命令是

man 语法: man [选项] 命令

比如:

man ls
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第56张图片
就会出现相应的解释,按q退出。

常用选项

-k 根据关键字搜索联机帮助
num 只在第num章节找 (man 3 printf)
-a 可以查看与特定命令或主题相关的所有可用手册页,而不仅仅是默认的第一个手册页。

另外:man man可以查看man手册的相关介绍:

【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第57张图片
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第58张图片

解释一下,面手册分为8章

1. 是普通的用户命令
2 .是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 .是C库函数,如printf,fread
4.是特殊文件,也就是/dev下的各种设备文件
5 .是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 .是给游戏留的,由各个游戏自己定义
7 .是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 .是系统管理用的命令,这些命令只能由root使用,如ifconfig

前3个大家可以先了解一下,后面的可以先不管。

另外就是:

如果大家在查的时候有的东西查不到,可以手动安装一下:
root用户下执行yum install -y man-pages
普通用户的话前面加sudo
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第59张图片

Linux后面还有一些常见的基本指令需要我们去学习,但是鉴于文章的篇幅已经比较长了,所以这篇文章先到这里,后面的基本指令我们放到下一篇文章继续讲解!!!
【Linux 系统编程】Linux背景介绍 及 基本指令详解(一)_第60张图片

你可能感兴趣的:(Linux,系统编程,linux,unix,网络)