90年代,那会我还是一枚初中生,对新事物的热爱,仿佛是流淌在男孩子血液里的;那时候就开始接触计算机,2018年2月,正式开始听马哥Linux的课程,却发现曾经耳熟能详的计算机基础知识都已经让丢弃在记忆的灰尘里了,在此写下这篇博客,为了加深自己的理解跟记忆;下面,我先简单说说我理解中的计算机:
1.计算机的构成与之功能
计算机(computer),也称电脑,是有运算器、控制器、存储器、输入设备、输出设备五大硬件部分组成;
中央处理器,也称CPU(Central Processing Unit),由运算器跟控制器组成;
其中:控制器为计算机的指挥系统,由控制器来获取、分析指令完成复杂任务;(理解力、分析力)
运算器来完成其中算术及逻辑运算;即对数据进行加工;(心算能力)
存储器,又称内存储器,简称内存;内存为易失性存储器,为计算机运行时存储数据。(记忆力)
输入、输出设备合称I/O设备,输入设备如键盘(Input),用于下达指令;(眼睛、耳朵)输出设备如显示器(Output),用于数据加工完的数据。(嘴巴)
以上,我将计算机的各个部分形象的比做人体的某些部位或者能力,不一定准确,但比较形象,容易理解与记忆。
都说一入IT深似海,此话真的很有道理;这次,因为工作原因,接触到了Linux,不得不说,那一次次遇见问题时的抓狂,和解决问题的喜悦,让我深深的想系统的学习并了解Linux。
2、Linux简史及发行版
当unix商业化,不将源码提供给学术研究,真正惹恼了很多人,首先理查·斯托曼在麻省理工学院发起,要创建一套完全自由的操作系统;他发起《GNU宣言》,其理由之一就是“要重现当年软件界合作互助的团结精神”,这其实就是软件界的共产主义运动,称为“GNU计划”;
GNU是“GNU is not Unix”的递归缩写;它开发了大批的自由软件;为保证GNU软件可以自由的“使用、复制、修改和发布”;所有GNU软件都包含一份在禁止其他人添加任何限制的情况下,授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL协议); 但在操作系统上,却一直使用着Unix系统,这就使得GNU迫切需要一款操作系统;
Minix系统,一个迷你版的Unix,是安德鲁·斯图尔特·塔能鲍姆教授在Unix商业化以后,为了教学开发的一款操作系统;此系统给了他的学生林纳斯·托瓦兹灵感,他开始设计并开发了一款操作系统内核,后被起名为:Linux。
因GNU GPL协议的源代码可以自由使用,使得林纳斯决定使用GPL协议来代替他原先使用的协议。这大大加速了Linux的流行。
Linux发行版
这里先简单解释一下操作系统的狭义跟广义之分:狭义的操作系统:Kernel(内核);广义的操作系统:Kernel+Application(应用);
GNU/Linux里,Linux是kernel,GNU提供了各种外围软件;但GNU提供的软件是源代码格式的,在Linux上安装,需要编译成二进制格式(因计算机只能识别二进制格式),而大多数普通用户是没有自行编译的能力的,所以就有些商业公司或者社区通过自己的理解方式将源码编译成二进制格式,对外发布;这就发行版;目前Linux现在三大主流发行版:Debian、RedHat、S.U.S.E。
Debian是目前唯一没有商业公司支持,以社区的形式出现,因在里面安装软件,需要自行编译,难度较大,比较适合高水平用户;基于Debian的著名二次发行版,如Ubantu;
Redhat是美国一家以开发,贩售Linux包并提供技术服务的商业公司;其著名的产品有Red Hat Enterprise Linux,简称RHEL;流行于北美跟中国;著名的二次发行版有Fedora、CentOS;
S.U.S.E是Slackware的二次发行版,流行于欧洲;S.U.S.E的著名二次发行版有OpenSUSE;
3、Linux的哲学思想
①:一切皆文件、一切皆文件、一切皆文件(重要的事情说三遍);Linux把几乎所有资源统统抽象为文件形式:包括硬件设备、通信接口等;(这里,譬如设备文件存储在/dev目录下)
②:由众多功能单一的程序组成;一个程序只做一件事,并将其做好;组合小程序完成复杂任务;(如,用管道的方式,将命令1的输出结果传递给命令2当作命令的输入条件)
③:尽量避免跟用户交互;目标:易于以编程的方式实现自动化任务;(如shell脚本编程,设定好计划任务,可以做到譬如自动巡检、自动备份等功能)
④:使用文本文件保存配置信息;
4、Linux命令介绍之一:
①:命令使用格式 命令 [选项][参数]
例:ls -lh /var/log
命令 [选项][参数],其中[]里,是可选项;以上面的例子说明:
命令ls:列出目录中的内容
[选项]-lh:-是固定格式,下面具体解释;l是显示文件的详细属性信息;h是对文件大小进行单位换算(注:换算后可能会失去精确)
[参数]/var/log:路径/var/log
命令的具体意思:列出/var/log目录下具体目录及文件的详细属性信息;
下面解释一下选项的两种表现形式:
短选项: -C,例如上面的-l, -h
注意:有些命令的选项没有-:
如果一个命令里同时使用多个短选项,多数可以合并:-l -h = -lh
长选项:–word,例如:–help,–stdin
注意:长选项不能合并;
有些选项可以带参数,此称为选项参数;如:tail -n 20 /etc/passwd,这里的20就是 选项参数;
②:命令介绍
命令ifconfig:查看当前的网络接口 ip,类似于windows里的ipconfig命令;![](http://i2.51cto.com/images/blog/201802/26/fcd91339815c94c4081557ac031df45d.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
上图中,红框里就是当前的ip;
命令echo:回显命令;简单的说,就是输入命令echo “hello”,会把hello打印在屏幕上;第一次接触 到此命令的时候,心中一直有一个疑问,这个命令到底有啥用?其实,这个命令是有很大的作用的;
如:显示变量值:
[root@magedu ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
上面的就是$PATH变量的具体值;
编辑文件;如需要在某文件中追加一行,但又不想使用编辑器进行编辑,这个时候echo命令配合上输出重定向,就有了大用场;如:我想把ip与主机名添加到hosts文件中
echo “10.10.10.150 `hostname`” >> /etc/hosts
结果见下图:
![](http://i2.51cto.com/images/blog/201802/26/f71d7103fb2eb65c0a0b214296002d72.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
命令tty:显示连接标准输入的终端的文件名;
串行终端:ttyS
伪终端:pty
命令使用方法
[root@magedu ~]# tty
/dev/pts/1
命令startx:启动图形界面(GUI)
命令exprot:用于设置或显示环境变量
exprot [-fnp][变量名称]=[变量设置值]
-f 代表【变量名称】中为函数名称
-n 删除指定的变量,变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有shell赋予程序的环境变量
命令pwd:显示出当前活动目录的名称
pwd [OPTION]
命令history:命令历史
history [OPTION]
history #:显示最近的#条命令;
-c:清空命令历史;
-d offset:删除指定命令历史;
-r: 从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中;
技巧:!#:再一次执行历史列表中的第#条命令
!!:再一次执行上一条命令(同向上箭头键)
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;(非常有用)
注意:命令的重复执行时有时候需要依赖于幂等性;
命令:shutdown:关机,安全关机(只有管理员可以使用)
shutdown [OPTION] [TIME]
OPTION:
-h:halt(关机)
-r:reboot(重启)
-c:cancel(取消)
TIME:
now(立即执行)
hh:mm(几点几分执行)
+m(几分钟后执行)
命令poweroff:关机、切断电源(只有管理员可以使用)
命令reboot:重启(只有管理员可以使用)
命令date:查询或设定日期
date [OPTION] [+FORMAT]
FORMAT:格式符
~]# date +%F YYYY-MM-DD
+%T hh:mm:ss
+%Y YYYY
+%m MM
+%d DD
+%H hh
+%M mm
+%S ss
+%s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;
-s:根据STRING设定时间,[MMDDhhmm[[CC]YY][.ss]]
命令hwclock, clock: 硬件时钟
显示或设定硬件时钟
-s, –hctosys: 以硬件为准,把系统时间调整为与硬件时间相同;
-w, –systohc: 以系统为准,把硬件时间调整为与系统时间相同;
5、获取帮助
Linux命令分为内建命令跟外部命令两种:
内建命令:shell自带的命令
外部命令:不包含在shell中,在需要使用时才会被调入内存
命令type:用来查询一个命令是内建命令还是外部命令
用法:type COMMAND
内建命令获取帮助的方式:help COMMAND
外部命令获取帮助的方式①:COMMAND –help(命令自带的简要帮助)
②:man COMMAND(manual手册)
man章节划分:①:使用者在shell中可以操作的指令或可执行档
②:系統调用
③:一些常用的函数(function)与函数库(library),大部分是C的函数库(libc)
④:装置档案的说明,通常在/dev下的档案
⑤:设定档或者是某些档案的格式
⑥:游戏使用帮助
⑦:杂项
⑧:系統管理員可用的管理指令
⑨:跟kernel有关的文件
6、Linux发行版的基础目录名称及功用
目录名 功用
/bin 所有用户可用的基本命令程序文件;
/sbin 共系统管理使用的工具程序;
/boot 引导加载器必须用到的各静态文件:kernel,initramfs(initrd),grub等;
/dev 存储设备文件或特殊文件;
/etc 系统程序的配置文件,只能为静态;
/home 普通用户的家目录;/home/USERNAME;
/root 管理员家目录;
/lib 库文件;
/lib64 64位系统特有的共享库;
/media 便携式设备挂载点;
/mnt 其它文件系统临时挂载点;
/opt 附加应用程序的安装位置;
/srv 当前主机为服务提供的数据;
/tmp 临时文件目录;
/usr 全局共享的只读数据路径;
/usr/local 安装本地应用或第三方程序;
/var 存储常发生变化的数据的目录;
/proc 基于内存的伪文件系统,用于存储内核及进程存储相关信息;
/sys 管理Linux设备提供一种统一模式的接口;
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91691