Linux程序设计——Linux基础

1. 什么是Linux

1)Linux系统是一种自由和开放源代码的类UNIX的完整操作系统。

2)林纳斯·本纳第克特·托瓦兹(LinusBenedictTorvalds,1969~)

3)诞生于1991105日。Linux存在着许多不同的Linux版本,均使用Linux内核。

4)Linux系统基于GPL协议发布,该协议是GNU项目所创立开放源代码的公共许可证。

5)支持各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

2. GNU项目简介

1)GNU项目在1983年由理查德·斯托曼(RichardStallman)创立

2)GNU项目花了十余年时间创建了GCC编译器、Emacs编辑器等多个工具。所有的工具以源代码形式发布,并且无需支付任何费用。只是这些工具的改进版本和衍生品必须遵循同样的发布形式,这就形成了GPL协议。但当时缺少一个最关键的组件——操作系统核心

3. GNU项目组织结构

 Linux程序设计——Linux基础_第1张图片

4. Linux起源

1)Minix——安德鲁·塔能鲍姆(AndrewTanenbaum)出于教学目的编写的类UNIX操作系统

2)Freax(Freak+x)——Linus Torvalds

3)Linux——Ari Lemmke

4)GNU/Linux——Linux内核与GNU工具结合体(GNU“GNUisNotUnix”的递归缩写)费软件与开源软件

5. 免费软件与开源软件

1)免费软件与开源软件概念并不相同,免费软件通常以二进制文件形式发布。用户虽然可以免费使用,但无权对软件进行任何修改。开源软件是将软件以源代码形式发布,并遵循GPL等开源协议,用户不仅能使用,而且还可对软件进行改进。

2)Linux系统是开源软件,所以基于Linux系统开发必须遵循开源规则。这种开发方式最大的优势是,开发者能最大限度的利用现有代码,从而避免重复工作

6. Linux内核与版本

1)内核是操作系统的心脏,系统其它部分必须依靠内核这部分软件提供的服务,例如管理硬件设备、分配系统资源等。内核由中断服务程序、调度程序、内存管理程序、网络和进程间通信等系统程序共同组成。Linux内核是提供保护机制的最前端系统,它独立于普通应用程序,一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间。

2)内核负责管理计算机系统的硬件设备,为硬件设备提供驱动。对于操作系统上层的应用程序来说,内核是抽象的硬件,这些应用程序可通过对内核的系统调用访问硬件。这种方式简化了应用程序开发的难度,同时在一定程度上起到了保护硬件的作用。Linux内核支持几乎所有的计算机系统结构,并将多种系统结构抽象为同样的逻辑结构。

7.Linux内核结构

 Linux程序设计——Linux基础_第2张图片

8.Android系统结构

Linux程序设计——Linux基础_第3张图片

9.Linux系统架构和目录

 Linux程序设计——Linux基础_第4张图片

10. Linux基本操作

Linux系统有两种操作方法,一种是使用鼠标键盘等输入设备直接在图形界面XWindow上操作,另一种是通过输入文本命令方式在控制台上操作。各种Linux发行版的操作遵循同样的原则,所以操作方法非常相似。

11. Shell、控制台、终端

1)Shell是一种具备特殊功能的程序,也是介于用户和Linux内核间的一个接口。Linux系统拥有多种shell,发行版中常用的是名为bashshell。这种shell不但能执行简单的命令,还能将多个命令、条件和参数编写为程序执行。使用Linux系统进行程序开发通常需要掌握一些常用shell命令。

2)Linux系统是一个多用户多任务的分时操作系统。任何一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统,该账号的名称就是登录名。Linux系统通常有多个控制台,进入控制台后可使用shell程序操作计算机。

3)终端是XWindow里访问shell程序的接口。

12. 文件和目录

文件系统是在物理存储设备中存放数据的索引格式,文件和目录是数据的逻辑划分形式。Linux系统的文件类型概括起来可分为5种:普通文件、目录文件、链接文件、设备文件和管道文件。

1) 普通文件就是平时所见的大多数文件,它的特点是不包含文件系统的结构信息。

2) 目录文件是用于存放文件路径及相关信息的文件,是文件系统的基本节点。目录文件使文件系统呈现出树形结构。在Linux系统中,通常所说的目录就是指目录文件。

3) 链接文件是指向另一个真实文件的链接,是一种特殊的文件结构。

4) 设备文件是保存计算机设备信息和接口的文件,这是Linux操作系统的独特形式,计算机的所有设备都以文件的形式提供给应用程序使用。

5) 管道文件是用于应用程序之间进行通信的文件。

13. 文件系统

文件系统是磁盘及其逻辑分区的目录结构,一个磁盘设备可包含一个或多个文件系统,但每个文件系统必须占据硬盘中单独的一个分区。按照Linux系统对分区的命名规则,ATA接口的硬盘以字母组合hd开始,SCSISATA接口硬盘以字母组合sd开始。第3个字母是硬盘的序号,a为第1块硬盘,b为第2块硬盘,依次类推。最后一位数字是分区的序号。

 Linux程序设计——Linux基础_第5张图片

14. 文件名及路径名

1) Linux系统的文件名由字符和数字组成,其中字符可以是大小写英文字母或其他Unicode编码的文字和符号。但不能包括“*”、“?”和“[]”文件名通配符。

2) Linux系统的文件名也有类似其他操作系统的扩展名,在文件名最后一个“.”后的内容即是扩展名。例如,C语言源文件的扩展名是c,头文件的扩展名是h

3) Linux文件系统采用带链接的树形目录结构,即只有一个根目录。根目录可含有下级子目录或文件;子目录中又可含有更下级的子目录或者文件。这样一层一层地延伸下去,构成一棵倒置的树,如图所示。

4) 路径名可分为绝对路径和相对路径,绝对路径是从根目录到目标目录或文件所经过的所有节点名称,如文件m1.c的绝对路径是“/home/shizhe/workspace/m1.c”。相对路径是某一个目录到目标目录或文件所经过的所有节点名称,如文件m1.c的相对于“/home”的相对路径是“shizhe/workspace/m1.c”。

15. 工作目录

1) 控制台或终端在某个时刻总是对应着一个目录,该目录即工作目录。在控制台或终端执行命令或程序,对某个没有指定路径的文件或子目录进行操作,控制台或终端会自动在文件或子目录前加入当前工作目录的路径。例如,执行ls命令会将工作目录下的文件和子目录名称显示出来,除非在ls命令后输入某一具体的路径名称。

2) 工作目录可用.”表示,工作目录上层父目录用“..”表示。cd命令用于改变工作目录。

3) 控制台或终端会将~”符号替换成用户起始目录的绝对路径,该符号也被认为是环境变量,Linux系统会自动维护“~”符号的值。

16. 文件描述符

1) 文件描述符是一个小的非负整数,内核用以标识某一特定进程正 在存访的文件。当内核打开一个现存文件或创建一个新文件时, 它会返回一个文件描述符给该进程,这样该进程就能通过内核访 问目标文件。

2) 按惯例,每当运行一个新程序时,所有的shell都为其打开3个文件 描述符:标准输入(0)、标准输出(1)以及标准错误(2)。如果像简 单命令ls那样没有做什么特殊处理,则这3个描述符都连向终端。

17. Linux黑洞

1)  /dev/null 是一个虚设的设备,俗称“Linux黑洞”,任 何对/dev/null的写入都会成功,但数据会消 失得无影无踪,没有任何反馈。所以经常把 不想在屏幕显示的信息全部送到/dev/null中, 在shell脚本中用得比较多。 如:ls l > /dev/null

2) 还可以用来清空文件的内容:cat /dev/null > FileName

18.常用命令——用户管理

1.新建用户(useradd)

useraddUserName

新建用户后,会在/home目录下建立一个以UserName命名的文件夹,用户每次登录时自动定位到该文件夹下。

2. 为用户添加密码(password)

passwdUserName

3. 删除用户(userdelete)

userdelUserName

使用–p选项可以删除用户目录下的文件及与用户相关联的其他文件。

4. 新建组群(groupadd)

groupaddGroupName

5. 删除组群(groupdelete)

groupdelGroupName

6.用户身份

whoami

7.查看登录用户

who[选项]

-a显示所有用户的所有信息

-H显示列标题

8.查看用户的操作

w某一时刻用户的行为

9.用户间切换(substituteuser)

suUserName如:susuroot切换为根用户

suHaison切换为名为Haison的用户

19.常用命令——目录管理

1.创建目录(makedirectory)

mkdirDirecName

2.删除目录(removedirectory)

rmdirDirecName

3.显示工作目录(printworkingdirectory)

pwd

4.显示目录内容(list)

ls[选项]

选项:-a显示当前目录下的所有文件,包括以.开头的文件。

-l以长列表的形式显示文件列表,如:

-rw-r--r--1haisonhaison18Nov210:10haison.c

5.改变当前目录(changedirectory)

cdcd~进入登录时的主目录

cd/进入根目录

cd..进入上一级目录

cd/home进入系统的home目录

cdhome进入当前目录下的home目录

6.目录重命名(move)

mvSourceDirecNameTargetDirecName

7.目录拷贝(copy)

cpSourceDirecTargetDirec

-r拷贝目录下的文件、子目录及子目录下的文件

20.常用命令——文件管理

1.新建文件

>FileNametouchFileNameviFileName

2.删除文件(removefile)

rm[选项]FileName

选项:-i系统提示是否真要删除该文件

-f删除文件之前不提示任何确认信息

-r递归删除目录下所有子目录的内容

3.文件拷贝(copy)

cpSourceFileTargetFile

4.文件链接(link)

lnsSourceFileTargetFile

创建文件链接,lsl查看,会看到TargetFile->SourceFile

5.显示文件内容

moreFileName一次一屏的显示文件内容,空格或回车显示下一屏

lessFileName一次一屏的显示文件内容,空格或回车显示下一屏

catFileName一次全部显示文件的内容

catfile1file2>file3file1file2的内容写到file3,覆盖file3原内容

catfile1>>file2file1的内容追加到file2,file2原内容不变

headFileName只显示文件的前10

headnFileName显示文件的前n

tailFileName只显示文件的后10

tailnFileName显示文件的后n

nlFileName以编号的形式一次全部显示文件的内容,忽略空格

 

6.文件移动/重命名(move)

mvSourceFileTargetFile将一个或多个文件移动到另外一个目录下,或者将一个文件重命名为另一个文件。

7.文件查找(find)

find[路径][选项]

如:find/-name“Linux”-print

8.文件内容查找(grep)

如:grep“main”haison.c

9.文件类型

命令ls–l以长列表形式显示文件的类型等,:-rw-r--r--

 Linux程序设计——Linux基础_第6张图片

21.常用命令——权限管理

 Linux程序设计——Linux基础_第7张图片

 

 Linux程序设计——Linux基础_第8张图片

 Linux程序设计——Linux基础_第9张图片

-rw-r--r--1haisonhaison18Nov210:10haison.c

改变文件/目录的属主(changeowner)

chownOwnerFileName/DirecName

如:chownDavehaison.c

改变文件/目录的属组(changegroup)

chgrpGroupFileName/DirecName

如:chgrpDavehaison.c

改变文件/目录的属主和属组

chownowner:groupFileName/DirecName

如:chownDave:Davehaison.c

你可能感兴趣的:(Linux程序设计——Linux基础)