马哥M28-第8-10天的学习总结

马哥M28-第八天、

vim :

u撤销最近的更改,一次一个;

#u撤销之前多次更改;

U 撤销光标落在这行后所有此行的更改

按ctrl - r重做最后的“撤销”更改

. 重复前一个操作

n. 重复前一个操作n次

退出模式下 e! 直接还原到文件最初打开状态

在不完全保存退出或者故障导致异常关闭vim后当再打开时,会提示filename.swp缓冲交换文件,此为保存用户执行修改操作时的所有操作,在修改过程中并未

对源文件进行改动,所以此处可以利用其还原操作,当然另外在此补充知识:watch 命令,可以实时刷新一条命令的执行输出结果,用来对比查看在打开vim时以及之后

所做的的所有操作,比较生成.swp文件以及之后的变化!

watch :watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了!

-n或--interval  watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。

-d或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。

-t 或-no-title  会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。

-h, --help 查看帮助文档

-n 1 -d  ->指间隔一秒高亮显示变化区域信息;  -n .1 -d ->指间隔0.1秒高亮显示变化区域信息

示例:命令:每隔一秒高亮显示网络链接数的变化情况

watch -n 1 -d netstat -ant

ping命令:

示例:ping -c10 -w1 127.0.0.1   最终距离最开始ping之后1秒结束ping动作

ping -c10 -W1 127.0.0.1   最终会每次间隔一秒ping完十次后结束命令   小写w表示多少多长时间结束Ping; 大写W表示每次Ping间隔时间 秒为单位

作业:

1.在vim中设置tab缩进为4个字符

vim /etc/vimrc

set tabstop=4

2.复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

cp /etc/rc.d/init.d/functions /tmp

:%[email protected]/etc/sysconfig/[email protected]/var/[email protected]

3、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号

:%[email protected]^#\([[:space:]]\+.*\)@\[email protected]  后向引用:以每个小括号开始为分组,

  1. 编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

    主机名 hostname

    IP  ifconfig    ifconfig eth0  具体查看某张网卡的网络信息

    系统版本  cat /etc/redhat-release

    内核版本  uname -r

    CPU型号   cat /proc/cpuinfo

    内存大小  cat /proc/meminfo   或 free -m

    硬盘大小  fdisk -l

#!bin/bash

echo 主机名"$(hostname)"

ipaddr=$(ifconfig ens33 |grep broad |tr -s " "|cut -d" " -f3)

echo ip地址"$ipaddr"

version1=$(cat /etc/redhat-release)

echo 系统版本"${version1}"

version2=$(uname -r)

echo "内核版本"${version2}

cpu=$(cat /proc/cpuinfo |egrep "model name" |uniq |cut -d: -f2)

echo  cpu型号"${cpu}"

mem=$(echo $[$(cat /proc/meminfo |egrep MemTotal |tr -s " " :|cut -d: -f2)/1024])

echo 内存大小"$mem"

sda=$(fdisk -l |egrep "Disk /" |cut -d, -f1|cut -d: -f2|cut -d" " -f2,3)

echo 硬盘大小"$sda"

2、编写脚本/root/bin/backup.sh,可实现将/etc/目录备份到/root/etcYYYY-mm-dd中

练习题2优化版v1:

#date:2018-01-22

echo "准备复制/etc/下的所有目录以及文件到当前目录中:\n"

DATE_NOW=$(date +%F)

backup="etc${DATE_NOW}"

if [ -f "$backup" ] ;then

echo "当前目录存在同备份同名目录,现进行删除并备份操作:"

rm -f ${backup}

cp -rp /etc ./${backup}

fi

check=$(echo $?)

if [ "0" -eq "$check" ] ;then

echo "备份完成,请检查备份文件!"

else

echo "备份失败,请重新检查进行备份!"

fi

***检索复制后内容与复制对象之间的完全正确:通常使用比对文件字节数大小、文件和目录个数(、md5等加密)完全一直应该可以确定

作业:

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

df     (fdisk -l 不能查看使用率)

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

主要命令:netstat -tan  -> 查看网络Ip连接信息

练习:

1、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

#!/bin/bash

A=$(cat /etc/passwd |head -n 10 |tail -1 |cut -d: -f3)

B=$(cat /etc/passwd |head -n 20 |tail -1 |cut -d: -f3)

echo "$[$A+$B]"

作业:

2、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

3、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

作业:写一个生成脚本的脚本,/root/bin/createsh.sh当执行如/root/bin/createsh.sh  test.sh时,会自动在/root/bin下新建一个名为test.sh的新文件,该文件会自动给上执行权限,同时自动在文件头加上shabang及注释信息,注释信息如下:

#!/bin/bash

# ------------------------------------------

# Filename:    test.sh(此处会根据文件名自动更换)

# Revision:    1.0

# Date:        2017-01-22(此处会自动变换为当前日期)

# Author:      Nanyibo

# Email:       [email protected]

# ------------------------------------------

# Copyright:   2017 nanyibo

# License:     GPL

之后,自动使用vim打开,等待用户开始编写脚本正文。

7,1           Top

#!/bin/bash

#V1~之后考虑完善脚本,使其更加具有交互性

#Problem:如何在自动开启vim后,光标落在新的空行行首???

datenow=$(date +%F)

if [ -z "$1" ];then

echo "您要准备创建的脚本名称是被您吃了吗?!"

#此处可以替用户创建以当前日期等组合字符串命名的默认脚本文件~本人懒,请南一博boss看着写吧,嘿嘿嘿!

exit 1

else

if [ -f "$1" ];then

echo "脚本已存在,请创建正确的脚本名称"

exit 1  #可以自定义error错误返回值,默认使用错误返回1

else

#dircurrent=$(pwd)  判断用户当前所在目录,后续判断完善替用户在默认创建指定目录后创建脚本  mkdir -p /app/test ;

newname=$(echo "$1" |cut -d'.' -f1)

touch /app/test_sh/${newname}.sh  #touch本身执行完成是没有返回结果

autoCrefile=/app/test_sh/${newname}.sh

chmod 755 ${autoCrefile}

access=$(echo $?)

if [ "0" -eq "${access}" ];then

echo "系统已自动为您生成相应的文件名的脚本,现在将自动生成标准内容"

echo -e "#!/bin/bash\n#----------------------------------\n#Filename:     ${newname}\n#Revision:  1.0\n#Date:     ${datenow}\n#

Author:    sunxuefeng\n#Email:     [email protected]\n#---------------------------------\n#Copyright:    2018-01-22 sunxuefeng\n#Li

cense:        GPL" > ${autoCrefile}

echo "脚本以及对应默认格式内容已经填充,请继续编辑脚本文件"

sleep 1   #为了更好的实现交互,灵活使用睡眠指令,可以将瞬时延缓,

vim ${autoCrefile}

else

echo "脚本创建失败,请检查故障"

fi

fi

fi

马哥M28第九天、

根据退出状态而定,命令可以有条件的进行选择执行:

&&  代表条件性的AND  THEN

||  代表条件性的OR   ELSE     比如: 为真0 && echo "成功";exit 0 || (echo "失败";exit 1

test []

-v VAR

变量VAR是否设置
数值测试:

-gt 是否大于

-ge 是否大于等于

-eq 是否等于

-ne 是否不等于

-lt 是否小于

-le 是否小于等于

练习:

1.编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数不等于1,则提示用户“应该给一个参数”,并立即退出;如果参数个数等于1,则显示所指向的文件中的空白行数

#!/bin/bash

[ $# -ne 1 ] && ( echo "应该给一个参数";exit 1 )

echo "$(cat $1 |egrep -c "^[[:space:]]*$")"

2.编写脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,如果未给定一个合法的IP地址,则提示 “给一个合法的IPV4地址” ,并立即退出。如果给出IPV4地址,则测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

echo $1 |egrep -q "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" && ( ping -c1 -w1 $1 >/dev/null && echo "主机网络畅通" || echo "主机网络不通" ) || echo "输入IP有误,格式:xxx.xxx.xxx.xxx,xxx小于255"

转义:

'' 和 \ 完全转义 ;

""在以下四种情况不转议:!  \  `  $

a交互式与非交互式登录:

交互式:访问顺序 /etc/profile --> /etc/profile.d/*.sh -->~/.bash_profile --> ~/.bashrc

非交互式:访问顺序 ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*sh

srouce 与 . 在当前shell下执行脚本,用来设置环境变量以及别名、函数等

/bin/bash 或路径方式执行脚本,是子shell用执行,可以继承shell的环境变量,但在脚本中设置的任何变量,均不会影响父shell.

if then else fi

#!/bin/bash

if [ $# -eq 0 ];then

echo "请输入用户名"

exit 1

fi

if $(id $1 &>/dev/null);then

echo "${1} alread exist"

exit 1

else

useradd $1

fi

-----------------------------------------

#!/bin/bash

if [ $1 -lt 3];then

echo redhat

elif [ $1 -eq 3 ];then

echo "green"

elif [ $1 -gt 3 -a $1 -lt 5 ]

echo yellow

else

echo white

fi

--------------------------------------------------

case $1 in

1)echo redhat;;

2)echo yellow;;

3)echo green;;

*)echo blue;;

esac     #   case .. in 中的每个分支里都可以使用模式,即可以有多个选项  1 |2 |3 |4)echo ..;;

作业:

  1. 编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满

    #!/bin/bash

    cipan=`df |grep /dev/sd |tr -s " " % |cut -d % -f5 |sort -nr |head -n1`

    inode=`df -i |grep /dev/sd | tr -s " " % |cut -d% -f5 |sort -nr |head -n1`

    #这里暂不使用if进行分情况判断了

    [ ${cipan} -gt 80 -o ${inode} -gt 80 ] && wall "磁盘或INode号超过80%"

2.编写脚本/bin/per.sh ,判断当前用户对指定的参数文件,是否不可读并且不可写

if [ ! -r $1 ] && [ ! -w $1 ];then

echo "用户对该文件不可读不可写"

fi

3.编写脚本/root/bin/excute.sh,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件

#!/bin/bash

if [ -f $1 ];then

if $(echo $1 |grep -qo \.sh$);then

chmod a+x $1

echo "成功"

exit 0

else

echo "非脚本文件"

exit 1

fi

else

echo "文件不存在"

fi

4.编写脚本/root/bin/nologin.sh和login.sh,实现禁止和允许普通用户登录系统

#!/bin/bash

a=$(id -u $1)

if [ $a -ge 1000 ];then  #CentOS7中系统用户uid<1000

usermod -s /bin/bash $1

else

echo "系统用户,不可更改"

fi

#------------------------------------------------------

#!/bin/bash

a=$(id -u $1)

if [ $a -ge 1000 ];then

usermod -s /sbin/nologin $1

else

echo "系统用户,不可禁用"

fi

5.让所有用户的PATH环境变量的值多出一个路径,例如: /usr/local/apache/bin

echo "PATH=$PATH:/usr/local/apache/bin" >>/etc/profile.d/path.sh

6.用户root登录时,将命令提示符变成红色,并自动启用如下别名:rm='rm -i'

PS1="\[\e[31m\][\[email protected]\h \W]\\$\[\e[0m\]"

alias cdnet='cd /etc/sysconfig/network-scripts/'

alias editnet='vim /etc/sysconfig/network-scripts/ifcfg-eth0'

alias editnet='vim /etc/sysconfig/network-scripts/ifcfg-eth0'

7、编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等

一旦执行reset.sh,会设置以下内容

创建一个别名为ipconfig功能是显示第一个网卡的IP

设置提示符为绿色

设置vim自动显示行号

设置登录后的欢迎界面(内容自定义)

echo 'alias ipconfig="ifconfig |head -2 |tail -1|tr -s [:blank:] :|cut -d: -f4"' >> ~/.bash_profile

echo 'PS1="\[\e[32m[\[email protected]\h \W]\\$\e[0m\] "' >> ~/.bash_profile

echo "set number" >> /etc/vimrc

echo 自定义欢迎界面 > /etc/motd

重点题目:

8、编写一个创建用户的脚本,要求以下功能 :脚本路径 /app/shell2/

a.提示用户输入希望创建的用户名(当用户超时8秒不输入,提示超时并退出)

b.检测用户名是否已存在,若存在则提示用户名已存在,并退出。

c.用户创建完成后提示用户是否要继续设置密码,若用户输入yes、YES、y、Y时则继续下一步,如输入其他,或超时8秒均退出。

d.接上一步,为用户设置密码,首先提示用户输入要设置的密码,密码的输入过程不可见。

e.对用户上一步所输入的密码进行长度检测,若少于5位(包含5位),则提示用户密码太短,并退出。

f.对用户在第d步所输入的密码进行复杂度检测,若所输入的内容与/usr/share/dict/words 字典中的某一行条目完全一致,则提示密码是一个常见单词,并退出。

g.再一次让用户输入密码,若第二次输入的密码与在第d步输入的不一致,则提示用户两次密码不一致并退出。

h.d至g步骤全部通过后,为用户设置密码后,并提示密码已成功设置。最后正确退出。

以上的所有退出情况应给出不同的返回值。

小记录:过多的设置变量会占用内存,尽可能的减少不必要的变量!
     #!/bin/bash

#author :    sunxuefeng_magedu

#date   :    2018-1-25

for i in {1..3}  #for i in {n..m}  do .. done       for ((i=0;i<=2;i++));do .. done       for i in $(seq 1 3)  do .. done

do

echo

read -t 12 -p "请输入您要创建的用户名:" username

if [ 142 -eq $(echo $?) ];then

echo -e "输入超时,请重新输入用户名\n"

continue

elif [ -z "${username}" ];then

echo "输入的用户名不能为空!"

continue

elif [ 0 -eq $(echo $?) ];then

id ${username} &>/dev/null

if [ 0 -eq $(echo $?) ];then

echo -e "用户名已存在,请重新输入其他用户名\n"

continue

fi

else

useradd ${username}

echo "用户合法,创建成功"

echo "----------------------------------------------"

#exit 105 此处可以继续判断一下自定义异常代码字典,创建异常导致失败时抛出

fi

break

done

read -t 15 -p "是否为新用户设置密码?(y/yes/YES/Yes/yEs,or input other anything to No SET)" a

case ${a} in

y|yes|YES|Yes|yEs) echo "准备为新用户设置密码" ;;

*) echo "未设置密码,退出"

exit

;;

esac

for i in $(seq 1 3)

do

echo

read -t 15 -s -p "请开始设置您的密码并牢记:" pawd

if [ 142 -eq $(echo $?)];then

echo "输入密码超时,请重新输入"

continue

echo ${pawd} |egrep [[:blamk:]] &>/dev/null

elif [ 0 -eq $(echo $?)];then

echo "密码还有空白字符等非法字符,请以数字字母或下划线正确设置"

contine #自定义

else

pwdsize=$(echo ${pawd} |wc -c)

let pwdsizz=${pwdsizz}-1

if [ 5 -gt ${pwdsizz} ];then

echo "密码长度不能少于5位,请重新设置安全密码"

continue

else

read -s -p "Retry agine input your passwd:" rpawd

if [ "${rpawd}" == "${pawd}" ];then

echo "${rpawd}" |passwd --stdin ${username} #同一个脚本下变量是可以引用的,不存在不同循环不可引用的情况

if [ 0 -eq $(echo $?) ];then

echo "密码设置成功"

exit 0

else

echo "Unknown ERROR,please check it,or retry to set the password agine"

exit 105

fi

else

echo "前后两次输入的密码不一致,请重新输入正确的密码"

continue

fi

fi

fi

break

done

locate  KeyWord  :基于数据库模式的查找  速度快、缺乏实时性

有用的选项

-i 不区分大小写的搜索

-n N  只列举前N个匹配项目

-r(regex)  使用正则表达式

示例

搜索名称或路径中带有"conf"的文件

locate  conf    搜索时会基于根路径搜索

使用Regex来搜索以".conf"结尾的文件

locate -r "\.conf$"

数据文件的位置

/var/lib/mlocate/mlocate.db

更新数据文件方法

updatedb

马哥教育M28-第十天、

find

指搜索层级

-maxdepth level 最大搜索深度,指定目录为第一级

-mindepth level 最小搜索目录深度

根据文件名和Inode查找:

-name "文件名称" : 支持使用glob(通配)
        find /etc/ -name "*pas?wd*"     *,?,[],[^]

-iname "文件名称" :不区分字母大小写

find /etc/ -iname *pas?wd*

-inum n  按inode号查找

find -inum 69

-samefile name 相同inode号的文件

find -samefile a123

-links n  链接数为n的文件

find -links 2

-regex "PATTERN"  :以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

find /etc/ -regextype posix-egrep -regex ".*/pa[sa]{2}wd"

根据属主、属组查找:

-user  USERNAME : 查找属主为指定用户(UID)的文件
    -group GROUPNAME: 查找属组为指定组(GID)的文件

-uid    UserID :查找属主为指定的UID的文件

-gid    GroupID :查找数组为指定的GID号的文件

-nouser  :查找没有属主的文件

-nogroup : 查找没有属组的文件

find -user guanyunchang   NO user

根据文件类型查找:

-type TYPE:

f:普通文件类型

d:目录文件

l:符号链接文件

s:套接字文件

b:块设备文件

c:字符设备文件

p:管道文件

find /dev/ -type c

根据文件大小来查找;

-size [+|-]#unit

常用单位: k, M,G, c(byte)

#unit : (#-1,#]

如:6k,表示 (5k,6k]

-#unit :[0,#-1]

如 :-6k, 表示[0,5k]

+#unit :(#,oo)

如:+6k, 表示(6k,oo)

根据时间戳:

以天为单位:

-atime [+|-]#

# : [#,#+1)

+# :[#+1,oo]

-# :[0,#)

-mtime

-ctime

以分钟为单位:

-amin

-mmin

-cmin

find  /etc/ -mtime -1

根据权限查找:

-perm [/|-]MODE

mode : 精确权限匹配

/mode :任何一类(u,g,o)对象的权限中只要能有一位匹配即可,或关系, +从CentOS7开始淘汰

-MODE :每一类对象都必须同时拥有指定权限,与关系

0  表示不关注

find -perm 755   会匹配权限模式恰好是755的文件

只要当任意人有写权限时,find -perm /222就会匹配,当权限描述为组合权限时,各权限之间为或关系

只有当每个人都有写权限时,find -perm -222才会匹配,当权限描述为组和权限时,各权限之间为与关系

只有当各自位置对象满足包含或等于655时,即u至少有读写,g至少有读和可执行,o其他人有读和可执行才会匹配

处理动作:

-print :默认的处理动作,显示至屏幕

-ls : 类似于对查找到的文件执行 ls -l

-delete: 删除查找到的文件

find -size +6k -delete

-fls file :查找到的所有文件的长格式信息保存至指定文件中

-ok -exec   ok是交互式, exec直接运行后面所接的命令

find -name "*.tmp" -ok rm -f {} \;

find -type f -name "*.sh" -exec chmod a+x {} \;

find -name "*.conf" -exec cp -i {} {}.bak \;

find \( pattern \) 必须注意:小括号里面的表达式必须与小括号有空格才行,特殊符需要加反斜杠

由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了xargs命令,xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或者回车符将stdin的数据分隔成arguments; 注意:文件名或者是其他意义的名词内含有空格符的情况;有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决

示例:

ls |xargs  rm

find /sbin -perm -700 |ls -l 错误,find本身不支持管道符

find /sbin -perm -700 |xargs ls -1

find和xargs格式:find |xargs COMMAND

练习:

  1. 查找/var目录下属主为root,且属组为Mail的所有文件

    find /var -user root -group mail

  2. 查找 /var 目录下不属于root lp gdm的所有文件

    find /var -not \( -user root -o -user lp -o -user gdm \)

  3. 查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

    find /var -mtime -7 -not \( -user root -o -user postfix \)

  4. 查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

    find / -type f -atime -7

压缩

compress

compress srcfile 将源文件压缩成压缩包,源文件消失

compress -v srcfile 或compress -v -d dstfile.Z 压缩或解压缩时显示详细信息
    compress -c srcfile > dstfile.Z 将源文件压缩成压缩包,源文件保留

compress -d dstfile.Z 或uncompress dstfile.Z 将压缩包解压成源文件,压缩包消失

compress -d -c dstfile.Z > srcfile 或 zcat dstfile.Z > srcfile 将压缩包解压成源文件,压缩包保留

gzip

gzip srcfile 将源文件压缩成压缩包,源文件消失

gzip -c srcfile > dstfile.gz 将源文件压缩成压缩包,源文件保留

gzip -d dstfile.gz 或gunzip dstfile.gz 将压缩包解压成源文件,压缩包消失

gizp -d -c dstfile.gz > srcfile 或zcat dstfile.gz > srcfile 将压缩包解压成源文件,压缩包保留

gzip -# srcfile (#即1-9,表示压缩比,数字越大压缩比越高,默认为6)

bzip2

bzip2 srcfile 将源文件压缩成压缩包,源文件消失

bzip2 -k srcfile 将源文件压缩成压缩包,源文件保留且权限不变

bzip2 -c srcfile > dstfile.bz2 将源文件压缩成压缩包,源文件保留但权限根据umask值而改变

bzip2 -d dstfile.bz2 或bunzip dstfile.bz2 将压缩包解压成源文件,压缩包消失

bzip2 -k -d dstfile.bz2或bunzip -k dstfile.bz2 将压缩包解压成源文件,压缩包保留且权限不变

bzip2 -d -c dstfile.bz2 > srcfile 或bunzip -c dstfile.bz2 > srcfile 解压压缩包,压缩包保留但是解压后文件权限根据umask而定

bzip2 -# srcfile (即1-9,表示压缩比,数字越大压缩比越高,默认为9)

bzcat dstfile.bz2 可以预览解压后的内容,配合>也能解压,但权限会根据umask值而改变

xz [OPTION]...FILE...

-k keep,保留源文件

-d 解压缩

-# 1-9,压缩比,默认为6

xzcat :不显示解压缩的前提下查看文本文件内容

zip

zip -r 生成后路径(或压缩包名) 被压缩文件..    可以多个源文件一起 -->打包,可以跨平台

zip -r config.zip /etc/passwd /etc/group /etc/shadow /etc/gshadow

unzip config.zip

tar 归档、解档

tar -tf mage.tar.gz(tgz) 预览压缩包的文件列表

tar -rf mage.tar /path/newfile 往tar包中增加文件(注意只能对tar包增加文件,而不能对压缩包增加)

tar -cf mage.tar filename1 filename2 .. 将多个文件打包至mage.tar

tar -zcf mage.tar.gz mage.tar.gz filename1 filename2 .. 将多个文件打包并用gzip压缩为mage.tar.gz

tar -jcf mage.tar.bz2 filename1 filename2 filenameN 将多个文件打包并用bzip2压缩为mage.tar.bz2

tar -Jcf mage.tar.xz filename1 filename2 filenameN 将多个文件打包并用xz压缩为mage.tar.xz

tar -zxvf mage.tar.gz -C /tmp 解压gz的压缩包到/tmp目录

tar -zxvf mage.tar.gz 解压gz的压缩包到当前目录并显示详细过程

tar zcvf mage.tar.gz -T yasuolist.txt -X paichu.txt

-T 指定需要打包并压缩的文件列表,每个文件路径一行

-X 指定要排除的文件列表,每个文件一行

split -b 2k -d etc.tgz 4

将压缩包以2k为单位分割为4份 split -b (size)k -d dst n

cat 40* > mage.tgz 将以40开头命名的多个分割包合并为mage.tgz,如果是文件,则是将多个文件内容追加方式到mage.tgz

cpio

功能:复制文件从或到归档

cpio命令是通过重定向的方式将文件进行打包备份、还原恢复的工具,它可以解压以".cpio"或".tar"结尾的文件

cpio [选项] > 文件名或者设备名

cpio [选项] < 文件名或者设备名

选项

-o 将文件拷贝打包成文件或者将文件输出到设备上

-i 解包,将打包文件解压或将设备上的备份还原到系统

-t 预览,查看文件内容或者输出到设备上的文件内容

-v 显示打包过程中的文件名称

-d 解包生成目录,在cpio还原时,自动的建立目录

-c 一种较新的存储方式

sed  :针对行数据处理,一行一行的顺序读取处理,但默认不对源文件进行更改,输出到终端

sed -n '1p' passwd 只打印第一行  -n不打印,  1p  打印第一行

ifconfig eth1 |sed -n '2p'

seq 100 |sed -n '1~2p' 步进(默认1),只显示奇数行  偶数+1是奇数

seq 100 |sed -n '2~2p' 步进 ,只显示偶数行  偶数+偶数  偶数

sed -i.orig 's/dog/cat/gi' pets  备份后再替换  备份文件为xx.orig

sed '2a\dog cat dog cat cat' pets 在第二行后增加指定内容的新行

sed '2i\dog cat dog cat cat' pets 在第二行前插入指定内容的新行

sed '2c\dog cat gog cat cat' pets 替换第二行

sed '2w /path/filename' pets 将第二行保存到指定文件

sed '2r /path/filename' pets 将指定文件读取并加到第二行后

sed '=' pets 在显示的结果前显示行号

echo {1,2,3}[ab]  ->  1[ab]  2[ab]  3[ab]  中括号单独在命令行 或者普通的出现在echo中,不作为任何特殊含义

echo {1,2,3}{a,b}  ->  1a 1b 2a 2b 3a 3b

echo {1,2,3}ab    ->  1ab  2ab  3ab

原文地址:http://blog.51cto.com/12947626/2066042

时间: 2024-11-13 12:48:55

马哥M28-第8-10天的学习总结的相关文章

马哥教育M28-孙雪峰-前四节课学习总结

马哥M28-第一天. 1.前瞻介绍:1970~unics -> unix  C :unix出现,第一台计算机出现:1972年10台:1984年richard stallman创建GNU组织(gnu is not linux),制定了GPL守则 ->可以使用其对unix进行修改.复制粘贴等一系列编辑开发,最终发布后也必须公布自己的源代码! 2.linux系统安装-CentOS6.9 \7.4: a.使用VMware workstation; b.磁盘分区:/   /boot   /app  /s

马哥教育面授班20-2第一周学习笔记5

系统用户 PS1 定义提示符的格式 例如: PS1=XXX 当前用户名就会被临时修改 echo $PS1 [\[email protected]\h \W]\$   //u表示用户,h 主机名 W 当前的文件夹 #  管理员 $  普通用户 当我们输入一个命令后,它会通过shell交给kernel,kernel来判断这个命令的类型 命令类型: 内置命令 :内核自带的 kernel自身就有的 外置命令 :GUN file 安装的文件 查看一下内核 cd /boot/ ll vmlinuz-3.10

马哥教育面授班20-2第一周学习笔记3

workspace 工作区    ethernet以太网 pts 模拟终端 图形界面:    Ctrl+Alt+F1 字符界面:    Ctrl+Alt+F2-F6 切换虚拟终端:(本机操作)    # chvt 1-6 关闭图形界面,在纯字符界面下操作: # init 3 打开图形界面: # init 5 一条小鱼 Alt + F2 输入:free the fish 安装VMwareTools df //查看挂载的位置 cd /media/VMware\ Tools/      pwd    

马哥教育面授班20-2第一周学习笔记4

开机以root权限进入系统方法   centos6 centos7 用相同命令(都是以root账户进入) gedit /etc/gdm/custom.conf  [daemon] AutomaticLoginEnable=True    //自动登录开启  AutomaticLogin=root          //自动登录的账户  [security] [xdmcp]  [greeter]  [chooser]  [debug] 修改计算机名 centos6 临时修改  hostname x

马哥教育面授班20-2第一周学习笔记1

第一周的学习主要是理论知识,了解掌握后为后面的知识打下一个良好的基础. 计算机基础计算机系统硬件主机核心设备:中央处理器CPU(运算器ALU.控制器CU):存储器:ROM.RAM主机其他设备:存储(硬盘.软盘.光盘.usb):输入输出设备(键盘.鼠标.打印机.扫描仪.显示器):其他:调制解调器.光猫软件系统软件:操作系统.程序语言处理系统.数据库.驱动程序应用软件:通用软件(办公软件例如:OFFICE):专用软件(适用各个工作环境的软件) 计算机发展史计算机发展年代时间表:40-50年代   第

马哥教育面授班20-2第一周学习笔记2

服务器OS WINDOWSLINUXUNIX:System(bell lab , aix solaris hp_ux):BSD(netbsd openbsd freebsd) linux起源1984 Richard Stallman发起GNU计划,开发了基于unix的自由软件和工具代表 gcc vi 创建GPL公共许可证1991 linux torvalds 发布linux 并加入GNUlinux官网:www.kernel.orglinux系统是由内核和GNU的软件组合在一起 linux常见的版

马哥教育第20天至23天学习总结

马哥M28_20天<font size=4>1.ping -s 60000 目标主机ip地址 -f :指定发包大小60000ping2.IP :由前网络号部分和后主机号部分组成:网络号位数必须是连续性的二进制111111,不能是非连续性的:网络ID由IP二进制与子网掩码二进制组合求解得到正确的网络号计算网络数:2^可变的网络ID计算网络的主机最大数量:2^主机ID位-2 0.0.0.0表示所有地址 cidr书写方式:1.1.1.0/24 24表示网络号位数 A类地址: 前8位网络ID,后24位

马哥教育2017全新课程体系震撼发布

2017课程详细大纲可到官网或者联系课程顾问获取! 马哥教育历经8年发展,已成为泛运维培训领域领导品牌. 马哥教育课程不断更新和优化,全新2017版震撼上市,加入大量企业级实战课程! 马哥教育团队成员均为业内5年以上运维架构师.运维总监级别,拥有国内顶级师资团队. 马哥教育毕业学员在业内普遍被认可,过去8年学员毕业平均薪资可达12K! 多年来,以学员就业和满意度为目标,致力打造IT领域高端培训品牌. 目前已与业内多家互联网公司展开人才合作, 得到用人单位和合作伙伴认可! 2017全新课程,前20

马哥Linux2016最新高薪运维视频课程

马哥2016最新Linux高薪运维学习课程采用了RHEL 6.6和CentOS 7.1,全面介绍CentOS7全新特性,本课程加入实战式Shell.Mysql数据库入门.iptables入门及实战应用.Http协议缓存实战Varnish,Lamp及Lnmp组合进阶管理.自动化运维工具puppet精讲.KVM虚拟化技术精讲,全新课程体系完全贴合生产环境:加入以往没有的实战案例,让你感受课堂=实战!课程结构及内容深度优化,首次新增和更新知识幅度高达90%. "努力,让日子更从容.更愉悦.更优雅一些.