首页 > 代码库 > Linux入门(二)

Linux入门(二)

Linux常用的基础命令

1.发行版本

2.CISC、RISC

3.编译和反编译(GPL、LGPL、BSD)

4.程序包管理

5.文件系统初步

终端设备

虚拟终端

图形终端

串行终端

伪终端

Linux的哲学思想

6.开源协议GPL、LGPL、BSD、Apache

7.获取命令的帮助

help内建命令

man命令

info在线帮助文档

官方文档

搜索引擎

8.google的高级用法


Linux常用的基础命令

1.发行版本:

        linux主要发行版:

debian:ubuntu,knopix

slackware:suse,opensuse

redhat:RHEL,fedora桌面版,centos

GNU/Linux ,GNU提供各种应用,

通常以源代码(文本)方式提供:

自由、灵活

编译器:源代码--->二进制

Unix主要发行版:

HP:HPUX

MAC OS

IBM:AIX

    Linux基础:指令集是不同的

2.cpu架构 

    //主要分为CISC,RISC

CISC:{复杂指令集计算机}就是复杂指令集计算机,目前专指x86和x86_64两类

RISC:{精简指令集计算机}

X86-64:又叫AMD64,他的Intel版本叫做EM64T

现在基本上都是RISC,但是能够接受CISC的复杂指令,也就是说这两个趋于融合

x86 :

x64(amd64) :兼容x86

m6800,m68k:另外一种,机器的语言,

ultraparc ,solaris

arm:移动终端设备,最常用的CPU,设计上的,例如高通,华为,三星的

power //IBM的CPU,性能非常强悍,价格也非常高

powerpc //简装版的power

现在是可以在intel的cpu上安装mac的,早期的mac使用的是power 

HP:alpha,hp-ux

交叉编译cross compile:告诉编译器,程序编译的时候,编译到另外一个平台

例如在x86的平台上,编写的软件,编译成在power上运行的软件

-----------------

|程序员    

----------------- 

| 库   |        | //库调用,把一些通用的system call封装

-----------------

|   kernel      | //system call

-----------------

{powerpc,x86,arm}

//但是不同的OS,使用的库是不同的,例如windows和linux的库是不同的

//posix:portable 可移植的 system interface,规范了API

//API:应用程序接口,程序员的编程接口,除非遵循了posix才是兼容来的

//ABI:应用二进制接口,

例如nginx在linux上编译,可以在linux上运行,在windows上编译,可以在win上运行 //因为都遵循posix

但是一旦编译完成后,就不兼容了

ABI 允许编译好的目标代码在使用兼容ABI的系统中,无需改动就能运行。

//编译好后,可以直接在遵循该api的其他的平台上运行

API 同样的代码可以在支持这个API的任何系统中编译,

//例如nginx可以在windows中编译,也可以在linux中编译

Unix类的系统:

Linux,BSD,AIX,......Unix-like

Unix类的系统;

API://这一类的系统,在一个系统上编译好的,也可以在另外一个系统上运行

ABI:

3.编译和反编译:

闭源:windows,不给你源代码,也不会让你轻易反编译成功(加壳,加密)

开源:提供源代码,//中间提供了漏洞,我是不保证的,

//你可以买我的服务,我保证你的。

//提供开源软件的人的收入:{提供该软件的服务支持,捐赠}

    //很多大型公司,不必自己建立一个开发团队,捐赠来支持,作者的后续努力

GPL:general public license

只要遵循GPL协定,那么他的版权属于GPL

任何其他人,只要参考了GPL程序,就必须遵循GPL协定,必须开源和免费

copyright,copyleft使用

linux的内核是支持GPL协定的

//这样反而阻碍了GPL的发展

LGPL:lesser GPL更少要求的GPL协定

//调用我的库接口的话,可以不开源

//GPLv2,GPLv3 

FSF:free software foundation基金会负责

BSD:

Apache://这两个都差不多

在做商业宣传的时候,只要不以原作者的名义做宣传就可以

ASF:apache software foundation基金会

双线授权:

社区版:遵循开源协议,GPL或者BSD

商业授权:商业版本,不开源


4.程序包管理:

程序的组成部分:

二进制程序

配置文件

库文件

帮助文件

程序包管理器:

x:

程序的组成文件打包成一个或有限几个文件

安装:把文件放到指定位置,

卸载:

//程序包管理器,是记录了安装的程序,以及生成的文件的所在地

debian:dpkg包管理器,apt-get

Redhat:RPM包管理器,yum,rpm//新版本叫做dnf

suse:rpm包管理,zypper前端工具

archlinux:port包管理

有专门的包转换工具,但是一般作者都会提供两种格式的包

Gentoo:安装很难,很多需要编译的

LFS:linux from scratch//从零构建linux

一本书,编译安装指南,拼凑成一个发行版本

//每一个程序运行的时候,都需要独占硬件,后来为了让多个程序同时运行

//把计算机的各种资源切割了,

CPU复用:按照时序,时间片

内存:空间切割复用

硬盘:空间复用

IO:时序复用

//从这个角度来说,OS其实就是一个虚拟机

虚拟化软件程序:

vmware workstation:

virtualbox:SUN公司的

miscrosoft:Hyper-V

使用cobbler安装linux //教师内部网络

CD/DVD使用物理驱动器:自动检测

只要网卡设置为桥接网卡,会自动连接cobbler

全程自动安装:

root:mageedu

终端:terminal

centos7使用

localectl set-locale LANG=zh_CN.utf8=zh_CN.gb2312

locale //查看字符集

使用cobbler实现linux自动安装:

    http://blog.csdn.net/liangliangdetianxia/article/details/37605787

    http://www.osyunwei.com/archives/7606.html


5.文件系统初步

硬盘大小:120G以上

网卡:桥接

vmware :编辑-->虚拟网络编辑器-->编辑需要桥接的网卡

终端:terminal

用户界面:

GUI:GNome KDE

bash,zsh,csh,tcsh,ksh

ssh协议:secure shell:

ss -tnl

查看系统是否监听tcp协议的22号端口

ip addr list 

ifconfig //查看ip地址

1.启动或者关闭防火墙:

centos7 :

systemctl stop/start   firewalld.service

systemctl disable/enable  firewalld.service

centos6:

service iptables stop/start

chkconfig iptables on/off

iptables -F

2.查看自己的shell

echo $SHELL

3.终端设备:

多任务,多用户

物理终端:控制台,console//只在系统启动的时候用

//当系统启动之后,就会虚拟出多个虚拟终端

虚拟终端:tty,pts{xshell使用,图形界面右键terminal} //默认驱动6个虚拟终端

    ctrl+alt+f{1,2,,,6}

图形终端://可以启动多个

    Centos 6:

     ctrl+ALT+F7 //图形终端

    centos 7:

在哪个虚拟终端启动,即位于哪个虚拟终端

    串行终端{ttys}:

    伪终端{pty}:例如通过ssh,telnet连接近来的

桌面右键:Konsole也是伪终端

4.linux的哲学思想之一:一切皆文件

表现之一:硬件设备也通过文件表示

物理终端:/dev/console

虚拟终端:/dev/tty{1-6}

图形终端:tty7

串行终端:/dev/ttyS#

伪终端:/dev/pts/#{xshell,右键}   //#代表一个数字

tty //查看自己使用的tty

注意:在启动设备之后,在其上关联一个用户接口程序

即可实现与用户交互

启动GUI:startx

-------------

|1|2|3|....   //应用程序,其中shell是必须的

-----------

|库       |     //有的程序,不调用库,直接交互内核

----------------|

|内核           |

----------------|

|硬件           |

-----------------

//用户通过shell去管理其他程序

shell{库{内核{硬件}}}

5.[root@MT ~]#   //prompt:提示符

~ 用户家目录 //工作{current,working}目录

root 主机名

MT  主机名

# 管理员

$ 普通用户

建议使用非管理账号登录,然后切换

echo $PS1 //查看命令提示符

ctrl +c //终止

//命令写完了,但是不想执行该命令,也可以使用ctrl+C

6.常见命令

systemtl poweroff //CentOS 7的命令

poweroff //断电

systemctl reboot

reboot

shutdown

halt

自由:

自由学习和修改:自由使用:自由分发:自由创建延伸板

debian之后又ubuntu,RHEL之后有CentOS,但是无能为力因为GPL

Linux的哲学思想:

1.一切皆文件

把所有的资源统统抽象为文件形式,包括硬件设备,甚至通信接口等

对文件的操作:open(),read(),write(),close(),delete(),create()

2.由众多功能单一的程序组成:一个程序只做一件事,并且做好

组合小程序,完成复杂任务

3.尽量避免和用户交互

目标:易于以编程的方式实现自动化任务

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

7.文件是什么,众多文件如何有效组织起来

目录:路径映射

文件:磁盘上的一段数据流 对数据可以做到按名存取 //右边界

文件系统:由目录映射的各种路径,是一种层级结构,有索引

/dev/pts/2  //一级一级映射的关系,所有的文件都从属于 /

/   原始起点:根目录

第二层:子目录,

第三层:

倒置的树状结构

文件系统:层级结构,有索引

/dev/pts/2

最左侧/:表示根目录

其他的/:表示路径分隔符

linux的路径分隔符 /

windows的分隔符  \

文件的路径表示:

绝对路径:从跟开始

相对路径:从当前位置开始 

./当前目录

../ 父目录

pwd 查看路径

dirname 查看文件的绝对路径

basename 查看文件的名字

用户的家目录:

用户的起始目录:普通用户管理文件的位置

工作目录:随时变化

/etc/sysconfig/network-scripts/ifcfg-eno16777736 

basename:ifcfg-eno16777736

dirname: /etc/sysconfig/network-scripts

小结:

1.物理终端console,图形终端tty7,伪终端pts,虚拟终端tty1-6,串行终端ttyS

2.dirname,basename

3.pwd

6.开源协议:

GPL,LGPL,BSD,Apache

代码的共产主义运动

BSD:

1.如果二次发布的产品中包含源代码,则在源代码中必须带有原来的

代码中的BSD协定

2.如果二次发布产品是二进制格式的,库或者程序,则需要在

发布的文档或者版权声明中,说明包含原来的代码中的BSD协定

3.不可以用开源代码作者或组织,以及保护的产品的名字做市场推广

文件系统、文件,目录:

倒置的树桩结构

目录:

文件:

文件名:严格区分大小写,路径分隔符 /

路径:

绝对路径:从跟开始

相对路径:从当前位置开始

程序的组成部分:二进制文件,库文件,帮助文件,配置文件,

二进制、库文件:可执行文件

//库文件,只能在被调用的时候执行。

配置文件,帮助文件:可被查看其内容的文件

人机交互界面:

GUI:

CLI:

{logi@hostname workdir}#

Linux的基础知识:

命令的语法通用格式:

COMMAND OPTIONS ARGUMENTS

命令:发起一个命令,请求内核将某个二进制程序运行为一个进程

程序:-->进程

静态:-->动态(有生命周期)

命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用库文件,有可能会调用共享库文件

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

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

特权命令:/sbin,/usr/sbin,/usr/local/sbin

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

32bit库,64bit库

命令必须遵循特定的规范,格式规范

.exe,.si,ELF(Linux)

file /bin/ls   //查看遵循的命令格式

注意:并非所有的命令,都有一个在某目与之对应的可执行程序文件

命令分类:

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

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

1.PATH变量

shell程序是一个独特的程序:负责解析用户提供的命令

环境变量:PATH //自左往右,找到就挺停

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

查看命令类型:

type type //查看是否为内置命令

which type //找不到路径,因为他是shell内置的命令

2.OPTIONS :指定命令的运行特性

ls -l /var/

选项的两种表现形式:

短选项:- //可以合并

例如:-l,-d

长选项:-- //不可合并

例如:--help,--human-readable

注意:有些选项可以带参数,此称为选项参数

短选项的参数:一般空格分割

长选项:一般 = 等于

如果同一命令同时使用多个短选项,多数可合并:-l,-d

ls -l -d /var

ls  -ld /var 

3.arguments

命令的作用对象:

注意:不同的命令的参数,有些命令可同时带多个参数

多个之间以空白符分割

例如: ls -ld /var  /etc


7.获取命令的使用帮助(man)

内部命令:内建命令

help COMMMAND //help type 

//修改LANG可以修改帮助信息

外部命令:

(1) 命令自带简要格式的帮助

COMMAND  --help //ls --help 

(2) 使用手册

位置:/usr/share/man

man 命令即可

whatis  localectl //查看该文件的帮助信息

SECTION:

NAME:功能说明

SYNOPSIS:语法格式

DESCRIPTION:描述

OPTIONS:选项

EXAMPLES:使用示例

AUTHOR:作者

BUGS:报告程序bug的方式

SEE ALSO:参考

...

SYNOPSIS:语法格式

[] 可选内容

《 》 必须提供的内容//小于和大于

a|b|c  多选一

...同类内容可出现多个

{} 辅助性的标识

使用手册:压缩格式的文件,有章节之分;

/usr/share/man 

man1,man2

1:用户命令,普通用户可以运行的命令

2:系统调用,

3:C库调用

4:设备文件及特殊文件

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

6:游戏使用帮助

7:杂项

8:管理工具及守护进程

       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] ///内核例行公式,惯例

注意:并非每个COMMAND在所有章节下都有手册

whatis  COMMAND //查看帮助章节

whatis :是查询数据库进行的

makewhatis  //更新数据库

mandb //在centos7上更新,man数据库

5.man命令打开手册之后的操作方法

翻屏:

空格  b //一个屏幕,上下

ctrl + d 向尾部翻半屏

ctrl + u 回翻 

回车 或者 j:一行

k:向上

G:最后一行

3G:跳转到指定行

文本搜索:

/keyword  向下搜索,当前位置,不区分大小写

?keyword  向上搜索,当年位置,无大小写

n :与 查找命令方向相同

N:与查找命令方向相反

man -M /PATH/TO/SOMEWHERE :到指定目录下去查看命令手册并打开之

6.info COMMAND

获取命令的在线文档

7.很多应用程序会自带帮助文档:

/usr/share/doc/APP-VERSION 

README:程序的相关的信息

INSTALL:安装帮助

CHANGES:程序随着版本更新,发生的改变

8.官方文档

主流发行版官方文档

http://www.redhat.com/doc

9.程序官方的文档

官方站点上的“Document ”

Google

centos filetype:pdf //查看所有的pdf文档

10.搜索引擎:

google

zabbix site:baidu.com

zabbix  filetype:pdf


书籍的出版社:

O‘Reiley

Wrox

机械工业出版社、电子工业、人邮、清华大学、水利水电

写书要像老外一样具有责任感:

8、google的高级用法

1.centos filetype:pdf,ps,dwf, kml, kmz, doc,xls,ppt,rtf,swf,all(所有上面的文档格式)。

2.大熊猫  -百科  //空格 -排除关键词

3.大熊猫  +百科  //必须出现

4.~搜索  //类似搜索

5.国家*匹夫* //统配

6.奥运会 2014 OR 2016 //或者and,or,not

7.手机 价格2000..5000 

搜索结果中会出现价格是2000元至5000元的手机相关信息

8.zabbix site:baidu.com

9.视频教程 inurl:video  //在URL中出现video

10.出国留学 intitle:美国 //在网页标题中出现

11.related:baidu.com //和百度相关的网站

小结:

1.BSD随便商用,得说是BSD的,但是不能说我的名字

2.帮助 //  whatis ls ;makedb 更新数据库

help 内建命令

--help

man COMMAND

info COMMAND //在线帮助文档

/usr/share/doc

该软件的在线帮助信息

google

3.打开手册之后的使用方法

整个屏幕:空格| b

半个屏幕:ctrl + d/u

一行:j/k

定行:#G

4.google的高级用法

aa +/-

fietype:pdf

zabbix 论文 or 设计


Linux入门(二)