计算机是现代社会人类必不可少的工具,计算机知识也是未来人类不可或缺的基本生存技能。本篇博客将简要介绍计算机的基本构成,以及linux操作系统的一些入门知识。
1.计算机的组成及公用
冯.诺依曼教授提出现代计算机由5大系统构成:控制器、运算器、器、输入设备和输出设备。经过近百年的发展,虽然各类计算机层出不穷,但大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。
- 控制器:由其控制计算机完成各种计算、存储、显示等功能。
- 运算器:根据控制器的指令,从存储器读取计算程序和数据,完成计算,并将结果送给存储器存储或输出设备
- 存储器:用于存储计算机运行的各类指令和数据,包括高速寄存器、内存等。
- 输入、输出设备:它们是计算机与人类或其他设备的交互接口,通过输入输出设备,可将程序和数据传给计算机,或将计算机内存储的数据或计算结果传递给其他设备。
2.linux发行版相关知识
Linux是一个开源的操作系统内核。所谓开源就是指任何人在遵守一定的规则下,可以对其进行修改和开发。所谓操作系统内核,是指操作系统中的核心部分,提供了操作系统的基本功能。其和发行版之间的关系可以这样理解:内核相当于一个毛坯房子,而各类发行版可以认为是在毛坯房子上装修好的房子。毛坯房子只有一种,但不同人对房子的功能和审美有不同的需求,也就导致了有各种发行版的存在。
Linux目前主要有三大系列的发行版本:
- Debian。Debian诞生与linux发布后的1993年,基于Debian的发行版目前已经发展成为一个庞大的家族。著名的发行版是Ubuntu。自从国内强制规定计算机出厂时必须带操作系统,好多厂商就自带Ubuntu这个免费的系统。还有一个著名的发行版Kali linux,基于Blacktrack开发,它是一个专业的渗透测试和安全审计工具。被网友广泛提及的应用就是用其破解Wifi密码,进行蹭网。还有一个国内的发行版,深度(Deepin)。其前身 Hiweed Linux 是中国第一个基于 Debian的本地化衍生版,它包含有许多自行开发的特色软件,如:深度软件中心、深度截图、深度音乐播放器和深度影音等,在软件中心中,也有很多符合国人使用习惯的软件:wps、腾讯通、qt开发环境、pdf工具等,如果用于日常办公,基本可以满足需求,上手使用也是比较容易的。
- RedHat。国人称其为“红帽”。红帽是一家商业公司开发的linux发行版,主要的发行版是RHEL(红帽企业版linux,服务器版),以及fedora(桌面版)。还有一个基于RHEL编译的免费版本:Centos(community enterprise operate system社区企业版操作系统),这也是众多企业在生产环境中使用的版本,也是运维工程师经常遇到的版本之一。
- Slackware。相比与Debian和RedHat而言,Slackware就有些薄弱了,其自身发布后,并没有多大的发展,反而是基于Slackware的二次发行版S.u.S.E发展的枝繁叶茂,这其中就包括Opensuse等。
- 其它。主要有Gentoo,Arch等。还有一个分支,就是现在广泛应用与移动终端的Android,大量应用于手机、平板电脑、智能电视、电视盒等设备。
具体的Linux发行版本可参考linux Distribution Timeline(https://en.wikipedia.org/wiki/File:Linux_Distribution_Timeline.svg)
3.linux的哲学思想
Linux的哲学思想,可以认为是linux设计开发的基本遵循和基本要求,主要体现在四个方面:
- 一切皆文件。起初听说一切皆文件这句话,感觉有些蒙。数据在计算机上本来就是以文件的形式存在,而所谓的一切又指的什么?老师讲目录也是文件,也勉强能理解,区别于windows的文件夹,而其将硬件也抽象为文件,确实在一开始难以理解。但在应用中,当你需要使用光盘或者新增加硬盘时,就能对一切皆文件有深一层的认识。在windows中,使用光驱,直接双击就可以,而linux中,光驱需要一个设备文件,注意,就是文件,然后将此设备文件挂载到系统的某个目录下,才可以访问。这里的设备文件,就是将硬件光驱抽象为一个文件,访问硬件,就是要通过这个设备文件访问。
- 功能单一的程序组合完成复杂功能。自己感觉这个很像目前的社会发展和社会分工。一个人如果会做许多工作,那么这个人很可能在这些工作中都不深入。相反,社会分工越来越细,一个人只需要把一件事做的极致就可以了。对应到计算机上,单一功能的程序可能能完成的任务很少,但它高效、稳定、可靠。这样对于要完成复杂功能,一是可以重复利用很多已经开发好的功能单一的程序,减少开发难度;二是对于复杂程序而言,这种搭积木式的组合,也可使代码高效。
- 尽量避免和用户交互。可以理解为机器能做的,就不需要人为干预,如果需要关注,系统也可以根据用户指定,输出交互信息。
- 使用文本文件保存程序配置信息。我们知道,在windows上配置软件,基本都是通过点击选择等操作完成。在linux上,所以的程序配置都是通过文本文件来配置和保存,其优点是对于使用者,文本文件的查看和修改是相当迅速便捷的,节省了使用者的时间。
当然,linux还有很多哲学思想,体现在方方面面中,例如,简洁,从命令的名称中可以看出,只要能让使用者见名知意,能多简单就多简单,绝不多写一个字母。如ls,是list之意,pwd是print work directory之意,很简洁。对于初学者而言,可能会有些困扰,但久了,就能感觉到便捷。
4.一些基础命令
命令是CLI的核心,相对于shell而言,有内部命令(内嵌命令)和外部命令之分。内部命令,是指shell内部自带的命令,外部命令,就是shell外部的程序提供的命令。一个命令主要由三部分组成:命令名、选项、参数。
- 命令名COMMAND:用于区别各种命令,向操作系统指明了需要完成的动作。
- 选项OPTION:用于修正命令的动作的,一般而言,命令都有默认动作,而选项就是用于修正命令默认动作的,比如,一个命令默认完成显示功能,而如果要更改显示的具体内容和格式,就需要通过选项来完成。选项分为长选项和短选项,长选项顾名思义,就是“长”,通过 — ,连接一个单词或者单词组合来表示;短选项,就是“短”,方便输入,看起来简洁,通过 – ,连接一个字母来表示,短选项可以组合使用,即通过 – ,连接几个短选项字母。
- 参数ARGUMENT:用于指明命令的作用对象的,也就是说这个命令作用于谁。可以这样理解,命令名相当于动词,而选项相当于副词或形容词,参数相当于名词。如“买便宜的书”,买是动词,相当于命令名,指明动作是买,便宜的是形容词,修正命令名买,书,说明了买的对象是书,而不是其他物品。
如 ls –l /etc这条命令,ls是命令名,指明的动作是显示,-l,指明了显示时需要使用长格式来显示,而目录/etc则指明了需要显示的是/etc目录,而不是其他。
注意: 有些命令的选项也可以带参数,称为选项的参数,用于说明选项的作用对象
下面介绍几个常见的linux命令
- ifconfig 用于显示和配置网络接口(网卡),用于替代ip addr 和ip link 命令
- 显示网络
ifconfig 不带任何选项和参数,显示系统所有网络接口相关信息
ifconfig INTERFACE_NAME 显示指定网络接口的信息
- 配置网络
ifconfig INTERFACE_NAME [aftype] options | address …
ifconfig INTERFACE_NAME up | down ,开启或关闭一个网络接口,向交换机接口上的 no shutdown和shutdown一样,为管理员在软件层面上关闭接口。
ifconfig INTERFACE_NAME add 为接口配置一个ip地址,如:ifconfig eth0 add 192.168.31.5
ifconfig INTERFACE_NAME del 删除接口ip地址
ifconfig INTERFACE_NAME netmask add 为指定接口配置掩码
ifconfig还包括设置接口的mtu值、6to4隧道、多播、网卡类型等相关选项。
- echo echo的中文意思是回音,这里主要取“回”之意,将echo的内容,根据选项,进行显示。
主要可使用的参数有 –n –e
-n 指显示完成后,不自动换行
-e 指使转意字符生效(默认转意字符不生效) 经常使用的转意字符有以下几个:
\ 输出一个\
\b 输出一个退格键,如echo -e “he\bllo” 将输出 he又输出一个退格键,删除了字母 e,然后接着输出字母 llo,最后结果是 hllo
\v 输出一个垂直制表符
\t 输出一个水平制表符,相当于tab键
\0NNN 使用1到3位控制输出字符的格式的,例如颜色、是否加粗等。如,控制输出字体颜色为红色:echo -e “\033[31mhello\033[0m”或echo -e “\033[31mhello”
第一条命令echo -e “\033[31mhello\033[0m” 第一个\033表示字体要带颜色,设置为31m即红色,第二个\033也表示字体要带颜色,0m表示恢复为使用系统默认颜色。
第二条命令echo -e “\033[31mhello” 在hello后没有控制符,即没有恢复为系统默认颜色,所有在该shell进程中的颜色显示,都将是红色,包括命令提示符等,直到使用0m恢复为系统默认值为止。
- tty 显示该终端对应的设备文件
- startx 打开图形化用户接口,即GUI
- export shell内部命令,用于显示或设置shell变量的值
显示:export –p
设置:export NAME=value
- pwd 显示当前的工作目录
- history 显示命令历史
history命令用于显示命令历史信息,不带选项时,显示该用户家目录下的.bash_history内容以及此次登录后所运行的命令历史信息。
涉及到history命令的几个环境变量是:
HISTSIZE:默认1000,指当前shell可以保存的命令历史条数
HISTFILE:默认当前用户家目录下的.bash_history
HISTFILESIZE:默认1000,指HISTFILE所能保存的命令历史条数,超过该数量后,后续的命令被保存,最早的命令记录将被删除
HISTCONTROL:共三个值,ignoredumps与上一条命令重复的命令将不被记录在命令历史中(默认值) ignorespace 以空格开头的命令将不被记入命令历史中 ignoreboth 与上一条命令重复和以空格开头的都不被记入命令历史中
常用的选项有 –r 和 –w
-r 指重新加载用户家目录下的.bash_history内容
-w 指将当前shell的命令历史信息增加至.bash_history中
几个相关用法:
!NUM:重新执行命令历史中的第NUM条命令
!ABC:重新执行最近一次以ABC开头的命令
!!:重新执行上一条命令
上下方向键,系统将在内存空间的命令历史中,以时间为顺序,显示最新执行的命令。
8.关机、重启类命令
poweroff关闭系统 poweroff TIME [message]
reboot重启系统 reboot TIME [message]
halt 关闭系统 halt TIME [message]
shutdown 当于基本可以相当于上三条命令合集,可通过选项实现上述三个命令的功能,
shutdown –r TIME [message] 相当于 reboot TIME [message]
shutdown –H TIME [message] 相当于 halt TIME [message]
shutdown –P TIME [message] 相当于 poweroff TIME [message]
不同在于shutdown –c [message] 可取消即将执行的关机或重启操作
poweroff、reboot、halt默认都是调用shutdown来完成操作,通过-f或–force选项,系统将不调用shutdown,而是调用它自己的系统调用来完成相应的poweroff、reboot、halt操作。
9.系统时间类命令
date用于显示系统的日期和时间,不带任何参数,显示时间和日期 。可使用格式化工具控制显示的时间和日期方式。
+%T 时:分:秒
+%D 月/日/年
+%Y 年
+%m 月
+%d 日
+%H 时
+%M 分
+%S 秒
+%s 自1970年1月1日起经过的绝对秒数
以上控制方式可以组合使用,如:date “+%Y-%m-%d %H:%M:%S” 将以类似于2018-02-28 31:38:26的格式显示日期时间信息。
hwclock 显示系统硬件时间,可以认为是bios时间。一般而言,设备开机后,运行的时间越长,硬件时间和系统时间越可能不一致,调整方式如下:
hwclock -hctosys 以硬件时间为准,将系统时间调整为硬件时间(可用短选项 -s)
hwclock -systohc 以系统时间为准,将硬件时间调整为系统时间(可用短选项 -w)
个人认为使用长选项,有明确的英文含义,容易记忆。
5.linux帮助
对linux而言,一个程序,应该由四部分组成,一是程序的二进制文件,二是程序运行所依赖的库文件,三是程序的配置文件,四是程序的帮助文件。帮助信息是程序使用者学习程序使用的重要部分,一个没有帮助信息的程序,是不可以想象的。
上一节提到过,命令由内外之分,对于linux命令的帮助信息而言,不同类别命令,也有不同的获取办法(查看命令是内部或外部命令使用type [COMMAND])。
对于内部命令,使用help [COMMAND]来获取帮助信息。
对于外部命令,则有以下几种方式:一是使用man命令,即man [OPTIONS] [COMMAND];二是使用info命令,即info [OPTIONS] [COMMAND];三是一般外部命名会有一个长选项,–help(有些会有短选项 –h),使用 command_name –help 来获取帮助信息。
注意:man命令不仅仅可以显示外部命令的帮助信息,还可以显示一些诸如配置文件的使用帮助信息。
man命令是查找帮助信息的最常用的命令,下面详细介绍:man是manual的前三个字母,是手册的意思,用于显示一个命令的手册信息。这个手册是命令开发人员根据一定的规范编写的。手册信息根据不同内容分为不同的章节,一般分为8个章节,分别如下:
- 1 User Commands 用户命令帮助
- 2 System Calls 系统调用帮助
- 3 C Library Functions C库函数
- 4 Devices and Special Files 设备和特殊文件
- 5 File Formats and Conventions 文件格式
- 6 Games et. Al. 游戏
- 7 Miscellanea 杂项
- 8 System Administration tools and Daemons 系统管理工具和守护进程
还有一些其他章节帮助信息,如1p、0、1x、9等。一个manual手册,可能包含上述的某几个章节,或者一个章节,在使用时,man命令根据其默认配置文件(/etc/man.config),查找到第一个章节,并予以显示(man内部显示使用less –is命令)。如果要显示其它章节,则需要使用man # COMMAND,其中#表示章节。需要查看一个手册都有哪些章节时,使用whatis 命令。
前面提到,man命令显示手册时,内部使用的是less -is命令,所以,在查看时,可以使用一些同less命令相同的一些屏幕控制和文本查找方式:
- f 或者F 或者 SPACE(空格键),向下翻整屏
- b 或者B:backward,向上翻N行,默认整屏
- d 或者D:downward,向下翻N行,默认屏幕的一半行数,即翻半屏
- u 或者U:backward,向上翻N行,默认屏幕的一半行数,即翻半屏
- ENTER(回车键),默认向下翻1行
- 查找: 使用/keyword或者?keyword
/keyword从当前位置向下查找keyword,查找到后,屏幕以查找到的第一个keyword为第一行开始显示,使用n或N键在查找到的关键字之间跳转
?keyword从当前位置向上查找keyword,查找到后,屏幕以查找到的第一个keyword为第一行开始显示,使用n或N键在查找到的关键字之间跳转
注意:在使用n或N跳转时,n表示跳转方向和使用的/或?方向相同,即如果使用/,n则表示向下一个跳转,如果使用?,n则表示向上调转 .查找的keyword不区分大小写 ,最后使用q退出man手册。
6.linux发行版基础目录名称命名法则及功用规定
Linux由于是一个开源系统,每个人都可以对其做修改,这样就可能导致其目录五花八门、支离破碎。为解决这一可能存在的问题,Linux设计了FHS(Filesystem Hierarchy Standard 文件系统层级标准)来规范一个linux系统中所需要有的文件及其名称。
/ 根目录,即任何的linux系统必须有根目录,其他一切目录和文件都以根为起始点
/bin binary,用户的基本命令二进制文件
/boot 系统启动时boot loader需要的所有文件,但不包括配置文件
/dev 设备文件,一般不需要手动创建
/etc 配置文件
/home 默认普通用户的家目录文件
/lib 基本共享库和内核模块
/lib64 64位系统上的基本共享库和内核模块
/media 可移动设备的挂载点,如移动硬盘、U盘、CDrom等
/mnt 临时文件系统或设备的挂载点,
/opt optional用于安装一些可选的的程序
/sbin system binary 系统管理员命令的基本二进制文件(一般只读)
/srv 系统提供的数据
/tmp 临时文件
/usr universal shared resource通用共享资源,它是FHS的第二大部分。它是共享的只读数据。并且,它一般和系统平台没有关系,即不同的主机之间的/usr是可以通用的
/usr/bin 用户命令二进制文件
/usr/include C程序的头文件包含
/usr/lib 库文件
/usr/local 本地的层级机构(一般安装完系统为空)
/usr/sbin 非重要的系统命令二进制文件
/usr/share 与平台无关的共享数据
/var 存储可变数据文件。包括有锁文件、日志文件、邮件等
/proc 虚拟文件,即将与系统相关的内存中的数据抽象为文件,供用户调用和查看
/sys 虚拟文件,与/proc目录功能相同,在新的linux内核中采用。
具体参考站点:http://www.pathname.com/fhs/
以上是对linux的一些粗浅认识,肯定有很多错误和理解不到位的地方,请联系:1103212768@qq.com
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91787
评论列表(3条)
作业写的不错,继续加油。
@马哥教育:还有老师点赞啊,哈哈
@koala:加油