Linux学习笔记(一)

2015/12/12
	/dev/hda1(IDE硬盘接口)
	/dev/sda1(SCSI硬盘接口、SATA硬盘接口)
	现在基本上都是sda硬盘


挂载
	分配分区
	必须分区
	/根分区
	swap分区(交换分区,内存2倍,不超过2GB)
推荐
	/boot(启动分区,200MB)
	/root/install.log 存储了安装在系统中的软件包及其版本信息
	/root/install.log.syslog 存储了安装过程中留下的事件记录
	/root/anaconda-ks.cfg 以Kickstart配置文件的格式记录安装过程中设置的选项信息
网络配置
	hostOnly   仅和本地电脑连接  Network1用的
	netOnly   不仅和本地连接也能上网 Network8用的
	桥接  是用的真实本机网卡


ifconfig 
	eth0第一块网卡
	u所有者 g所有组 o其他人
	r读 w写  x执行
	r -4 w -2 x -1


	rwxrw-r--
	7  6  4
derectory r: ls
          w:touch/kmdir/rmdir/rm 创建 和删除
	  x:cd pwd 进入目录
chown 
	所有者权限
chgrp
	所有组权限
	为了安全起见  linux新建的文件是没有可执行权限的
unmask
	022缺省权限777-022=755 默认的
 find 
	 /etc -iname init
	-iname 忽略大小写
	一个数据块512字节  0.5k
	find / -size +204800  +n大于 -n小于 n等于
	find /home -user mxr 所有则查找 -group所属组查找
	-amin 访问时间 access
	-cmin 文件属性 change
	-mmin 文件内容 modify 文件内容被修改了
	find /etc -cmin -5    5分钟内修改文件属性的文件
	-a 两个同时满足
	-0 两个满足任意一个即可
	-type 文件的类型 f文件 d目录 l软连接文件
	-exec/-ok 执行名称 {} \; 对搜索结果执行操作
	-ok会进行询问
	-inum 根据i节点查找
	文件搜索 :locate    updatedb更新文件库
	-i 不区分大小写    搜索临时文件不进行搜索
which 
	快速查找命令的所在目录
whereis
	命令所在的路径
	搜索命令所在目录及帮组文档路径
grep
	在文件中搜索字符串匹配的行并输出
	-i 不区分大小写
	-v 排除指定字符
more 或者 less 显示文本
grep -v ^# /etc/inittab 
	以#开头的
帮组命令 man manual
查看配置信息
man services
	1 命令的帮助    5 配置文件的帮助
whatis 
	名称 简短的帮助信息
apropos 
	名称 配置文件的简短信息
名称 --help 列出选项
info 和 man 差不多
help 
	获取sheel内置命令的帮组信息
unmask 
	查看缺省权限
useradd
	添加用户
passwd
	更改用户密码
who 
	查看登录的用户信息
	tty1 表示本地终端
	pts0表示远程终端
	数字代表终端号 为了区分终端
	最后的代表ip地址
	没有代表本机
w
	得到更为详细的用户信息
	up联系运行时间
	2 users当前用户
	load average:0.00 0.00 0.00 负载代表
	IDLE 空闲时间
	PCPU 占用cpu时间
	WHAT 用户动作 现在
	JCPU:占用的CPU
gzip
	压缩	.gz  只能为文件,不能为目录,不保留原文件
gunzip 
	解压缩
tar
	压缩目录
	-c表示打包 
	-v表示显示详细的信息
	-f指定文件名
	cc.tar.gz 压缩格式
	tar -zcf 把文件进行打包和压缩
	解压把压缩的-c换为-x
	tar -zxf 解压
zip:
	压缩文件或目录
	-r可以压缩目录
	解压缩
	unzip 解压缩
2015/12/16
bzip2
	压缩文件
	-k产生压缩文件后保留源文件
	大型文件解压缩
	tar -cjf aa.tar.bz2 aa
bunzip2 
	解压缩
	tar -xjf aa.tar.bz2 


write 
	给指定用户发信息
wall
	给所有的用户发信息
ping
	测试网络连通性
	-c 指定次数
	packet loss 丢包率
ifconfig
	查看网络信息和网卡信息
	eth0真实网卡
	lo回环地址
mail
	查看发送电子邮件
	help查看
	h返回
	d删除
last
	列出目录与过去登入系统的用户信息
lastlog
	检测某特定用户上次登录的时间
	-u 502 uid代表
	指定用户
traceroute
	显示数据包到主机间的路径
netstat
	显示网络相关信息
	-t TCP协议
	-u UDP协议
	-l 监听
	-r 路由
	-n 显示IP地址和端口号
	-tlun 查看本机监听端口 
	-an 查看本机所有的网络连接
	-rn 查看本机路由表
setup
	配置网络
	DHCP为*表示自动获取服务
service network restart
	重启网络服务
mount
	挂载设备
	/dev/sr0 固定写法(挂载点)
	 mount  /dev/sr0 /mnt/edrom/
	 把光驱挂载到/mnt/edrom目录下
umount
	卸载设备
shutdown
	光机
	-h 关机时间 now 表示现在
	-r 重启
	-c 取消一个关机命令
halt 
	关机以下
	poweroff
	init 0
reboot
	重启一下
	
系统的运行级别
	0 关机
	1 单用户
	2 不完全多用户,不含NFS服务(部分命令行NFS(可以实现文件共享)
	3 完全多用户 (完全命令行)
	4 未分配
	5 图形界面- X11
	6 重启
查看系统的运行级别
	cat /etc/inittab 
runlevel
	查询系统运行级别
	N 5 N代表上一级别
logout
	注销命令
Vim
	没有菜单,只有命令
	命令模式、插入模式、编辑模式
	输入i a o I A O A光标所在的行尾插入 I光标所在的行首插入
	qw保存退出
	set number 设置行号 set nu
	set nonu 取消行号
	gg 到第一行
	G 到最后一行
	nG 到第n行
	n 到第n行
	$ 移至行尾
	0 移至行首
	x删除字符
	dd删除行
	yy是复制
	p是粘贴
	:r
		导入命令执行结果
	:!which ls
		查找命令的路径
	:r !date
		导入时间


		vehicleIds
	map  ^p I#<ESC>
		定义快捷键
		ctrl + v + p 
		定义ctrl+p的快捷键
	map ^B 0x
		把行首的第一个字符删除
	set number
		显示行号
	:1,4s/^/#/g 
		从第一行到第4行的开头替换为#,/g不用确认
	ab  
		用户替换字符
软件包分类
	源码包 开源   效率高  安装慢 容易出错
		脚本安装包 
	二进制包 安装快
		RPM包、系统默认包 
RPM包
	rpm命令管理
		httpd-2.2.15-15.el6.centos.i686.rpm
		httpd 软件包名
		2.2.15 软件版本
		15 软件发布的次数
		el6.centos 适合的LInux的平台
		i686 适合的硬件平台
		rpm rpm包扩展名
	rpm包依赖性
		树形依赖 a->b->c
		环形依赖 a->b->c->a
		模块依赖
			www.rpmfind.net
	yum在线管理
		


包全名:
	操作的包是没有安装的软件包时,使用包全名。
	而且要注意路径。
包名:
	操作已经安装的软件包时,使用包名,
	是搜索/var/lib/rpm中的数据库
 
 rpm -ivh
	安装 rpm包命令
	.so.2库依赖
	-i install 安装 
	-v verbose 显示详细信息
	-h  hash 显示进度
	-- nodeps  不检测依赖性
	-U 升级
	-e erase 卸载
	-q query 查询
	-a 所有的
	-i 查询软件信息
	-p 查询未安装包的信息
	-l 列表
	-f 查询系统文件属于哪个软件包
	-R 查询软件包的依赖性
	校验
	-V 已安装的包名 校验是否被修改
		验证内容8个信息的具体内容如下:
			S 文件大小是否修改
			M 文件的类型或文件的权限(rwx)是否被修改
			5 文件MD5校验是否改变(可以看成文件内容是否改变)
			D 设备的中,从代码是否改变
			L 文件路径是否改变
			U 文件的属主(所有者)是否改变
			G 文件的属组是否改变
			T 文件的修改时间是否改变
		
		文件类型
			c 配置文件 config file
			d 普通文件
			g “鬼文件” 很少见,就是该文件不应该被这个RPM包包含 ghost file
			l 授权文件 license file
			r 描述文件 read me
	提取
		rpm2cpio 包全名 | \ cpio -idv. 文件绝对路径
			| 管道符 连接多个命令
			\ 换行符
		将rpm包转换为cpio格式的命令
		
  cpio	
	是一个标准工具,它用于创建软件档案和从档案文件中提取文件
	-i copy-in 模式,还原
	-d 还原时自动新建目录
	-v 显示还原过程
	
df
	挂载大小


rpm yum 在线管理
	启用ip
		vi etc/myconfig/sysconfig/network-scripts/ifcfg-eth0
	把ONBOOT改为yes
	然后重启服务service network restart
		/etc/yum.repos.d/CentOs-Base.repo 网络yum源


		[base]  
			容器名称,一定要放到[]中
		name 
			容器说明,可以自己随便写
		mirrorlist 
			镜像站点,这个可以注释掉
		baseurl 
			我们的yum源服务器的地址,默认是CentOs官方的yum源服务器
		,是可以使用的,如果你觉得慢可以改变你喜欢的yum源地址
		enabled
			此容器是否生效,如果不写或写出enable=1都是生效,写成
			enable=0就是不生效
		gpgcheck
			如果是1是指RPM的数字证书生效,如果是0不生效
		gpgkey
			数字证书的公阴文化保存位置,不用修改
	yum list
		查询所有可用软件包列表
	yum search 
		搜索服务器上所有和关键字相关的包
	yum -y install 包名
		install	安装
		-y自动回答yes
	yum -y update 包名
		update 升级
	yum -y remove 包名
		remove 卸载
	yum grouplist
		列出所用可用软件组列表
	yum groupinstall  软件组名
		安装指定软件组,组名可以由grouplist查询出来
	yum groupremove 软件组名
		卸载指定软件组
	mv 命令  让其他的网络yum失效
		  使用光盘安装Media
源码包
	与RPM包安装位置不同,RPM默认的位置是


	启动文件
		/etc/rc.d/init.d/httpd start 启动的额绝对路径
		service httpd start
        下载源码包
		http://mirror.bit.edu.cn/apache/httpd/
	
	源码包保存位置:
		/usr/local/src/
	软件安装位置
		/usr/local
	./configure 
		编译器准备,没有指定安装目录,安装到默认位置中
	make
		编译
	make install
		编译安装
du -sh 文件名
	显示文件的大小
脚本安装
	是人把安装过程写成了自动安装的脚本吗,只要执行脚本,定义简单的参数,
	就可以完成安装。
Webmin
	是一个基于Web的Linux系统管理界面,您就可以通过通过图形化的方式设置,
	用户账号,Apache、DNS、文件共享服务。
	http://sourceforge.net/projects/webadmin/files/webmin/
ctrl + backSpace 可以回退
在Linux中主要通过用户配置文件来查看和修改用户信息。
man 5 passwd 
	查看配置文件帮组
/etc/passwd
	第1个字段:用户名称
	第2个字段:密码标志 x 表示有密码
	第3个字段:UID(用户ID)标识
		0 超级用户
		1-499 系统用户(伪用户)
		500-65535 普通用户
	第4个字段:GID(用户初始组ID)(还有附加组)
	第5个字段:用户说明
	第6个字段:家目录
		普通用户:/home/用户名/
		超级用户:/root/
	第7个字段:登陆后的Shell
/etc/shadow
	影子文件
	第1个字段:用户名
	第2个字段:加密密码
		加密算法升级为SHA512散列加密算法。
		如果密码伪是"!!"或"*"代表没有密码,不能登陆
	第3个字段:密码最后一次修改日期
		使用1970年1月1日作为标准,每过一天时间戳加1
	第4个字段:两次密码的修改间隔时间(和第3字段相比)
	第5个字段:密码有效期(和第3个字段相比)
	第6个字段:密码修改到期前的警告天数(和第5个字段相比)
	第7个字段:密码过期后的宽限天数(和第5字段相比)
		0 代表密码过期后立即失效
		-1 代表密码永远不会失效
	第8个字段:账号失效时间
		要用到时间戳表示
	第9个字段:保留
date -d "1970-01-01 16066 days" 把时间戳换算为日期格式
/etc/group
	组信息文件
		第1个字段:组名
		第2个字段:组密码标志
		第3个字段:GID
		第4个字段:组中附加用户
/etc/gshadow
	组密码文件
		第1个字段:组名
		第2个字段:组密码
		第3个字段:组管理员用户名
		第4个字段:组中附加用户
用户的家目录
	普通目录:/home/用户名,所有者和所属组都是此用户,权限700
	超级用户:/root/,所有者和所属组都是root用户,权限550
用户的邮箱
	/var/spool/mail/用户名/
用户模板目录
	/etc/skel 
	每次添加一个用户都会系统自动给用户目录下创建文件,这些模板就在skel下
useradd 
	-u UID  :手工指定用户的UID号
	-d 家目录:指定用户的家目录
	-c 用户说明: 手工指定用户的说明
	-g 组名: 手工指定用户的初始组
	-G 组名: 指定用户的附加组
	-s shell 手工指定用户的登陆shell,默认是/bin/bash
用户默认值文件
/etc/default/useradd
		GROUP=100 默认组(私有的)
		HOME=/home  家目录
		INACTIVE=-1 密码过期宽限天数(shadow文件第7个字段)
		EXPIRE=     密码失效时间(第8个字段)
		SHELL=/bin/bash 默认shell
		SKEL=/etc/skel 模板目录
		CREATE_MAIL_SPOOL=yes 是否建立邮箱
/etc/login.defs
		PASS_MAX_DAYS   99999 密码有效期(第5个字段)
		PASS_MIN_DAYS   0     密码修改间隔(4)
		PASS_MIN_LEN    5     密码最小为5(PAM)
		PASS_WARN_AGE   7     密码到期警告(6)
		UID_MIN         500   最小UID
		UID_MAX         60000 最大UID
		ENCRYPT_METHOD  SHA512 加密模式
passwd
	-S  查询用户密码的密码状态,仅root用户可用
	-l  暂时锁定用户,仅root可用
	-u   解锁用户,仅root用户可用
	-stdin 可以通过管道符输出的数据作为用户的密码。主要是写shell编程时使用
| 
	管道符第一个字符的输出,作为第二个字符的输入
echo "123" | passwd --stdin  
usermod
	修改用户信息
	和useradd通用
chage
	-l 列出用户详细密码状态
	修改用户密码状态
	修改的shadow文件
	-d 0 lamp
		这个命令其实是把密码修改日期归为0了,(第3个字段)
	这样用户一登陆就要修改密码
userdel
	-r 删除用户同时删除用户家目录
id
	查看用户ID
su
	用户切换
	-:选项只使用“-”代表连带用户的环境变量一起切换
	-c:仅执行一次命令,而不切换用户身份  su - root -c "useradd test1"
whoami
	当前登录是谁
env
	当前用户的环境变量
groupadd
	-g GID 指定组ID
groupmod
	-g GID 指定组ID
	-n 新组名 
groupdel 组名
	有初始用户不能删除
	附加用户可以删除
gpasswd 选项 组名  添加用户的附加组
	-a 用户名 把用户加入组
	-d 用户名 把用户从组中删除
ACL权限
		解决身份不确定。
	dumpe2fs - h /dev/sda3
		 查询指定分区详细文件系统信息的命令:
		-h 显示超级块中信息,而不显示磁盘块组的详细信息
	mount -o remount.acl/
		临时生效“重新挂载根分区,并挂载加入acl权限
	vi /etc/fstab
		加入acl
	mount -o remount/
		重新挂载文件系统或重启动系统,使修改生效
	getfacl 文件名
		查看acl权限
	setfacl 选项 文件名
		-m 设定 ACL权限
		-x 删除指定的ACL权限
		-b 删除所有的ACL权限
		-d 设定默认ACL权限
		-k`删除默认ACL权限
		-R 递归设定ACL权限
	setfacl 
		-m u:st:rx /project 
		   u 代表用户 st 用户名 rx 代表权限  prpject 代表任意一个文件目录
		-m g:group1:rw /project 
		   g 代表组 group1 组名
	ll -d
		drwxrwx---+ 2 root lean 4096 1月  25 13:47 /project + 拥有acl权限
	最大有效权限mask
		与acl进行与运算
	setfacl -m m:rx /project
		设定mask权限为r-x,使用"m:权限"格式
	递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
		-m u:用户名:权限 -R /project
		默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建
	的子文件都会继承父目录的ACL权限。
	setfacl -m d:u:用户名:权限 文件名
文件特殊权限
SetUID
	二进制文件
	所有者
	命令执行者在执行该程序时获得该程序文件属主的身份,只有该程序执行过程中有效。
	-rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd
	必须拥有x(执行)权限
cat命令没有SetUID权限	
chmod 4755
	4代表SUID
	2代表GID
	1代表Sticky BIT
	7 代表都有
chmod u+s 文件名 
危险
SetGID	命令在执行程序的时候,组身份升级为该程序文件的属组。
	用户组
	可执行的和目录
	ll /usr/bin/locate
	生命期:命令结束
chmod u+g 文件名
Sticky BIT
	粘着位,普通用户
	只能针对目录分配
	其他人
	drwxrwxrwt. 3 root root 4096 1月  29 10:20 /tmp
chmod u+t 文件名 1755
chatrr权限
	对root也生效
	文件系统属性
	+ 增加权限
	- 删除权限
	= 等于某权限、


	i
	   如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;
	   如果对目录设置i属性,那么只能修改目录下文件的数据,单不允许建立和删除文件
	a
	   只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,
	   那么只允许在目录中建立和修改文件,但是不允许删除。
lsattr 文件名
	-a 显示所有文件和目录
	-d 目标是目录,仅列出目录本身的属性,而不是子文件。
sudo 
	把本来只能超级用户执行的命令赋予普通用户执行。
	系统命令权限。
	操作对象时系统命令。
	visudo
实际修改的是/etc/sudoers文件
	root    ALL=(ALL)       ALL
	用户名  被管理主机的地址 = (可使用的身份) 授权命令(绝对路径)
	#%wheel ALL=(ALL)       ALL
	#%组名  被管理主机的地址 = (可使用的身份) 授权命令(绝对路径)
sudo -l
	查看可用的sudo命令
sudo /sbin/shutdown -r now
	普通用户执行sudo赋予的命令
文件系统
	主分区:
		总共最多只能分4个
	扩展分区:
		只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个,
	但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
	逻辑分区:
		逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个
	逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区。
	sda5开始的;(1-4只能为主分区和扩展分区)
ext2:
	是ext文件的额升级版本
ext3
	文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能。


ext4
	是CentOS6.3默认文件系统,
	1EB=1024PB=1024*1024TB
df
	查看文件系统
	-a
		显示所有的文件系统信息,包括特殊文件系统,如
		/proc、/sysfs
	-h
		使用习惯单位显示容量,如KB,MB或GB
	-T
		显示文件系统类型
	-m
		以MB单位显示容量
	-k
		以KB为单位显示容量,默认是KB为单位
du
	统计目录
	-a
		显示每个字文件磁盘占用率。默认只统计子目录的磁盘占用率。
	-h
		使用习惯单位显示容量,如KB,MB或GB
	-s
		统计总占用量,而不列出子目录和子文件的占用量
fsck
	文件系统修复命令
	-a
		不用显示用户提示,自动修复文件系统
	-y
		自动修复,和-a作用一致,不过有些文件系统只支持-y
dumpe2fs
	显示磁盘状态
mount 挂载
	-l
		查询系统中已经挂载的设备,-l会显示卷标名称
	-a
		依据配置文件/etc/fstab的内容,自动挂载
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
	-t 文件系统:加入文件系统类型来指定挂载的类型,可以是
		ext3,ext4,iso9660等文件系统。
	-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载。
	-o 特殊选项:可以指定挂载的额外选项。
		remount
			重新挂
		exec/noexec
			执行/不执行
	
挂载光盘
	mkdir /mnt/cdrom/  建立挂载点
	mount -t iso9660 /dev/cdrom(默认这样写 软连接)  /mnt/cdrom	挂载光盘 把光盘放入光驱
	mount /dev/sr0(默认这样写) /mnt/cdrom
umount 设备文件名或挂载点
	卸载光盘
fdisk -l	不支持远程挂载
	查看U盘设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/
	注意:linux默认是不支持NTFS文件系统的
文件NTFS文件系统
	1 内核编译
	2 第3方软件   下载NTFS-3G插件
	http://www.tuxera.com/community/ntfs-3g-download/
	mount -t ntfs-3g 分区设备文件名 挂载点
fdisk分区
	fdisk -l 查看识别的硬盘
	fdisk /dev/sdb   使用fdisk命令分区
		d 删除分区
		m 帮助菜单
		n 新建分区
		w 保存退出
		q 退出
		p 显示分区列表
partprobe   重新读取分区表信息
扩展分区不能写入数据和格式化
mkfs -t ext4 /dev/sdb1
	格式化分区  把sdb1格式化为ext4文件类型
建立挂载点并挂载
	mkdir /disk1
	mount /dev/sdb1 /disk1
缺点重启挂载信息消失


自动挂载
	修改vim /etc/fstab
	sysfs        proc      内存挂载点            
	tmpfs	     devpts    临时挂载点
	第一个字段:分区设备文件名或UUID
	第二个字段:挂载点
	第三个字段:文件系统名称
	第四个字段:挂载参数
	第五个字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份 lost+found备份目录
	第六个字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当让1的优先级比2高


	/etc/fstab文件修复
	mount -o remount,rw/
	不是万能的命令
分配swap分区
free
	查看内存与swap分区的使用情况
	cached(缓存):
		把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了
		数据的读取过程。
	buffer(缓冲) 
		是指在写入数据时,先把分散的写入操作保存到内存中,当达到一定程度在集中写入硬盘,
		减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。
	n 新建分区
	更改分区号
	t键  改分区号为82
partprobe   重新读取分区表信息
mkswap	/dev/sdb6  格式化swap
swapon /dev/sdb6
	加入swap分区
swapoff /dev/sdb6
	取消swap分区
2016/2/17	
Shell 
	命令行解释器
	强大的编程语言
	解释执行的脚本语言
	可直接调用linux系统命令
两种语法类型Bourne和C
	两种语法彼此不兼容
Shell脚本执行方式
	echo 输出命令
		-e 支持反斜线控制的字符转换
     echo -e "acd\bc" \b 退格删除
	\e[1;    \e[0m	支持颜色输出  
#!/bin/Bash
	赋予执行权限,直接运行
		chmod 755 hello.sh
		./hello.sh
	通过Bash调用执行脚本
		bash hello.sh
dos2unix
	从dos格式转换为unix格式
history
	-c 清空历史命令
	-w 把缓存中的历史命令写入历史命令保存文件
	~/.bash_history
历史命令默认保存1000条,可以在环境变量配置文件/etc/profile 中进行修改
!n
	重复执行第几行命令
!字符串
	重复执行最后一条命令
alias 别名=‘原命令’
alias
	查询命令别名
让别名永久生效
	vi /root/.bashrc
unalias 别名
	删除别名
ctrl + u 删除光标前的命令
ctrl + y 粘贴
ctrl + r 命令的搜索
ctrl + d 退出当前终端
ctrl + c 终止当前终端


标准输入输出
	设备    设备文件名    文件描述符   类型
	键盘    /dev/stdin       0           标准输入
	显示器   /dev/sdtout     1            标准输出
	显示器    /dev/sdterr    2            标准错误输出
输出重定向
	类型                    符号                         作用
   标准输出重定向              命令 > 文件       以覆盖的方式,把命令的正确输出到指定的文件或设备当中。
		               命令 >> 文件      以追加的方式,把命令的正确输出到指定的文件或设备当中
   标准错误输出重定向          错误命令 2>文件    以覆盖的方式,把命令的错误输出到指定的文件或设备当中。
			       错误命令 2>> 文件     以追加的方式,把命令的错误输出到指定的文件或设备当中
   
正确输出和错误输出同时保存     命令 > 文件 2>&1  以覆盖的方式,把命令的正确和错误保存到同一个文件当中。
                               命令 >> 文件 2>&1  以追加的方式,把命令的正确和错误保存到同一个文件当中。
			       命令 &> 文件  以覆盖的方式,把命令的正确和错误保存到同一个文件当中。
                               命令 &>> 文件   以追加的方式,把命令的正确和错误保存到同一个文件当中。
	                       命令>>文件1 2>>文件2  把正确的输出追加到文件1中,把错误的输出追加到文件2中。
输入重定向
wc
	-c 统计字节数
	-w 统计单词数
	-l 统计行数
wc < anaconda-ks.cfg   
	输出 
		行数   单词    字符数
wc << hello
	碰到hello结束
多命令顺序执行
	;多个命令顺序执行,命令之间没有任何逻辑联系。
	&& 与
	|| 或
实现硬盘的复制:
dd if=输入文件 of=输出文件 bs=字节数 count=个数
管道符
	命令1 | 命令2
		命令1的正确输出作为命令2的操作对象
连接人数
	netstat -an | grep "ESTABLISHED"
grep
	-i 忽略大小写
	-n 输出行号
	-v 反向查找
	--color=auto 搜索出的关键字用颜色显示
grep "root" /etc/passwd
	? 匹配一个任意字符
	* 匹配0个或任意多个任意字符
	[] 匹配中括号中任意一个字符  [abc]
	[-] 匹配中括号中任意一个字符 -代表一个范围 [a-z]匹配一个小写字母
	[^] 匹配不是中括号内的一个字符,[^0-9]代表匹配一个不是数字的字符
	''单引号  在单引号中所有的特殊字符,如$和·都是没有特殊含义。
	"" 双引号,在双引号中特殊符号没有特殊含义,但是$和· \是例外,拥有“调用变量值”
	“引用命令” 和“转义符” 的特殊含义。
	``反引号 系统命令
        $()  和反引号作用一样,例如$(date)
	# 在Sheel脚本中,代表注释
	$ 用于调用变量的值,如需调用变量name的值时,需要$name的方式得到变量的值。
	\ 转义符,跟在\后的特殊符号将失去特殊含义,变为普通字符,如\$ 将输出$,而不当做是变量引用。
变量:
	计算机内存的单元,其中存放的值可以改变,
	必须由字母、数字和下划线开头
	变量的默认类型都是字符串型,如果要进行数值运算。则必须指定变量类型为数值型。
	变量的值如果有空格,需要使用单引号或双引号
	在变量的值中,可以使用"\"转义符
	如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要用双引号包含“$变量名‘
	或用${变量名}包括
用户自定义变量
		echo "$name"123      变量的叠加赋值
	查看变量  所有的变量
		set
	删除
		unset name


环境变量
	会在当前Shell和这个Shell的所有子Shell当中生效,如果把环境变量写入响应的配置文件,
那么这个环境变量就会在所有的Shell中生效。
	export 变量名=变量值
	#申明变量
	env   
	#查询变量
	unset 变量名
	#删除变量


PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin
:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


PATH="$PATH":/root/sh  定义系统环境变量


PS1='[\u@\h \W]\$ '   定义系统提示符的变量


pstree  查询进程树
PATH 系统查找命令的路径


位置参数变量
	$n n为数字,$0代表命令本身
	$* 命令中所有的参数, 整体
	$@ 命令行中所有的参数 单个
	$# 命令行中所有参数的个数


预定义变量
	$?
	       最后一次执行命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,
	    如果这个变量的值为非0,(具体是哪个数,由命令自己来决定),则证明上一个命令
	    不正确了。
	$$ 当前进程的进程号(PID)
	$!  后台运行的最后一个进程的进程号(PID)
接收键盘输入
read
	-p "提示信息":
			在等待read输入时,输出提示信息,read命令会一直等待用户输入,
		使用此选项可以指定等待的时间。
	-n   字符数:
		read命令只接受指定的字符数,就会执行。
	-s
		隐藏输入的数据,适用于机密信息的输入,
	-t
		时间


数值运算与运算符
	方法1:
		declare 声明变量类型
		- 给变量设定类型属性
		+  取消变量的类型属性
		-i  将变量声明为整数型(integer)
		-x 将变量声明为环境变量
		-p 显示指定变量的被声明的类型


	方法2:
		expr或let数值运算工具
	方法3:	
		¥(())或 $[]
变量测试与内容替换
	


你可能感兴趣的:(Linux学习笔记(一))