总结现学的所有命令(RH033),以及相关概念。(一)
	 注:所有的命令都用"【COMMAND】"的形式捕捉,查找相关命令的时候请用【?】的形式查找。方便准确。
	=============================================================
	【Linux】的【哲学思想】:
	1.一切皆文件
	2.Linux主要由短小,且目的单一的程序组成(所以一个命令一般只干一件事)
	3.将多个短小的程序串联起来可以完成复杂的任务
	4.尽量避免捕获用户接口(尽量避免跟用户进行接触,从发起-->回车,全自动,不需要用户再操作)
	5.通过文件保存软件的配置信息(只需要一个简单的文本编辑器就可以操作整个系统)
	=============================================================
	【locale】命令:查看所支持的语言编码
	locale -a 可以查看Linuxs所支持的所有语言的编码方式
	-------------------------------------------------------
	用【who】命令可以查看都有谁在。
	用【tty】命令,可以看当前登录的是什么终端。
	用“startx”+“& 这个命令会在F7对应的位置上启动一个图形化的工作按钮
	用 startx -- :1 :1表示第一个图形化屏幕
	startx -- :2 这样的命令可以启动多个其他的图形界面
	-------------------------------------------------------
	按着shift+pg up 或者pg down可以实现上下翻屏,查看其他的内容
	按Ctrl+Shift+C进行复制,
	粘贴时是Ctrl+Shift+V
	-------------------------------------------------------
	在etc下的【inittab】文件,右键,使用文本编辑器
	更改为id:3就会在启动时变成字符界面
	-------------------------------------------------------
	【全局有效】的配置文件:
	/etc/profile ,
	/etc/profile.d/* ,
	/etc/bashrc
	【局部有效】的配置文件们:
	~/.bash_profile
	~/.bashre,
	~/.bash_.logout
	这些文件分两类,
	1是profile类
	通常是用来设置环境变量的。
	用来运行一些命令的(用户登录时要执行的命令)
	2是bashrc类
	一般来讲是用来设置别名的
	用于设置本地变量
	shell对用户来讲,分为两大类。
	1 交互式登录式shell ,以一个用户的身份登陆进去,你可以在这里面输入命令的这种登录
	【读取次序】:(越靠后优先级越高)
	/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
	2.非登录式shell :当一个脚本系统能开机自动运行的shell
	【运行次序】:
	~/.bashrc --> /etc/bashrc --> /etc/profile.d/*
	-------------------------------------------------------
	【如何使修改后的登录设置立即有效】?
	使用【source】 命令,重读一下配置文件
	source /etc/profile
	使用“【.】” 命令,重读一下配置文件
	其实 . = source
	比如 . /etc/profile
	不建议使用source ,会影响到其他变量的使用。
	-------------------------------------------------------
	如何实现【用户管理】
	1.什么是用户 【User】 :
	是一个使用者获取系统资源的凭证,是权限的结合,为了识别界定每一个用户所能访问的资源及其服务的。只是一种凭证。会有一个表示数字,计算机会首先跟这个数字相匹配。ID号。一般来讲用户名是公开的。
	还要有个一个验证机制,来验证用户就是那个它所声称的那个人。(密码其实是最不可靠的方法)
	2.什么是组 【Group】 :
	一个组,可以识别是一个权限的集合,而且任何加入这个组的人都自动拥有这个组的权限。计算机靠GID(组ID)来识别.
	一个用户组也是有密码的。一般的用户不能随便加入某个组中,需要用管理员协助。密码的作用是让一个没有管理权限的用户临时的加入某组
	组分成两种组:(linux下任何一个用户必然会属于某一个组,即便没有分组,系统也会给你分一个跟你同名的组)
	1.私有组:这个里面只有一个用户,而且这个用户名跟组名同名。也叫用户的基本组
	2.公共组 : 也叫共有组。也叫用户的额外组,或者附加组。
	一个用户可以同时拥有多个组。
	UID,GID:其实是保存为无符号十进制数,用十六位二进制表示,0~65535
	UID, GID和UID的编号相同
	管理员的ID号,永远为 0 (root)
	id 命令+ 用户 ,可以查看用户的id以及组。
	1-499 :属于系统用户,让某个程序运行的时候能以某个用户的身份运行。
	500-65534:普通用户
	65535:Nobody特殊用户(也有可能是65536则,溢出,则为-1,相当于Guest,来宾账号)
	
	3.什么是【权限】 【Permission】
	安全上下文:Secure Context
	一个进程发起的时候,这个进程所具有的权限,而一个进程所具有的权限跟用户所具有的权限是相关联的。
	-rw--r-w--
	r w x - t : - 为没有权限, r是读,w是写,x是执行。 t\
	每三个是一组
	第一组,属主 rwx
	第二组,属组 rwx
	第三组,其他人的权限 rwx
	文件中包含,
	读 r : cat ,more,查看
	写 w : 编辑文件
	执行 x :能让文件运行起来的权限,默认普通文件都不具有执行权限
	目录中
	读 : ls,查看
	写 :能够删除文件,新建文件.
	执行 : 能够 cd进去 ls -l 来查看的权限
	--- : 000 0
	--x : 001 1
	-w- : 010 2
	-wx : 011 3
	r-- : 100 4
	r-x : 101 5
	rw- : 110 6
	rwx : 111 7
	-------------------------------------------------------
	Linux的文件类型:
	1.普通文件
	开头用 “-”表示的
	2.目录文件
	开头用“d”表示的
	3.符号链接文件(软连接文件)
	开头用“l”表示
	4.设备文件
	块设备,用 d 表示。按照随机存取。通常一次存取一个块。(硬盘)
	字符设备,用 c 表示,通常按照线性(有顺序)的方式进行存储,一次存取的一个单位是字节。比如键盘,鼠标显示器等。字符存储是串行的。
	5.套接字文件
	开头用 "s" 表示
	6.命令管道文件
	开头用“p” 表示
	-------------------------------------------------------
	【passwd信息】
	-rw-r—r-- 1 root root 0 07-18 22:39 1.txt
	第一段:文件属性+后面9个字符,表示权限信息,每3位为一组。
	第二段:数字,表示为当前文件被 硬链接 的次数,一般目录是2次,普通文件是1次
	第三段:属主
	第四段:属组
	第五段:文件大小
	dev文件下没有文件大小,是主设备号,和次设备号
	第六段:是时间,文件最后一次被修改的时间。
	第七段:文件的名称
	-------------------------------------------------------
	Linux常见的1级目录,作用以及功能。
	/bin: binary 二进制目录,放的都是命令文件,二进制文件
	/sbin : 管理命令 super bin 只有root权限才拥有的命令。
	/boot : 引导目录,里面放的是系统引导文件,一般放 内核,grub,驱动映射关系表,initrd(ramdesk)。这里面任何一个文件的损坏都可能导致不能启动
	/dev : device,设备文件目录,也叫特殊文件目录(因为这些文件都没有大小, 都为空,但却是访问设备的必备文件)
	/etc : 配置文件目录,Linux把所有的配置信息都用文本文件保存,这个目录就是用来保存这些文件的。
	/home :普通用户的家目录。任何用户都在,用户登录进来之后默认就储存的目录
	/home/USERNAME
	/lib : library 库文件目录,库文件是没有程序入口的,只能被其他程序调用的二进制文件。
	/media, /mnt : 这是额外文件系统的挂载目录 (目录和当前目录关联的过程,就叫挂载的过程)
	/misc :杂项,被动目录
	/opt : 可选的,可选目录,一般作为第三方软件安装位置的目录。
	/proc : 伪目录,假的,这是内核映像的映射,我们可以通过这个目录,跟内核中正在运行的参数打交道。调优的时候要跟这个目录打交道。
	/selinux : 安全加强linux的目录
	/srv : 跟特定的服务器软件相关,服务器软件运行时所产生的数据文件,运行时临时产生的文件。
	/sys : system 内核中硬件信息的映射,其实也是伪目录,比如磁盘的参数信息,键盘参数信息。调优的时候要跟这个目录打交道。
	/tmp : 临时文件目录,这个目录的文件通常每隔30天
	/usr : 第三方软件,用户安装的软件,所生成的文件,都在这个目录下, 帮助文档信息等等。
	/var : 经常发生变化的文件所在的目录,如:用户的邮件队列,临时的缓冲地址,日志文件,打印队列,锁文件等等。
	-------------------------------------------------------
	【用户信息】 "gentoo:x:503:503::/home/gentoo:/bin/bash"
	用冒号分出了7段
	第一段:用户名
	第二段:x (密码),告诉你加密放在了另一段
	第三段:UID号
	第四段:GID(是用户所属的基本组的ID号,私有组)
	第五段:用户的全名(注释信息,COMMENT信息)可以为空
	第六段:用户的家目录
	第七段:用户默认使用的Shell,默认使用Bash。在/bin下
/etc/shells目录下可以显示出所有可以允许用户使用的的shell
	【用户密码】,Linux 下默认必须有密码,保存在、/etc/shadow
	当加入用户之后会有一行:
	student:$1$8kkXoZno$naC13rWnhoKfcMyiZr5qy9/:15172:0:99999:7: : :
	第一段:登录名
	第二段:加密后的密码(经过MD5散列加密的密码)
	加密的方式:对称加密
	公钥加密
	单项加密 (主要目的在于提取数据的特征值,拿到一段数据可以提取这个数据的特征码。)
	特点有:1.单项
	2.雪崩效应(不管密码有多长,只要初始条件有一点点改动,结果将有巨大的变化)
	3.定长输出(无论你输入有多长,而加密有的结果都是一样的。)
	经常用的单项加密是
	MD5(128bit定长输出) , sha1(160bit定长输出)
	用户密码为“!!”指没有密码
	“ $1$8kkXoZno$naC13rWnhoKfcMyiZr5qy9/ ”
	$1(代表是MD5算法)$杂质(盐)$内容
	第三段:最近一次修改密码的时间(天数,从1970年1月1日起,到上一次修改时间的天数。)
	第四段:密码最短使用期限(天数,相对于上一次密码修改后的天数)
	第五段:密码最长使用期限,密码过期时间(天数)
	第六段:提前多少天提示用户密码快要过期了(天数)
	第七段:密码过期几天之后账号将被禁用(天数),如果已经即将过期,系统会强制让用户修改密码,否则不能登录
	第八段:用户账号使用期限(天数,绝对时间,能让你使用到从1970年1月1日之后多少天。默认是99999)
	第八段:保留。
	-------------------------------------------------------
	如何使用【BASH】:
	已经遇到的功能:history
	!$ ,Alt+. , Esc+.
	融合了 ksh,csh的优势遵循GPL的shell
	1. 命令行编辑功能:
	Ctrl+a : 直接跳到命令行的行首
	Ctrl+e:直接跳到命令行的行尾
	Ctrl+u:可以删除从光标开始一直到行首的内容
	Ctrl+k:可以删除光标开始处到行尾的内容
	Ctrl+箭头:可以左右一次跳一个单词
	2. 文件名通配:
	让你可以一次性的快速引用多个文件,通配符
	* : 任意长度的任意字符
	比如 ls *.log 就是显示所有.log的文件
	? :任意单个字符,只能匹配一位字符
	[ ] : 匹配指定范围内的任意单个字符。
	比如 [a-z] 则匹配任意一个小写字符
	[abc]匹配任意其中的单个。
	在括号里加
	“^”表示取反
	其他用法:[0-9] [a-zA-Z0-9]
	[:keyword:] : 表示特定字符
	比如 [:lower:] 全是小写字符
	[:alpha:] 所有字母
	[:digit:]所有的数字 0-9
	[:alpnum:]
	[:space:]
	[:punct:]
	[:upper:]
	用man grep 可以查看详细用法
	用法:[[:keyword:]]
	- + : 单目操作符,用来表示正负, 也有别的用法。也可以用来表示加减法运算
	* / % :
	! ~ : 按位取反,取负的
	<< >> : 表示二进制移位的。
	比如:二进制字符串 10100 让往右移一位
	10100 >>
	<=
	>=
	<
	>: 表示比较测试符
	((1)) <= ((10))
	== ; != : 表示等于或者不等于
	& : 按位进行与运算(转换成二进制,然后一个个进行与运算)
	^ : 按位取异或运算
	| :位或
	&& :逻辑或
	|| :逻辑与
	** :次方运算
	比如 A=$[2**3] 表示取 2的 3此方
	id++ :先引用它的值再自加
	++id : 先自加,后引用它的值。
	表达式 ? 表达式1 : 表达式2 简单判断表达式。判断表达式,可以则走表达式1,不可以则表达式2
	表达式1,表达式2: 连接两个表达式
	3. 命令行补全和路径补全
	命令补全:(当你进行命令行补全的时候,他会到某些个特定路径下找一个最佳的跟你的user相匹配的命令并显示出来)
	但是到哪些目录下去找命令呢?
	echo $PATH
	可以看到都有哪些路径
	TAB键:敲击可以补齐
	敲击两次TAB :当有多个时,可以查看都有哪些以这个开头的,相当于CCNA里的 con ?
	路径补全 :(它不会去PATH下去找,而去目录下找。他会到父目录下去找跟你有关的快速补全)
	比如 cd /etc/a ?
	4.括号展开:
	~ :展开为对应用户的家目录。比如 cd ~redhat
	{ } : 他能在命令行展开的时候展开为多个路径。
	创建 x/y x/z x/z/1 x/z/2
	则用:mkdir -pv x/{y,z/{1,2}}
	创建 x/1 x/2 y/1 y/2
	则用 mkdir -pv {x,y}_{1,2} “_”多项式展开 (小学数学?)
	5.命令展开(命令扩展)
	$( ) :把一个命令的执行结果当做参数传递给另一个命令
	` ` :(ESC下的那个键) 跟上面意思是一样的,都表示命令引用
	比如:创建一个月日年小时分钟秒的文件名
	mkdir -pv $(date "+%Y-%m-%d-%H-%M-%S")
	比如:ls -l `which passwd`
	则引用了which passwd命令显示之后的内容。然后将其内容进行 ls
	-------------------------------------------------------
	【回顾系统变量】:
	变量有4种类型:
	1.【本地变量】。对子shell是无效的
	2.【环境变量】。不但对当前shell有效,还对子shell有效的。
	声明的时候一定要用 export 来声明,表示导出一个变量
	export A=3 (直接导出)
	或者
	A=3
	export A
	Bash为用户准备了许多变量,以支持用户来调用
	系统中到底有哪些环境变量呢?
	【export】 不带任何选项的此命令,就能看出现在正在被使用的环境变量。
	DISPLAY="" 用于定义你当前桌面在哪个位置显示,哪个屏幕显示
	HISTSIZE=""命令历史当中可以保存过去多少条命令的 (需要记住的)
	HOME= 用于表示当前用户的家目录的
	HOSTNAME= 用于表示主机名
	LANG= 主机语言
	LOGNAME= 登录到当前用户的用户是
	PATH= 外部命令查找的可执行文件的访问路径
	PWD= 显示当前目录
	OLDPWD= 其实就是 cd - 在上一个目录之间前换
	SHELL= 当前shell
	USER= 当前用户
	PS1= 显示头部文件
	当前环境变量的某些值来替换 \u 用户名 \h主机名 \W 基名 \$ 管理员用# 其他用户用$
	\! 命令在历史行里是第多少条命令
	\t 显示时间
	恢复成原本
	export PS1='[\u@\h \W]\$' (这是原有方式
	特殊标识方法
	'[\033[31m\u\033[0m@\h \W]\]$' 加颜色
	\033其实是一种ASII码,控制颜色的
	【printenv】 显示部分环境变量
	【env】 表示你可以在一个指定的环境下运行某个命令
	3.特殊变量。
	也是Bash内置的变量,
	最著名的变量:$?
	用于表示上一个命令的执行结果,用于看上一个命令是否执行成功了。
	在linux编程中,0 永远表示 上一个命令成功了,如果失败了,会用1-255表示。
	一般来讲,只要是大于0,都是没有执行成功的。但每个错误会有不同的错误返回值。
	4.位置变量。用这个变量本身的位置调用的
	比如$1 $2 $3... . 可以直接向脚本调用参数并应用的
	脚本中
	echo "the first param: $1"
	echo "the 2 param $2"
	echo "the 3 param $3"
	在命令行下 1sh.sh a b c 则直接将a b c 变为 $1 $2 $3
	--------------------------
	扩展:算术运算
	A=2
	A=3
	echo "$[$A+$B]" 则显示结果
	echo "$(($A+$B))" 用$加双括号,也可以显示
	--------------------------
	练习:想命令行传递两个任意整数并算出两个整数的和:
	#!/bin/bash
	echo "The sum is : $[$1+$2]"
	保存,命令行
	./sum.sh 4 5 : 则内部将4直接赋值给$1 ,5赋值给$2 并显示运算结果
	==========================================
	【passwd】 回车就可以改密码了,不需要输入老密码,可以直接改新密码
	作为普通用户来讲,需要输入老密码,然后才能改新密码。
	passwd student 可以改另一个用户的密码。
	-------------------------------------------------------
	【su】 命令 : Switch User
	格式:
	su [option] [arguments]
	不加命令是默认进管理员
	su student 半切换到student目录下
	su -l student 完全进入student用户,或者:
	su - student
	-------------------------------------------------------
	【history】 可以看到你之前所使用过的命令:命令历史。最多保存1000条
	想快速执行之前的可以用↑箭头往上翻。也可以用
	“!n”就可以快速使用那个数字n所代表的命令。
	“!字符串”代表使用命令历史中离你刚输入最近的那条,以这个字符串开头的那个命令
	“!!”用以表示使用上一条命令,就是刚用过的那条命令,重复一遍
	“!-n”用于执行倒数第n条命令。
	history -c :清除历史中的命令。
	【HISTCONTROL】参数:
	ignorespace:忽略以空格开头的命令
	ignoredups:忽略重复的命令
	ignoreboth:空格开头和重复的都忽略
	使用方法:
	export HISTCONTROL=参数
	撤销HISTCONTROL的控制:
	unset HISTCONTROL
	-------------------------------------------------------
	【clear】,清屏
	!$:表示引用上一条命令的最后一个参数
	按住alt+".",也可以直接实现
	按一下ESC,再点“.”号也可以实现引用上一条命令的最后一个参数
	-------------------------------------------------------
	【nano】 命令
	nano /etc/inittab 可以直接打开inittab文件
	进入之后,进入nano编辑器,下方有提示
	O:保存退出
	R :读取文件
	Y:下一个页面
	V:后一个页面
	K:剪切
	U:粘贴
	-------------------------------------------------------
	【ls】命令 ----> list
	用于显示某一个文件的属性,或者某一个目录旗下子目录的属性。
	ls : 显示目录,文件
	ls /etc/inittab 直接显示这个文件
	ls /: 直接显示根下的文件和子目录
	ls /etc 显示文件夹含有的目录
	显示要遵循 FHS 文件结构
	对于任何一个Linux发行版,要遵循Linux 的文件发行规范。
	ls 常用的选项
	-l :显示目录/文件内详细信息。比如 ls-l /etc 则显示etc目录的详细信息
	-h : 将文件信息中的大小变成人类易读的
	-a : 显示所有文件,包括隐藏文件
	-A : 不显示“.”和“..”这两个特殊目录
	-d : 显示的是目录自身的属性,而不是目录中文件或者子目录的属性
	-r : 显示目录,将以逆序的方式进行排序。从Z-A
	-R : 递归现实,显示目录下的每一个文件和子目录,如果目录还有子目录,则继续显示子目录下的文件和子目录,直到显示完全。
	-i : 选项可以提供inode
	-------------------------------------------------------
	【cd】:切换目录,Change Directory
	cd : 不带任何参数表示切换回当前用户的家目录
	cd /path/to/dir :切换到指定目录
	cd - :表示在上一个目录和这个目录来回切换,类似于电视遥控器上的返回之前
	cd ~ :切换回当前的家目录。
	cd ~student :表示切换到别人的家目录
	cd .. : 可以切换到当前目录的父目录
	cd ../.. :可以切换到当前目录父目录的父目录
	【pwd】 : Printing Working Directory 显示当前目录,/显示工作目录
	-------------------------------------------------------
	【mkdir】:创建目录
	格式: mkdir /path/to/abc
	-p : 如果创建的目录的父目录不存在的话,则先创建父目录。 mkdir -p /tmp/x/y/z
	-v : 显示创建的过程
	【tree】 : 显示结构的目录树。
	tree /tmp
	-------------------------------------------------------
	【rmdir 】, 删除目录:
	只能删除空目录。
	rmdir /tmp/x/y/z
	但是不能删除含有内容的父目录。
	-------------------------------------------------------
	【mv】:剪贴目录(移动目录):
	mv SOURCE DEST mv+源目录+目标目录 。
	移动的时候可以是非空的
	比如将tmp下的x1 挪到 var 的x1
	mv /tmp/x1 var/tmp
	如果在移动的时候,源路径和目标路径相同,则是重命名
	比如 mv x1 xx 则是将x1目录更名为 xx
	mv /tmp/x var/tmp/y
	如果y不存在 则是 移动x并重命名为y
	如果y存在
	看y是否是文件,若是则,报错
	若不是,则将x移动至y目录下
	-------------------------------------------------------
	【 touch】 用于修改时间戳的,但是可以用于创建空文件
	touch a.txt 如果文件并不存在,则会创建一个空的文件。
	如果存在,则会试图去修改它的时间。所有的时间都会变为当前时间
	-a 修改它的访问时间
	-m 修改它的修改时间
	并且可以改变到特定时间。
	touch -m -t 可以修改文件时间戳
	-------------------------------------------------------
	【mktemp】 命令 : 【创建临时文件】
	mktemp /tmp/eth.XXXXXX 创建/tep/eth.XXXXX , 这个自动会将XXXXX随即赋值,防止重复
	-p 选项,指定位置。
	mktemp -d /tmp eth.XX
	-d 选项:创建临时目录
	mktemp -d /tmp/test.XX 则创建test.XX的目录。
	一般将他创建的文件/目录 引用起来,赋予某个变量
	比如:
	TMPFILE=`mktemp /tmp/eth.XXXXXX`
	-------------------------------------------------------
	【rm】命令
	rm a.txt 删除a.txt
	在管理员权限下,会出现提示信息(redhat自带的)
	-i : 删除时提示是否删除。
	-r : 后面可以跟目录,则直接删除非空目录下的文件 *********可以删除非空目录***********
	-f : 不提示,直接删除
	-------------------------------------------------------
	【cp】命令
	cp SOURCE DEST
	cp /etc/inittab /root/a.txt
	复制inittab 到 xxx
	cp a b c d :copy a b c 到 d,d必须为目录
	cp /etc/inittab ./a.txt
	复制inittab到当前目录下的a.txt
	复制是不复制目录的,如果想复制目录,则加
	-r : 复制目录以及目录中的所有文件
	-i : 如果目标目录有同名,则提示是否覆盖。
	-p : 保留保存,主要用于保留属主属组
	-a = -rp
	备份小技巧:
	cp /etc/sysconfig/network-scripts/{ifcfg-eth0,.bak}
	直接备份
	-------------------------------------------------------
	【mv】SOURCE DEST
	-------------------------------------------------------
	【stat】 xx 用于显示文件的元数据信息,可以看出有3个时间
	Access 时间,表示最近一次被访问的时间
	Modify 时间,最近一次被修改的时间(指文件内容改变了)
	Change 时间,最近一次被改变的时间(指文件属性改变了)
	==========================================
	【file】 :命令
	file FILE_NAME file后面跟文件名
	通过这个命令,可以区别文件的不同类型,也可以判断是否是目录。
	-------------------------------------------------------
	【hwclock】 命令,用于设定时间
	-w : 表示我的系统时间是准确的,能够实现把硬件时间设定为与系统时间一致。
	-s : 表示硬件时间是准确的,把系统时间设定为与硬件时间一致
	【date】 读取系统时间
	【clock】 读取其硬件时间 、(查看硬时间)
	-------------------------------------------------------
	【date】 命令,用以显示系统的当前时间。(查看软时间)
	date 命令,还可以设定时间 格式为:
	date mmddHHMMyy.SS
	date 月日时分年.秒
	比如:
	date 1212121212.12
	则:时间为,2012年,12月,12日,12时,12分,12秒
	date命令还可以指定时间显示格式:
	date +FORMAT
	比如:
	date "+%H" 只显示小时
	+%H 显示小时
	+%M 显示分钟
	+%S 显示秒
	date "+%H:%M:%S"显示时分秒
	+%y 显示年
	+%Y 显示年的全称 2012
	+%m 显示月
	+%d 显示天
	+%D 显示日期
	+%F 直接显示年月日
	+%T 直接显示时分秒
	date "+Today is %Y-%m-%d"
	date命令中分号内是可以加任何字符的。%X是宏命令。
	date命令在备份的时候尤其有用。
	特殊时间戳:
	date "+%s" :表示自1970年1月1号0点0分0秒 到今天,一共过了多少秒
	-------------------------------------------------------
	【cal】 命令 : 用于显示日历 直接显示当前月
	cal 2011 : 则显示全年
	cal 1 2011 :则显示2011年1月 [cal 月 年]
	最特殊年月
	cal 9 1752 : 少了3-13号,这是程序员的失误。
	-------------------------------------------------------
	【which】 命令:用于查看一个命令所对应的二进制文件在什么位置
	which cd
	which ls
	【type】 命令: 直接查看是什么命令:
	type cd
	tpye ls
	-------------------------------------------------------
	【man】 COMMAND :详解
	man 为命令提供的使用手册都是分章节的,
	man N COMMAND : man+章节+命令 直接看该命令在该章节的帮助信息
	一般章节:
	第一章节:存放大部分普通用户的命令
	第二章节:显示系统调用
	第三章节:库调用 (关于库信息的说明)
	第四章节:特殊文件(块设备,字符设备)
	第五章节:文件格式 (配置文件的说明,对命令的配置文件的语法进行的说明)
	第六章节:游戏说明
	第七章节:杂项
	第八章节:管理类命令(跟系统相关的只有权限人才有权利执行的命令。比如useradd(添加用户)命令)
	whatis COMMAND 查看COMMAND命令在哪一章节。
	手册为了防止庞大,都用压缩的形式进行存放:
	存放位置:usr/share/man
	*.gz文件:gzip文件,压缩文件
man命令 先到 地方找到命令的手册页,然后将其解压缩。然后才看到了命令的man手册
	man命令查看后其实是遵循一些语法规范的:
	NAME : 用以表示简单的说明
	SYNOPSIS : 命令的简要语法格式
	EXAMPLES : 给你命令的使用样例。
	OPTIONS:选项
	FILES : 跟哪个配置文件相关联。
	DESCRIPTION : 描述信息,用于详细描述命令的功能以及详细的选项,以及选项所对应的意义
	AUTHOR : 命令作者
	REPORTING BUGS : 如果发现BUG了,怎么办
	COPYRIGHT : 版权
	SEE ALSO : 另外说明
	用man命令打开手册页后,如何实现上下翻页?
	空格键:可以直接往下翻一屏
	B 键:往前翻一屏
	回车键:往下一次翻一行
	K 键:往文件头一次翻一行
	如果不知道man命令怎么用:
	man man
	man有个选项,可以显示类似于whatis命令的显示结果
	man -f COMMAND ,跟使用whatis的效果是一样的。
	问题:man的-k选项,和-K选项有什么用呢?
	-k指的是keyword,关键词,
	man -k COMMAND :可以提供哪些命令里面包含COMMAND (他是从whatis数据库中找的)
	-K是从man数据库找到所有的关键词信息,数据量非常庞大。一般不用,查找速度将巨慢无比。
	当使用完man后,想退出的话,使用Q键就可以退出
	而且man支持关键词搜索:
	输入一个斜线“/”然后加关键词,所有关键词会用反黑显示(/是表示从文件首部向文件尾部查找)
	也可以使用问号“?”跟上关键词,同理 (?是从尾部向首部查找)
	搜索完关键词后,光标会指到第一个关键词上,
	用 n 和 N 在 下一个 和 上一个 之间进行切换。
	-------------------------------------------------------
	【cat】 命令: cat + 文件
	concatinate, dump
	功能1,连接,cat可以将多个文件连接到一起。显示出来。
	功能2,dump.倾倒式的查看,瞬间翻至最后一页。
	但在某些场景下是很有用的,比如将某些文件显示出来并将它重定向到某地
	比如某文件:cat /etc/sysconfig/network这个文件很小。
	cat会直接查看,查看完后直接退出查看器。
	-n : cat可以在显示的时候显示行号,行号不是文件本身的内容
	-E : 用于显示行结束符,会加入 $ 符,是Linux中的行结束符。Windows的行结束符比Linux多1
tac是反着倒……
	cat的特殊用法
	cat >>haha<<EOF (eof标示)
	> 123
	> 456
	> 789
	> EOF
	从EOF开头,到EOF结尾的东西,追加到haha中。
	
	-------------------------------------------------------
	【more】命令 :more + 文件
	more,可以分屏显示内容,并且给出显示的百分比
	more的向前翻腾是有问题的,用B键可以使用向前翻页,所以很多教材只介绍more可以向后翻页,不能向前翻
	more 翻到最后之后会自动退出。所以这也是为什么他不能向前翻的最重要原因
	-------------------------------------------------------
	【less】命令 : less + 文件
	less可以向前翻,而且翻完之后不会自动退出,会显示
	[END]
	实际上,man命令其实调用了less命令的查看方式,所以man支持的,less都支持。
	less命令也是将来用的最多的命令之一。
	-------------------------------------------------------
	【tail】,【head】命令 :
	head 命令用于查看文件前 N行 (默认为10行)
	tail 命令用于查看文件的后 N行 (默认为10行)
	head -n 20
	head -20 都代表看前20行
	tail -n 22 /var/log/messages
	tail -22
	tail -f 命令,查看文件而不退出,并且实时显示信息。
	不想看了,用ctrl+C,则退出。
	*当你写了一个命令不想执行的话,用CTRL+C直接返回。
	*/var/log/messages 是系统日志,我们经常用tail命令查看其内容
	-------------------------------------------------------
	【wc】 命令 : 用于统计一个文件有多少行,多少单词,多少字节
	wc /etc/rc.d/rc.sysinit
	显示
	980 3946 27239 对应,行/单词/字节
	-l : 只显示有多少行
	-w : 只显示有多少单词
	-c :显示多少字节(字节包含空格)
	-m : 显示多少字符
	-L : 显示文件中最长的行有多长
	-------------------------------------------------------
	【sort】命令
	对文件进行排序。
	不会影响文件本身的内容,只是将排完序之后文件的内容输出出来。
	-u:可以移除排序完成之后,重复的行 uniq
	-n : 按数字排序 numeric
	-r:降序排序 revers
	-t : 以指定段分隔符
	-k:以第几个字段进行排序
	sort -t : -k 3 ,以 :为分隔符,对第三段进行排序
	-------------------------------------------------------
	【uniq】 : 移除重复的行=sort -u
	-u:只输出只显示那些没有重复的行。
	-d:只显示重复了的行(跟上面刚好相反)
	-c:显示行以后,能告诉你这个行最多出现过几次(用于做计数)
	-------------------------------------------------------
	【chown】 修改属主
	格式:chown [options] USERNAME [files]
	比如:chown gentoo a.txt 则是将a.txt的属主更改为gentoo
	一个命令可以同时修改属主属组
	chown USERNAME:GRPNAME files
	或者
	chown USERNAME.GRPNAME files
	或者
	chown :GRPNAME files 只修改组,不修改主
	当你用其改变一个目录的属主的时候,里面的文件的属主不受影响
	如果想一起修改目录里的文件则
	-R : 递归修改。
	比如 chown -R slackware test :修改test文件夹的属主为slackware并递归
	--reference=FILE 将某个文件/目录的属主和属组改为和某人一样
	比如: chown --reference=a.txt b.txt 将b.txt的属主和属组修改为和a.txt一样
	-------------------------------------------------------
	【chgrp】 修改属组
	格式同chown
	比如:chgrp mygrp a.txt
	-------------------------------------------------------
	【chmod】 修改权限
	格式:chmod [options] mode files... (mode指权限)
	修改方式
	1.使用数字的方式:chmod 777 a.txt 则是将a.txt的权限更改为 -rwdrwdrwd
	2.使用等于号的方式进行赋值:chmod u=rw-,go=r-- a.txt (用逗号隔开可以设置多个) 则是将a.txt的权限中属主部分更改为rw-,属组和其他部分改为r--。
	3.用+/-修改某一类权限的特定位置 chmod u+x,go-x a.txt 则是将a.txt的权限中属主的部分增加执行权限(x),将属组和其他的部分去掉执行权限(x)
	u = 属主
	g = 属组
	o = 其他
	a = 全体
	修改目录的话只会修改其目录的属性,目录内部是不会修改的,如果想
	-R : 请加大写R 递归修改
	只有管理员才有权利改文件的属主和属组,其他用户可以修改权限。
	-------------------------------------------------------
	【useradd】 账号名 :建立账号:
	useradd gentoo:后,则在 /etc/passwd 下增加了一行
	-u UID : 更改ID号(ID号不能使用别人用过的,更改之后新用户从这个号往后计数)
	-g GID : 更改用户的基本组
	-G GROUP1,GROUP2 : 可以指定用户的附加组,可以有多个组,多个组用逗号隔开
	-c “COMMENT”: 可以指定用户的注释信息
	-d /path/to/home :指定家目录
	-s /bin/kshell : 指定一个非默认shell
	比如:
	useradd -G mygrp slackware :则创建用户slackware并将用户slackware加入到附加组mygrp中
	比如:
	useradd -u 1000 oracle :则创建用户oracle并将其UID改为1000
	比如:
	useradd -g mygrp mysql :则创建mysql并将其加入基本组mygrp中
	比如:
	useradd -s /bin/tcsh centos: 则创建centos的shell指定为tcsh
	比如:
	useradd -d /tmp/hello suse :则创建suse并将其家目录设为/tmp/hello
	可以组合使用一次指定多个条件。当指定特定组时,这个组必须事先存在
	在用户的家目录中查看隐藏文件,则发现里面有文件,这些都是环境变量文件。
	
	-------------------------------------------------------
	【groupadd】 详解:
	-g GID :指定GID
	useradd和groupadd都有一个共同的指令
	-r 把一个用户添加为系统用户或者把一个组添加为系统组。
	-------------------------------------------------------
	【userdel】 + 用户名
	-r :连同用户及其家目录一起删除。
	【groupdel】 + 组名
	-------------------------------------------------------
	【usermod】 命令,用于修改用户的账户信息。
	-u :修改 UID
	-g :修改 用户的组
	-G : 修改附加组。(用户原属的附加组将会被删除,所以一般不单独用)
	-aG :修改附加组一般用这样。
	-s : 修改shell
	-c : 修改注释信息
	-d :修改家目录。如果你想将家目录的所有东西都移动到新地方的话,要加-M
	-l : 修改登录名称。
	还支持其他的几个选项
	-e : 可以指定用户的过期时间。
	-U : 表示解锁用户账号
	-L : 表示锁定用户账号
	【groupmod】 命令,用于修改组的信息
	-g : 修改GID
	-n : 修改组名
	-------------------------------------------------------
	【passwd】 命令: 给用户加密
	-l : 用于锁定用户账号
	-u : 解锁用户账号
	--stdin : (把标准输入改为别的输入)为用户添加密码的时候用非标准输入进行创建密码
	-x : 设定密码最长使用期限
	-n : 设定密码最短使用期限
	-------------------------------------------------------
	【finger】 命令,用于显示用户的信息
	【id】 命令,用于查看用户的id相关信息
	【who】 命令,查看当前系统上登录的所有用户的
	-------------------------------------------------------
	echo : 显示 一行文本
	-n :表示不显示换行符
	-e : 能解释转义字符,比如显示颜色 (用于表示做控制符用的的叫转义字符)
	echo -e "How are you?\n" 则\n会被编译成换行
	-------------------------------------------------------
	【alias】命令:我们可以给命令取上别名。
	alias cls=clear 则可以将clear加一个别名为cls
	alias cdnet='cd /etc/sysconfig/network-scripts' 则将CD这条命令简写成一个词
	不想用alias的话
	unalias 命令
	比如
	unalias cdnet.
	-------------------------------------------------------
	【输入输出重定向功能】,管道:
	默认情况下,当你执行完一个命令,这个命令必然会输出一些信息,但是这个信息输出到了什么位置呢?
	输入设备和输出设备有很多种,大多时候,进行命令时,可能都没有明确说明应该输出到什么地方去,或者从什么输入
	当你不指定的时候,linux会输入输出到默认设备上去。
	-------------------
	标准输入:0, 一般指键盘 keyboard
	/dev/stdin (标准输入设备,显示为浅绿色),
	其实是一种链接文件。用ll可以看出它有指向。
	大多数情况下,我们用0 来表示:文件描述符
	重定向一般用 < 表示
	比如
	cat < /etc/fstab 则将fstab的内容输入到了cat下,并用cat命令显示
	--------------------
	标准输出: 1,默认是显示器 monitor
	/dev/stdout
	重定向一般用 1> 表示
	比如
	ls > /tmp/ls.out 则将ls的内容,输出到了 /tmp/ls.out
	--------------------
	错误输出: 2,默认是显示器 monitor
	/dev/stderr
	重定向一般用 2> 表示
	比如:
	lss 2> /tmp/ls2.out
	但是当你这个信息是正确时候,它不会输出到指定,而是直接显示
	---------------------
	合并标准输出和错误输出的输出流:
	" &> " 使用它可以合并。
	---------------------
	输出重定向会覆盖文件的原有内容,所以,
	" > "号叫覆盖输出重定向
	" >> "号叫追加输出重定向,可以追加内容,而不覆盖
	很多时候,我们可以使用echo命令,往一个文件的最后一行追加一行文字
	echo "-------------------" >> /tmp/ls.out
---------------------
	当使用“2>>” 时可以追加错误重定向
	但 "&>>"是不支持双大于号来追加所有内容的。
	---------------------
	有时会出现手误少打一个>导致,直接覆盖了原有内容而导致不得恢复
	set -C 命令,打开了禁止使用覆盖重定向 ,想开启的话
	set +C 命令。关闭禁止使用覆盖重定向
	有时我们就是想覆盖文件的话。
	">| "符号后面加一个竖线,则表示我清楚我在做什么,我非要覆盖。
	---------------------
	如何实现将正确的输出流保存在1.txt ,如果错误,则保存错误到2.txt呢?
	ls /var >> /tmp/1.txt 2>> /tmp/2.txt
	意思是将 ls /var的输出结果 正确的话追加到1.txt ,错误的话追加到 2.txt 只不过这两个符号要分开使用,中间加空格。
	-------------------------------------------------------
	【管道】:" | "
	COMMAND1 | COMMAND2 | COMMAND3....
	管道的作用:把前一个命令的输入输出执行结果,当做第二个命令的输入命令来处理。
	比如:ls -l /etc | less
	则是将 ls -l /etc 的输出结果,在less中输入,则可以使用less 查看
	比如:echo "123456" | passwd redhat
	将123456的结果通过管道输送给 用户redhat的passwd中。
	可以连接多个命令,不光是两个命令的链接。比如:
	ls -l /etc | sort -t | less
	反向排序之后送给less查看
	【tee】:会把数据流分成两部分,一部分保存,一部分送给后面的命令
	则,将数据先保存一份到ls.out,再用less命令查看
	既想送给less命令分页查看,又想保存一份到文件里去
	ls -l /etc | tee /tmp/ls.out | less
	有多个命令的输出,都需要保存在同一文件。为了实现:
	command >> a.out
	command2 >> a.out
	则可以使用一个变量,用脚本实现。但是麻烦,所以
	自定义输出重定向:可以用(3-9)的数字
	【exec】 :
	exec 3> /tmp/myout.out (也可以用追加">>" 或者读入"<" )
	则将3定向为了 myout.out 其实是覆盖为了这个文件
	之后
	ls /var >&3 (必须用 >& 符号)
	则会将显示结果覆盖至 自定义的一个输出重定向 3中
	在多次重定向的场景里,避免多次的反复重定向的那个文件而导致的频繁打开和关闭。
	撤销:
	exec 3>&-
	这样就关闭了此文件
	/dev/null:数据黑洞,设备文件的空文件。会把所有送来的数据吞噬掉。
	我们可以实现把那些输出出来没用的数据,送到这里
	这样不会占用任何空间。(属于虚拟设备)
	-------------------------------------------------------
	【for】:循环执行
	想在系统上加入10个用户,user1,user2.....user10。
	在脚本编程中,使用
	格式:
	for I in LIST; do
	statement1
	statement2
	done
	LIST的表述形式:
	简单列表:1 2 3 4
	复杂列表: This is Tom\'s cat (此时里面的小分号不被LIST识别,需要转义符)
	变量 `seq 1 $LINES`
	命令 `ls /var`
	通配符 for I in /var/*
	第一次,它将I的值取为1,LIST1 之后执行一遍
	之后将I的值取为 LIST2....
	for I in 1 2 3 4 5 6 7 8 9 10; do
	useradd user$I
	echo user$I | passwd --stdin user$I
	done
	则,会自动添加user1-10并将其密码设置为自己的用户名。
	--------为了方便--------
	1. 【seq】 1 10 : 表示,以1开始以10结束的数字展开为一个序列,但是使用的时候要用命令替换
	比如
	for I in `seq 1 10`; do
	2. {1..10} :也表示取整数序列,从哪开始,从哪结束。
	为了一次能从/etc/passwd下取一行,简单的可以使用:
	for LINE in `cat /etc/passwd`; do
	^
	对于for来说,它识别的是列表,它识别列表的时候,是通过空格来进行分割的 IFS=$'\n'
	但是空格,TAB,换行符都被LIST识别为拆分
	为了避免空格被拆分成一个独立的值去计算,需要在拆分前告诉LIST,
	只需要修改$IFS的值为只识别换行值:
	IFS=$'\n'
	-------------------------------------------------------
	【cut】 : 将文本内容一行一行的按照某种格式给他剪裂开来
	-d :用于指定分隔符。“d:”以“:”分割
	-f : 用于指定取第几段 -f1 则为第一段
	比如
	tail -1 /etc/passwd | cut -d: -f6,7
	则以:为分割,取第6段和第7段
	LINES=`wc -l /etc/passwd | cut -d" " f1`
	echo $LINES
	行数统计,统计完成之后,对每一行进行切割,再向用户进行问好
	-------------------------------------------------------
	【grep】 命令: 全面搜索正则表达式并显示出来,它是一个家族,家族中分别有
	1.grep
	2.egrep
	3.fgrep
	正则表达式(re):其实就是元字符,用一堆的元字符组成,按照一定的规则组成起来,能够实现过滤匹配不同的文本内容。
	1.基本正则表达式
	2.扩展正则表达式,比基本略多
	
	-----------
	格式
	grep [options] "PATTERN" file 能够根据你所指的模式(PATTERN),从文件中将他找到并显示出来
	比如:
	grep 'root' /etc/passwd
	搜索/etc/passwd中的含有root的信息
	常用选项
	-i : 不在乎字符的大小写
	-v:跟默认的动作正好相反(取反),只显示那些没有匹配的
	-n:能够显示所匹配的行在文中所处得行号(行号显示)
	-An:显示结果,并显示结果之后的n行
	-Bn:显示结果,并显示结果之前的n行
	-Cn:显示结果,并显示结果的前 和 后 n 行
	-e : 支持 egrip
--color:会把匹配这个模式的字符串高亮显示
	【正则表达式】
	常用模式 :正则表达式种类
	^ 定义行首,行首匹配锚定符
	$ 定义行尾,行尾匹配锚定符
	. 匹配任意单个字符,相当于"?"
	* 次数匹配,表示匹配符前面的这个字符所出现的0次或者任意次。
	? 次数匹配,表示匹配符前面的这个字符所出现的0次或者1次。
	[ ] 匹配一组字符中的任意一个字符
	[x-y] 匹配指定范围内的一个字符
	[^ ] 表示否定
	\< 词首定位符,必须是单词,而不能是字符 或者 \b 也可以
	\> 词尾定位符 \b 也可以。
	\<..\> 精确匹配
	\(..\) 匹配稍后将要使用的字符的标签
	x\{m\} 表示x精确出现m次
	x\{m,\} 表示x至少出现m次
	x\{m,n\} 表示x至少出现m次,且不超过n次
	grep --color "root$" grep.txt 表示root必须出现在行尾
	grep --color "\<root\>" grep.txt 表示要精确匹配root这个单词
	grep --color "root\{1,\}" grep.txt 至少匹配1次
	grep --color "root\{1\}" grep.txt 表示精确匹配1次
	grep --color "root\{0,1\}" grep.txt 表示至多出现 1次
	grep --color "\(root\).*\1able" grep.txt
	包含了root中间跟了任意字符,后又跟了\1又出现了引用最前面的字符的以及 able字符的字符
	-------------------------------------------------------
	【egrep】,【grep -E】
	与grep基本相同,但是没有了 \()之类的字符
	{n} : 精确匹配前面的 n次
	+ :匹配一个或多个+号前的字符,相当于 \{1,\}
	? : 相当于\{0,1\},匹配此前的字符,1次或0次
	a|b : 匹配a或b
	( ) : 字符组,把括号里的当做一个单位
	-------------------------------------------------------
	【$?】 : 表示上一个命令的执行结果 ,表示执行成功了还是失败了。
	结果显示:
	0 : 成功了
	1-255 : 都表示失败了
	-------------------------------------------------------
	【&&】【与操作】
	command && command: 这表示 只有前面的命令成功了,才执行后面的命令
	1 && ? = ? 意思是前面的命令即使执行成功了,也需要执行后面的命令,才能判断结果是否成功
	即: 短路操作、
	只要前面为0,结果肯定为0
	【||】 【或操作】
	command || command : 如果前面不成功,后面的才执行
	短路操作:
	1 || ? = 1 :前面已经成功的时候,后面就不执行了,直接判定成功
	只要前面为1,后面肯定为1
	0 || ? = ?
	若前面不成功,则必须执行后面的命令才行
	grep "root" /etc/passwd || useradd root
	判断是否需要执行这个用户,如果前面否定,则执行后面,意思是,若没有用户,则创建。
	-------------------------------------------------------
	【sed】 :
	stream editor : 非交互式的,行编辑器。
	SHELL脚本编辑器的利器之一。
	《Sed adn awk》这本书就是专门来讲这两个命令的。
	没有破坏性,不修改原文件(只是把文件的内容读取到内存里),除非使用shell的重定向
	sed本身还支持sed脚本
	将查不到的内容直接显示出来
	模式空间:
	sed用他的模式去处理文本的时候,在内存中的那段空间。
	读取行--->放入内存,进行处理----->输出这一行
	在某些高级模式中,还可以实现处理一次很多行
	Sed是将源文件处理在了内存里,对文件没有任何影响
	Sed的使用格式:
	1.sed [options] /PATTERN/COMMAND files...
	(指定模式)模式需要用两个斜杠括起来。当你使用正则表达式时,需要使用引号
	比如
	sed /cache/p /proc/cpuinfo
	将cpuinfo里包含cache的那一行,再显示一遍。
	2.sed [options] ADDR1,ADDR2/COMMOND files...
	sed [options] ADDR1,+N/COMMOND files... 【从第几行开始往后的N行】
	sed [options] /regexp/,/regexp/COMMOND files... 【从哪个单词到哪个单词】
	(根据行来指定命令,ADDR1,ADDR2意思是从第几行到第几行,支持模式)
	比如
	sed 1,3p /proc/cpuinfo
	将cpuinfo 里 1-3 行的内容输出
	比如
	sed /cache/,/wp/p /proc/cpuinfo
	另外一种地址表达方式:
	查找从第一个/cache/表达开始的行开始,到最后一个一个表达/wp/的行结束,以p模式显示
	模式:
	p:用于打印行
	比如
	sed /cache/p /proc/cpuinfo
	将cpuinfo里包含cache的那一行,再显示一遍。
	sed -n /^[^Cc]/p /proc/cpuinfo
	以非C开头的行,第一个用于表示以xxx开头,第二个表示取反
	d:用于删除模式空间中被匹配到得行
	sed /^[Cc]/d /proc/cpuinfo
	以非C开头的行
	a\后跟内容: 在当前行后添加一行或者多行
	sed "/^processor/a\#This is my cpu." /proc/cpuinfo
	以processor 开头的行后添加一行后添加一行:This is my cpu.
	sed "/^model/a\#This is my cpu" /proc/cpuinfo
	i\后跟内容:表示在当前行的前一行追加一行或者多行。
	sed "/^model/i\#This is my cpu" /proc/cpuinfo
	则在model前加了一行
	sed "/^model/i\#This is my cpu. \n#haha" /proc/cpuinfo
	在mode后加一行后,用\n的形式换行,然后再添加一行
用\n 的换行符形式,可以在内容后换行,再继续添加
	s:表示查找,替换。 (用法格式非常奇怪)
	sed "ADDR1,ADDR2s/要找的串/要换成的串/ig" /proc/cpuinfo
	搜索的串可以使用正则表达式,而替换的串不能使用正则表达式
	(s///)中的///其实是可以替换的,比如替换成s@要找的串@要换成的串@,或者替换成其他的比如AAA
	ADDR1和ADDR2表示从哪一行开始,到哪一行结束、
	i表示不区分大小写
	g表示在行内进行全局替换
	sed '1,$s/yes/YES/g' /proc/cpuinfo
	在指定范围匹配的时候 $表示一个文件的最后一行
	这句的意思是: 将文件中所有的yes替换为YES,全局替换,从第一行搜索到最后一行。
	s支持正则表达式
	sed '1,$s/\bc/C/g' /proc/cpuinfo (记住\b是匹配单词的首部)
	替换文件下所有以c开头的单词,并替换成C
	&:保存查找串以便在替换串中引用
	能够匹配整个串
	sed '1,$s/\b[Cc]pu\b/&s/g' /proc/cpuinfo
	将所有以Cpu替换成后面加一个s
	sed '1,$s/\b[Cc][[:alpha:]]*\b/&s/g' /proc/cpuinfo
	将所有以C开头的单词,后面加s
\(..\):保存已匹配的字符,然后用 \1 可以读取匹配的字符
	-e: 允许多项编辑,为一个命令指定多个处理办法
	sed '1,$s/\b[Cc][[:alpha:]]*\b/&s/g' /proc/cpuinfo | sed '1,$s/\b[m]([[:alpha:]_]*\)\b/M\1/g'
	sed -e '1,$s/\b[Cc][[:alpha:]]*\b/&s/g' -e '1,$s/\b[m]([[:alpha:]_]*\)\b/M\1/g' /proc/cpuinfo
	【早上9:40】
	-n:取消默认的输出。
	-f:可以把-e后面的内容写进一个文件里,并直接把这个文件读出来 【sed脚本】
	sed -f 去读 files (去读是一个文件,文件的内容是下面的两行)
	'1,$s/\b[Cc][[:alpha:]]*\b/&s/g'
	'1,$s/\b[m]([[:alpha:]_]*\)\b/M\1/g'
	-i: 去修改源文件。
	-------------------------------------------------------
	【tr】 :转变转换
	tr [options] 'ab' 'AB'
	则可以实现各种转换。
	-d : 可以用于实现删除字符
	比如,想删除一个单词中间的字母a
	tr -d 'a'
	-------------------------------------------------------
	【awk】: (念:奥克)
	比sed功能要强大的多的多的文本命令。有内置变量,本来是个开发语言。
	可以完成强大的文本处理
	最早的版本诞生在Bell实验室。
	到Unix的时候开始支持用户自己的变量。 叫nawk
	从一九七几年到现在都一直存在的命令
	它属于unix的命令。
	在九十年代,为GUN项目,开发了完全开源的awk,叫 gawk。
	此时,awk达到了顶峰。甚至加入了网络的处理
	awk [options] 'pattern {action}'
	pattern:
	/regexp/
	exp
	BEGIN
	END
	action:
	print
awk [options] 'program' file
	program完全可以写成文件,利用-f命令来直接读取所有文件内容
	program样子:pattern {action} 所有的action要以花括号括起来,所有的program要以单引号
	用什么模式处理, 处理成什么样子
	所有的action要以花括号括起来,
	所有的program要以单引号
	
	跟sed一样一次读一个行,然后将这一个行进行切片(以空格为基础进行切片)(field),每一片可以有一个内容引用
	$1 代表引用第一段
	$2 代表引用第二段
	。。。。
	。。。
	$0 代表整个一行。
输入和输出都以行为基准,都将其切片,不光切片一行,如果有多行,还对多行的每一行以一种方式进行切片(以换行符)
	print命令:
	awk '{print $2}' /etc/fstab
	则只显示第2列
awk '/^[a-z]/{print $0}'
	pattern:
	当你指定pattern,则表示他只对被pattern匹配的行做处理 (正则表达式)
	1.Expression
	2.pat1,pat2。从第一个pat1行到符合pat2的行
	3.BEGIN
	通常用于实现改变内建变量的值,或者在输出之前先打印标题的
	在action之前先执行的
	END
	在action之后进行扫尾工作。
	awk 'BEGIN{print "Devices mount point"}{print $0}' /proc/meminfo
	添加标题
	【14:50】
	内建变量:
	FS:修改子段分隔符,改变内建变量的值,要在BEGIN中实现
	tail -10 /etc/passwd | gawk 'BEGIN{FS=":"}{print $1}'
	RS:指定输入的时候行与行之间的分割符(默认是换行符)
	tail -10 /etc/passwd | gawk 'BEGIN{FS=":";RS=";"}{print $1}'
	OFS:显示数据的时候,显示给别人看的时候,是以什么为分隔符显示(默认空格)
	tail -10 /etc/passwd | gawk 'BEGIN{FS=":";OFS=":"}{print $1,$3}'
	ORS:行于行之间是如何分割的。
	tail -10 /etc/passwd | gawk 'BEGIN{FS=":";ORS=" "}{print $1,$3}END{print "\n"}'
	此条中END就在所有处理完成之后,又加入了换行。
	NF:显示每一行一共有多少个字段
	NR:正在被处理的这一行,在整个文件中处于哪一行
	tail -10 /etc/passwd | gawk 'BEGIN{FS=":";OFS=":"}{print NR " " $1,$3}'
	则在输出的时候显示行号
-F: : 以“:”为分隔符。不用BEGIN了。
	
	如何通过awk的辅助取得ip的地址
	ifconfig | awk '/inet addr/{print $2}' | cut -d: -f2
	-------------------------------------------------------
	【vim】:文本编辑工具
	文本:纯ASII码。 跟word编辑的不是一个东西。
	linux的重要哲学思想之一是把配置当做文件放在里面。
	linux上很著名的文本编辑器,Vi,emacs。
	vi ---> vim
	vim其实是一款模式化编辑器。将需要在多个模式下切换
	在不同的模式下,你所发出的命令,会被解释成不同的意义。
	命令模式下输入v键,可以进入可视化模式
	vi有3大模式最重要
	1.命令模式:主要用于命令编辑,删除/打开/保存/退出
	2.输入模式:击键的大部分命令都将输入到文本中。
	3.末行模式:对模式进行配置,类似于比命令模式繁琐,但功能不输于命令模式的一种模式。不能和输入模式之间进行转换
vim能识别大部分的程序,比如C语言的程序,并高亮显示。
	模式转换:
	命令-->末行 只需要键入一个 ”:“ 则直接进入末行模式
	命令-->输入 方法非常多:
	1.输入 I 命令, i:在当前光标所在的地方插入 I:在当前行的行首插入
	2.输入 A 命令 a:在当前光标所在的后方插入 A:在当前行的行尾插入
	3.输入 O 命令 o:在当前光标所在的行的下一行打开一个新行
	O:在当前光标所在的行的上一行打开一个新行
	插入/末行-->命令
	按下ESC键就好,有时需要敲两次,敲多次没有任何其他的弊端。
	:q: 可以直接退出,只要做了编辑,就不能用:q退出。
	:q! :强制退出,不保存
	:x , :wq :保存并退出
	ZZ :直接保存退出(必须大写),在命令模式下。
	 :set nu 显示行号
	----------------------------
	如何打开vim:
	vim +n : 不但打开vi ,还让光标直接处于第n行
	vim +/pattern files: 可以直接匹配到第一次匹配到这个模式的行的行首
	比如:vim +/redhat ff.rc
	---------------------------
	光标移动:(这些都可以和数字组合使用,比如5w,5b 5e ,一次跳到多少个相关的词/行)
	一次移动一个字符的:
	HJKL:
	H向左移动,L向右移动,J向下移动,K向上移动
	一次移动一个单词:
	w: 跳到一下一个单词的词首
	e: 跳到下一个单词的词尾(如果不在单词词尾,优先跳到自己的词尾)
	b: 跳到上一个单词的词首(如果不在单词词首,优先跳到自己的词首)
	在行内跳转的:
	^,数字“0”: 用于跳到行首。^:用于跳到这个行的第一字符的符首。 0 用于跳到绝对行首。
	$ : 用于跳到行尾(绝对行尾)
	在行间跳转:
	G,nG:跳转到第几行,比如10G,则跳回10行。单独一个G,跳到最后一行。gg跳到第一行。
	--------------------------
	删除字符:
	x:nx 通常用于删除一个字符 3x 直接删除3个光标后面的字符
	d:通常跟范围表达式组合起来,表示怎么删。
	dd,直接删一行
	ndd :直接删n行
	dw: 连同单词后的空格一起删
	de: 不删单词后面的空格
	:10,100d :删除10-100行
	:.,$d : 删除当前光标所在行到最后多少行 (.表示当前光标所在行 $表示最后一行,$-1表示最后一行的前一行)
	--------------------------
	翻屏功能:
	ctrl+f: 往文件尾部翻一屏。
	ctrl+b: 往文件首部翻一屏。
	ctrl+d<---->ctrl+u : 往后或者往前一次翻半屏。
	--------------------------
	修改:
	c:可以实现从命令模式转换到插入模式 ,但是在进入插入模式之前,先修改
	cc,删除一行并进入插入模式
	c$,删除到行尾,并进入插入模式
	与d大致相同。
	--------------------------
	复制和粘贴
	y:复制。y键的使用方式跟d一样
	yy复制一行
	3yy,复制3行
	ye,yw,yb 等等
	只要复制的不是单独的行,在粘贴时就是不单独的行
	p:在当前光标所在的下方进行粘贴。 如果复制的是单词,则粘贴在光标的后面
	P:在光标所在的上方进行粘贴。 如果复制的事单词,则粘贴在光标的前面
	---------------------------
	改错,就如[ctrl+Z]
	u:撤销上一次的修改(vim会保持50次的操作)
	U:一次性全部撤销。
	Ctrl+R : 可以将上次的撤销,撤销掉
	”.“ : 再做一次,就是redo.将此前的操作重复执行。
	-----------------------------
	
	作者“For The Dream”
相关新闻>>
- 发表评论
- 
				
- 最新评论 进入详细评论页>>







