Linux入门详解(第一周)

Linux入门

1. 描述计算机的组成及其功能

计算机硬件的五大组成部分为:运算器、控制器、存储器、输入设备和输出设备;

  • CPU:CPU是执行存储在主存中指令的引擎;内部又分为算数逻辑单元和控制单元,其中算数逻辑单元主要负责程序的运算与逻辑判断,控制单元则主要是协调各周边组件与各单元间的工作;此外CPU内还包含寄存器(如PC)和高速缓存等;

  • 存储器:这里指主存,由DRAM芯片组成,在处理器执行程序时,用来存放程序和程序处理的数据;

  • I/O设备:输入/输出设备是系统与外部的世界联系通道;每个I/O设备都通过一个控制器或适配器与I/O总线相连;

一个典型系统的硬件组成如下图所示: 
blob.png

2. 按系罗列Linux的发行版,并描述不同发行版之间的联系与区别

Linux发行版(Linux distribution)有数百种之多,在此简单介绍几款主流版本及其衍生版:

  • Debian系列:Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统;其衍生版包括Ubuntu(基于Ubuntu的Mint)、Knoppix、kali等;使用.deb格式的包,包管理器为dpkg/apt-get;

  • Slackware系列:S.u.S.E是基于Slaxkware Linux的发行版,其下包括桌面版的OpenSuSE和企业版的SLES(SUSE Linux Enterprise Server);包管理器为rpm/zypper;

  • Redhat系列:包括RHEL(RedHat Enterprise Linux)、FedoraCore(由Redhat桌面版发展而来)、CentOS(Community ENTerprise OS)、Oracle Linux、Mandriva等;使用.rpm格式的包,包管理器为rpm/yum(Fedora已更新为dnf);

  • ArchLinux:基于KISS原则的Linux发行版;使用pacman包管理器;

  • Gentoo:Gentoo是一个基于源代码的发行版;

  • LFS:LFS(Linux From Scratch)不是Linxu发行版,而是一种使用源码编译Linux的安装方式;

  • FreeBSD:FreeBSD不是一个Linux系统;

3. 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述

  1. 一切皆文件 
    把几乎所有资源都抽象为文件的形式,包括硬件设备,甚至包括通信接口等;在启动设备之后,在其上关联一个用户接口程序,即可实现与用户交互;

  2. 由众多功能单一的程序组成,一个程序只做好一件事,组合小程序完成复杂任务

  3. 尽量避免与用户交互 
    其目标是易于以编程方式实现自动化任务;

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

4. 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述

Linux命令的语法通用格式

COMMAND OPTIONS ARGUMENTS

COMMAND
命令本身是一个可执行的二进制文件(有可能会调用共享库文件),发起一个命令其实就是向内核请求将某个二进制程序运行为一个进程; 
命令分为两类:

  • 内置命令(builtin):shell程序自带的命令;shell程序是一个特殊的程序,负责解析用户提供的命令;

  • 外部命令:独立的可执行程序文件,文件名即命令名;多数程序文件都存放在/bin、/usr/bin、/usr/local/bin(普通命令)和/sbin、/usr/sbin、/usr/local/sbin(管理命令)中;

OPTIONS: 
命令选项用于指定命令的运行特性,其有两种表现形式:

  • 短选项:-C,例如-l,-d 
    有些命令的选项没有“-”;如果同一个命令同时使用多个短选项,多数可合并,如-l -d = -ld;

  • 长选项:–word,例如–help,–human-readable 
    长选项不能合并; 
    注意:有些选项可以带参数,成为选项参数;

ARGUMENTS: 
命令参数即为命令的作用对象,有些命令可以同时带多个参数,如ls -ld /var /etc;

基本命令详解

ifconfig

配置网络接口(现逐渐被ip命令替代)

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FF:52:7B
          inet addr:192.168.1.223  Bcast:192.168.1.255  Mask:255.255.255.0          
          inet6 addr: fe80::20c:29ff:feff:527b/64 Scope:Link          
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          
          RX packets:535 errors:0 dropped:0 overruns:0 frame:0          
          TX packets:393 errors:0 dropped:0 overruns:0 carrier:0          
          collisions:0 txqueuelen:1000          
          RX bytes:49690 (48.5 KiB)  TX bytes:73725 (71.9 KiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0          
          inet6 addr: ::1/128 Scope:Host          
          UP LOOPBACK RUNNING  MTU:65536  Metric:1          
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          
          collisions:0 txqueuelen:0          
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

echo

回显

echo [SHORT-OPTION]... [STRING]...   SHORT-O
    PTION:       
        -n:不换行;       
        -e:让转义符生效(\n:换行符,\t:制表符);   
    STRING:       
        可以使用引号,单引号和双引号均可,           
        单引号:强引用,变量引用不会被替换,           
        双引号:弱引用,变量引用会被替换;
        
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo "$SHELL"
/bin/bash
[root@localhost ~]# echo '$SHELL'
$SHELL

tty

查看终端设备

[root@localhost ~]# tty/dev/pts/0

注意:Linux的终端设备(terminal)有以下几种:

  • 物理终端:也叫控制台(console),对应的设备文件为/dev/console;

  • 虚拟终端:对应的设备文件为/dev/tty[1,6];

  • 图形终端:对于CentOS 7,其在哪个虚拟终端启动即位于哪个虚拟终端,对应的设备文件为/dev/tty#;

  • 串行终端:对应的设备文件为/dev/ttyS#;

  • 伪终端:对应的设备文件为/dev/pts/#;

startx

进入图形界面

[root@localhost ~]# startx &

export

bash内置命令,设置或显示环境变量

export [-fn] [name[=value] ...] 
or export -p

[root@localhost ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="(此处省略)"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.1.213 4795 22"
declare -x SSH_CONNECTION="192.168.1.213 4795 192.168.1.91 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="1"

pwd

显示工作目录

[root@localhost ~]# pwd/root

history

显示或操作历史命令

history [-c] [-d offset] [n] 
or history -anrw [filename] 
or history -ps arg [arg...]    
    -c:清空命令历史;    
    -d offset:删除指定历史命令;    
    -r:从文件读取命令历史到历史列表中;    
    -w:把历史列表中的文件追加到历史文件中;
    history #:显示最近的#条命令;

shutdown

关机或重启

shutdown [OPTIONS...] [TIME] [WALL...]   
    OPTIONS:       
        -h:halt;       
        -r:reboot;       
        -c:cancel;   
    TIME:       
        now       
        hh:mm       
        +m  
    WALL:       
        广播信息提醒       
        注意:wall命令是在终端上广播信息;

poweroff

关机

reboot

重启

hwclock

同clock,查询或设置硬件时钟

hwclock [function] [option...]   
    -s:以硬件为准,把系统时钟调整为与硬件时钟相同;   
    -w:以系统为准,把硬件时钟调整为与系统时钟相同;

date

显示或设置系统时钟

date [OPTION]... [+FORMAT]
显示日期时间   
    FORMAT:       
        %F:显示日期;       
        %T:显示时间;       
        %s:从1970-01-01 00:00:00(Unix元年)到命令执行那一刻经过的秒数;
date [MMDDhhmm[[CC]YY][.ss]]
设置日期时间(月、日、时、分、年、秒)

[root@localhost ~]# date +%Y-%m-%d-%H-%M-%S
2016-08-28-06-54-45

5. 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的

获取命令使用帮助的方法:

内置命令:

help COMMAND

外部命令:

1)命令自带的简要使用帮助

COMMAND –help

2)manual手册

位置:/usr/share/man(压缩格式的文件man1、man2…)

man手册组成内容

  • NAME:命令/函数的功能概述;

  • SYNOPSIS:命令/函数用法的简单描述;

  • DESCRIPTION:命令/函数的详细描述;

  • OPTIONS:命令选项的详细说明;

  • EXAMPLES:命令/函数的使用示例;

  • FILES:该命令/函数用到的相关系统文件;

  • ENVIRONMENT:和该命令/函数相关的环境变量;

  • BUGS:已知的错误和警告;

  • HISTORY:发展历史;

  • SEE ALSO:其他参考;

注意:对于SYNOPSIS部分:

  • [ ]:表示可选内容

  • < >:表示必须提供的内容

  • a|b|c:表示多选一

  • …:表示同类内容可出现多个

man手册有章节之分

  • 1:用户命令;

  • 2:系统调用;

  • 3:C库调用;

  • 4:设备文件及特殊文件;

  • 5:文件格式(配置文件格式);

  • 6:游戏帮助;

  • 7:杂项;

  • 8:系统管理工具(root用户);

  • 9:内核调用;

注意:并非每个COMMAND在所有章节下都有手册,可用whatis COMMAND查看(whatis通过数据库查询的,可在先执行makewhatis命令手动更新数据库);

man命令的选项: 
-M /PATH/TO/SOMEDIR:到指定目录下查找命令手册

man手册的操作方法: 
翻屏:

  • Space:向文件尾部翻一屏;

  • b:向文件首部翻一屏;

  • Ctrl+d:向文件尾部翻半屏;

  • Ctrl+u:向文件首部翻半屏;

  • Enter:向文件尾部翻一行;

  • k:向文件首部翻一行;

  • G:跳转至文件最后一行;

  • #G:跳转至指定行;

  • 1G:跳转至文件首部;

文本搜索:

  • /keyword:不区分大小写,从文件首部向尾部依次查找;

  • ?keyword:不区分大小写,从文件尾部向首部依次查找;

  • n:与查找命令方向相同;

  • N:与查找命令方向相反;

退出:

  • q:quit;

3)info

获取命令的在线文档 
info COMMAND

4)很多应用程序会自带帮助文档

位置:/usr/share/doc/APP-VERSION

  • README:程序的相关信息;

  • INSTALL:安装帮助;

  • CHANGES:版本迭代时的变动信息;

5)主流发行版的官方文档

如:http://www.redhat.com/doc

6)程序的官方文档

官方站点的“Documents”

7)搜索引擎

google搜索技巧:

  • keyword1+keyword2:同Space,keyword1与keyword2同时匹配

  • keyword1-keyword2:排除keyword2

  • keyword*:匹配keyword后为任意字符

  • "keyword":keyword完全匹配

  • inurl:keyword:url中包含keyword

  • intitle:keyword:标题中包含keyword

  • allintitle:keyword1 keyword2:标题中包含keyword1与keyword2

  • keyword filetype:pdf:搜索包含keyword的pdf格式文件

  • keyword site:domain.tld:搜索domain.tld网站上包含keyword的资源

6. 请罗列Linux发行版的基础目录名称命名法则及功用规定

Linux目录配置的依据为FHS(Filesystem Hierarchy Standard)

FHS将目录定义为四种交互作用的形态

blob.png

CentOS 7的目录结构

[root@localhost ~]# ls -l /
total 32
lrwxrwxrwx.   1 root root    7 Aug 21 23:55 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Aug 22 00:11 boot
drwxr-xr-x.  19 root root 3160 Aug 28 04:20 dev
drwxr-xr-x.  75 root root 8192 Aug 28 04:20 etc
drwxr-xr-x.   2 root root    6 Aug 12  2015 home
lrwxrwxrwx.   1 root root    7 Aug 21 23:55 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Aug 21 23:55 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   2 root root    6 Aug 12  2015 opt
dr-xr-xr-x. 364 root root    0 Aug 28 04:20 proc
dr-xr-x---.   2 root root 4096 Aug 22 02:04 root
drwxr-xr-x.  20 root root  560 Aug 28 04:20 run
lrwxrwxrwx.   1 root root    8 Aug 21 23:55 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x.  13 root root    0 Aug 28 04:20 sys
drwxrwxrwt.   7 root root 4096 Aug 28 04:20 tmp
drwxr-xr-x.  13 root root 4096 Aug 21 23:55 usr
drwxr-xr-x.  19 root root 4096 Aug 28 04:20 var

Linux基础目录名称的命名及其功用

/:(root,根目录)与开机系统有关;

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

  • /sbin:供系统管理使用的工具程序;

  • /boot:引导加载器必须 用到的各种静态文件,如kernel、initramfs(initrd)、grub等;

  • /dev:存储特殊文件或设备文件,如/dev/null、/dev/zero、/dev/tty、/dev/loop、/dev/sd等;设备有两种:字符设备(线性设备)和块设备(随机设备);

  • /etc:系统程序的配置文件,只能为静态,如/etc/modprobe.d/、/etc/passwd、/etc/fstab、/etc/issue等;

  • /media:便携式设备的挂载点,如/media/cdrom、/media/floppy等;

  • /mnt:其他文件系统的临时挂载点;

  • /opt:附加应用程序的安装位置;

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

  • /run:系统开机后产生的各项信息;

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

  • /lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块;其下一般有libc.so(动态链接的C库)、ld*(运行时的连接器或加载器)、modules(存储内核模块)等;

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

  • /home:普通用户家目录(home directory)的集中目录;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;

  • /root:系统管理员的家目录,为可选路径;

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

  • /sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核参数的途径,其主要作用在于为管理Linux设备提供一种统一模型的接口;可参考https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/

/usr:(unix software resource)与软件安装与执行有关,全局共享的只读数据路径;

  • /usr/bin:CentOS 7已将/bin链接至此;

  • /usr/sbin:CentOS 7已将/sbin链接至此;

  • /usr/lib:CentOS 7已将/lib链接至此;

  • /usr/lib64:CentOS 7已将/lib64链接至此;

  • /usr/include:C程序的头文件;

  • /usr/share:命令手册、命令自带文档等架构特有的文件存储位置;

  • /usr/X11R6:x-window程序的安装位置;

  • /usr/src:程序源码文件的存储位置;

  • /usr/local:让系统管理员安装本地应用程序,也通常用于安装第三方程序;另一个层级目录,其下其下也有bin、sbin、lib、lib64等;

/var:(variable)与系统运作过程有关,存储常发生变化的数据;

  • /var/cache:应用程序的缓存数据;

  • /var/lib:存放程序执行过程中需要使用的数据文件;

  • /var/local:/usr/local产生的可变数据;

  • /var/lock:锁文件,已链接至/run/lock;

  • /var/log:日志文件和目录;

  • /var/opt:/opt产生的可变数据;

  • /var/run:运行的程序相关的数据,已链接至/run;

  • /var/spool:队列数据;

  • /var/tmp:系统重启时保留的临时文件;

CentOS 7目录树架构示意图

blob.png

原创文章,作者:baron,如若转载,请注明出处:http://www.178linux.com/41136

(0)
上一篇 2016-08-29 09:00
下一篇 2016-08-29 09:01

相关推荐

  • shell脚本实现MD5破解的相关小计

    分享编写shell脚本暴力破解md5的方法 方法一 单个破解法(以10位数为例) #!/bin/bash read -p “please input strings:”string for n in {0..33000} do Md5=`echo $n |md5sum|cut -c 1-10`      …

    Linux干货 2017-03-26
  • LNMP的虚拟主机配置http和https

    项目实战:    搭建LNMP环境:Linux+Nginx+Mysql(MariaDB)+php(php-fpm),创建多个虚拟主机:    主机1提供正常的http服务,用于安装wordpress博客;    主机2提供正常的https服…

    Linux干货 2016-10-30
  • Linux bash 特性、相关变量以及编程

    Linux bash 特性、相关变量以及编程 bash 特性之:命令hash 缓存此前执行过的命令(都是外部命令,不记录内嵌命令),加速命令的执行 hash    -d 清空指定命令记录   -r 直接清空hash表 bash 特性之一: 变量 程序=指令+数据 指令是有文件提供 数据是由…

    Linux干货 2016-12-29
  • N26-第三周作业

    N26-第三周作业 一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@promote ~]# who root     tty1         2017-03-10 22:36 lxk…

    Linux干货 2017-03-11
  • Linux下如何使用sendEmail来发送邮件

    1)什么是sendEmail sendEmail是一个轻量级,命令行的SMTP邮件客户端(注意,不要跟sendmail混淆了)。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大,从此以后你就爱上了它。 2)安装sendEmail [root@zabbix ~]# wget http://…

    系统运维 2016-07-29
  • linux使用yum对程序包管理相关知识

     yum客户端:          配置文件:              /etc/yum.conf: 为所有仓库提供公共配置              /et…

    Linux干货 2017-01-02