初探Linux系统

前言

linux是一个很强大开源的系统,笔者作为一个嵌入式Linux学习者,同样被Linux的开源文化深深的吸引着。对于大部分职业可能Windows已经够好了,但是在程序员眼里,Linux开源的文化才是归属地。对对对,就是喜欢内核里面有着各种各样骚操作的代码,喜欢着基于Linux内核的各种各样的开源软件。而被Linux深深吸引的我,为了系统的学习Linux系统,所以我和大家一起学习这个牛逼的不行的系统,有什么意见或建议可以私信我,也可以留言评论,大家一起学习,一起进步。

学习的框架

基本shell指令
管理Linux系统
Makefile
简单的shell脚本
  1. 基本shell指令和脚本语言可以参考帖子博客,也可以跟着我一起学习,没有推荐的书籍,但笔者这里有一本《Linux命令行与shell脚本编程大全(第3版)》和《鸟哥的Linux私房菜-基础篇(第四版)》网络评价不错,我会上传到我的博客,有需要的可以去下载。
  2. Makefile的学习可以参考《GNU Make》和《跟我一起写Makefile》评价不错,我也上传到我的博客中。

认识Linux系统

       与Windows不同,Windows是可视化窗口界面,安装软件,存放文件,卸载什么的,都是鼠标点点,硬盘分区更是把各种文件归了类,非常清晰明了。在Linux中,有一句话,基本上每个人都会说,那就是一切皆文件,对于熟悉Linux的人来说,这些都是很清晰的,但是对于不熟悉的人来说,却会说“很麻烦,不好用”之类的话。其实,Linux和Windows一样清晰,存放文件是以文件树的形式体现的,而操作是以终端窗口体现的。

文件树流图

/
bin
sbin
etc
rc passwd fdprm...
dev
makedev.local console hd sd fd...
proc
var
lib local lock log...
tmp
usr
bin man info include...
home
boot
lib
module...
opt
mnt
media
srv

文件树结构释义:

根文件目录 主文件目录 子文件目录 解释
/ bin 系统文件和目录 包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后).这些命令都是二进制文件的可执行程序,多是系统中重要的系统文件
sbin 系统文件和目录 系统管理命令,存放管理员需要的程序和一些重要的二进制文件,一般不给普通用户使用
etc 系统文件和目录 系统管理和配置文件,包含了用户信息,系统初始化文件
/etc/rc或/etc/rc.d或/etc/rc?.d 启动、或改变运行级时运行的脚本或脚本的目录
/etc/passwd 用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其他信息
/etc/fdprm 软盘参数表,用以说明不同的软盘格式.可用setfdprm 进行设置
/etc/fstab 指定启动时需要自动安装的文件系统列表.也包括用swapon -a启用的swap区的信息
/etc/group 组信息,包括组的各种数据
/etc/inittab 初始化的配置文件
/etc/issue 包括用户在登录提示符前的输出信息,通常包括系统的一段说明或欢迎信息,具体内容由系统管理员确定
/etc/magic “file”的配置文件,包含不同文件的格式说明,“file”基于它猜测文件类型
/etc/motd motd是message of the day的缩写,用户成功登录后自动输出,内容由系统管理员确定,常用于通告信息,如计划关机时间的警告等
/etc/mtab 当前安装的文件系统列表,由脚本初始化,并由 mount 命令自动更新,当需要一个当前安装的文件系统的列表时使用(例如 df 命令)
/etc/shadow 在安装了影子(shadow)口令软件的系统上的影子口令文件,影子口令文件将/etc/passwd文件中的加密口令移动到/etc/shadow中,而后者只对超级用户(root)可读,这使破译口令更难,以此增加系统的安全性
/etc/login.defs login命令的配置文件
/etc/termcap 终端性能数据库,说明不同的终端用什么“转义序列”控制,写程序时不直接输出转义序列(这样只能工作于特定品牌得终端),而是从/etc/termcap中查找要做的工作的正确序列。这样,多数的程序可以在多数的终端上运行
/etc/profile、/etc/csh.login、/etc/csh.cshrc 登录或启动时bourne或C shell执行的文件,这允许系统管理员为所有用户建立全局缺省环境
/etc/printcap 针对打印机,类似termcap,但语法不同
/etc/securetty 确认安全终端,即哪个终端允许超级用户(root)登录,一般只列出虚拟控制台,这样就不可能(至少很困难)通过调制解调器或网络闯入系统并获得超级用户权限
/etc/shells 列出可以使用的shell.chsh命令允许用户在本文件指定范围内改变登录的shell 提供一台机器ftp服务的服务进程ftpd检查用户shell是否列在/etc/shells文件中,如果不是,将不允许该用户登录
dev 设备文件 设备特殊文件,即设备驱动程序生成的设备节点,用户可以通过访问外部设备,设备文件用特殊的约定命名,这在设备列表中有说明,设备文件在安装时有系统产生,以后可以用/dev/makedev/描述
/dev/makedev.local 是系统管理员为本地设备文件(或连接)写的描述文稿(即一些非标准设备驱动,不是标准makedev的一部分)
/dev/console 系统控制台,直接和系统连接的监视器也就是电脑屏幕
/dev/hd IDE硬盘驱动程序接口,如/dev/hd是指第一个硬盘,hda1是/dev/hda1的第一个分区
/dev/sd SCSI磁盘驱动程序接口,如有系统有SCSI硬盘,就不会访问/dev/hda而会访问/dev/sda
/dev/fd 软盘设备驱动程序
/dev/st SCSI磁盘驱动器驱动程序
/dev/tty 虚拟控制台支持,tty1就是第一个虚拟控制台
/dev/pty 远程登录伪终端支持,进行Telnet登录时就要用到
/dev/ttys 计算机串口,对于DOS来说就是COM口
/dev/cua 串口,与调制解调器一起使用的设备
/dev/null 黑洞,所有写入该设备的信息都将消失,例如:当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到/dev/null中即可。
proc 系统文件或目录 是系统内存的映射,可直接访问这个目录来获取系统信息,这些信息是由系统自己产生,该目录的内容不再硬盘上而在内存上
var 系统文件或目录 包含系统一般运行时要改变的数据,通常这些数据所在的目录的大小是要经常变化的或扩充的,每个系统是特定的,不通过网络和其它计算机共享,系统产生的不可自动销毁的缓存文件、日志记录。(系统和程序运行后产生的数据、不对外提供服务、只能用户手动清理)(包括mail、数据库文件、日志文件)
/var/catman 包括了格式化过的帮助( man )页.帮助页的源文件一般存在/usr/man/man中;有些man页可能有预格式化的版本,存在/usr/man/cat中,而其他的man页在第一次看时都需要格式化,格式化完的版本存在/var/man中,这样其他人再看相同的页时就无须再格式化了,/var/catman 经常被清除,就像清除临时目录一样
/var/lib 存放系统正常运行时要改变的文件
/var/local 存放系统正常运行时要改变的文件
/var/lock 锁定文件.许多程序遵循在/var/lock中产生一个锁定文件的约定,以用来支持他们正在使用某个特定的设备或文件,其他程序注意到这个锁定文件时,就不会再使用这个设备或文件
/var/log 各种程序的日志( log )文件,尤其是login (/var/log/wtmp log纪录所有到系统的登录和注销)和syslog (/var/log/messages 纪录存储所有核心和系统程序信息),/var/log 里的文件经常不确定地增长,应该定期清除
/var/run 保存在下一次系统引导前有效的关于系统的信息文件,例如:/var/run/utmp 包含当前登录的用户的信息
/var/spool 放置“假脱机( spool )”程序的目录,如mail、news、打印队列和其他队列工作的目录
tmp 公用的临时文件存储点,保存在使用完毕后可随时销毁的缓存文件。(有可能是由系统或程序产生、也有可能是用户主动放入的临时数据、系统会自动清理)
usr 系统或个人 所有的程序安装在usr目录里,一般为系统发行时自带相当于Windows下的C:\Program files
/usr/bin 集中了几乎所有用户命令,是系统的软件库,另有些命令在/bin 或/usr/local/bin中
/usr/sbin 包括了根文件系统不必要的系统管理命令,例如多数服务程序
/usr/man、/ usr/info、/usr/doc 这些目录包含所有手册页、gnu信息文档和各种其他文档文件.每个联机手册的“节”都有两个子目录,例如: / usr/man/man1中包含联机手册第一节的源码(没有格式化的原始文件),/usr/man/cat1包含第一节已格式化的内容.l联机手册分为以下九节:内部命令、系统调用、库函数、设备、文件格式、游戏、宏软件包、系统管理和核心程序
/usr/include 包含了c语言的头文件,这些文件多以.h结尾,用来描述c语言程序中用到的数据结构、子过程和常量,为了保持一致性,这实际上应该放在/usr/lib下,但习惯上一直沿用了这个名字
/usr/lib 包含了程序或子系统的不变的数据文件,包括一些site-wide配置文件,名字lib来源于库(library);编程的原始库也存在/usr/lib里,当编译程序时,程序便会和其中的库进行连接,也有许多程序把配置文件存入其中
/usr/local 本地安装的软件和其他文件放在这里,这与/usr类似,用户可能会在这发现一些比较大的软件包,如tex、emacs等!
home 用户 用户自己的目录,可以在此存储自己文件,资料等!
boot 系统文件或目录 引导加载文件以及映像文件等
lib 程序库文件 根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件,这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间
/lib/modules 目录包含系统核心,可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动).
opt 三方软件安装文件夹,相当于Windows下的除C盘外的其它盘
mnt 用户临时挂载点
media 有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等
srv 主要用来存储本机或本服务器提供的服务或数据(用户主动生产的数据、对外提供服务)

       由上面可以知道,红字部分都是重要文件夹,有时候会根据自己的需要修改一些文件,根文件夹下的home文件夹使我们自己可以配置的,三方软件一般要安装到opt文件夹里面。我们可以在home里面新建DEFGH当做我们的盘作为区分,三方软件安装在opt文件夹下,可以把运行脚本建立软连接到home的一个文件夹内,相当于Windows下的快捷方式。这样一看其实结构也是很清晰的。

电子书链接

可以加入群聊:667039215找群主获取
Linux命令行与shell脚本编程大全第三版
鸟哥的Linux私房菜-基础篇》第四版
跟我一起写Makefile 高清无码文档
GNU make中文手册

发布了9 篇原创文章 · 获赞 16 · 访问量 5982

猜你喜欢

转载自blog.csdn.net/qq_34390075/article/details/91354924