版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux学案教学课件Linux学案第1-4章Linux常用命令最常用命令ls-a(查看全部)-h(以兆字节等单位显示大小)-l(显示长文本详细信息)mkdir-p循环嵌套建立文件夹pwd打印当前路径rmdir删除空的目录cp-r(复制目录)-p(复制时保存文件的属性,包括修改时间)mv剪切、改名rm-r(删除目录)-f(强制执行)-rf(强制删除目录)touch创建空文件cat浏览文件内容-n(加上行号)tac浏览文件内容(倒着显示)more分页显示文件 空格或f可以一页一页地翻,回车可以一行一行翻,q退出,b向后页less分页显示文件而且可以用上下箭头和pageup和pagedown翻页 可以用“/加上要搜索的内容进行搜索”,按n(next)继续向后查找,head-n7查看文件前7行的内容tail-n查看末尾几行,默认10行-f(动态显示最后几行)链接命令lnln-s[源文件][目标文件]软链接生成.soft文件类似于win中的快捷方式,有清晰的箭头指向 占用空间小,权限为以l开头的三组rwx,可以跨分区创建,可以针对文件夹创建ln[源文件][目标文件] 硬链接生成.hard文件 可以同步更新,生成的文件类似于使用了cp-p的拷贝一个备份,不可跨分区创建,不可针对文件夹创建 用ls-i可以查看到两个文件具有相同的i节点echo"">>/etc/issue向某个文件的末尾写入一句话权限管理命令chmod(changethepermissionsmodeofafile)chmod[{ugoa}{+-=}{rwx}][文件或目录] [mode=421][文件或目录]-R递归修改useraddpanxu添加一个用户passwd123456设置密码权限管理命令chownchangefileownershipchown[用户][文件或目录] 更改所有者,只有root可以进行chgrp[用户组][文件或目录] 更改所属组umask-S以rwx形式显示新建文件的缺省权限默认022umask显示的是掩码值,需要用777减去后三位得到真实值。umask023得到rwxr-xr--文件搜索命令find[搜索范围][匹配条件]find/etc-nameinit 根据文件名搜索(精确搜索)find/etc-name*init*模糊搜索时可以使用通配符*,可以用?代表匹配单个字符find/etc-inameinit 搜索时不区分大小写find/-size+204800 在根目录下查找大于100M的文件-n小于,=n等于n为数据块,在linux中一个数据块是512B,即0.5Kfind/home-userusername查找所有者为xx的文件,-group(根据所属组查找)find/etc-cmin-5 在/etc目录下查找5分钟内被修改过属性的文件和目录 -amin访问时间access -cmin文件属性change -mmin文件内容modifyfind/-size+204800-a-size-102400 查找大于50M小于100M的文件-a(and)-o(or) -typef根据文件类型查找f:文件d:目录l:软链接 -inum根据i节点查找find/etc-nameinittab-execls-l{}\;在/etc下查找inittab文件并显示其详细信息 -exec/-ok命令{}\;对搜索结果执行操作locate文件名 在文件资料库中查找文件,不能找到刚创建的文件,因为资料库没有更新 updatedb 手动更新文件资料库(/tmp下的文件不会收录在文件资料库中)locate-i文件名 查找时不区分大小写which命令 精确查找命令所在的目录及别名信息(别名指默认带的参数)whereis命令 搜索命令所在的目录及帮助文档路径grep字符串目录 在文件中查找字符串-i(不区分大小写)-v(排除指定字符串)grep-v^#/etc/inittab去除文件中的注释行"^"表示只去除开头是#的行,尖角号表示匹配开头帮助命令man命令或服务 查看命令或配置文件的帮助信息 用/加上要查找的内容,按n向后查找man配置文件(不可以加配置文件的绝对路径,只能加名称) man1:命令的帮助 man5:配置文件的帮助默认显示man1帮助man5passwd 显示passwd配置文件的信息whatisls 得到ls命令简短的介绍信息aproposinittab 查看配置文件的简短的信息用户管理命令useradd用户名 添加新用户passwd用户名 为用户名设置密码who 查看用户登录简略信息w 查看用户登录详细信息uptime 查看linux持续运行的时间压缩、解压缩.gz 命令 gzip文件名 压缩 gunzip或gzip-d 文件名 解压缩 只能压缩文件,不能压缩目录,压缩时不保留源文件.tar.gz 命令 tar-c(打包)-x(解包)-v(显示详细信息)-f(指定文件名)-z(同时压缩为.gz格式)-j(同时压缩成.bz2格式) tar-zcvf要打包的文件名 tar-zcxf要解包的文件名.zip 命令 zip压缩后的文件名文件或目录 -r(压缩目录) unzip文件名 解压缩.bz2 命令 bzip2-k(保留源文件)文件名 bunzip2解压缩-k(保留源文件)网络命令write本机用户 给本机在线用户发信息 进入输入状态后按ctrl+D结束输入。wall信息 给所有在线用户发送广播信息ifconfig 查看网络信息mail用户名 给xx发邮件Ctrl+D结束并发送 mail查看邮箱last 日志查询命令lastlog 显示系统最后登录的日志traceroutenetstat 显示网络相关信息 -t(TCP协议)-u(UDP协议)-l(监听)-r(路由)-n(显示IP地址和端口号) -tlun(查看本机监听的端口)-an(查看所有的网络连接)-rn(查看本机路由表)setup 配置网络(RedHat专有命令)mount 挂载(习惯性在/mnt/下创建挂载点) 挂载光盘mount[-tiso9660]/dev/sr0/mnt/cdromumount 解除挂载 umount/dev/sr0关机和重启shutdown-hnow 立即关机 shutdown-c(取消上一个关机命令)-h(关机)-r(重启)[时间]init运行级别 0-关机1-单用户2-不完全多用户,不含NFS服务3-完全多用户4-未分配5-图形界面6-重启runlevel 查询当前的运行级别logout 退出登录文本编辑器vi加文件名 a、i、o进入插入模式 :进入编辑模式 :setnu 加上行号 :wq保存退出插入命令:a:在光标所在字符后插入 A:在光标所在行的行尾插入i:在光标所在字符前插入 I:在光标所在行的行首插入o:在光标下插入新行 O:在光标上插入新行:setnu设置行号 :setnonu取消行号gg到第一行 G到最后一行nG到第n行 :n到第n行$移至行尾 0移至行首x删除光标所在处字符 nx删除光标所在处后n个字符dd删除光标所在行 ndd删除n行dG删除光标所在行到文件末尾的内容:n1,n2d删除指定范围的行yy复制当前行 nyy复制当前行以下n行dd剪切当前行 ndd剪切当前行以下n行pP粘贴在当前光标所在行下或行上r取代光标所在处字符R从光标所在处开始替换字符,按esc结束u取消上一步操作/string搜索指定字符串搜索时忽略大小写:setic取消:setnoicn搜索指定字符串的下一个出现位置:%s/old/new/g全文替换指定字符串(%s表示全文替换)(部分替换起始行,终止行s):n1,n2s/old/new/g在一定范围内替换指定字符串起始行,终止行s/要替换的字符串/要替换的新的字符串/g(不询问)c(询问):w保存修改 :wnew_filename另存为指定文件:wq保存修改并退出 ZZ快捷键,保存修改并退出:q!不保存修改并退出 :wq!保存修改并退出(文件所有者及root可使用)!表示强行保存,在文件没有写入权限时使用:r文件名可以导入一个文件的内容到光标所在的位置:!系统命令可以在不退出vim的前提下执行相关命令(:r!date)定义快捷键:map快捷键触发命令1.快速注释 :map^PI#<ESC> ^P:先按ctrl+v再按ctrl+p2.跳到行首并删除第一个字符 :map^B0x3.给连续行加上注释 :1,4s/^/#/g4.替换:ab内容要替换的内容 (在文档中输入的a都会自动变成b)/root/.vimrc(/home/username/.vimrc) vim的配置文件,使vim中做的配置永久生效,例如显示行号,定义快捷键,设置替换第5章RPM包命令管理5.1RPM包命名规则 httpd-2.2.15-15.el6.centos.l.i686.rpm httpd->软件包名 2.2.15->软件版本 15->软件发布的次数 el6.centos->适合的Linux平台 i686->适合的硬件平台 rpm->rpm包扩展名5.2RPM包依赖性 1.树形依赖:a->b->c 2.环形依赖:a->b->c->a 3.模块依赖:模块依赖查询网站: 包名和包全名 操作的包是没有安装的软件包时,使用包全名。操作已经安装的软件包时,使用包名。RPM包的安装rpm-ivh包全名 -i(install安装)-v(verbose显示详细信息)-h(hash显示进度)【--nodeps(不检测依赖性)不要使用】RPM包的升级rpm-Uvh包全名 -U(upgrade升级)RPM包的卸载rpm-e包名 -e(erase卸载)查询是否安装rpm-q包名 -q(query查询)-a(all所有)rpm-qa|grephttpd列出所有跟httpd有关的包rpm-qi包名 -i(information查询软件信息)-p(package查询未安装包的信息)查询包中文件安装位置rpm-ql包名 -l(list列表)-p(package查询未安装包的信息)查询系统文件属于哪个RPM包rpm-qf系统文件名 -f(file查询系统文件属于哪个包)查询软件包的依赖性rpm-qR包名 -R(requires查询软件包的依赖性)-p(package)5.3RPM包校验rpm-V已安装的包名 -V(verify校验指定RPM包中的文件) 验证内容中的8个信息 S:文件大小是否改变 M:文件的类型或权限是否被修改 5:文件MD5校验和是否改变D:设备的中、从代码是否改变 L:文件路径是否改变 U:文件的所有者是否改变 G:文件的所属组是否改变 T:文件的修改时间是否改变 文档类型 c:配置文件(configfile) d:普通文档(documentation) g:"鬼"文件(ghostfile) l:授权文件(licensefile) r:描述文件(readme) 鬼文件很少见,意味着该文件不应该被RPM包所包含 RPM包的文件提取方法 rpm2cpio包全名|cpio-idv.绝对路径 一行命令没有输完可以用\结尾然后换行继续输入 rpm2cpio 将rpm包转换为cpio格式 cpio 标准工具,用于创建软件档案文件和从文件档案中提取文件 cpio选项<[文件|设备] -i(copy-in模式,还原)-d(还原时自动新建目录)-v(显示还原过程)第6章RPM软件包管理yum在线管理6.1IP地址配置及网络yum源vi/etc/sysconfig/network-scripts/ifcfg-eth0 配置ip掩码dnsONBOOT=yes网络yum源位置vi/etc/yum.repos.d/CentOS-Base.repo[base]:容器名称,一定要放在[]中 name:容器说明,可以自己随便写mirrorlist:镜像站点,可以注释掉 baseurl:yum源服务器地址,可以修改成国内的enabled:此容器是否生效,不写或者写成enable=1时生效,写成enable=0时不生效gpgcheck:如果是1指RPM的数字证书生效,如果是0则不生效gpgkey:数字证书的公钥保存位置。不用修改6.2yum命令①查询yumlist 查询所有可用软件包列表yumsearch关键字(包名) 搜索服务器上所有和关键字相关的包②安装yum-yinstall包名 install:安装-y(自动回答yes)yum-yupdate包名 update:升级-y(自动回答yes)一定不要update全部,内核升级完需要配置,否则无法使用yum-yremove包名 remove:卸载-y(自动回答yes)不安全,尽量不卸载yumgrouplist 列出所有可用的软件组列表yumgroupinstall软件组名 安装指定软件组,组名可以由grouplist查询出来yumgroupremove软件组名 卸载指定软件组6.3光盘yum源搭建①挂载光盘mount/dev/cdrom/mnt/cdrom②让网络yum源失效(因为yum只检测以.rpeo结尾的文件)cd/etc/yum.repos.d/mvCentOS-Base.repoCentOS-Base.repo.bakmvCentOS-Debuginfo.repoCentOS-Debuginfo.repo.bakmvCentOS-Vault.repoCentOS-Vault.repo.bak③修改光盘yum源文件vimCentOS-Media.repo[c6-media]name=CentOS-$releasever-Mediabaseurl=file:///mnt/cdrom#地址为你自己的光盘挂载地址# file:///media/cdrom/# file:///media/cdrecorder#注释这两个不存在的地址gpgcheck=1enabled=1#把enabled=0改为enabled=1,让这个yum源配置文件生效gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-66.4源码包管理6.4.1源码包和RPM包的区别 RPM包安装位置(默认安装位置) /etc/ 配置文件安装目录 /usr/bin/ 可执行的命令安装目录 /usr/lib/ 程序所使用的函数库保存的位置 /usr/share/doc/ 基本的软件使用手册保存位置 /usr/share/man/ 帮助文件保存位置 源码包安装位置 建议安装在/usr/local/软件名/ usr(系统资源目录) 安装位置不同带来的影响 RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装apache的启动方法是: /etc/rc.d/init.d/httpdstart 通用方法是用绝对安装路径来启动 servicehttpdstart service命令只能用于redhat系列,且只能管理RPM包安装的服务 源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,所以只能用绝对路径进行服务的管理 例如:#/usr/local/apache2/bin/apachectlrestart或start或stop/***************************************************************************************/Httpd无法访问时诊断问题流程:1检测80端口是否开启netstat-l2检测httpd是否提供服务curl很大的原因是防火墙:通过/etc/init.d/iptablesstatus命令查询是否有打开80端口,如果没有可通过两种方式处理:1.修改vi/etc/sysconfig/iptables命令添加使防火墙开放80端口-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT2.关闭防火墙/etc/init.d/iptablesstop#start开启#restart重启永久性关闭防火墙chkconfig--level35iptablesoff排查方法:1.在linux下,使用ps和grep查看httpd服务#psaux|grephttpdroot75790.00.03872656pts/1S+17:480:00grephttpdapache122290.00.3329407108?S04:030:00/usr/sbin/httpdapache122300.00.3330767680?S04:030:00/usr/sbin/httpdapache122310.00.3330767820?S04:030:00/usr/sbin/httpdapache122320.00.3330767176?S04:030:00/usr/sbin/httpdapache122330.00.3330767984?S04:030:00/usr/sbin/httpdapache122340.00.3330766760?S04:030:00/usr/sbin/httpdapache122350.00.3330767016?S04:030:00/usr/sbin/httpdapache122360.00.3332888288?S04:030:00/usr/sbin/httpdroot180090.00.53280411820?SsMar210:00/usr/sbin/httpdapache300980.00.3330767000?S14:590:00/usr/sbin/httpdhttpd服务已经启动正常,如果看不到httpd,服务没有启动2.查看端口#netstat-anp|grep80tcp00:80:*LISTEN12229/httpdtcp00xxx.xxx.xxx.xxx:48500xxx.xxx.xxx.xxx:80ESTABLISHED1827/AliYunDun从上面看,httpd的端口80已经监听正常3.查看防火墙#serviceiptablesstatus#serviceiptablesstop在使用http请求80端口,就该能够使用了。/********************************************************************************************************/6.4.2源码包安装过程1、安装准备 安装C语言编译器(gcc) 下载源码包 /apache/httpd/2、安装注意事项 源代码保存位置:/usr/local/src/ 软件安装位置:/usr/local/ 如何确定安装过程报错: 安装过程停止并出现error、warning、或no的提示3、源码包安装过程 下载源码包 解压缩下载的源码包 du-shhttpd-2.2.9(查看目录大小) 进入压缩目录 cdhttpd-2.2.9 ①./configure 软件配置与检查 定义需要的功能选项。 ./configure--prefix=/usr/local/apache2 定义安装位置(必须定义) 检测系统环境是否符合安装要求 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑 ②编译安装 make编译 在这之前出现报错,可以使用makeclean清空所有产生的文件 makeinstall编译安装 /usr/local/apache2/bin/apachectlstart 启动源码包安装的apache4、源码包的卸载 不需要卸载命令,直接删除安装目录即可。不会留下任何垃圾文件。6.5脚本安装包1、例安装Webmin 下载地址:/projects/webadmin/files/webmin/ 解压缩,并进入解压缩目录,执行安装脚本 20:10000第7章 用户和用户组管理7.1用户配置文件7.1.1用户信息文件/etc/passwd 第一字段:用户名称第二字段:密码标识第三字段:UID(用户ID) UID:0:超级用户1-499:系统用户(伪用户)500-65535:普通用户 第四字段:GID(用户初始组ID)第五字段:用户说明第六字段:家目录 家目录:普通用户:/home/用户名/超级用户:/root/ 第七字段:登陆之后的Shell(Shell就是Linux的命令解释器)初始组和附加组:用户一登录就拥有一个初始组(只能有一个),可以加入多个附加组(其他的用户组)7.1.2影子文件/etc/shadow 第一字段:用户名第二字段:加密密码(加密算法升级为SHA512散列加密算法,如果密码位是!!或*代表没有密码,不能登录) 第三字段:密码最后一次修改日期(使用1970年1月1日作为标准时间,每过一天时间戳加1) 第四字段:两次密码的修改间隔时间(和第三字段相比)第五字段:密码有效期(和第三字段相比) 第六字段:密码修改到期前的有效天数(和第五字段相比) 第七字段:密码过期后的宽限天数(和第五字段相比0代表密码过期后立即失效-1代表密码永远不会失效) 第八字段:账号失效时间(要用时间戳表示)第九字段:保留时间戳换算把时间戳换算为日期:date-d"1970-01-0116066days"把日期换算为时间戳:echo$(($(date--date="2014/01/06"+%s)/86400+1))7.1.3组信息文件/etc/group和组密码文件/etc/gshadow1、组信息文件/etc/group 第一字段:组名第二字段:组密码标识第三字段:GID第四字段:组中附加用户2、组密码文件/etc/gshadow 第一字段:组名第二字段:组密码第三字段:组管理员用户名第四字段:组中附加用户7.2用户管理相关文件1、用户的家目录 普通用户:/home/用户名/,所属者和所属组都是此用户,权限是700 超级用户:/root/,所有者和所属组都是root用户,权限是5502、用户的邮箱 /var/spool/mail/用户名/3、用户模板目录 /etc/skel/ 用户刚刚创建时家目录中的文件从该目录中拷贝7.3用户管理命令7.3.1用户添加命令useradd useradd[选项]用户名 -uUID(手工指定用户的UID号) -d家目录(手工指定用户的家目录) -c用户说明(手工指定用户的说明) -g组名(手工指定用户的初始组) -G组名(指定用户的附加组) -sshell(手工指定用户的登陆shell,默认是/bin/bash) 添加默认用户sc并查询相关文件的变化 #useraddsc #grepsc/etc/passwd sc:x:501:501::/home/sc:/bin/bash #grepsc/etc/shadow sc:!!:17549:0:99999:7::: #grepsc/etc/group sc:x:501: #grepsc/etc/gshadow sc:!:: #ll-d/home/sc drwx.3scsc40961月1907:55/home/sc #ll-d/var/spool/mail/sc -rw-rw.1scmail01月1907:55/var/spool/mail/sc 用户的默认值配置文件/etc/default/useradd GROUP=100(默认用户组)HOME=/home(用户家目录)INACTIVE=-1(密码过期宽限天数) EXPIRE=(密码失效时间)SHELL=/bin/bash(默认shell)SKEL=/etc/skel(模板目录) CREATE_MAIL_SPOOL=yes(是否建立邮箱) 用户的默认值配置文件/etc/login.defs PASS_MAX_DAYS99999(密码有效期)PASS_MIN_DAYS0(密码修改间隔) PASS_MIN_LEN5(密码最小长度,现在使用PAM)PASS_WARN_AGE7(密码到期警告) UID_MIN500(最小UID)UID_MAX(最大UID)ENCRYPT_METHODSHA512(加密模式)7.3.2修改用户密码passwd passwd[选项]用户名 -S(查询用户密码的状态,仅root用户可用)-l(暂时锁定用户,仅root用户可用) -u(解锁用户,仅root用户可用)--stdin(可以通过管道符输出的数据作为用户的密码)7.3.3修改用户信息usermod修改用户密码状态chage usermod[选项]已存在的用户名 参数和passwd类似 chage[选项]已存在的用户名 -l(列出用户的详细密码状态)-d日期(密码最后一次更改日期) -m天数(两次密码修改间隔)-M天数(密码有效期) -W天数(密码过期前警告天数)-I天数(密码过期后宽限天数) -E日期(账号失效时间) chage最主要的作用: chage-d0user 将密码修改日期归0,这样用户一登录就要强制被要求修改密码7.3.4删除用户userdel切换用户su userdel-r用户名 删除用户的同时删除用户的家目录 id用户名 查看用户id su[选项]用户名 切换用户身份 -(代表连带用户的环境变量一起切换) -c“命令”(仅执行一次命令,而不切换用户身份)7.4用户组管理命令 groupadd[选项]组名 添加用户组 -gGID(指定组ID) groupmod[选项]组名 修改用户组 -n新组名(修改组名)-gGID(指定组ID) groupdel组名 删除用户组 gpasswd[选项]组名 把用户添加入组或从组中删除 -a用户名(把用户加入组)-d用户名(把用户从组中删除)第8章权限管理8.1ACL权限8.1.1ACL权限简介与开启 1、ACL权限简介 用来解决用户身份类型不够用的问题 2、查看分区ACL权限是否开启 dumpe2fs-h/dev/sda3 dumpe2fs命令是查询指定分区详细文件系统信息的命令 选项:-h(仅显示超级块中的信息,而不显示磁盘块组的详细信息) Defaultmountoptions:user_xattracl可以看到默认支持acl df-h 查看系统有哪些分区 3、临时开启分区ACL权限 mount-oremount,acl重新挂载根分区,并挂载加入ACL权限 4、永久开启分区ACL权限 vi/etc/fstab 系统开机自动挂载文件 UUID=7747d558-f37b-497c-a3ee-f3bc90c51d74/ ext4defaults,acl118.1.2查看与设定ACL权限 1、查看ACL命令 #getfacl文件名 查看ACL权限 2、设定ACL权限的命令 #setfacl选项文件名 -m(设定ACL权限)-x(删除指定的ACL权限)-b(删除所有的ACL权限) -d(设定默认ACL权限)-k(删除默认ACL权限)-R(递归设定ACL权限) 3、给用户设定ACL权限 #useraddzhangsan#useraddlisi#useraddshiting #groupaddtgroup#mkdir/project#chownroot:tgroup/project/ #chmod770/project/#setfacl-mu:st:rx/project/ 给用户st赋予r-x权限,使用“u:用户名:权限”的格式 4、给用户组设定ACL权限 #groupaddtgroup2#setfacl-mg:tgroup2:rwx/project/8.1.3最大有效权限与删除ACL权限 1、最大有效权限mask mask是用来指定最大的有效权限,如果给用户赋予了ACL权限,是需要和mask权限 “相与”才能得到用户的真正权限。 修改最大有效权限:setfacl-mm:rx 2、删除ACL权限 #setfacl-xu:用户名文件名#setfacl-xg:组名文件名 #setfacl-b文件名删除文件的所有ACL权限8.1.4默认ACL权限和递归ACL权限 1、递归ACL权限 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。 setfacl-mu:用户名:权限-R目录名(-R只能放在这个位置!) 2、默认ACL权限 作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限 setfacl-md:u:用户名:权限目录名8.2文件特殊权限8.2.1SetUID 1、SetUID的功能 只能给能够执行的二进制程序设定SUID权限 命令执行者要对程序拥有x权限 SUID即命令的权限在所有者栏里执行位置出现s权限。 2、设定SetUID的方法 4代表SUID#chmod4755文件名#chmodu+s文件名 3、取消SetUID的方法 #chmod755文件名#chmodu-s文件名 4、危险的SetUID 关键目录应严格控制写权限,如“/”、“/usr”等8.2.2SetGID 既能针对二进制文件,又能针对目录 SGID即命令的权限在所属组栏里执行位置出现s权限。8.2.3StickyBIT 1、SBIT黏着位的作用 只能给目录分配,针对普通用户,要求普通用户对这个目录拥有w和x权限。 如果一个目录被赋予黏着位,则普通用户可以删除自己建立的文件,不能删除其他用户建立的文件。 目录在其它人权限的位置x被换为t,例如/tmp目录 SBIT即命令的权限在其他人栏里执行位置出现s权限。 2、设置与取消黏着位 #chmod1755目录名取消:#chmod755目录名 #chmodo+t目录名取消:#chmodo-t目录名8.3文件系统属性chattr权限 1、chattr命令格式 chattr[+-=][选项]文件或目录名 i(把文件暂时锁定,只能读,root也受限制;不允许在目录下新建或删除,用于防止误操作) a(文件:只能在文件中增加内容,不能删改;目录:只允许建立、修改文件,不允许删除) #chattr+i文件名 设置a属性后,只能用echotext>>文件名的方式向文件中追加内容。 2、查看文件系统属性 lsattr选项文件名 -a(显示所有文件和目录)-d(若目标是目录,仅列出目录本身属性)8.4系统命令sudo权限 1、sudo权限 root把本来只能超级用户执行的命令赋予普通用户执行,sudo的操作对象是系统命令 2、sudo使用 #visudo 实际上是修改/etc/sudoers文件 rootALL=(ALL)ALL #用户名被管理主机的地址=(可使用的身份)授权命令(绝对路径) #%wheelALL=(ALL)ALL #%组名被管理主机的地址=(可使用的身份)授权命令(绝对路径) 3、授权sc用户可以重启服务器 #visudo scALL=/sbin/shutdown-rnow 4、普通用户执行sudo赋予的命令 sudo-l 查看可用的sudo命令 sudo/sbin/shutdown-rnow 第9章文件系统管理9.1回顾分区和文件系统 1、分区类型 主分区:最多一共可以分配4个主分区 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。 扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。 逻辑分区:在扩展分区中划分,IDE硬盘:Linux最多支持59个逻辑分区,SCSI硬盘最多11个。 2、分区表示方法 分区的设备文件名: 主分区1:/dev/sda1 主分区2:/dev/sda2 主分区3:/dev/sda3 扩展分区:/dev/sda4 逻辑分区1:/dev/sda5 逻辑分区2:/dev/sda6 逻辑分区3:/dev/sda7(分区号1-4只能给主分区或扩展分区,逻辑分区从sda5开始) 3、文件系统 ext2:是ext文件系统的升级版本,RedHatLinux7.2版本以前的系统默认都是ext2文件系统。 1993年发布,最大支持16TB的分区和最大2TB的文件。 ext3:是ext2文件系统的升级版本,最大区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。 支持最大16TB的分区和最大2TB的文件。 ext4:是ext3文件系统的升级版。ext4在性能、伸缩性和可靠性方面进行了大量的改进,向下兼容ext3, 最大支持1EB(1024PB=1024x1024TB)的分区和16TB的文件、无限数量子目录、Extents连续数据块概念、 多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、 默认启用barrier等。是CentOS6.3的默认文件系统。9.2文件系统常用命令9.2.1df命令、du命令、fsck命令和dumpe2fs命令 1、文件系统查看命令df #df[选项][挂载点] -a(显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs) -h(使用习惯单位显示容量,如KB、MB、GB) -T(显示文件系统类型) -m(以MB为单位显示容量) -k(以KB为单位显示容量,默认即以KB为单位。) 2、统计目录或文件大小 #du[选项][目录或文件名] -a(显示每个文件的磁盘占用量。默认只统计子目录的磁盘占用量) -h(使用习惯单位显示容量,如KB、MB、GB) -s(统计总占用量,而不列出子目录和子文件的占用量) 3、du命令和df命令的区别 df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间 (最常见的是文件已经删除,但是系统并没有释放空间) du命令是面向文件的,只会计算文件或目录占用的空间。 4、文件系统修复命令 #fsck[选项]分区设备文件名 (开机后系统会自动执行) -a(不用显示用户提示,自动修复文件系统) -y(自动修复,和-a作用一致,有些文件系统只支持-y) 5、显示磁盘状态命令 #dumpe2fs分区设备文件名 主要看超级块中数据块大小9.2.2挂载命令 1、查询与自动挂载 #mount[-l] 查询系统中已经挂载的设备,-l会显示卷标名称 #mount-a 依据配置文件/etc/fstab的内容,自动挂载 2、挂载命令格式 #mount[-t文件系统][-L卷标名][-o特殊选项]设备文件名挂载点 -t文件系统(加入文件系统类型来指定挂载的类型,可以用ext3、ext4、iso9660等文件系统) -L卷标名(挂载指定卷标的分区,而不是安装设备文件名挂载) -o特殊权限(可以指定挂载的额外选项)9.2.3挂载光盘与U盘 1、挂载光盘 #mkdir/mnt/cdrom/ 建立挂载点(盘符) #mount-tiso9660/dev/cdrom/mnt/cdrom 挂载光盘 也可用#mount/dev/sr0/mnt/cdrom挂载光盘 2、卸载命令 #umount/mnt/cdrom #umount设备文件名或挂载点 3、挂载U盘 #fdisk-l 查看U盘设备文件名 #mount-tvfat/dev/sdb1/mnt/usb/ 挂载U盘 Linux默认不支持NTFS文件系统9.2.4支持NTFS文件系统 1、下载NTFS-3G插件 /community/ntfs-3g-download/ 2、安装NTFS-3G #tar-zxvfntfs-3g_ntfsprogs-2014.2.15.tgz 解压 #cdntfs-3g_ntfsprogs-2014.2.15 进入解压目录 #./configure 编译器准备,没有指定安装目录,安装到默认位置 #make 编译 #makeinstall 编译安装 3、使用 #mount-tntfs-3g分区设备名挂载点9.3fdisk分区9.3.1fdisk命令分区过程 1、添加一块新硬盘 2、查看新硬盘 #fdisk-l 3、使用fdisk命令分区 #fdisk/dev/sdb d(删除分区)m(显示帮助)n(新建分区)t(手工改变一个分区的系统ID) l(显示已知的文件系统类型,82为Linuxswap分区,83为Linux分区) w(保存退出)q(不保存退出)p(显示分区列表) 4、重新读取分区表信息 #partprob 当分区表被占用,分区失败要求重启时,可用此命令 5、格式化分区 #mkfs-text4/dev/sdb1 将sdb1分区格式化为ext4文件系统 6、建立挂载点并挂载 [root@localhost~]#mkdir/disk1 [root@localhost~]#mount/dev/sdb1/disk1/ [root@localhost~]#mkdir/disk5 [root@localhost~]#mount/dev/sdb5/disk5/9.3.2分区自动挂载与fstab文件修复 1、/etc/fstab文件 第一字段:分区设备文件名或UUID(硬盘通用唯一识别码) 第二字段:挂载点 第三字段:文件系统名称 第四字段:挂载参数 第五字段:指定分区是否被dump备份,0:不备份1:每天备份2:不定期备份 第六字段:指定分区是否被fsck检测,0:不检测其他数字代表检测的优先级,1>2 2、分区自动挂载 #vi/etc/fstab UUID=/disk1ext4defaults12 为防止出错导致系统崩溃,执行#mount-a 依据/etc/fstab的内容重新挂载 3、/etc/fstab文件修复 #mount-oremount,rw/ 9.4分配swap分区 1、free命令 #free 查看内存与swap分区使用情况 cached(缓存):是指把读出来的数据保存在内存当中,当再次读取时,不用读取硬盘, 而直接从内存当中读取,加速了数据的读取过程。 buffer(缓冲):在写入数据时,先把分散的写入操作保存到内存中,再集中写入硬盘, 减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。 2、新建swap分区 #fdisk/dev/sdb 把分区ID改为82,修改后执行partprobe 3、格式化 #mkswap/dev/sdb6 重启后执行才能生效 4、加入swap分区 #swapon/dev/sdb6 加入swap分区 #swapoff/dev/sdb6 取消swap分区 5、swap分区开机自动挂载 #vim/etc/fstab /dev/sdb6swapswapdefaults00第10章Shell基础10.1Shell概述 1、Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的 界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性较强。Shell是解释 执行的脚本语言,在Shell中可以直接调用Linux系统命令。 2、Shell的分类 BourneShell:从1979起Unix就开始使用,主文件名为sh CShell:主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。 Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。 Bourne家族主要包括:sh、ksh、Bash、psh、zsh; C家族主要包括:csh、tcsh; Bash:与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。10.2Shell脚本的执行方式 1、echo输出命令 #echo[选项][输出内容] -e(支持反斜线控制的字符转换) #echo-e"\e[1;31mabcd\e[0m" 输出颜色 #30m黑色#31m红色#32m绿色#33m黄色 #34m蓝色#35m洋红#36m青色#37m白色 2、第一个脚本 #vihello.sh #!/bin/Bash 标注此程序为SHELL程序,不能省略 #Thefirstprogram #Author echo-e"XXXXXXXXXXXXXXXXXXX" 3、执行脚本 方法①赋予执行权限,直接运行 #chmod755hello.sh #./hello.sh 方法②通过Bash调用执行脚本 #Bashhello.sh dos2unix 将windows中写的脚本转成linux可识别的形式举例(Tetris.sh)10.3Bash的基本功能10.3.1历史命令与命令补全 1、历史命令 #history[选项][历史命令保存文件] -c(清空历史命令)-w(把缓存中的历史命令保存文件~/.bash_history) 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改 2、历史命令的调用 使用上、下箭头调用以前的历史命令 使用"!n"重复执行第n条历史命令 使用"!!"重复执行上一条命令 使用"!字符串"重复执行最后一条以该字串开头的命令 3、命令与文件补全 在Bash中,命令与文件补全是非常方便与常用的功能。我们只要在输入命令或文件时, 按"Tab"键就会自动进行补全。10.3.2命令别名与常用快捷键 1、命令别名 #alias别名="原命令" 设定命令别名 #alias 查询命令别名 2、命令执行时顺序 ①第一顺位执行用绝对路径或相对路径执行的命令 ②2、第二顺位执行别名 ③第三顺位执行Bash的内部命令 ④第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。 3、让别名永久生效 #vi/root/.bashrc 4、删除别名 #unalias别名 5、Bash常用快捷键 Ctrl+A把光标移动到命令行开头 Ctrl+E把光标移动到命令行结尾 Ctrl+C强制终止当前的命令* Ctrl+L清屏,相当于clear命令* Ctrl+U删除或剪切光标之前的内容* Ctrl+K删除或剪切光标之后的内容 Ctrl+Y粘贴Ctrl+U或Ctrl+K剪切的内容* Ctrl+R在历史命令中搜索* Ctrl+D退出当前终端* Ctrl+Z暂停,并放入后台 Ctrl+S暂停屏幕输出 Ctrl+Q恢复屏幕输出10.3.3输入输出重定向 1、标准输入输出 设备 设备文件名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/stdout 1 标准输出 显示器 /dev/stderr 2 标准错误输出 2、输出重定向 ①标准输出重定向(将本应该输出到屏幕上的内容输出到文件中供管理员查阅) 命令>文件以覆盖的方式把命令的正确输出输出到指定的文件或设备中。 命令>>文件以追加的方式把命令的正确输出输出到指定的文件或设备中。 ②标准错误输出重定向 错误命令2>文件 以覆盖的方式把命令的错误输出输出到指定的文件或设备中。 错误命令2>>文件以追加的方式把命令的错误输出输出到指定的文件或设备中。 ③正确输出和错误输出同时保存 命令>文件2>&1 以覆盖的方式把正确输出和错误输出都保存到同一文件中。 命令>>文件2>&1以追加的方式把正确输出和错误输出都保存到同一文件中。 命令&>文件以覆盖的方式把正确输出和错误输出都保存到同一文件中。 命令&>>文件以追加的方式把正确输出和错误输出都保存到同一文件中。 命令>>文件12>>文件2把正确的输出追加到文件1中,错误的输出追加到文件2中。 #ls&>/dev/null 把输出信息丢到垃圾箱。/dev/null实际上是不存在的 3、输入重定向(把本应从键盘输入的内容改为从文件输入) #wc[选项][文件名] 统计命令,以Ctrl+D结束输入 -c(统计字节数)-w(统计单词数)-l(统计行数) wc<anaconda-ks.cfg 统计文件的字符数等内容10.3.4多命令顺序执行与管道符 1、多命令顺序执行 多命令执行符 格式 作用 ; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系 && 命令1&&命令2 逻辑与,当命令1正确执行后,命令2才会执行 || 命令1||命令2 逻辑或,当命令1执行不正确,命令2才会执行 2、dd命令(用于磁盘复制或数据复制) #ddif=输入文件of=输出文件bs=字节数count=个数 if=输入文件(指定源文件或原设备) of=输出文件(指定目标文件或目标设备) bs=字节数(指定一次输入/输出多少字节,即把这些字节看做一个数据块) count=个数(指定输入/输出多少个数据块) 例如:#date;ddif=/dev/zeroof=/root/testfilebs=1kcount=100000;date 3、管道符 #命令1|命令2 命令1的正确输出作为命令2的操作对象 4、#grep[选项]"搜索内容"文件名 在文件中搜索包含关键字的行 -i(忽略大小写)-n(输出行号)-v(反向查找)--color=auto(搜索出的关键字用颜色显示)10.3.5通配符与其他特殊符号 1、通配符(用于匹配文件名) ?匹配一个任意字符 *匹配0个或任意多个任意字符,也就是可以匹配任意内容 []匹配中括号中任意一个字符,例如[abc]]匹配a或者b或者c [-]匹配中括号中任意一个字符,-代表一个范围,例如[a-z]匹配任意一个小写字母 [^]逻辑非,表示匹配不是中括号内的一个字符。例如[^0-9]代表匹配一个不是数字的字符 2、Bash中的其他特殊符号 ''单引号,在单引号中所有特殊符号都没有特殊含义 ""双引号,在双引号中所有特殊符号都没有特殊含义,"$`\"是例外。 ``反引号,反引号括起来的内容是系统命令,在Bash中会优先执行,推荐使用$() $()和反引号作用一样,用来引用系统命令 #在Shell脚本中,#开头的行代表注释 $用于调用变量的值 \转义符,跟在\后的字符将失去特殊含义,变为普通字符10.4Bash的变量10.4.1用户自定义变量 1、什么是变量 2、变量设置规则 ①变量名称可以由字母、数字、下划线组成,但是不能以数字开头。 ②在Bash中,变量的默认类型都是字符串类型,如要进行数值运算,必须指定变量为数值型。 ③变量用等号连接值,等号左右两侧不能有空格。 ④变量的值如果有空格,需要使用单引号或者双引号将其包括。 ⑤在变量的值中,可以使用"\"转义符。 ⑥如果需要增加变量的值,可以进行变量值的叠加,不过变量需要写成"$变量名"或${变量名} ⑦如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。 ⑧环境变量名建议大写,便于区分。 3、变量分类 ①用户自定义变量 ②环境变量:主要保存的是和操作系统环境相关的数据。 ③位置参数变量:主要用于向脚本当中传递参数或数据,变量名不能自定义,作用是固定的。 ④预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量的作用也是固定的。 4、本地变量 ①变量定义:#name=xxx ②变量叠加:#aa=123#aa="$aa"456#aa=${aa}789 ③变量调用:#echo$name ④变量查看:#set ⑤变量删除:#unsetname10.4.2环境变量 1、什么是环境变量 用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell 当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效。 2、设置环境变量 #export变量名=变量值 申明变量 #env 查询变量 #unset变量名 删除变量 #pstree 确定进程树 3、系统常见环境变量 PATH:系统查找命令的路径 echo$PATH PATH="$PATH":/root/sh PATH变量的叠加 PS1:定义系统提示符变量 \d:显示日期,格式是“星期月日” \h:显示简写主机名。如默认主机名“localhost” \t:显示24小时制时间,格式为“HH:MM:SS” \T:显示12小时制时间,格式为“HH:MM:SS” \A:显示24小时制时间,格式为“HH:MM” \u:显示当前用户名 \w:显示当前所在目录的完整名称 \W:显示当前所在目录的最后一个目录 \#:执行的第几个命令 \$:提示符。root用户为#,普通用户为$ 举例:[root@localhost~]#PS1='[\u@\t\w]\$'10.4.3位置参数变量 1、位置参数变量 $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数 需要用大括号包含,例如${10} $*:这个变量代表命令行中所有参数,$*把所有的参数看成一个整体 $@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 $#:这个变量代表命令行中所有参数的个数10.4.4预定义变量 1、预定义变量 ①$?最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行 如果这个变量的值非0,证明上一个命令执行不正确。 ②$$当前进程的进程号PID ③$!后台运行的最后一个进程的进程号PID。 命令结尾加&表示将进程放入后台,并没有终止 2、接收键盘输入 #read[选项][变量名] -p"提示信息":在等待read输入时,输出提示信息 -t秒数:read命令会一直等待用户输入,使用此选项指定等待时间 -n字符数:read命令只接受指定的字符数,就会执行 -s:隐藏输入的数据,适用于机密信息的输入10.5Bash的运算符10.5.1数值运算与运算符 1、declare声明变量的类型 declare[+/-][选项]变量名 -给变量设置类型属性 +取消变量的类型属性 -i将变量声明为整数型 -x将变量声明为环境变量 -p显示指定变量的被声明的类型 2、数值运算-方法1 [root@localhost~]#aa=11 [root@localhost~]#bb=22 [root@localhost~]#declare-icc=$aa+$bb [root@localhost~]#echo$cc 方法2:expr或let数值运算工具 [root@localhost~]#aa=11 [root@localhost~]#bb=22 [root@localhost~]#dd=$(expr$aa+$bb)把expr命令执行结果赋给dd [root@localhost~]#echo$dd 方法3:$((运算式))或$[运算式](推荐使用这种方法) [root@localhost~]#aa=11 [root@localhost~]#bb=22 [root@localhost~]#ff=$(($aa+$bb)) [root@localhost~]#gg=$[$aa+$bb] 单小括号包含的是系统命令,双小括号包含的是数值运算 3、运算符 优先级 运算符 说明 13 -+ 单目负、单目正 12 !~ 逻辑非、按位取反或补码 11 */% 乘、除、取模 10 +- 加、减 9 <<>> 按位左移、按位右移 8 <=>=<> 小于或等于、大于或等于、小于、大于 7 ==!= 等于、不等于 6 & 按位与 5 ~ 按位异或 4 | 按位或 3 && 逻辑与 2 || 逻辑或 1 =+=-=&=… 赋值、运算且赋值等10.5.2变量测试与内容替换 1、[root@localhost~]#x=${y-new} 如果变量y不存在,则把x的值赋为new 用的时候查表即可10.6环境变量配置文件10.6.1环境变量配置文件简介 1、source命令 强制让配置文件无需重启直接生效 [root@localhost~]#source配置文件 或[root@localhost~]#.配置文件 2、环境变量配置文件简介 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量, 比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。 /etc/profile 对任何用户都会生效(首先读取) /etc/profile.d/*.sh 对任何用户都会生效(第二调用) ~/.bash_profile 对当前用户生效 (第二调用) ~/.bashrc 对当前用户生效 (第三调用) /etc/bashrc 对任何用户都会生效(最后调用)10.6.2环境变量配置文件作用 1、/etc/profile的作用 USER变量: LOGNAME变量: MAIL变量: PATH变量: HOSTNAME变量: HISTSIZE变量: umask: 调用/etc/profile.d/*.sh10.6.3其他配置文件和登录信息 1、注销时生效的环境变量配置文件 ~/.bash_logout 2、其它配置文件 ~/bash_history 历史记录配置文件 3、Shell登录信息 本地终端欢迎信息 /etc/issue 转义符 作用 \d 显示当前系统日期 \s 显示操作系统名称 \l 显示登录的终端号 \m 显示硬件体系结构(如i386、i686) \n 显示主机名 \o 显示域名 \r 显示内核版本 \t 显示当前系统时间 \u 显示当前登录用户的序列号 远程终端欢迎信息: /etc/ 转义符在/etc/文件中不能被使用 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定, 加入"Banner/etc/"行才能显示(记得重启SSH服务) 登陆后欢迎信息(远程本地都生效):/etc/motd第11章Shell编程11.1基础正则表达式 1、正则表达式与通配符 ①正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。 grep、awk、sed等命令可以支持正则表达式。 ②通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp 等命令不支持正则表达式,所以只能使用shell自己的通配符进行匹配。 2、基础正则表达式 元字符 作用 * 前一个字符匹配0次或任意多次 . 匹配除了换行符外的任意一个字符 ^ 匹配行首。例如:^hello会匹配以hello开头的行。 $ 匹配行尾。例如:hello$会匹配以hello结尾的行。 [] 匹配中括号中指定范围中的任意一个字符,只匹配一个字符[0-9] [^] 匹配除中括号的字符以外的任意一个字符。 \ 转义符,用于取消特殊符号的含义 \{n\} 表示其前面的字符恰好出现n次。例如[0-9]\{4\}匹配4位数字 \{n,\} 表示其前面的字符出现不小于n次。例如:[0-9]\{2,\}表示两位及以上数字 \{n,m\} 表示其前面的字符至少出现n次,最多出现m次11.2字符截取命令11.2.1cut字段提取命令 1、cut命令(默认按制表符分割列) #cut[选项]文件名 -f序号(提取第几列)-d分隔符(按照指定分隔符分割列)11.2.2printf命令 1、printf格式化输出命令 printf'输出类型输出格式'输出内容 输出类型: %ns输出字符串。n为数字,指代输出几个字符 %ni输出整数。n指代输出几个数字 %m.nf输出浮点数,m、n分别指代要输出的整数位数和小数位数 输出格式: \a输出警告声音 \b输出退格键,也就是Backspace键 \f清除屏幕 \n换行 \r回车,也就是Enter键 \t水平输出制表符,也就是Tab键 \v垂直输出制表符,也就是Tab键 用printf打印文件内容只能使用如下的格式 [root@localhost~]#printf"%s"$(cat/etc/passwd) 在awk命令的输出中支持print和printf命令 ①print:print会在每个输出之后自动加入一个换行符(Linux默认没有print命令) print只能在awk中使用。 ②printf:printf是标准格式输出命令,并不会自动加入换行符,如果需要换行, 需要手工加入换行符。11.2.3awk命令 1、awk命令 #awk'条件1{动作1}条件2{动作2}…'文件名 条件(Pattern) 一般使用关系表达式作为条件 x>10判断变量x是否大于10 x>=10判断变量x是否大于等于10 x<=10判断变量x是否小于等于10 动作(Action) 格式化输出 流程控制语句 $n代表文件的第n列$0代表整行数据 awk可以使用空格作为分隔符,例如 [root@localhost~]#df-h|awk'{printf$1"\t"$3"\t"$4"\n"}' 文件系统已用可用 /dev/sda52.2G14G tmpfs0504M /dev/sda126M158M /dev/sda235M1.8G /dev/sdb168M1.9G /dev/sdb568M1.9G 提取根分区占用的百分比 #df-h|grep'sda5'|awk'{printf$5"\n"}'|cut-d"%"-f1 2、BEGIN条件 作用是在所有的数据读取之前执行这条命令 #awk'BEGIN{……}{printf$1……}' 3、FS内置变量(用于指定分隔符) #cat/etc/passwd|grep"/bin/bash"|awk'BEGIN{FS=":"}{print$1"\t"$3"\n"}' 4、END(在所有的数据都读取完毕后再执行这条命令) #awk'END{……}{printf$1……}' 5、关系运算符 #awk'$6>=87{printf$2"\n"}'11.2.4sed命令 1、sed命令简介 sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。 sed主要是用来将数据进行选取、替换、删除、新增的命令。 sed可以从管道符接收数据进行编辑,可以直接修改命令的结果,而vi只能编辑文档 2、sed用法 #sed[选项]'[动作]'文件名 选项: -n一般sed命令会把所有的数据都输出到屏幕,如果加入此选项, 则只会把经过sed命令处理的行输出到屏幕。 -e允许对输入数据应用多条sed命令编辑 -i用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。 动作: a\追加,在当前行后添加一行或多行。添加多行时,除最后一行外, 每行末尾需要用"\"代表数据未完结。 c\行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外, 每行末尾需要用"\"代表数据未完结。 i\插入,在当前行前插入一行或多行。插入多行时,除最后一行外, 每行末尾需要用"\"代表数据未完结。 d删除,删除指定的行。 p打印,输出指定的行。 s字串替换,用一个字符串替换另外一个字符串。格式为: “行范围s/旧字串/新字串/g”,和vim中的替换格式类似。 例如:[root@localhost~]#sed2p/etc/passwd-n 只输出文件第2行 [root@localhost~]#df-h|sed-n"2p" 输出管道符传递的内容 /dev/sda517G2.2G14G14%/ 删除 #sed'2,4d'/etc/pass
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度出租车座套供应周期与质量保证合同
- 电咖啡机用空咖啡胶囊市场发展现状调查及供需格局分析预测报告
- 椎间盘修复用医疗设备市场需求与消费特点分析
- 2024年度机械设备维修与租赁合同
- 轧线机电池制造机械市场发展现状调查及供需格局分析预测报告
- 理发座椅市场需求与消费特点分析
- 2024年度卫星通信技术应用合同
- 2024年度实验室搬迁及运输合同
- 2024年度房屋租赁合同(东莞版)
- 数据管理用计算机市场发展现状调查及供需格局分析预测报告
- 播音主持专业职业生涯规划书
- 人教版六年级上册数学期末看图列式计算专题训练
- 机械伤害事故现场的紧急救援和治疗措施
- 江苏省扬州树人学校2022年中考一模语文试卷及答案
- 14S501-2 双层井盖图集
- 2024届上海市嘉定区嘉定二中高一化学第一学期期中综合测试试题含解析
- 肌内效贴布贴扎技术
- 普通话培训 省级普通话测试员
- 重大版小学英语五年级上册全册教案
- 第五单元《简易方程》大单元教学解读五年级数学上册人教版
- 凯里市舟溪镇3.19较大爆炸事故
评论
0/150
提交评论