您的位置:首页 > 运维架构 > Linux

Linux学习笔记(一)

2016-04-26 11:38 459 查看
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:
¥(())或 $[]
变量测试与内容替换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: