第一周:Linux起源和基础

一、计算机诞生与发展

计算机概念:是一种能够接受和存储信息,并按照存储在其他内部的程序对数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备

1、计算机的诞生

     1946年第一台计算机在美国诞生。为了满足计算计算弹道而专门研制而成,体型巨大,只能进行5000次/s的加法或减法运算。计算机产生的动力是人们想发明一种能进行科学计算的机器,因此称之为计算机。它一诞生,就立即成了先进生产力的代表,掀开自工业革命后的又一场新的科学技术革命。

2、计算机的发展

      经历了四个时代,电子管时代、晶体管时代、集成电路时代、大规模集成点路时代。如今计算机的最大计算次数可以达到每秒计算千万亿次。

3、计算机的组成

       计算机组成:硬件系统和软件系统组成硬件系统(冯诺依曼体系):运算器、控制器、存储器(主存储器、辅存储器)、输入设备、输出设备,    软件系统:系统软件(包括操作系统)、应用软件。 

       其中CPU充当控制器和运算器,是计算机最核心的部件之一,解释计算机指令以及处理计算机软件中的数据,CPU内嵌了指令集。

       存储器有内存和硬盘。内存是易失性的当电脑关机内存里面的数据就会丢失,而硬盘是非易失性的只要硬盘不出现损坏数据将会被一直保存。内存它是与CPU进行沟通的桥梁,数据从硬盘中提取到内存中再由CPU进行处理。读写速度缓存>内存>硬盘。内存带宽=内存总线频率*数据总线位数/8,已经发展至DDR5

       输入设备是对计算机输入信息和数据的设备,常见的设备有键盘、鼠标等

       输出设备是输出计算机信息和数据的设备,常见的设备有显示器、打印机等。

       系统软件指控制和协调计算机及外部设备,支持应用程序开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机程序;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。常见的系统软件包括:操作系统、程序语言处理系统、数据库管理系统、服务程序。大体来说操作系统是硬件和应用软件的中间层。

       应用软件为满足用户不同领域、不同问题的应用需求而提供的那部分软件。 它可以拓宽计算机系统的应用领域,放大硬件的功能。

二、Linux的起源

        1966年KEN Thompson为了玩“Star Travel”通过PDP-7上的汇编语言写出了Unics。

        1972年Dennis Ritch在B语言的基础上编写出C语言,1973年Dennis Ritch和Ken Thompson通过C语言重构Unics,重命名为Unix。

        1974年,《美国计算机通信》公开展示Unix。

        1978年,第一家包装发行商业Unix公司SCO诞生,出售商业版的C编译器。

        1980年,Microsoft公司,出售Unix的变种XENIX。

        1991年,Torvalds发布Linux。采用类UNIX操作系统,包括Linux内核以及GUN工具。

三、Linux发行版本

         一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。

Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本。常见Linux发行版:redhat、slackware、debian、Android、Gentoo

1、RedHat

        应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

2、Debian

       包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去

3、Gentoo

       Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo 被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软 件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。

4、slackware

        由Patrick Volkerding开发的GNU/Linux发行版。与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则,就是说没有任何配置系统的图形界面工具。一开始,配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和灵活性。 Slackware Linux的另一个突出的特性也符合KISS原则:Slackware没有如RPM之类的成熟的软件包管理器。Slackware的软件包都是通常的tgz(tar/gzip)格式文件再加上安装脚本。Tgz对于有经验的用户来说,比RPM更为强大,并避免了RPM之类管理器的依赖性问题。Slackware与其他的发行版本(Red Hat、Debian、Gentoo、SuSE、 Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版本。只吸收稳定版本的应用程序,并且缺少其他linux版本中那些为发行版本定制的配置工具。

5、Android

        是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。

其中各个Linux发行版都采用Linux内核,而发行版的名称和版本号由发行版的维护者决定。不同发行版之间采用Linux内核版本可能不一致,适用的环境也不相同。例如Android适用于移动设备,而其他的发行版适用于桌面。不同发行版之间预安装的程序也不一样。

四、Linux哲学思想

一切都是一个文件(包括硬件):便于管理和修改Linux上的资源

小型,单一用途的程序:执行速度快,不容易出错

链接程序,共同完成复杂的任务:因为是小型、用途单一的程序所以需要多个程序配合使用。

避免令人困惑的用户界面:Linux默认是CLI界面,比较直观

配置数据存储在文本中:便于修改配置。

五、Linux上命令的格式规范

Linux命令格式如下:command [options] [agruments] 选项和参数不是必须,某些长选项和短选项是同一命令

短选项  -c -a -l -r -h  -字母    ls -al 短格式缩写

长选项  --hlep  --word --单词

参数  命令作用的对象比如文件名,用户名

多个选项以及多参数和命令可以用空格隔开,可以通过ctrl+c或者ctrl+d  \可以使一条命令分成多行写,多条命令中间可以用;隔开依次执行。类似sleep 10;ls

1、ifconfig

外部程序,文件路径是 /usr/sbin/ifconfig   功能:查看和配置网卡。

语法: ifconfig [-v] interface [aftype] options | address            ifconfig [-v] [-a] [-s] [interface]

查看所有网卡信息等同于ifconfig -a


ifconfig interface 查看某一个网卡信息


查看网卡的粗略信息

2、echo

是内部命令也是外部命令,外部命令路径为/usr/bin/echo。  功能:输出字符

语法: echo [SHORT-OPTION]... [STRING]...         echo LONG-OPTION

用法:echo 

echo -E默认不支持\解释功能

-e‘后带上'\b'退格

-e‘后面跟上‘\a’会发出警告声

-e‘后面跟上‘\\’输出\

-e‘后面的带上‘\n’换行且光标移至行首。

-e‘后面跟上‘\t’插入tab。

-e‘后面跟上‘\v’会加上垂直制表符。

-e‘后面跟上‘\r’光标移至行首,但不换行覆盖。

-e‘后面跟上‘\c’会抑制输出后面的字符并且最后不会换新行。

3、tty

外部命令,文件路径为 /usr/bin/tty。打印连接到标准输入端的文件名

语法: tty [OPTION]

用法:tty -s  不显示任何信息,根据退出状态可以用来判断标准输入是否是终端。

tty --help 查看tty帮助

tty -version  查看tty版本


4、startx

介绍:外部命令,路径为 /usr/bin/startx。初始化X windows。

语法:startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]

用法:startx  启用x windows

startx -w 强制启用x windows


5、export

介绍:内部命令,export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

语法: export [-fn] [name[=value] ...]

用法:-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。


6、pwd

介绍:内部命令,打印当前工作目录的名称。

语法: pwd [-LP]

用法:pwd -LP 打印当前工作目录的名称。

7、history

介绍:内部命令,查看曾经输入过的命令

语法: history [-c] [-d offset] [n]    history -anrw [filename]     history -ps arg [arg...]

用法:history -c  清除本次会话历史记录

history -d 删除历史命令中指定的命令

history -a 将本次会话的历史记录添加到历史文件中

History变量:HISTCONTROL

ignoredups(默认):忽略重复命令。

ignorespace:忽略以空格开头的命令

ignoreboth:以上两者同时生效

HISTSIZE:指定shell进程中可保留历史命令的条数。永久生效可以在/etc/profile文件中修改

HISTFILE:指定历史记录保存路径

8、shutdown

介绍:外部命令,路径为 /usr/sbin/shutdown。根据不同的选项进行关机或者重启。

语法: shutdown [OPTIONS...] [TIME] [WALL...]

用法:shutdown --help 查询shutdown 帮助

shutdown -H 关闭电源以及程序

shutdonw -c 取消关机操作

shutdonw -P 关机

shutdown -r 重启

shutdown -k 只是送出信息给所有用户,但不会实际关机


9、poweroff

介绍:外部命令,路径为/usr/sbin/poweroff。停机、断电或重新启动机器,如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统,可以使用poweroff命令。

使用poweroff立即关闭系统:

选项:-n:关闭操作系统时不执行sync操作;

-w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;

-d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;

-f:强制关闭操作系统;

-i:关闭操作系统之前关闭所有的网络接口;

-h:关闭操作系统之前将系统中所有的硬件设置为备用模式


10、reboot

介绍:外部命令,路径为/usr/sbin/reboot。用于用来重新启动计算机。

语法:reboot [-n] [-w] [-d] [-f] [-i]

选项:-n : 在重开机前不做将记忆体资料写回硬盘的动作

-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里

-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)

-f : 强迫重开机,不呼叫 shutdown 这个指令

-i : 在重开机之前先把所有网络相关的装置先停止


11、hwclock

介绍:外部命令,路径为/usr/sbin/hwclock,显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

语法:hwclock [function] [option...]

选项:-w 将硬件时钟设置为当前系统时间。

-s  从硬件时钟设置系统时间。

--adjust:hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟;

--debug:显示hwclock执行时详细的信息;

--directisa:hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟;

--hctosys:将系统时钟调整为与目前的硬件时钟一致;

--set --date=<日期与时间>:设定硬件时钟;

--show:显示硬件时钟的时间与日期;

--systohc:将硬件时钟调整为与目前的系统时钟一致;

--test:仅测试程序,而不会实际更改硬件时钟;

--utc:若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作;

--version:显示版本信息。

实例:


12、date

介绍:外部命令,路径为/usr/bin/date。显示或设置系统时间与日期。

语法: date [OPTION]... [+FORMAT]          date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

选项:-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;

-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;

-u:显示GMT;--help:在线帮助;

--version:显示版本信息。

实例:

六、获取Linux命令帮助信息

首先通过type命令来判断命令为内嵌命令还是外部命令。

1.如果是内部命令可以通过help command或者man bash来查询帮助。

2.如果是外部命令可以通过whatis来查询命令帮助在man的第几章。然后在通过man命令查询外部命令帮助。同时一些外部命令可以通过 -h或--help来查询帮助。info command可以获取帮助

man的章节划分:

man1:用户命令

man2:系统调用

man3:c库调用

man4:设备文件及特殊文件

man5:配置文件格式

 man6:游戏

man7:杂项 

man8:管理工具及守护进程

man9:内核规范和接口


七、Linux发行版的基础目录名称命名法则及功用规定

/主层次 的根,也是整个文件系统层次结构的根目录

/bin存放在单用户模式可用的必要命令二进制文件,所有用户都可用,如 cat、ls、cp等等

/boot存放引导加载程序文件,例如kernels、initrd等

/dev存放必要的设备文件,例如/dev/null

/etc存放主机特定的系统级配置文件。其实这里有个关于它名字本身意义上的的争议。在贝尔实验室的UNIX实施文档的早期版本中,/etc表示是“其他(etcetera)目录”,因为从历史上看,这个目录是存放各种不属于其他目录的文件(然而,文件系统目录标准 FSH 限定 /etc 用于存放静态配置文件,这里不该存有二进制文件)。早期文档出版后,这个目录名又重新定义成不同的形式。近期的解释中包含着诸如“可编辑文本配置”或者“额外的工具箱”这样的重定义

/etc/opt存储着新增包的配置文件 /opt/.

/etc/sgml存放配置文件,比如 catalogs,用于那些处理SGML(译者注:标准通用标记语言)的软件的配置文件

/etc/X11X Window 系统11版本的的配置文件

/etc/xml配置文件,比如catalogs,用于那些处理XML(译者注:可扩展标记语言)的软件的配置文件

/home用户的主目录,包括保存的文件,个人配置,等等

/lib/bin/ 和 /sbin/中的二进制文件的必需的库文件

/lib<架构位数>备用格式的必要的库文件。 这样的目录是可选的,但如果他们存在的话肯定是有需要用到它们的程序

/media可移动的多媒体(如CD-ROMs)的挂载点。(出现于 FHS-2.3)

/mnt临时挂载的文件系统

/opt可选的应用程序软件包

/proc以文件形式提供进程以及内核信息的虚拟文件系统,在Linux中,对应进程文件系统(procfs )的挂载点

/root根用户的主目录

/sbin必要的系统级二进制文件,比如, init, ip, mount

/srv系统提供的站点特定数据

/tmp临时文件 (另见 /var/tmp). 通常在系统重启后删除

/usr二级层级存储用户的只读数据; 包含(多)用户主要的公共文件以及应用程序

/usr/bin非必要的命令二进制文件 (在单用户模式中不需要用到的);用于所有用户

/usr/include标准的包含文件

/usr/lib库文件,用于/usr/bin/ 和 /usr/sbin/中的二进制文件

/usr/lib<架构位数>备用格式库(可选的)

/usr/local三级层次 用于本地数据,具体到该主机上的。通常会有下一个子目录, 比如, bin/, lib/,share/.

/usr/local/sbin非必要系统的二进制文件,比如用于不同网络服务的守护进程

/usr/share架构无关的 (共享) 数据.

/usr/src源代码,比如内核源文件以及与它相关的头文件

/usr/X11R6X Window系统,版本号:11,发行版本:6

/var各式各样的变量(Variable)文件,一些随着系统常规操作而持续改变的文件就放在这里,比如日志文件,脱机文件,还有临时的电子邮件文件

/var/cache应用程序缓存数据. 这些数据是由耗时的I/O(输入/输出)的或者是运算本地生成的结果。这些应用程序是可以重新生成或者恢复数据的。当没有数据丢失的时候,可以删除缓存文件

/var/lib状态信息。这些信息随着程序的运行而不停地改变,比如,数据库,软件包系统的元数据等等

/var/lock锁文件。这些文件用于跟踪正在使用的资源

/var/log日志文件。包含各种日志。

/var/mail内含用户邮箱的相关文件

/var/opt来自附加包的各种数据都会存储在 /var/opt/.

/var/run存放当前系统上次启动以来的相关信息,例如当前登入的用户以及当前运行的daemons(守护进程).

/var/spool该spool主要用于存放将要被处理的任务,比如打印队列以及邮件外发队列

/var/mail过时的位置,用于放置用户邮箱文件

/var/tmp存放重启后保留的临时文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容