两个接口:
ABI:Application Binary Interface (不可跨平台,针对特定平台生成的二进制)
API:Application Programming Interface (跨平台可移植,源代码)
linux内核:The Linux Kernel Archives
指令运行的模式:
用户空间:user space,us
内核空间:system space
CPU指令:有普通指令和特权指令,特权指令只能由内核空间使用
计算机结构:硬件——>操作系统(内核)——>库文件——>应用程序
硬件之上,是操作系统,linux中一般叫内核,内核对硬件进行抽象,对上层提供使用接口,这个接口叫做系统调用(system call),这个调用还是太底层,即使用还是不太方便,便有了对系统调用的再次封装,形成库,应用程序可以基于库文件进行编程,也可以直接基于系统调用编程。应用程序对特权指令的使用,只能通过调用系统调用接口,由内核执行。
运行程序格式:
Windows: EXE,dll(dynamic link library)
linux: ELF,so(shared object) Executable and Linkable Format
编程语言:
汇编语言:微码编程,系统中与硬件相关的特有代码、驱动程序开发等
高级语言C/C++:系统级应用,如操作系统、驱动程序、大型数据库等
高级语言Java、python等:应用程序
Linux的发行版:
slackware:——>suse ——>opensuse
debian:——>ubuntu ——>mint
redhat:
——>rhel:redhat enterprise linux
——>fedora:
——>centos:
ArchLinux:
Gentoo:
LFS:linux From scratch
程序包管理器:
rpm:RHEL,Fedora、S.u.S.E,CentOS
dpt:Debian,Ubuntu
Linux哲学思想:
1、一切皆文件:几乎所有资源,包括硬件设备都组织为文件格式
2、由众多单一目的小程序组成,一个程序只实现一个功能,而且要做好。组合小程序完成复杂任务。
3、尽量避免跟用户交互;目标:实现脚本编程,以自动完成某些功能
4、使用纯文本文件保存配置信息;目标:使用一款文本编辑器即能完成系统配置工作
获取CentOS发行版:
http://mirrors.163.com/ 网易开源镜像站
https://developer.aliyun.com/mirror/ 阿里巴巴开源镜像站
http://mirrors.sohu.com/ 搜狐开源镜像站
登录Linux:
root/passwd
# startx & 启动图形界面
终端:用户与主机交互,必然用到的设备。
历史渊源:大型机时,主机很贵,不可能人手一台,所以主机提供了分屏器,有很多接口,一个接口可以连接上显示器和键盘,这个就像一个人完全独占主机一样。这就是终端。
物理终端:直接接入本机的显示器和键盘设备,也叫:console,控制台。/dev/console
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6默认启动6个虚拟终端。使用:Ctrl+Alt+F1~F6,默认系统启动后使用1号虚拟终端。设备文件路径:/dev/tty# [1,6]
图形终端:Ctrl+Alt+F7
模拟终端:在图形终端中打开的命令行接口(终端),基于ssh协议或telnet协议等远程打开的界面。设备文件:/dev/pts/# [0,无穷大]
查看当前的终端设备:tty
交互式接口:启动终端后,在终端设备附加一个交互式应用程序:
GUI:X Protocol,window manager,desktop
Desktop:GNOME(C,gtk);KDE(C++,qt);XFCE(轻量级桌面)
CLI:shell程序:sh(bourn)、bash(bourn again shell)、csh、ksh(Korn)、tcsh、zsh
查看shell:echo $SHELL
显示当前系统使用的所有hell:cat /etc/shells
命令提示符:echo $PS1
prompt :管理员:# ; 普通用户:$
命令:输入命令,回车 —— 提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来;表现为一个进程。
查找命令对应的程序:which CMD,如which ls,或者whereis CMD,如whereis ls
在shell中可执行的命令有两类:
内建命令:由shell自带的,而且通过某命令形式提供;
外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件;
区别内部或外部命令使用:# type CMD
运行命令:命令格式:COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启动或关闭命令的某个或某些功能;
短选项: -c ,如-l ,-h 可以合并,如-lh;
长选项: --word ,如: --long, --human-readable
参数:命令的作用对象,向命令提供数据
注意:多选项,以及多参数和命令之间都应该使用空白字符分隔;取消命令执行:Ctrl+C
文件系统:
c:\program files\office11\word\word.exe ,Windows系统的文件路径,
/etc/sysconfig/networl-scripts/ifcfg-eth0,Linux系统的文件路径,
文件有两类数据:
元数据:metadata,如文件的大小,位置,属主,创建时间等
数据:data,具体文件中的内容
1、文件名严格区分字符大小写;
2、文件名可以使用除/以外的任意字符,不建议使用特殊字符; / :根目录,路径分隔符
3、文件名长度最长不能超过255个字符;
4、所有以点(.)开头的文件,均为隐藏文件;
路径:
绝对路径:从根目录起始的路径,Linux是从/,即根开始的路径,windows是从c:\或d:\等开始的路径,所以Linux的根只有一个,而windows有很多。
相对路径:从当前位置起始的路径。登录系统必定有一个工作的目录(working directory)即当前的目录(current directory),使用pwd(printing working directory)查看。
当前位置的表示方式:
(1)./ : ./sysconfig/network-scripts
(2)省略./符号:sysconfig/network-scripts
.. :两个点,表示当前目录的上级目录,即父目录
命令: ls 、cd、type、tty、cat、which、whereis、pwd、echo
(1)文件系统相关:目录管理、文件管理、 文件查看、 文件编辑
(2)系统管理相关:
Linux命令帮助的获取
格式:COMMAND [OPTIONS...] [ARGUMENTS...]
外部命令:都有一个可执行程序,位于文件系统某目录下,使用which,whereis看这个路径
命令是如何运行的呢?shell程序搜索这个可执行程序,搜索是按照$PATH环境变量中的路径,从左至右依次查找的,找到第一个则停止: echo $PATH
内部命令:help COMMAND
外部命令:
(1)# COMMAND --help ; # COMMAND -h
(2)使用手册(manual):# man COMMAND
(3)信息页: # info COMMAND
(4)程序自身的帮助文档:README、INSTALL、ChangeLog
(5)程序官方文档
(6)发行版的官方文档
(7)搜索
内部命令帮助:
help COMMAND
hash :内部命令,查看其帮助:help hash,内部命令不要使用man,因为man列出的是bash的帮助。
关于hash:Remember or display program locations.
shell搜寻到的外部命令的路径结果会缓存至kv(key-value)存储中;
副作用,如果命令对应的文件被移到其他位置,缓存中还有的话,再运行会出错。此时需要清缓存。
history命令:管理和显示命令的历史
当前home目录有.bash_history隐藏文件,即~/.bash_history,登录进shell后新执行的命令只会记录在缓存中,当登出时,所有命令历史会追加保存在此文件;
选项:
-a:追加本次会话新执行的命令历史列表至历史文件中;
-d:删除历史中指定的命令;
-c:清空命令历史
快捷操作:
!#(#为历史中的编号);
!string:调用历史中最近一个以string开头的命令,
!!:重复执行上一次命令
外部命令帮助获取:
(1)COMMAND --help
(2)man COMMAND
/usr/share/man目录下保存帮助手册,有man1..man8,这是文档的章节
使用whatis,可查看命令有几个章节帮助,可以使用man # CMD来指定看第几章节
man1:用户命令;man2:系统调用;man3:C库调用;man4:设备文件及特殊文件; man5:配置文件格式; man6:游戏; man7:杂项; man8:管理类的命令;
man命令的配置文件:/etc/man.config
MANPATH /PATH/TO/SOMEWHERE:指明新的手册文件搜索位置
# man -M /PATH/TO/SOMEWHERE COMMAND : 到指定位置下搜索COMMAND的帮助手册。
man命令的操作方法:
Space、^f、^V、^F:向文件尾翻屏;
b、^B:向文件首部翻屏;
d、^D:向文件尾翻半屏;
u、^U:向文件首部翻半屏;
RETURN、^N、e、^E、j、^J:向文件尾部翻一行;
y、^Y、^P、k、^K:向文件首部翻一行;
p、<、%、1g:直接到文件首部;
G、>、:直接到文件尾部;
#:跳转至本屏第#行,即从本屏第一行向下#行;
q:退出
文本搜索: /KEWYWORD :
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索,不区分大小写; n :跟搜索命令同方向,下一个;N:跟搜索方向反方向,上一个;
程序的自身帮助文档:/usr/share/doc/COMMAND-VERSION
命令小结汇总:
一些重要的位置、文件及环境变量: