【Linux相识相知】计算机的组成、linux发行版和哲学思想、基础命令和目录结构

从今天开始,Frank将开始在博客上记录自己学习linux的点点滴滴,F初来乍到,还望各位大佬多多指教。本次博客的主要内容如下:

  • 计算机基础:简要的描述了计算机的组成及其功能;
  • linux初识:介绍了linux主流的发行版,说明了不同的发行版之间的区别和linux的哲学思想,列出了linux发行版的基础目录名称命名法则及功能规定;
  • 基础命令:详细介绍一些基础的命令,并就如何在linux系统上获取命令的帮助做出了解释。

一、计算机的组成及其功能

计算机主要是由5个部分组成

  • 控制器(Control):正确的分布的完成每一条指令规定的功能。
  • 运算器(Datapath):对数据进行算术运算和逻辑运算。
  • 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要的时候提供这些信息
  • 输入(input system):输入设备,常见的输入设备有键盘、鼠标、摄像头等。
  • 输出(output system):输出设备,常用的输出设备有显示器、打印机等。

我们所说的中央处理器CPU(Central Processing Unit)就是由控制器和运算器组成的。所有的东西,包括处理器、显卡、存储器、声卡、内存等都是通过主板来组合到一起的。

如果把计算机比如成一个人:

CPU=大脑;

内存=脑袋中正在思考的数据区块,主要是给大脑提供信息;

硬盘=脑袋中的记忆区块,主要是存放记忆的地方,用的时候取出来,不用的时候放回去;

主板=神经系统,协调各个部件;

I/O设备=人体与外接沟通的,比如手,脚,皮肤、眼睛;

电源power=心脏,这就不多说了,没有电源,整个系统就无法运作

知识遗拾:

为什么32位机器最多只能支持4G的内存?

32位,其实指的是CPU的寻址能力,2^32 = 1024*1024*1024*4 B = 1024*1024*4KB = 1024*4MB = 4GB,所以64位的系统的性能比32高很多

CPU的指令周期单位HZ?

CPU 的指令周期常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。举例来说,大家常听到的 20M/5M 光纤传输速度,如果转成文件容量的 byte 时,其实理论最大传输值为:每秒 2.5Mbyte/ 秒 625Kbyte 的下载/上传速度。

二、linux的来历

1991年,芬兰大学生Linus Torvalds(下图就是这位牛逼的人物了)萌发了开发一个自由的UNIX操作系统的想法,当年,Linux就诞生了,为了不让这个羽毛未丰的操作系统矢折,Linus将自已的作品Linux通过Internet发布。后来linux加入了GNU组织,并遵循了GPL,

从此一大批黑客和编程人员加入到其开发中来,使Linux得到了飞速的发展(Linux也被称为GNU/Linux),其实linux本身只是一个内核,而GNU提供的则是一些开源的软件,比如x-window、gcc等。

Linus Torvalds

知识遗拾:

开源协定GPL:一个软件一旦遵循了GPL,那么使用者可以自由的执行,复制,再发行,学习、修改自由软件。由于第一个版本的GPL太过于严苛,后来出现较为宽松的GPLV2和GPLV3。除了GPL开源协定还有LGPL,BSD和Apache等。

三、linux的发行版

发行版为许多不同的目的而制作,包括对不同计算机结构的支持。实时应用等,现已经存在的发行版本就有几百种,但是其中比较常用的发行版也就几种。

1.Red Hat

红帽也许是世界使用的最多的发行版本了,普遍使用在服务器上,你可以免费的在其官网上获取最新的版本,但是版本如果存在bug或者不稳定,包含一些一些封闭的源代码软件,如果需要红帽提供技术支持,那就需要买人家的服务了,目前最新的版本为7.X。

2.Centos

Centos是基于Red Hat linux的企业级发行版本,但是它没有那些封闭的源代码软件,全部是开源的,现在国内很多大的电商在其服务器上运行的就是Cenntos,目前最新的版本为7.x(因为是红帽一家的)。

3.Debian

Debian是一个非常稳定的版本,但是安装过程是及其复杂的,你需要将源码根据自己的硬件编译成二进制文件来安装,这也是其稳定的原因,但是这样带来的坏处就是,一般的用户安装起来就非常头疼了。在Debian6中,linux的内核是完全开源的,所有的闭源软件都被隔离成了单独的软件包,放在Debian的软件源"Non-Free"部分,所以用户可以自行选项全开源的系统还是存在一起闭源的软件,目前最新版本为9.x。

4.Ubuntu

Ubuntu是基于debian发行版和unity桌面环境的,是一个以桌面应用为主的linux操作系统,目前最新版本为17.x。

5.SUSE

SUSE是德国非常著名的Linux发行版,后被Novell公司收购,SUSE Linux一向以华丽的用户界面著称;

6.Gentoo

Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 ——Portage包管理系统。

知识遗拾:

发行的版本号和linux内核的版本是不一样的概念的

linux内核最新版为:4.11.8

4:表示主版本号

11:表示开发中的版本,如果为偶数的则是稳定版本

8:修订版本号,表示修改次数

可以通过官网下载查询:https://www.kernel.org/

其实所有的发行版的内核可以说都是版本不同或者相同的linux内核,然后将各种各样图形化界面,软件然后与内核组在一起就成个各种不同的版本。

两种用户界面:

1.GUI:图形化界面

GNome

KDE

2.CLI:命令行界面

bash

zsh

sh    ....

终端设备

物理终端:控制台,console,/dev/console
虚拟终端:Ctrl+Alt+F[1-6],为tty,/dev/tty[1-6]

图形终端:

centos6:

Ctrl+Alt+F7

cnetos7:

在哪个虚拟终端启动就位于哪一个虚拟终端

串行终端:tyys,/dev/ttys#

伪终端:pts,/dev/pts#

使用tty查看终端设备

[[email protected] ~]# tty
/dev/pts/0

四、linux的哲学思想

1.一切皆文件

在linux系统中,所有的资源都是以文件形式表现出来的,包括设备文件,普通文件,目录,套接字,反正你能看得到都是文件;

2.由众多功能单一的程序组成

在linux中,一个小程序就是拿来完成一个简单的任务的,如果想要完成很复杂的任务,那么就需要把小程序组合起来,一起完成。

3.尽量避免和用户交互

shell支持很多种编程语言,比如python,可以使用脚本来实现自动化得任务

4.使用文本保存配置信息

易于读取配置信息,可以使用文本编辑器就可以修改配置信息

五、linux命令的使用格式

linux命令的语法通用格式为:

#COMMAND OPTIONS ARGUMENTS

COMMAND

当发起一条命令的时候,系统请求内核将某个二进制程序运行为一个进程,命名本身是一个可执行的程序文件,二进制格式文件,有可能会调用共享库文件,并非所有的命令都有一个在某目录与之对应的可执行程序,在Linux中可执行文件为ELF类型,比如在windows上试exe或者msi:

多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin

普通命令:/bin, /usr/bin, /usr/local/bin

管理命令:/sbin, /usr/sbin, /usr/local/sbin

共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

32bits的库:/lib, /usr/lib, /usr/local/lib

64bits的库:/lib64, /usr/lib64, /usr/local/lib64

命令类型:

内置命令:由shell程序自带的命令

外部命令:独立的可执行程序文件,文件名即命令名

shell程序是独特的程序,复制解析用户提供的命令,她是从环境变量PATH中获取路径来查找可执行的文件的。

可以使用type COMMAND来获取命令是内置的还是外置:

内置:

[[email protected] ~]# type cd
cd is a shell builtin

外置:

[[email protected] ~]# type cat
cat is /usr/bin/cat

OPTIONS

选项,指定命令的运行特性,选项有两中表现形式:

短选项:例如-c,-d,-r,有些命令是没有-的,多个短选项,多数情况下是可以合并的

长选项:例如--help,不能合并

AGUMENTS

命令的作用对象,即命令对什么生效,有些命令的对象可以用多个,使用空格分开

六、基础命令

ifconfig

显示IP地址,MAC地址,收发包和丢包数目和错误包的个数

[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.135  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::7d5:374d:e0e2:37ce  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3c:34:c0  txqueuelen 1000  (Ethernet)
        RX packets 1235  bytes 116447 (113.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 945  bytes 76449 (74.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 72  bytes 6252 (6.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 6252 (6.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

命令显示了2块网卡的信息,一个是网卡ens33,一个是环回口loopback,可以看到ens33的ipv4、ipv6地址和MAC地址等信息,与其类似的命令为ip add show.

echo

回显命令

[[email protected] ~]# echo "hello linux"
hello linux

强引用,单引号:

[[email protected] ~]# echo ‘$PATH‘
$PATH

弱引用,双引号:

[[email protected] ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

tty

显示当前终端的文件名

[[email protected] ~]# tty
/dev/pts/0

startx

开启图形化界面

[[email protected] ~]# startx

export

设置和显示环境变量,单独使用export可以查看当前系统下的环境变量;

命令格式:

export [-fn] [name[=value] ...] or export -p
 Options:
      -f        refer to shell functions   代表[变量名称]中为函数名称
      -n        remove the export property from each NAME  删除环境变量,实际上没有删除,只是不会输出到后续指令的执行环境
      -p        display a list of all exported variables and functions  显示所有的环境变量

一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。     ----《UNIX教程》

[[email protected] ~]# name="Frank"
[[email protected] ~]# echo $name
Frank
[[email protected] ~]# bash
[[email protected] ~]# echo $name
[[email protected] ~]# exit
exit
[[email protected] ~]# export name
[[email protected] ~]# echo $name
Frank
[[email protected] ~]# bash
[[email protected] ~]# echo $name
Frank

pwd

显示当前目录,当用户登录的时候,一般起始目录为其家目录,/home/username

[[email protected] ~]# pwd
/root

history

显示执行命令的历史信息,用户在登录系统时,会读取历史文件记录下的命令:~/.bash_history

[[email protected] ~]# history
    1  history
    2  pwd
    3  cd /root
    4  ls
    5  history 

-c:清除历史信息

-n:显示最近的n行

-a:将命令历史信息写到history_file文件中,默认会写到~/.bash_history下

-r:读取histor_file的内容到当前的history

-w:将目前的history内容写到history_file中

-d:删除指定行的命令历史

!编号:再次执行某一行的命令

!!:执行上一条命令

shutdown

关机命令

-c:将shutdown的命令取消,取消关机

-H:停止设备

-P:关闭电源

-r:重启设备

-h:将系统关机

-k:只送出信息,但是不关机

--no-wall:关机但是不送出任何信息

指定系统在22点关机

[[email protected] ~]# shutdown -r 22:00
Shutdown scheduled for Sat 2017-07-01 22:00:00 EDT, use ‘shutdown -c‘ to cancel.

指定5分钟后关机,同时给出告警信息

[[email protected] ~]# shutdown +5 "System will shutdown after 5 minutes"
Shutdown scheduled for Sat 2017-07-01 08:54:35 EDT, use ‘shutdown -c‘ to cancel.
[[email protected] ~]# 

poweroff(关闭电源),reboot(重启系统)

date [OPTION] [+FORMAT]  Format指出了以什么样的格式来显示时间

查看系统时钟,设置系统时间

[[email protected] ~]# date
Sat Jul  1 09:06:14 EDT 2017
  %%   a literal %
  %a   locale‘s abbreviated weekday name (e.g., Sun)
  %A   locale‘s full weekday name (e.g., Sunday)
  %b   locale‘s abbreviated month name (e.g., Jan)
  %B   locale‘s full month name (e.g., January)
  %c   locale‘s date and time (e.g., Thu Mar  3 23:05:25 2005)
  %C   century; like %Y, except omit last two digits (e.g., 20)
  %d   day of month (e.g., 01)
  %D   date; same as %m/%d/%y
  %e   day of month, space padded; same as %_d
  %F   full date; same as %Y-%m-%d
  %g   last two digits of year of ISO week number (see %G)
  %G   year of ISO week number (see %V); normally useful only with %V
  %h   same as %b
  %H   hour (00..23)
  %I   hour (01..12)
  %j   day of year (001..366)
  %k   hour, space padded ( 0..23); same as %_H
  %l   hour, space padded ( 1..12); same as %_I
  %m   month (01..12)
  %M   minute (00..59)
  %n   a newline
  %N   nanoseconds (000000000..999999999)
  %p   locale‘s equivalent of either AM or PM; blank if not known
  %P   like %p, but lower case
  %r   locale‘s 12-hour clock time (e.g., 11:11:04 PM)
  %R   24-hour hour and minute; same as %H:%M
  %s   seconds since 1970-01-01 00:00:00 UTC
  %S   second (00..60)
  %t   a tab
  %T   time; same as %H:%M:%S
  %u   day of week (1..7); 1 is Monday
  %U   week number of year, with Sunday as first day of week (00..53)
  %V   ISO week number, with Monday as first day of week (01..53)
  %w   day of week (0..6); 0 is Sunday
  %W   week number of year, with Monday as first day of week (00..53)
  %x   locale‘s date representation (e.g., 12/31/99)
  %X   locale‘s time representation (e.g., 23:13:48)
  %y   last two digits of year (00..99)
  %Y   year
  %z   +hhmm numeric time zone (e.g., -0400)
  %:z  +hh:mm numeric time zone (e.g., -04:00)
  %::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
  %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
  %Z   alphabetic time zone abbreviation (e.g., EDT)
[[email protected] ~]# date +%F
2017-07-01

将时间设置为2016年7月1日晚上21点17分30秒

[[email protected] ~]# date  070121172016.30
Fri Jul  1 21:17:30 EDT 2016

hwclock,clock

显示或设定硬件时间

-s, --hctosys:以硬件为准,把系统调整为与硬件时间相同;

-w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;

[[email protected] ~]# date
Fri Jul  1 21:19:22 EDT 2016
[[email protected] ~]# clock
Sat 01 Jul 2017 09:20:48 AM EDT  -1.059659 seconds
[[email protected] ~]# hwclock -s
[[email protected] ~]# date
Sat Jul  1 09:21:11 EDT 2017

七、命令帮助

help COMMAND

使用help加命令可以获取命令帮助

COMMAND --help

部分命令可以使用长选项--help来获取帮助

使用MAN来获取帮助

MAN的章节可以分为以下几个部分:

1   Executable programs or shell commands     用户命令
2   System calls (functions provided by the kernel)    系统调用
3   Library calls (functions within program libraries)    库调用
4   Special files (usually found in /dev)    设备
5   File formats and conventions eg /etc/passwd    文件格式
6   Games    游戏帮助
7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)    杂项
8   System administration commands (usually only for root)    系统命令
9   Kernel routines [Non standard]    kernel内部命令

可以使用whatis查看命令章节

[[email protected] ~]# whatis ls
ls (1)               - list directory contents

在MAN下的控制命令

八、基础目录的命令法则和功用规定

linux文件命名法则:

1.文件名严格区分大小写

2.文件可以使用除/以外任意字符

3.文件名长度不能超过255字符

4.以.开头的文件为隐藏文件

下图为linux的文件系统的结构,让我们来具体看一下每一个的功能

/:根目录

/bin:所有用户的可用的基本命令程序文件

/sbin:供系统管理使用的程序文件

/etc:系统程序的配置文件

/dev:存储特殊文件或者设备文件

/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数

/var:存储常发生变化的数据的目录

/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限

/usr:全局共享的只读数据路径

/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录

/boot:引导加载器必须用到的各静态文件

/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块

/opt:附加应用程序的安装位置;可选路径

/mnt:其它文件系统的临时挂载点

/media:便携式设备挂载点,cdrom, floppy等

/srv:当前主机为服务提供的数据

/lib64:64位系统特有的存放64位共享库的路径

知识遗拾:

linux文件系统的层级结构是一个倒置树状结构,“/”根为起点

绝对路径:从根开始表示出的路径

相对路径:从当前位置开始表示出的路径

时间: 06-30

【Linux相识相知】计算机的组成、linux发行版和哲学思想、基础命令和目录结构的相关文章

【linux相识相知】网络属性配置

当我们拥有一个崭新的计算机的时候,第一步恐怕都是迫不及待的下载各种软件,看视频,听音乐等,这里的关键的一点是要有网络.现在的个人计算机大部分都是windows操作系统的,接入网络网络很简单,插上网线也许就能上网了,最麻烦不过找到网络和共享中心手动配置一个ip地址.网关地址和dns服务器就能上网了,当然这都是得益于图形化界面.但是现在很多的服务器都是linux操作系统且没有图形化的界面,这时候我们就需要了解怎样正确的给linux主机配置网络属性了,本次博客就来说说以正确的方式打开linux操作系统

【Linux相识相知】rpm包管理

我们日常在使用Windows的时候,如果要安装某个软件,最简单的方法就是在程序包的官网直接下载软件包到本地,一般是以.exe或者.msi格式的文件,然后一直下一步下一步就能安装成功了,但是在使用linux的操作系统的时候也许不是这么的友好,即使现在有的linux发行版也可以通过简单的搜索点击安装来实现软件包的安装,但这并不一种很好的安装方法,因为你必须安装桌面环境,消耗和占用一定的内存资源,除非只是你日常使用.本次博客就如何使用rpm命令来实现centos上的软件包的安装与管理,rpm也许不是最

【Linux相识相知】yum的配置使用和程序包的编译安装

在上一篇博客中,写到了如何使用rpm命令来安装.卸载软件等,但是大家都知道,各个软件包之间可能存在依赖关系,如果安装某个软件需要额外的依赖其他若干的包,那么我们就需要将其他额外的包一个一个的安装上去,这样的一个过程是非常耗时的,所以出现了一个前端工具,如yum,dnf,apt-get等,本次博客就centos上的yum和程序包的编译安装做出详细的描述,最后还通过实际的例子介绍了程序包的编译安装. yum的实现原理 yum实现软件包的获取其实是基于C/S架构的,C为你的主机,S为yum repos

Linux下使用tree命令查看目录结构

Linux下的文件虽然是层次型组织结构的,但是我们平时登录到主机上的时候都是使用的各种shell并没有图形界面,看上去很不直观,Linux下有个小命令叫做tree,可以以目录树的形式显示文件结构,类似于Windows下的tree. 如果没有安装的话使用: yum install tree 使用tree查看目录结构: 一些比较常用的选项: -a 显示所有文件,默认情况下是不显示隐藏文件的 -d 只显示目录,默认情况下目录和文件都会显示 -L 指定目录树的最大深度级别 -P 正则匹配打印 更多选项使

【linux相识相知】压缩与打包

我们日常使用window的时候,经常会用到压缩与解压缩,如果要压缩一个文件,右击选择[添加到压缩文件],解压缩则右击选择[解压到当前文件夹],“点点点”就能完成.但是在一个没有装图形化界面的linux操作系统又不能使用“点点点”,那该怎么操作呢?本文就linux中如何使用压缩和打包工具做出解释. 为什么要压缩文件 压缩的目的是为了就是将文件通过压缩算法转变成一个体积更小格式的文件,减小了文件在硬盘上的占用空间,压缩文件的时候,特别的消耗CPU的时钟周期,因为CPU要进行大量的计算,所有压缩也是一

【linux相识相知】独立硬盘冗余阵列-RAID

独立硬盘冗余阵列(RAID,Redundant Array of Independant Disks),旧称为廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks).1987年美国加州伯克利分校的一篇名为<A Case for Redundant Arrays of Inexpensive Disk(RAID)>论文诞生,这标志着RAID技术的开始. 那么什么是RAID呢?简单的来讲就是把多个硬盘组合起来,成为一个硬盘阵列组,操作系统会把它当做是一个硬盘,

【linux相识相知】用户及权限管理

linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管理员我对linux系统权限有哪些?作为一个普通的用户又可以对linux系统有哪些操作呢?这里就牵扯到了linux的用户类别和权限管理.本次博客就用户和权限管理作出详细的解释. 用户和组类型 在linux系统中,有着用户和组着两个概念,用户是被包含在组里面的. 用户可以分为以下2中类别: 管理员:也就

【Linux相识相知】文件查找(locate/find)

在用linux操作系统的时候,当我们忘记之前某个文件存储的位置,但是知道其文件名或者模糊的知道其文件名,我们都可以通过文件查找工具来查找,linux提供两种常用的查找工具,locate和find,在日常使用中后者比前者较前者功能更强大更具有实时性,下面我们就这两种工具来谈一谈她们的使用方法. Locate locate是基于实现构建好的索引库(索引库可以理解成文件路径的集合),索引库的位置放在/var/lib/mlocate/mlocate.db文件里面,系统一般一天会自动更新一次,也可以使用u

一天一个Linux基础命令之目录管理类命令ls

ls 列出目录内容 1.命令格式 ls [option]   [目录名] 2.命令功能 显示当前目录内容,如果ls指定其他目录,那么就会显示指定目录里的文件及目录. 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限),查看目录信息等等. 3.常用参数 -A,打印目录中的所有文件包括隐藏文件,但不包括.和.. -a:显示目录中的所有文件,包括隐藏文件 .表示当前目录 ..表示父目录 -l:用长格式打印目录中的文件和目录(文件类型.权限.硬链接次