首页 > 代码库 > First Blood

First Blood

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

联系:所有的发行版都使用linux内核;都需要遵循GNUGPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号或修正号)。

区别:发行版的本质区别,在于集成了不同版本的内核、库、程序的组合。不同发行版几乎采用了不同的包管理器(SLESFedoraopenSUSEcentosRHEL使用rmp包管理系统,包文件以rpm为扩展名;Ubuntu系列,Debian系列使用基于DPKG包管理系统,包文件以deb为扩展名。)

 Linux的发行版:
    Slackware
        suse
            sles
            openSUSE
    debian
        ubuntu
            mint
    redhat
       rhel:redhat enterprise linux
         每18个月发行一个新版本
       centos:完全兼容rhel的格式
       Fedora:每6个月发行一个新版本

    archlinux
    gentoo
    LFS:linux from scratch

    Android:kernel+busybox+java虚拟机


2、说明Linux系统上命令的使用格式;详细介绍ifconfigechottystartxexportpwdhistoryshutdownpoweroffreboothwclockdate命令的使用,并配合相应的示例来阐述。

    命令格式:COMMAND OPTIONS...[ARGUMENTS...]

    ifconfig:如果没有给出任何参数,ifconfig将显示当前活动接口的状态。如果给出单个接口参数,它将显示仅给定接口的状态; 如果给定单个-a参数,则它显示所有接口的状态,即使那些已关闭。此外,它配置接口。

        ifconfig[interface] 现实端口连接信息

            #ifconfig eth0

      ifconfiginterface [aftype] options | address ... 配置端口

          常用参数:

              up/down:启用或者禁用某一端口

                  #ifconfig eth0 up   启用网卡eth0

  #ifconfig eth0 down  关闭网卡eth

              address:为该端口添加一个ipv4地址

                  #ifconfigeth0 192.168.1.2 为网卡eth0配置ip地址

              hwclass address:更改端口MAC地址

                  #ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

echo:在显示器上显示一段内容。输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号

  用法:echo [SHORT-OPTION]... [STRING]...

        echoLONG-OPTION

    常用参数:

           -n:不要再最后自动换行

                  #echo -n who are you ?

who are you ?[root@tom ~]#

           -e:若出现以下字符,则特别处理,而不会将它当成一般文字输出

                  \a:发出警告声

                  \b:删除前一个字符

                  \c:最后不加上换行符号

                     \f:换行单光标仍旧停留在原来的位置

                     \n:换行且光标移至行首

                     \r:光标移至行首,但是不换行

                     \t:插入水平标签

                     \v:插入垂直标签

                     \\:插入反斜线

       tty:显示连接到标准终端的文件名称

              tty[OPTION]…

                     常用参数:

                            -s:不显示任何信息,只返回退出状态

       startx:启用X window,实际启动X window的程序为xinit

              startx(参数)

                     参数:

                            客户端及选项:x客户端和选项

                            服务器及选项:X服务器和选项

                     #statx       ## 启用一个x会话

                     #startx-w   ## 强制启动一个x会话

                     #startx;kill -9 $$   ## 启用x会话,并注销该用户的telnet会话

       export:设置或显示环境变量

              语法:export [OPTION] [变量名]=[变量值]

              Note:在shell执行过程中,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续程序使用。export的作用仅限于该次登录操作。

              option

                     -f:代表【变量名】中为函数名称

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

                     -p:列出所有的shell赋予程序的环境变量和函数

              #export -n SHLLVL="1" 删除SHELVL变量

              #export -p  显示当前shell的环境变量

       pwd:显示当前工作路径

              语法:pwd [OPTION]…

              option

                     -p:显示实际路径,而不是使用链接路径

              [root@tominit.d]# pwd

/etc/init.d                            ##显示当前目录的工作路径

[root@tom init.d]# pwd -LP

/etc/rc.d/init.d                     ##显示当前目录的实际路径

       history:命令历史

              环境变量:

                     HISTSIZE:命令历史记录的条数

                     HISTFILE:命令历史文件 ~/.bash_history

                     HISTFILESIZE:命令历史文件记录记录历史的条数

              hisorty-d OFFSET 删除某条历史记录

                        -c           清空历史记录

              history#:显示历史中最近的#条命令

                     -a:手动追加当前会话缓冲区的命令历史至历史文件中

调用历史中命令:

    !#:重复执行第#条命令

    !!:重复上一条命令

                     !string:

                调用上一条命令的最后一个参数:

!$

ESC,.

                    ALT+.

              控制命令历史的记录方式:

                     环境变量:HISTCONTROL

                            ignoredups:忽略重复的命令,连续且相同方为“重复”

                            ignorespace:忽略所有以空白开头的命令

                            ignoreboth:ignoredups,ignorespace

       shutdown

              语法:shutdown [OPTION]...  TIME [MESSAGE]

              option

                     -r:reboot 重启

                     -h:halt    关机后断电

-c:cancel  取消正在运行的shutdown命令

              TIME

                     now:立刻

                     +m:相对时间表示法,从命令提交开始多久之后,例如+3

                     hh:mm:绝对时间表示法,指明具体时间

              #shutdown -r 18:00   ## 主机在18点整重启

              #shutdown -h +30       ## 主机在30分钟后关机并断电

              #shutdown -c             ## 取消之前执行的shutdown命令

       poweroff:关闭计算机系统,并切断主机电源

              语法:poweroff [OPTION]...

              option

                     -f,--force:不调用shutdown,强制关机

                     -p,--poweroff:执行halt命令来替代poweroff

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

       reboot:重启系统

              option:

                     -f:强制,不调用shutdown

                     -p:切断电源

       hwclock:显示或设置硬件时钟

              语法:hwclock [functions] [options]

              option

                     -s:--hctosys 硬件同步到系统

                     -w:--systohc 系统同步到硬件

              #hwclock  ##显示硬件时钟

              Sun11 Dec 2016 05:11:07 PM CST  -0.795009seconds

              #hwclock -s  ##硬件时钟同步到系统时钟

              #hwclock     ##显示同步后的硬件时钟

Sun 11 Dec 2016 05:11:16 PMCST  -0.137457 seconds

date:显示或设定系统的日期和时间

  语法1:date[OPTION]... [+FORMAT]   ##显示时间

  FORMAT:格式符号

      %D:date; same as %m/%d/%y

      %F:full date; same as%Y-%m-%d

      %T:time; same as %H:%M:%S

  语法2:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]  ##设置系统时间和日期

      MM:月份

      DD:几日

hh:小时

mm:分钟

YY:两位年份

CCYY:四位年份

.ss:秒钟(注意:.不可忽略)

 

 

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

    内部命令:# help COMMAND

    外部命令:

        1.# COMMAND --help

          #COMMAND -H

        2.使用手册(manual

            # man COMMAND

        3. 信息页

# info COMMAND

        4. 程序自身帮助文档
            README

            INSTALL

            Changelog

        5.程序官方文档

            官方站点:Documentation

        6.发行版的官方文档

        7.Google

   

    手册页(/usr/share/man/)

        man1man8

            man1:用户命令

            man2:系统调用

            man3:C库调用

            man4:设备文件及特殊文件

            man5:配置文件格式

            man6:游戏(Game

            man7:杂项

            man8:管理类命令

4Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    cp,mv,rm

    复制命令:cp

      cp[OPTION]... [-T] SOURCE DEST

     cp [OPTION]... SOURCE... DIRECTORY

     cp [OPTION]... -t DIRECTORY SOURCE...

 cp SRC DEST

         SRC是文件

         如果目标不存在,新建DEST,并将SRC中内容填充至DEST中

         如有目标存在:

             如果DEST是文件:将SRC中的内容覆盖至DEST中

                 此时建议为CP命令使用-i选项

             如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件

cp SRC...DEST

           SRC...:多个文件

           DEST必须存在,且为目录,其他情况均会出错;

cp SRC...DEST

           SRC是目录

           需要专用选项:-r

如果DEST不存在:创建指定目录,并复制SRC目录中所有文件至DEST中               如果DEST存在

        如果DEST是文件:报错

        如果DEST是目录:复制SRC目录中所有文件至DEST中

        常用选项:

            -i:交互式提醒

            -r,-R:递归复制目录及内部的所有内容

            -a:归档复制,保留原文件原属性 -dR--preserv=all

                -d:--no-dereference--preserv=link

            --preserv=[STTR_LIST]

                    mode:权限

                    ownership:属主属性

                    timestamp

                    links

                    xattr

                    context

                    all

            -p:等价于--preserv=mode,ownership,timestamp

            -v:--verbose

            -f:--force

    mv:move 移动文件

        mv [OPTION]... [-T] SOURCE DEST

        mv [OPTION]...SOURCE... DIRECTORY

        mv [OPTION]... -tDIRECTORY SOURCE...

        常用选项:

            -f:--force,强制

            -i:交互式

   rm:remove 删除文件

         rm[OPTION]... FILE..

     常用选项:

            -i:交互

            -f:强制删除

            -r:递归删除

5bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

# mkdir -v/tmp/{ab}_{cd}

mkdir: createddirectory `/tmp/{ab}_{cd}‘

[root@tom ~]#echo $?

0

 

# mkdir -v/tmp/{a,b}_{c,d}

mkdir: createddirectory `/tmp/a_c‘

mkdir: createddirectory `/tmp/a_d‘

mkdir: createddirectory `/tmp/b_c‘

mkdir: createddirectory `/tmp/b_d‘

6、请使用命令行展开功能来完成以下练习:

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

    # mkdir -v /tmp/{a,b}_{c,d}

    #ls -l /tmp

total 16

drwxr-xr-x. 2 root root 4096 Dec 1117:53 a_c

drwxr-xr-x. 2 root root 4096 Dec 11 17:53 a_d

drwxr-xr-x. 2 root root 4096 Dec 1117:53 b_c

drwxr-xr-x. 2 root root 4096 Dec 1117:53 b_d

(2)、创建/tmp/mylinux目录下的:

mylinux/

├── bin

├── boot

└── grub

├── dev

├── etc

├── rc.d

└── init.d

└── sysconfig

└──network-scripts

├── lib

└── modules

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

└── local

├── bin

└── sbin

└── var

├── lock

├── log

└── run

    #mkdir-pv/tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig,network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/{local,bin,sbin},var,lock,log,run}

 

[root@tom ~]# tree /tmp/mylinux

/tmp/mylinux

├── bin

├── boot

   └── grub

├── dev

├── etc

   ├── network-scripts

   ├── rc.d

     └── init.d

   └── sysconfig

├── lib

   └── modules

├── lib64

├── lock

├── log

├── proc

├── run

├── sbin

├── sys

├── tmp

├── usr

   ├── bin

   ├── local

   └── sbin

└── var

 

7、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

[root@tom ~]#stat /etc/passwd

  File: `/etc/passwd‘ ##文件路径

 Size: 1872##文件大小 Blocks: 8##文件的区块 IO Block: 4096 ##输入输出块大小 regular file ##文件类型

Device:802h/2050d##所在设备的编号Inode: 404773##文件编号   Links: 1 ##文件名的最大长度

Access:(0644/-rw-r--r--)##访问权限 Uid: (    0/    root)##拥有者的名字和ID Gid: (    0/    root)##文件拥有组的ID和名字

Access: 2016-12-1114:52:11.562000000 +0800##访问时间,读取文件内容

Modify: 2016-11-0616:11:10.255000033 +0800##修改时间,改变文件内容

Change:2016-11-06 16:11:10.260000033 +0800##改变时间,元数据发生改变

 

touch [OPTION]... FILE...

-a:only atime

-m:only mtime

-t STAMP:指定时间

[[CC]YY]MMDDhhmm[.ss]

-c:如果文件不存在,不予以创建

   

8、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

    # ls -d /var/l[0-9]*[[:lower:]]

9、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

    # ls -d /etc/[0-9]*[[:alpha:]]

10、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

    # ls -d /etc/[^[a-z]][[:alpha:]]*

11、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-09-20-09-32-22

    # touch /tmp/tfile-$(date+%Y-%m-%d-%H-%M-%S)

12、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

    # mkdir /tmp/mytest2

# cp -r /etc/*.d /tmp/mytest2

13、复制/etc/目录下所有以lmn开头,以.conf结尾的文件至/tmp/mytest3目录中。

    # mkdir /tmp/mytest3

    # cp -r /etc/{lmn}*.conf /tmp/mytest3

 


本文出自 “Linux晋级之路” 博客,谢绝转载!

First Blood