设为首页 收藏本站
查看: 1516|回复: 0

shell基础脚本

[复制链接]

尚未签到

发表于 2018-8-29 06:46:51 | 显示全部楼层 |阅读模式
  echo -e "\e[1;42m this is test \e[0m"            'this is test'会被彩色打印,其中颜色由42m决定
  echo -n this is test                    'this is test'不会被换行
  printf "%-4s %-5.1f\n"    wade 3.1            wade 3.1分别按照左对齐打印出来,并采用4s和5.1f格式
  pgrep gedit                        可以查看到gedit的进程ID
  export命令用来设置环境变量。至此以后,从当前shell脚本执行的任何程序都会继承这个变量
  export PATH="$PATH:/home/user/bin"            在PATH中新加一条路径
  var=1234567890
  length=${#var}
  echo $length                        获得变量的长度
  echo $SHELL或者echo $0                    识别当前的shell版本
  echo $UID                        如果结果为0,标示当前为root用户
  echo $PS1                        显示当前bash的提示字符串,其中\u为用户名,\h为主机名,\w为当前的工作目录。
  可以利用\e[1;32m设置彩色提示字符串
  算数操作:
  no1=4
  no2=5
  let result=no1+no2                    let命令可以直接执行基本的算数操作
  let no1+=6
  echo $result
  echo $no1
  result=$[no1+no2]
  result=$[no1+100]                    可以使用[]操作符,和let命令类似
  result=$((no1+10))                    也可以使用(())操作符,但是变量名之前需要加上$
  result=`expr 3 + 4`
  result=$(expr $no1+5)                    expr也可以用作类似算数操作
  echo "4 * 0.45" | bc                    bc执行浮点数运算
  echo "scale=2;3/8" | bc                    scale设置小数精度,scale=2表示将小数位个数设置为2
  no=100
  echo "obase=2;$no" | bc                    利用obase进行进制转换
  no=1100100
  echo "obase=10;ibase=2;$no" | bc            obase和ibase配合进行进制转换
  echo "sqrt(100)" | bc                    sqrt计算平方根
  echo "10^10" | bc                    ^计算平方
  文本描述符:
  0    stdin
  1    stdout
  2    stderr
  echo "this is test" >temp.txt
  echo "this is test 1" >>temp.txt            >等同于1>;>>等同于1>>
  当命令输出错误信息时,stderr信息就会被打印出来。当一个命令发生错误并退回时,它会返回一个非0的退出状态;而当命令成功完成后,它会返回数字0。
  退出状态可以从特殊变量$?中获得。
  ls + 2>out.txt                        将错误输出到out.txt文件中
  cmd 2>stderr.txt 1>stdout.txt                将stderr单独定向到一个文件中,将stdout重定向到另一个文件中
  cmd &>output.txt                    将stderr和stdout都被重定向到同一个文件中
  command | tee [-a] FILE1 FILE2                在终端中打印,并将它重定向到文件FILE1和FILE2.-a表示为追加内容选项
  exec 3out.txt                    列出当前目录下的内容,cat -n追加行号存到out.txt文件中
  pwd
  (cd /bin;ls)                        利用()定义一个子shell
  pwd
  read -n 2 var                        读取2个字符并存入变量var中
  read -s var                        以不回显的方式存入变量
  read -p "enter input:" var                显示提示信息
  read -t timeout    var                    在特定时限内读取输入
  read -d "定界符" var                    用定界符结束输入行
  IFS(内部字段分隔符)        默认为空
  for循环
  for var in list;
  do
  commands
  done
  for ((i=1;i $str2 ]]                    字符串1的字母序大于字符串2,返回真
  [[ $str1 < $str2 ]]                    字符串1的字母序小于字符串2,返回真
  [[ -z $str1 ]]                        若str1为空,返回真
  [[ -n $str1 ]]                        若str1内容为非空,则为真
  if [ $var -eq 0 ];then echo "true";fi
  can be written as
  if test $var -eq 0;then echo "true";fi            可以用test命令替代[]符号
  cat 1.sh 2.sh                        拼接1.sh和2.sh文件内容
  cat -s 1.sh                        -s选项压缩1.sh中的连续的空白行
  cat 1.sh | tr -s '\n'                    利用tr移除空白行
  cat -T 1.sh                        将1.sh中的制表符标记成^|
  script -t 2> timing.log -a output.session        timing.log用于存储时序信息,描述命令在何时运行。output.session用于存储命令输出
  exit                            退出录制终端会话
  scriptreplay timing.log output.session            播放录制终端会话
  Terminal1输入以下命令:
  mkfifo    scriptfifo
  Terminal2输入以下命令:
  cat scriptfifo
  返回terminal1,输入以下命令:
  script -f scriptfifo
  commands;
  exit                            当退出时,终端1变成广播员,终端2变成听众
  find . -print                        当前目录下打印出匹配文件的文件名(路径)。其中'\n'作为用于分隔文件的定界符
  find . -print0                        '\0'作为定界符
  find . -iname "example*" -print                寻找当前目录下example开头的文件,忽略大小写,并打印出来
  find . \( -name "*.txt" -o -name "*.pdf" \) -print    寻找匹配多个条件中的一个并打印
  find . -path "*slynus*" -print                寻找符合slynus路径
  find . -regex "*slynus*" -print                以正则表达式的方式寻找路径
  find . ! -name "*.txt" -print                当前目录下不是以txt为后缀的文件
  find . -maxdepth 1 -type f -print            maxdepth参数指定寻找最大深度
  find . -mindepth 2 -type f -print            mindepth参数指定寻找最小深度
  -atime    访问时间    用户最近一次访问文件的时间
  -mtime    修改时间    文件内容最后一次被修改的时间
  -ctime    变化时间    文件元数据(例如权限或所有权)最后一次被改变的时间
  其中-表示小于,+表示大于
  -amin    访问时间    以分钟为计时
  -mmin    修改时间
  -cmin    变化时间
  -newer    比较时间    需找比指定文件更新的所有文件
  find . -type f -size +2k                寻找当前目录下文件大小大于2k的文件.
  find . -type f -size -2k
  find . -type f -size 2k
  还可以用b/c/w/k/m/g代替k
  find . -type f -name "*.txt" -delete            删除匹配的文件
  find . -type f -perm 644 -print                基于文件权限匹配
  find . -type f -user slynux  -print            基于文件所有权匹配
  find . -type f -user root -exec chown slynux {} \;    利用exec和{}可以结合find执行命令或动作
  本例的意思是将所有的符合文件全部更改其所有权为slynux用户.其中{}表示为所有符合条件的集合
  find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
  find devel/source_path \( -name ".git" -pruns \) -o \( -type f -print \)  该命令表示打印出不包括在.git目录中的所有文件的名称(路径).使用关键字pruns
  xargs命令把从stdin接收到的数据重新格式化,再将其作为参数提供给其他命令
  cat example.txt | xargs                    xargs将多行输入转换成单行输出。将'\n'符转换成" "(空格)
  cat example.txt    | xargs -n 3                指定每行最大的参数数量n,每个参数都是由" "(空格)隔开
  echo "splitXsplitXsplitXsplit" | xargs -d X -n 2    利用-d选项指定分隔符,默认为IFS作为分隔符
  #cecho.sh
  echo $*'#'                        定义一个文件,当参数被传递给文件后,它会将这些参数打印出来,并以#字符作为结
  尾
  #args.txt
  args1
  args2
  args3
  cat args.txt | xargs -n 1 ./cecho.sh            当需要每次提供一个参数时,指定n=1
  cat args.txt | xargs     ./cecho.sh            当需要每次提供所有参数时
  INPUT | xargs -n X                    每次执行脚本需要X个参数的命令时
  ./cecho.sh -p arg1 -l
  ./cecho.sh -p arg2 -l                    arg部分是唯一的可变文本
  cat args.txt | xargs -I {} ./cecho.sh -p {} -l        利用-I选项配合{}指定了替换字符串,可以实现上面的执行命令
  find . -type f -name "*.txt" -print0 | xargs -0 rm -f    删除匹配的文件,其中\0作为输入定界符。
  find source_code_dir_path -type f -name "*.c" -print0 | xargs -0 wc -l        统计源代码目录中所有C程序文件的行数
  tr只能通过stdin,而无法通过命令行参数来接受输入。
  tr [options] set1 set2
  将来自stdin的输入字符从set1映射到set2,并输出到stdout。若set2的长度小于set1,则set2会不断重复其最后一个字符,直到长度与set1相同。如果set2的
  长度大于set1,那么在set2中超出set1长度的那部分字符则完全被忽略
  echo "HELLO WORLD WHO IS THIS" | tr 'A-Z' 'a-z'        将输入字符由大写转换成小写
  echo 12345 | tr '0-9' '9876543210'            加密
  echo 87654 | tr '9876543210' '0-9'            解密
  echo "hello 123 world 456" | tr -d '0-9'        利用-d选项删除字符。本例结果为hello world
  echo hello 1 char 2 next 4 | tr -d -c '0-9 \n'        利用-c选项使用字符的补集,将去除非set1中出现的所有字符。本例结果为 1 2 4
  echo "ssssss" | tr -s 's'                利用-s选项压缩字符。本例压缩s,结果为s
  字符类
  alnum        字母和数字
  alpha        字母
  cntrl        控制(非打印)字符
  digit        数字
  graph        图形字符
  lower        小写字母
  print        可打印字符
  punct        标点符号
  space        空白字符
  upper        大写字母
  xdigit        十六进制字符
  tr '[:lower:]' '[:upper:]'
  md5sum 1.sh > 1.md5                计算1.sh的校验和(32字符,十六进制)并保存到1.md5文件中
  md5sum -c 1.md5                    利用生成的文件核实数据完整性
  md5sum *.md5                    用所有的.md5信息来检查所有的文件
  sha1sum 1.sh > 1.sha1                计算1.shd点校验和(40字符,16进制)
  md5deep -rl directory_path > directory.md5    计算目录的校验和。r表示递归,l表示使用相对路径。需要安装md5deep软件包
  md5sum -c directory.md5                核实目录
  sort file1.txt file2.txt > sort.txt        利用sort将一组文件进行排序
  cat sort.txt | uniq > uniq.txt            利用uniq找出已排序文件中不重复的行
  sort -n file.txt                按数字进行排序
  sort -r file.txt                按逆序进行排序
  sort a.txt -o a.txt                对a.txt的文件排序
  sort -M months.txt                按月份进行排序
  sort -nC file.txt                检查是否按照数字进行排序
  sort -m sorted1 sorted2                合并两个排过序的文件,而且不需要对合并后的文件再进行排序
  sort -nrk 1 data.txt                -k指定了排序应该按照哪一个键(列号)来进行排序。
  sort -u unsort.txt                只显示唯一的行
  uniq -u unsort.txt                只显示唯一的行
  sort unsort.txt | uniq -c            统计各行在文件中出现的次数
  sort unsort.txt | uniq -d            找出文件中重复的行
  sort data.txt | uniq -s 2 -w 2            -s指定可以跳过前n个字符,-w指定用于比较的最大字符数
  uniq -z file.txt                用uniq命令生成包含0值字节终止符的输出
  uniq -z file.txt | xargs -0 rm            删除指定的文件
  temp_file=$(tempfile)                为变量temp_file赋值了一个临时文件名
  temp_file="/tmp/file-$RANDOM"            加带了随机数的文件名作为临时文件名
  echo $RANDOM                    总是返回一个随机数
  temp_file="/tmp/var.$$"                生成带当前运行脚本的进程ID的临时文件
  dd if=/dev/zero bs=100k count=1 of=data.file    生成一个大小为100KB的测试文件
  split -b 10k data.file                将文件分割为多个大小为10k的文件
  split -b 10k data.file -d -a 4            -d参数指定以数字为后缀,-a参数指定后缀长度
  split -b 10k data.file -d -a 4 split_file    指定每个分割文件的前缀为split_file
  split -l 10 data.file                -l选项指定分割文件仅有10行
  csplit server.log /SERVER/ -n 2 -s {*} -f server -b "%02d.log";rm server00.log
  /SERVER/    用来匹配某一行,分割过程即从此开始
  {*}        表示根据匹配重复执行分割,直到文件末尾为止。{整数}指定分割执行的次数
  -s        使命令进入静默模式,不打印其他信息
  -n        指定分割后的文件名后缀的数字个数
  -f        指定分割后的文件名前缀
  -b        指定后缀格式
  因为分割后的第一个文件没有任何内容,所以删除第一个文件
  file_jpg="sample.jpg"
  name=${file_jpg%.*}                利用$操作符可以将名称部分从“名称.扩展名”这种格式的文件名中提取出来
  echo File name is :$name
  var=hack.fun.book.txt
  echo    ${var%.*}    -->hack.fun.book        从右到左
  echo    ${var%%.*}    -->hack                %%符号执行非贪婪匹配
  echo    ${var#*.}    -->fun.book.txt            从左到右
  echo    ${var##*.}    -->txt                ##符号执行非贪婪匹配
  extension=${file_jpg#*.}                利用#操作符可以将扩展名部分提取出来
  echo Extension is : $extension
  rename *.jpg *.JPG                    将*.jpg更名为*.JPG
  目录/usr/share/dict包含了一些词典文件
  命令aspell来核查某个单词是否在字典中
  look android    filepath                返回filepath路径中以android开头的文件/目录
  read -p "Enter number:" no                将输入内容赋值给变量no
  交互式自动化:expect
  #!/bin/bash
  #文件名:interactive.sh
  read -p "Enter number:" no
  read -p "Enter name:" name
  echo you have entered $no,$name;
  #!/usr/bin/expect
  #文件名:automate_expect.sh
  spawn ./interactive.sh                    spawn参数指定需要自动化哪一个命令
  expect "enter number:"                    expect参数提供需要等待的消息
  send "1\n"                        send是要发送的消息
  expect "enter name:"
  send "hello\n"
  expect eof                        expect eof指明命令交互结束
  comm a.txt b.txt                    比较A.TXT和B.TXT的文件。输出的第一列包含只在a.txt中出现的行,第二列只包含在b.txt中出
  现的行,第三列包含共同出现的行
  comm a.txt b.txt -1 -2                    -1从输出中删除第一列,-2从输出中删除第二列,-3从输出中删除第三列
  用户特殊权限:S
  setuid权限允许用户以其拥有者的权限来执行可执行文件,即使这个可执行文件是由其他用户运行的
  用户组特殊权限:S
  setgid位允许以同该目录拥有者所在组相同的有效组权限来允许可执行文件,但是这个组和实际发起命令的用户组未必相同
  其他用户特殊权限:T/t
  粘滞位(sticky bit)。当一个目录设置了粘滞位,只有创建该目录的用户才能删除目录中的文件,即使用户组和其他用户也有写权限
  如果没有设置执行权限,但是设置了粘滞位,那么使用t;如果同时设置了执行权限和粘滞位就使用T
  chmod a+t directory_name                设置粘滞位
  chmod 777 . -R                        以递归的方式设置权限
  chown user.group . -R                    以递归的方式设置所有权
  chmod +s executable_file                以不同的用户运行可执行文件
  chmod u+s file                        置位setuid
  chmod g+s file                        置位setgid
  chattr +i file                        将文件file设置为不可修改
  chattr -i file                        将文件file重新设置为可修改
  touch -a file                        只更改文件访问时间
  touch -m file                        只更改文件内容修改时间
  touch -d "Fri Jun 25 10:20:12 IST 2012" file        -d为时间戳指定特定的时间和日期
  ln -s target symbolic_link_name                创建软连接symbolic_link_name-->target
  file filename                        显示文件类型信息
  file -b filename                    显示不包括文件名在内的文件类型信息
  环回文件系统是指那些在文件中而非物理设备中创建的文件系统
  创建一个1G大小的文件
  dd if=/dev/zero of=loopbackfile.img bs=1G count=1
  格式化这个文件
  mkfs.ext4 loopbackfile.img
  检查文件系统
  file loopbackfile.img
  挂载环回文件
  mkdir /mnt/loopback
  mount -o loop loopback/img  /mnt/loopback
  在内部,这个环回文件连接到一个名为/dev/loop1或者loop2的设备上,手动操作如下
  losetup /dev/loop1        loopback.img
  mount  /dev/loop1      /mnt/loopback
  将ISO文件作为环回文件挂载
  mkdir    /mnt/iso
  mount -o loop linux.iso    /mnt/iso
  通过sync立即应用更改
  sync
  创建ISO镜像
  从/dev/cdrom创建一个ISO镜像
  cat /dev/cdrom > image.iso
  创建镜像的最好方法是用dd工具
  dd if=/dev/cdrom of=image.iso
  mkisofs命令创建iso文件系统
  mkisofs -V "Label" -o image.iso source_dir/
  -V指定了ISO文件的的卷标,source_dir是作为ISO文件内容来源的目录路径
  能够启动闪存或硬盘的混合ISO
  isohybrid命令把标准ISO文件转换成混合ISO
  isohybrid        image.iso  ->可用于写入USB存储设备
  将ISO写入USB存储设备
  dd if=image.iso   of=/dev/sdb1
  命令行刻录ISO
  cdrecord -v  dev=/dev/cdrom  image.iso
  -speed  速度          指定刻录速度
  -multi        刻录方式采用多区段
  玩转CD ROM托盘
  eject          弹出光驱托盘
  eject -t          合上光驱托盘
  查找文件差异并进行修补
  diff  -u  version1.txt version2.txt    以一体化形式输出差距,version2.txt中没有version1.txt的文件被显示。+表示是新加入的行,-表示是删除的行
  diff -u version1.txt version2.txt > version.patch 将diff的输出重定向到一个文件
  patch命令配合version.patch,当应用与version1时,就可以得到version2
  patch -p1 version1.txt  < version.patch        此时version1的内容和version2相同
  patch -p1 version1.txt  < version.patch        再次输入该命令撤销修改
  生成目录的差异信息
  diff  -Naur   directory1  directory2
  -N:将所有缺失的文件视为空文件
  -a:将所有文件视为文本文件
  -u:生成一体化输出
  -r:遍历目录下的所有文件
  head   -n  4 file    指定打印前几行
  head   -n  -N file    打印除了最后N行之外的所有行
  seq  11   |  head -n -5        打印除了最后五行之外的所有行
  seq  100  | head -n  5    打印前五行
  tail       -n  5 file    打印后五行
  tail       -n  +(N+1)    打印除了前N行之外的所有行
  seq 100 | tail -n +6    打印第六行到第一百行
  tail   -f   file    动态显示文件
  查看当前路径下的目录
  ls -d  */
  用pushd和popd快速定位
  pushd和popd可以用于在多个目录之间进行切换而无需复制粘贴。pushd和popd是以栈的方式来运作,后进先出。
  pushd  /var/www        压入路径
  pushd  /usr/src        压入路径
  pushd  /etc        压入路径
  查看栈内容
  dirs
  切换目录
  pushd  +3    每条路径的编号是以0开始,从左到右
  移除栈内容
  popd            当前目录被移除
  popd    +3        将第三个移除
  cd -            切换到上个目录
  统计行数
  wc -l  file
  统计单词数
  wc  -w  file
  统计字符数
  wc  -c   file
  默认显示行数、单词数和字符数
  wc  file
  打印最长行的长度
  wc  file  -L
  打印目录树
  tree    -/unixfs        树状UNIX文件系统
  tree    path     -P    pattern     用通配符描述样式
  tree    path    -I    pattern    只重点标出除符合样式之外的文件
  tree    -h            同时打印出文件和目录的大小
  tree    PATH    -H    http://localhost   -o  out.html    以html形式输出目录树
  grep  match_pattern  filename     从文件中搜索
  grep  word  filename  --color    重点标记处匹配到的单词
  grep -E "[A-Z]+"  或者  egrep "[A-Z]+"    正则表达式查找
  grep word -o file            -o选项只输出匹配到文本部分
  grep  -v  word  file            -v选项打印除了匹配外的所有行
  grep  -c  word  file            -c统计匹配行的数量
  grep -c word file | wc -l        wc -l配合-c可以统计匹配项的数量
  grep -n word file            -n选项包含匹配字符串的行数
  grep  word file  -R -n        -R递归搜索
  grep -i word  file            -i忽略大小写
  grep -e word1 word2 file        -e匹配多个样式
  grep dir --include  word        --include搜索中包含文件
  grep dir --exclude word        --exclude搜索排除文件
  --exclude-dir
  --exclude-from FILE
  cut按列切分文件
  cut -f 2,3    filename            提取filename文件中2、3列
  cut -f 3 --complement file        提取除了第三列外的所有列
  cut -f 3 -d ";" file            -d指定了定界符
  cut -c 1-5 file            打印前5个字符
  cut -c -5 file            打印前5个字符
  -c    表示字符
  -b    表示字节
  -f    表示定义字段
  N-    从第N个字节到行尾
  N-M    从第N个到第M个
  -M    从第一个到第M个
  cut -c1-3,6-9 file    --output-delimiter ","    指定输出定界符
  sed入门
  sed 's/pattern/replace_string/'  file    替换给定文本中的字符串
  sed -i 's/pattern/replace_string/'  file    将替换结果应用于原文件
  sed '/s/pattern/replace_string/g'  file    替换所有符合内容
  sed 's/pattern/replace/Ng' file    从第N+1处替换
  sed '/^$/d'  file            移除空白行
  sed 's/\w\+/[&]/g'        &对应于之前所匹配到的单词
  sed 'expr1' | 'expr2'    组合多个表达式
  awk入门
  awk  'BEGIN{print "start"}  pattern {commands}  END {print  "end"}'  file
  工作方式:
  1,执行BEGIN {commands}语句块中的语句
  2,从文件中或stdin中读取一行,然后执行pattern {commands}。重复这个过程,直到文件全部被读取完毕
  3,当读至输入流末尾时,执行END {commands} 语句块
  三个语句块都是可选的
  echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print} END{print "END"}'      结果如下:
  start
  line1
  line2
  end
  特殊变量
  NR:表示记录数量
  NF:表示字段数量
  $0:这个变量包含执行过程中当前行的文本内容
  $1:这个变量包含第一个字段的文本内容
  $2:这个变量包含第二个字段的文本内容
  迭代文件中的每一行
  while read line;
  do
  echo $line;
  done < file.txt
  或者
  cat file.txt | (while read line;do echo $line;done)
  迭代一行中的每一个单词
  for word in $line;
  do
  echo $word;
  done
  迭代文件中的每一行的每一个单词
  while read line;
  do
  for word in $line;
  do
  echo $word;
  done
  done < file.txt
  迭代一个单词中的每一个字符
  for ((i=0;ithis is a replace
  ${variable_name:start_position:length}        -->指定字符串的起始位置和长度来生成子串
  string=abcdefghijklmnopqrstuvwxyz
  echo ${string:4}        -->efghijklmnopqrstuvwxyz
  echo ${string:4:8}        -->efghijkl
  echo ${string:(-1)}        -->x
  echo ${string:(-2):2}    -->yx
  网站下载
  wget    url    下载网页或远程文件
  wget url1 url2
  wget ftp://baidu.com/somfile.jpg
  wget ftp://baidu.com/somfile.jpg  -o log -O 1.jpg  -o表示日志,-O表示指定输出文件名
  wget  -t  5  rul    -t指定重试次数
  wget  --limit-rate  20k  url    限速下载
  wget  -Q 100m url        指定下载最大限额
  wget  -c     url        断点续传
  curl   url            下载网页
  wget  --mirror   url        复制或镜像整个网站
  wget  --user  username  --password  pass url    访问需要认证的HTTP或FTP页面
  以格式化纯文本形式下载网页
  lynx  -dump  url > webpage_as_text.txt    将网页以ASCII字符的形式下载到文本文件中
  用curl设置cookie
  curl  url  --cookie  "user=slynx;pass=hack"
  将cookie另存为一个文件
  curl  url  --cookie-jar   cookie-file
  用curl设置用户代理字符串
  curl  url  --user-agent  "Mozilla/5.0"    设置用户代理为IE
  限定curl可占用的带宽
  curl  url  --limit-rate  20k
  指定最大下载量
  crul  url  --max-filesize  30k
  用curl进行认证
  curl  -u  user:pass  url
  tar -cvf output.tar  source1 source2    创建包
  tar -rvf output.tar  new_file        追加文件
  tar -tvf  output.tar            列出包里的内容
  tar -xvf  output.tar            提取包里的内容
  tar -Af  file1.tar  file2.tar        拼接两个包文件
  tar -f    output.tar  --delete file1 file2    从包文件中删除文件
  tar -zcvf  output.tar.gz  source        gzip格式压缩
  tar -jcvf   output.tar.bz2  source        bz2格式压缩
  tar -cvf --lzma  output.tar.lzma        lzma格式压缩
  tar -cf  output.tar  * --execlude "*.txt"    从归档中排除部分文件
  用cpio归档
  echo  file1 file2 | cpio -ov > archive.cpio
  gzip  filename    压缩文件,只能压缩一个文件
  gunzip  filename.gz    解压缩文件
  zcat  filename.gz        读取压缩文件内容
  gzip  -9  filename        压缩率
  1级的压缩率最低,但是压缩速度最快
  9级的压缩率最高,但是压缩率最慢
  bzip2 filename        压缩文件
  bunzip2 filename.bz2    解压缩文件
  bunzip2 filename.bz2 -k    解压缩文件,保留原文件
  bzip2 filename -k        压缩文件,保留原文件
  lzma  filename        压缩文件
  unlzma  filename.lzma    解压缩文件
  lzma  filename -k        压缩保留原文件
  lzma -9 filename        压缩率
  超高压缩率的squashfs文件系统
  mksquashfs  sources  compressedfs.squashfs    创建squashfs文件
  mkdir  /mnt/squash
  mount -o loop  compressedfs.squashfs  /mnt/squash
  加密工具与散列
  crypt   input_file   output_file    接受文件以及口令
  crypt   passphrase  inputfile  encrypted_file
  crypt  passphrase -d encrypted_file > outputfile  解密文件
  gpg  -c  filename            加密文件
  gpg  filename.gpg            解密文件
  列出网络上的所有活动主机
  方法一:
  for ip in 192.168.0.{1..255};
  do
  ping $ip -c 2 &> /dev/null;
  if [ $? -eq 0 ];
  then
  echo $ip is alive
  fi
  done
  方法二:
  fping  -a  192.168.0.1/24 -g 2> /dev/null
  或者
  fping  -a 192.168.0.1 192.168.0.255 -g
  传输文件
  lftp  username@ftphost
  cd directory    改变目录
  lcd          改变本地主机的目录
  mkdir        创建目录
  get filename    下载文件
  put filename    上传文件
  sftp username@domainname
  sftp -oPort=422    user@domainname    SSH端口不是默认的22时,需要指定端口
  scp source destination    安全复制文件
  scp  filename    user@remotehost:/path
  其中src和dst都可以采用形如username@localhost:/path的形式
  scp -r filename     user@remotehost:/path    递归复制
  iwconfig命令用来为无线网卡配置合适的无线网络
  iwlist scan命令可以扫描并列出可用的无线网络
  lsof -i        列出系统中的开放端口以及运行在端口上的服务的详细信息
  netstat -lntp        查看开放端口与服务
  计算命令执行时间
  time  command        计算命令的执行时间
  real时间表示挂钟时间,命令开始到结束的时间
  user时间是指进程花费在用户模式中的cpu时间,真正用于执行进程的时间
  sys时间是指进程花费在内核模式中的cpu时间
  watch监视命令
  watch ls    在某段时期内以固定的间隔时间不断监视某个命令的输出
  watch -n 5 'ls -l'    -n指定输出的时间间隔
  watch -d 'ls -l'    -d指定命令输出差异
  对文件及目录访问进行记录
  inotifywait -m -r -e create,move,delete /dev/ -q
  wall命令用来向所有当前登陆用户的终端写入消息
  echo  "test123" | wall
  wall < message
  查看主机名
  hostname    或者uname -n
  打印linux内核版本、硬件架构等详细信息
  uname -a
  打印内核发行版本
  uname -r
  打印主机类型
  uname -m
  打印CPU相关信息
  cat /proc/cpuinfo
  打印内存的详细信息
  cat /proc/meminfo
  打印系统的分区信息
  cat /proc/partions
  cron表的格式,从左到右依次是
  分钟(0-59)、小时(0-23)、天(1-31)、月份(1-12)、工作日(0-6)、命令
  创建cron表:
  crontab -e -u user
  查看cron表:
  crontab -l
  移除cron表:
  crontab -u user -r
  $0    查看当前shell
  $?    命令的返回状态,正常退出为0;非正常退出为非0
  $1    执行脚本时的参数
  $PS1    当前bash提示字符串
  $$    当前进程ID
  $UID    为0表示为root


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-557878-1-1.html 上篇帖子: (转)shell 脚本date时间格式 下篇帖子: L7.2 linux shell 条件判断语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表