标签:
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: ¥(())或 $[] 变量测试与内容替换
标签:
原文地址:http://blog.csdn.net/u011687186/article/details/51249178