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.[[email protected] ~]# //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:
{[email protected] 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 ”
centos filetype:pdf //查看所有的pdf文档
10.搜索引擎:
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
该软件的在线帮助信息
3.打开手册之后的使用方法
整个屏幕:空格| b
半个屏幕:ctrl + d/u
一行:j/k
定行:#G
4.google的高级用法
aa +/-
fietype:pdf
zabbix 论文 or 设计