学习资源来自:www.magedu.com
学习记录过程中难免出现错误,如有发现,还望大神们指出。
Linux基础知识:
应用程序相关知识:
程序启动的方式有两种,后台自动启动(后台服务),按需启动(交互式程序)
应用程序接收信息的过程:敲击键盘时,首先接收到信息的是cpu,cpu并不知道接收到的信息的意思,
接着cpu通知内核对接收到的信息进行处理,再由内核将接收到的信息转交给相应的应用程序。
(按需启动如何指挥计算机启动某个程序以及如何让操作系统内核接收用户的命令?要完成这些操作,
必须给操作系统以及它所提供的所有应用程序提供一个特殊的应用程序――shell。)
shell:人机交互接口
shell是整个操作系统的外壳,能够实现接收、理解用户指令并将指令传输给内核,使得内核能够
指挥这个微程序启动。
shell类型:图形用户界面(GUI),命令行界面(CLI)
GUI:Graphic User Interface ―― 图形用户界面
Windows(Windows桌面)
X-Window(Linux桌面)
Gnome:由c编写的
KDE:由c++编写的
Xfce:简洁的适合用在嵌入式平台上的轻量级的桌面系统。
CLI:Command Line Interface ―― 命令行界面
sh(最初的)
bash
csh
ksh
zsh
tcsh
如何执行程序:
GUI接口:双击图标
CLI接口(bash(shell)――默认):
命令提示符:prompt―― 表示允许输入命令
表现形式:
#:root(管理员)
$:普通用户
Linux的基本原则:
1、由目的单一的小程序组成:复杂任务由小程序组合完成。
2、一切皆文件
3、尽量避免捕获用户接口;
4、配置文件保存为纯文本格式;
IDE(通用称呼):程序员开发程序时使用的集成开发环境
库文件:
windows:DLL――Dynamic Link Library(动态链接库)
linux:.so――shared object(共享对象)
使用凭证:验证使用者的身份
login:用户名――操作系统识别用户靠的是用户的ID(计算机识别数字的速度要比字符快)
认证机制:Authentication(鉴别用户就是他所声称的那个人的机制)――密码、指纹……
授权:Authorization ―― 资源访问的授权
审计:Audition(日志)―― 记录用户操作
Linux虚拟终端(terminal):Ctrl+Alt+F1~F6 ―― (Redhat)
默认开机进入命令行界面前提下,第一次进入图形界面需在命令行输入:startx &
之后需要进入图形界面可用:Ctrl+Alt+F7
图形界面下执行命令:右键 --> Open teminal(模拟终端)
命令:命令提示符 命令 选项(修改命令的执行特性) 参数(多个参数彼此间用空格隔开)
命令格式:# command options… arguments…
选项(有些选项可以带参数):
(选项组合:-a -b = -ab)
短选项(可以组合):-
长选项(通常不能组合):--
参数:命令的作用对象
执行命令(先不考虑授权的问题):当我们在命令提示符下键入一个命令并回车时,这个执行程序就会
由bash提交给内核,内核接着就会检查执行程序的魔数,看它是否是一个可执行程序,满足条件就运行
程序,否则拒绝运行。
magic number(shebang):魔数(标示二进制程序的执行格式)―― windows和linux的魔数不同
#!/bin/bash( “#!” 就是linux的魔数 )
如何实现用户切换:su(switch user)
假设已存在用户:root, student, vistor
# su -l 用户名 ―― -l可省略
# su -l student
部分切换: 省略-l
完全切换: 添加-l
退出:exit
密码:
修改密码:# passwd
密码复杂性规则
1、需要使用至少三种字符(数字,小写字母,大写字母,特殊字符)
2、要足够长,大于7位
3、使用随机字符串
4、需要定期更换
5、更换密码的循环周期要足够大
假设密码为6位,不同的组合下,密码的复杂度比较:
全是数字:10^6
加小写字母:36^6
加大写字母:62^6
列表(list): ls――列出指定路径下的所有目录或文件
目录:实质是路径映射文件,
working directory, current directory ―― 工作目录、当前目录
目录结构:倒树状――能分叉的节点为目录――不能分叉的节点为文件
路径(相对,绝对):从指定起始点到目的地所经过的位置 ―― 用于实现层次化文件管理机制
文件系统:file system (层次化文件管理机制)
环境变量(简化命令――不用每个命令都输入路径):变量是命名的内存空间
变量赋值:Name = Jerry ―― 往内存中放入数据
printenv:显示环境变量
PATH:使用冒号分隔的一堆路径
当系统执行命令时,命令的路径先通过缓冲进行查找,查找不到再通过PATH按次序进行查找。因此第一
次执行某条命令时,将通过PATH查找路径,查找成功后,该命令的路径将被存入缓存,同样的命令再次
执行时则不必通过PATH进行查找,通过缓存就可以完成查找了。
hash(缓存 ―― 实现系统加速):使用哈希列表记录此前使用过的命令的路径。
哈希表:以键值库方式保持命令路径,在键值库中查找命令路径的速度是O(1)。
O(1):无论队列多长,从中查找任意数据的速度都是一样的
Linux常用命令:
pwd:Print Working Directory ――显示当前工作目录
ls(选项和参数默认)
-l:长格式(显示内容如下)
文件类型(占1位):
-:普通文件(f)
d:目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:符号链接文件(symbolic link file)
p:命令管道(pipe)
s:套接字文件(socket)
文件权限(占9位):分为三组分别表示属主、属组、其它的权限,每一组含:rwx(读,写,执行),
例如:rw-(表示能读、能写、不能执行)
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),默认单位是字节
时间戳(timestamp)――有三个:显示最近一次被修改的时间。
访问:access
修改:modify,改变文件的内容
改变:change, metadata, 改变文件的属性(元数据)
文件名
-h:做单位转换,默认B,转换为KB……
-a:显示以.开头的隐藏文件(linux中隐藏文件以点号开头)
.:表示当前目录
..:表示当前目录的上一级目录
-A:显示除. .. 以外的隐藏文件
-d:显示目录自身属性
-i:index node,inode 显示文件的索引节点号――计算机识别每个文件的唯一标识符
-r:逆序显示
-R:递归(recursive)显示(递归显示目录)――目录、子目录……
cd: change directory 切换当前目录
家目录,主目录,home directory ―― 波浪线表示([root @lab ~] )
cd ~username: 进入指定用户的家目录
cd -:在当前目录和前一次所在的目录之间切换
type:显示指定命令属于哪种类型
命令类型:
内置命令:shell内置的实现某些管理功能的命令。
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
date:系统时间管理(显示、修改时间)命令
linux在开机时通过rtc读取时间(硬件时钟时间),一旦读取成功,就不再使用这个时间,以后操作系
统的内核会通过软件的方式模拟震荡器,在系统内部来维持一个时钟(系统时钟)
Linux:rtc(实时时钟 real time clock)――硬件时钟时间――clock/hwclock
系统时钟――date
date命令的使用:
date 0226104913.30 设置系统时间2月26号10:49:30 13年
date +%D 显示月/日/年
date +"This year is %Y" 显示This year is 年
date +"Today is %d" 显示今天是哪一天
date +"This year is %Y %n Today is %d" 分两行显示
date +%T 显示小时 分钟 秒
date +%F 显示年-月-日 date +%Y-%m-%d
date +%H:%M 显示小时:分钟
date +%s Linux时间计时法 ―― 从1970-1-1 0:0:0 到现在所经过的时间(不包括今天)
hwclock命令的使用:
系统时间是对的,硬件时间是错的,要将系统时间同步到硬件时间:hwclock -w
系统时间是错的,硬件时间是对的,读取硬件时间到系统时间来:hwclock -s
获得命令使用帮助的方法:
内部命令:
help COMMAND
外部命令:
COMMAND --help
命令手册(公用的命令帮助方法):manual
man COMMAND ―― 对于内部命令而言,显示的是这个内部命令所属的shell手册,因此
内部命令一般使用help查看帮助。
man章节:
whatis COMMAND:用于查看命令的章节
在man后面添加数字可以指定要查看的章节。
1:用户命令(/bin, /user/bin, /user/local/bin)
2:系统调用
3:库调用
4:特殊文件(设备文件)―― 作为设备的访问入口存在的
5: 文件格式(解释配置文件的语法)
6: 游戏
7:杂项(Miscellaneous):不便归类的命令
8:管理命令(/sbin, /user/sbin, /user/local/sbin):管理员才有权限使用的命令
手册中的符号含义:
[]:中括号括起来的表示可省略――可选
<>:表示必须给出的――必选
…:表示可以出现多个
|:多选一(或)
{}:分组
MAN手册中的内容:
NAME:命令名称及功能简要说明
SYNOPSIS:用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS:说明每一个选项的意义
FILES:与此命令相关的配置文件
BUGS:报告bug给谁
EXAMPLES: 使用示例
SEE ALSO:另外参照
手册翻屏:
向后翻一屏:SPACE
向前翻一屏:b
向后翻一行:ENTER
向前翻一行:k
查找(默认不区分大小写):
/KEYWORD:向后搜索
n:下一个
N:前一个
?KEYWORD:向前搜索
n:下一个
N:前一个
退出:q
man命令的使用示例:
man ls
man cd
man ls
man read
man 2 read
export LANG=en
man 2 read
man mount
whatis read
whatis ls
man 4 tty
cat /etc/passwd
man passwd
man 5 passwd
man man
man date
man mount
man ls
在线文档:info COMMAND ―― 例如:info ls
文档:/usr/share/doc
示例:cd /usr/share/doc
ls
google
cal(日历):calendar
cal:显示本月月历
cal 2015:显示年历
cal 12 2015:显示2015年12月日历
echo(默认有换行符):内部命令,显示一行文本
echo -e "This year is 2015.\nToday is 20" ―― \n表示换行显示
\b:后退一格
\t:制表符(8个空格)
\v:纵向制表
-n:去除换行符
printf(默认没有换行符):格式化并显示数据
示例:printf "The year is 2015.\nToday is 20.\n"