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

shell 常用的命令

[复制链接]

尚未签到

发表于 2015-10-26 09:24:16 | 显示全部楼层 |阅读模式
  
查询文件的行数
  wc命令
          基本语法:   wc [-option] file
          列出指定文件中的行数、字数及字节数。   
          -l  只计算行数   -w 只计算字数   -c 只计算字节数
字符替换
  tr命令
      语法:  tr ‘set1’ ‘set2’
          在这里set1中的所有字符都被转化为set2中的字符。
          注意字符[和]在tr中要用反斜杠\转换,才能被正确处理。
          e.g.        tr ‘!?”:;\[\]{}(),.\t\n’ ‘ ‘ <ch15.doc
                  将ch15.doc中的!?”:;[]{}(),. TAB 回车转换为空&#26684;。
          e.g.        tr ‘A-Z’ ‘a-z’<ch15.doc
                  将ch15.doc中的大写字母转换为小写字母
          e.g.        tr ‘!?”:;\[\]{}(),.\t\n’ ‘ ‘ <ch15.doc|tr ‘ ‘ ‘\n’
                  将ch15.doc中的!?”:;[]{}(),. TAB 回车转换为空&#26684;,在将空&#26684;转换为新的行
  
          有的版本的shell需要set1的字符数和set2的字符数相当
      压缩相同的字符为一个字符
          语法:  tr –s ‘set1’
              当tr遇到set1中多个连续相同的字符时,替换他们为一个字符。
                  e.g.        echo “feed me”|tr –s ‘e’            输出为 fed me
      在tr中使用字符类
          语法:  tr ‘[:classname:]’ ‘set2’
          classname是下表所给出的类的名字。set2是你希望用来转义的字符。
    
  描述
  alnum
  字母和数字
  alpha
  字母
  blank
  空&#26684;(水平的)
  cntrl
  控制字符
  digit
  数字
  graph
  可印刷字符,不包括空&#26684;
  lower
  小写字母
  print
  可印刷字符,包括空&#26684;
  punct
  标点符号
  space
  空&#26684;(水平和垂直的)
  upper
  大写字母
  xdigit
  十六进制数字

              e.g.        tr ‘[:punct:]’ ‘ ‘<ch15.doc      将ch15.doc中的标点符号换为空&#26684;。
              e.g.        tr ‘[:upper:]’ ‘[:lower:]’<ch5.doc   将ch15.doc中的大写转换为小写
重复出现的命令
  uniq命令
      语法:  uniq [OPITON] [INPUT [OUTPUT]]
              从一个已经sorted的文件中移除重复的行只保留一行。
              -c 打印字符重复出现的次数。
              -u 只列出沒有重複的列
              -d 只列出有重複的列
文件字符排序
  sort命令
      语法:  sort [OPTION] [FILE]
  按指定的顺序配序一个或多个文件。当sort命令处理多个文件时,在排序前sort命令先按某种规则把他们合并起来。
          -A      按ASCII码顺序排序
          -c      检查指定文件是否已经按指定的关键字和顺序排序。
  -d      按字典顺序排序
          -f      在排序前把所有字母换成大写
          -i      比较时忽略不可显示字符
          -m      合并与排序文件   
          -n      按数&#20540;排序
          -ofile  把输出重定向到指定文件
          -r      按指定顺序的逆序排序。
          -u      排序后多个相同的行只输出一行。
  &#43;POS1 [-POS2]   start a key at POS1, end it *before* POS2 (obsolescent) field numbers and character offsets are numbered starting with zero (contrast with the -k option)
  按POS1到POS2前的几栏排序(从0开始计数)
                  e.g.        &#43;3-5            表示按照第3、4两栏排序
          -t SEP 使用SEP指定的字符为栏位的分隔符号
                  e.g.        -t ':'      把 ':' 視為欄位的分隔符號
  
  
  
  
  
应用:
  列出ch15.doc10个重复次数最多的单词列表
          e.g.        tr ‘[:punct:]’ ‘ ‘<ch15.doc|tr ‘[:space:]’ ‘ ‘|tr ‘A-Z’ ‘a-z’|tr –s ‘ ‘|tr ‘ ‘ ‘\n|sort|uniq –c|sort –rn|head
      打印出/etc/passwd中每个用户和他们的home目录
          e.g.        cut -d':' -f 1,6 /etc/passwd   
      DOS/Windows傳上來的檔案後面的 ^M去掉 (把結果印在螢幕上)
          e.g.        tr -d '\r' < config.sys
      把所有英文字母變成小寫 (把結果印在螢幕上)
        e.g.        tr 'A-Z' 'a-z' < config.sys
      看看目前目錄下那些檔案占用的空間最多
          ls -l | sort -n &#43;4
  看看整個系統內那些程序吃記憶體吃得最兇
  ps aux | sort -n &#43;3
  看看自己家裡面所有最上層的子目錄各用了多少空間
  du -s `ls -l ~ | grep '^d' | cut -c 55-`
  把使用者 ckhung所有正在執行的程序全部中斷掉
  kill `ps aux | grep '^ckhung' | cut -c 9-16`
  看看有那些使用者有程序在執行 (無論有無控制臺)
  ps aux | cut -c 1-8 | sort | uniq
  abc目錄下(含子目錄,孫目錄,...)尋找所有內含pqr字串的檔案,並把這些pqr都改成xyz:
  grep -l pqr `find abc -type f` > ttt; perl -i -pe 's/pqr/xyz' `cat ttt`
  把目前目錄下所有最近三天內修改過的檔案按照大小排出來:
  ls -l `find . -type f -mtime -3` | sort -n &#43;4
  把目前目錄底下所有 dos&#26684;式文字檔,轉成 unix&#26684;式:
  file `find . -type ` | grep -i text | sed 's/: .*//' > /tmp/listing; perl -i -pe 's/\015//' `cat /tmp/listing`
正则表达式
  1.1.        构成正则表达式的基本元素
  1.1.1.       普通字符:包括大小写字母、数字、空&#26684;、下划线
  1.1.2.       元字符:是在正则表达式中有特殊含义的字符。如下:
  元字符 .                       可代替除换行符之外的任何单个字符
  元字符 *         可代替零个或多个在它前面出现的字符或正则表达式。*总是匹配尽可能长的字符串
  元字符[chars]         可代替chars中的任何一个字符,chars是一串字符序列。你可以用-字符号来定义一个字符范围。如果^chars中的第一个字符,那么将匹配没有在chars中指定的字符。
  元字符 ^                      匹配一行的开头(必须把^作为正则表达式的第一个字符)
  元字符 $                       匹配一行的结尾(必须把$作为正则表达式的最后一个字符)
  元字符 \                       \后面的字符照常输出,通常用来转义(不用特殊含义)一个元字符
  元字符 \{n1,n2}        匹配前面字符或正则表达式的最少n1次最多n2次出现。
  元字符 \(\)            保存括号中的正则表达式以备后用。以后可以用\1\9表示前面保存的正则表达式
  元字符 \<              在一个字的开始匹配其后的正则表达式
  元字符 \>       在一个字的结尾匹配其前的正则表达式
  元字符?       匹配其前正则表达式的0次或1次出现
  元字符 &#43; 匹配其前正则表达式的1次或多次出现
  1.1.2.1.      举例
  e.g.    /peach/          精确匹配字符串peach,所有包含字符串peach的行都会被选择。
  e.g.    /a.c/        匹配a&#43;ca-cabcmatcha3c之类的字符串的行
  e.g.         /a*a/              匹配a&#43;ca-cabcmatcha3caceyaccarctic这样的字符串的行,他还可匹配这样的行:closethe window。虽然a并没有出  现,但因为*,它匹配查找零个或多个在它前面出现的字符。
  * 总是匹配尽可能长的字符串。
  e.g.    /ch.*doc/ 匹配字符串ch01.docch02.docchdoc之类的字符串。
  e.g.    /[tT]he/         匹配Thethe
  e.g.    /[^T]/            匹配除T之外的所有字符
  e.g.         /ch0[0-9]*doc/       匹配ch01.docch02.doc之类的字符串,但是不匹配chdocchangedoc之类的字符串。
  e.g.         /^the/            匹配以the开头的行
  e.g.         /friend$/         匹配以friend结尾的行
  e.g.         /\t\)..\1/         匹配testtaat t, ttbbt之类的串。\1在这里代替了t
  
  1.1.3.       一些有用的正则表达式
  匹配空白行                                  /^$/              或者 /^ *$/
  匹配一整行                                  /^.*$/
  匹配某字符后的所有字符         /(.*$/                   匹配(后的所有字符
  匹配某字符前的所有字符         /^.*.)/                  匹配)前的所有字符
  匹配一个或多个空&#26684;               /*/
  匹配HTML(XML)标记集              /<[^>][^>]*>/   
  匹配有效的URL                            /[a-zA-Z][a-zA-Z]*:w[a-zA-Z0-9][a-zA-Z0-9\.]*.*/
  匹配&#26684;式化的美元数               /\$[0-9]*\.[0-9][0-9]/
  
  
  
  
  
  
sed命令
  sed是一种对它的输入的每一行进行一系列操作的流式编辑器
  1.1.4.       sed的语法:
      sed ‘/pattern/ action’ files
  这里files是一个或多个文件的列表。pattern是一个正则表达式,action是下表中说给出的命令
    操作
  描述
  p
  打印行
  d
  删除行
  s
  用一个表达式置换另外一个

  1.1.4.1.      打印行
  sed /pattern/p files
  默认情况下p打印行时,sed会把每一个输入行打印到输出,在将处理结果打印到输出。所以选中的行会被打印2次,没有被选中的行会被打印1次。为了避免这种情况可以指定n选项
  e.g.           sed n/0\.[0-9][0-9]$/pfruit_prices.txt
  1.1.4.2.      删除行
  sed /pattern/dfiles
  1.1.4.3.      执行替换
  sed /pattern1/s/pattern2/pattern3/files
  使匹配规则pattern1的每一行中的pattern2被替换为pattern3。如果pattern1被忽略,命令s将会对每一行输入都执行。
  默认情况下,s命令在一行只执行一次替换。为了执行多次替换,需要用到g(g全局)操作符
  /pattern1/s/pattern2/pattern3/g
  在pattern3位置可使用&操作表示拷贝字符串pattern2
  e.g. fruit_prices.txt 中内容为  Banana       0.89              
  执行命令           sed s/ *[0-9][0-9]*\.[0-9][0-9]$/\$&/ fruit_prices.txt,就变为 Banana    $0.89
  问题???:在 / *[0-9][0-9]*\.[0-9][0-9]$/\$&/中第一个*前必须打个空&#26684;,不知道为什么?
  1.1.4.4.      -e 参数连续执行多个操作
          e.g.       id|sed –e ‘s/(.*$//’ –e ‘s/^uid=//’
  2.         十七、用awk过滤文本
  2.1.        awk基本语法:      
  awk /pattern/ {actions} files
  在这里,files是一个或多个文件的列表,pattern是一个正则表达式,actions是可以使用的命令。
  2.2.        字段编辑
  awk自动把每行的输入分成字段。默认的字段分隔符是制表符和空&#26684;。awk用字段操作符$来访问一个字段的&#20540;。例如,$0代表整行,第一个字段是$1,第二个字段是$2,以此类推。
              e.g.        awk ‘{print $1 $3;}’fruit_price.txt           打印每行的第1、3个字段
  2.3.        awk使用比较操作符
  2.3.1.       awk使用比较操作符的语法:
  awk expression {actions} files
  这里expression是由下表给出的比较操作符构成:
    操作符
  描述
  <
  小于
  >
  大于
  <=
  小于等于
  >=
  大于等于
  ==
  等于
  !=
  不等于
  value~/pattern/
  如果value匹配样式,则为真
  value!~/pattern/
  如果value不匹配样式,则为真

  e.g.             #!/bin/sh
                              awk  
                                     $3 <= 75 {printf%s\t%s\n,$0,REORDER;}
                                     $3 > 75   {printf $0;}
                                  fruit_prices.txt
                       输出第3个字段包括一个小于或者等于75的&#20540;的行并加上REORDER字符串。
                       输出第3个字段包含一个大于75的&#20540;的行。
  2.3.2.       混合表达式
  与的语法:                    (expr1) && (expr2)
  或的语法:                    (expr1) || (expr2)
  e.g.             #!/bin/sh
                       awk  
                               ($2 ~ /^\$[1-9][0-9]*\.[0-9][0-9]$/) && ($3 < 75) {
                             print %s\t%s\t%s\n,$0,*,REORDER;
  }
                        fruit_prices.txt
  2.3.3.                     next 命令
              next 命令告诉awk跳过所有保留的样式匹配和表达式,并读取下一行,重新开始进行样式匹配。
      e.g.        #!/bin/sh
              awk ‘
                  $3 <= 75 {printf “%s\t%s\n”,$0,”REORDER”;next;}
                  $3 > 75 {printf $0;}
              ‘  fruit_prices.txt
  2.3.4.              使用标准输入作为输入:
              e.g.        ls –l | awk ‘$1 !~ /total/ {printf “%-32s %s\n”,$9,$5;}’           
     
  2.4.        awk功能:变量及数&#20540;表达式的使用
  2.4.1.              定义变量的语法:
          name=value
  这里name是变量名,value是变量的&#20540;。
  初始化变量是没有必要的,当你第一次使用时它会自动初始化。
              变量名只能包含字母、数字和下划线,变量不能以数字开头。
              你可以在同一脚本中把数字和字符串赋&#20540;给变量。
                  e.g.        fruit=”peach”;fruit=100;
                  e.g.        fruit=”peach”;fruity=fruit;
                  e.g.        fruit=$1;
  2.4.2.                     使用数字表达式
              语法:  num1 operator num2
  这里num1和num2是常数或者是变量名。如果变量是字符串而不是数字,则awk使用&#20540;为0而不是字符串。operator是如下表的数&#20540;操作符。
    操作符
  &#43;
  -
  *
  /
  %
  ^
  描述
  
  
  
  
  取模(余)
  求幂

                      e.g.            awk ‘/^ *$/ {x=x&#43;1;print x;}’ t.txt
              赋&#20540;操作符语法:     name operator num
                  这里nmae是变量名,num是变量的名字或常数,operator是如下表指定的操作符之一。
    操作符  
  &#43;=
  -=
  *=
  /=
  %=
  ^=
  描述
  
  
  
  
  取模(余)
  求幂

                      e.g.            awk ‘/^ *$/ {x&#43;=1;print x;}’ t.txt
  2.4.3.                     特殊的样式匹配: BEGINEND
              语法:      awk ‘
                              BEGIN { actions }
                              /pattern/ { actions }
                              /pattern/ { actions }
                              END { actions }
                          ‘ files
                  祥见 《精通shell编程》p200
  2.4.4.                     awk中的内部变量:
              
    变量
  描述
  FILENAME
  当前输入文件的名称。不能改变这个变量的&#20540;。
  NR
  当前输入文件的行数或者输入文件的纪录。不能改变这个变量的&#20540;。
  NF
  当前行或者记录的字段数。不能改变这个变量的&#20540;。
  OFS
  输出字段的分隔符(默认是空&#26684;)
  FS
  输入字段的分隔符(默认是空&#26684;和制表符,即\t)
  OFMT
  数字的输出&#26684;式(默认是%.6g)
  ORS
  输出记录分隔符(默认是新起一行)
  RS
  输入记录分隔符(默认是新起一行)

  2.4.5.                     应用:改变输入字段分隔符。
                  方法1:在BEGIN中手工重置FS
                          e.g.        awk ‘BEGIN { FS=”:”;} {print $1,$6;}’ /etc/passwd
                  方法2:给awk 指定 –F选项可以指定分隔符
                          e.g.        awk –F : ‘{print $1,$6;}’ /etc/passwd
  2.4.6.                     awk使用shell变量
              许多版本awk不可直接访问shell变量。必须转换为awk变量。
              语法:  awk ‘script’ awkvar1=value awkvar2=value … files
                  这里script 是你想执行的awk脚本。变量awkvar1等等是你想设置的awk变量名称。
                  e.g.        awk ‘$3 <= numfruit {print;}’ numfruit=”$NUMFRUIT” fruit.txt
     
  2.5.        awk功能:流程控制
          在awk中有3种主要形式的流程控制:if语句、while语句、for语句。
  2.5.1.                     if语句的基本语法:
                  if (expr1) {
                      action1
                  } else if (expr2) {
                      action2
                  } else {
                      action3
                  }
  这里expr1和expr2是用条件操作符建立的表达式,expr1和expr2外面的圆括号是必需的。action1等可以是任何有效的awk命令序列。当一个操作包含一个或多个语句时,涵括这些actions的大括号是必须的。这里对else if语句的数量没有限制。
              e.g.        awk ‘{
                          printf “%s\t”,$0;
                          if ($2~/\$[1-9][0-9]*\.[0-9][0-9]/) {
                              printf “*”;
                              if ($3<=75) {
                                  printf “RECORDER\n”;
                              } else {
                                  printf “\n”;
                              }
                      }’ fruit_prices.txt;
  
  2.5.2.                     while语句的基本语法:
                  while (expr) {
                      actions
                  }
  这里expr是用条件操作符建立的表达式,expr外面的圆括号是必需的。actions可以是任何有效的awk命令序列。当一个操作包含一个或多个语句时,涵括这些actions的大括号是必须的。
                  e.g.        awk ‘{ x=NF ;
                                  while (x>0) {
                                      printf(“%16s”,$x);
                                      x-=1;
                                  }
                                  printf “”;
                          }’ fruit_prices.txt
  2.5.3.                     do语句的基本语法:
                  do {
                      actions
                  } while (expr)
  这里expr是用条件操作符建立的表达式,expr外面的圆括号是必需的。actions可以是任何有效的awk命令序列。当一个操作包含一个或多个语句时,涵括这些actions的大括号是必须的。
  do语句是while语句的一个变种。区别是do语句至少执行一次.
  e.g.        awk ‘{ x=NF;
              do {
                  printf(“%16s”,$x);
                  x-=1;
              } while (x>0);
              print “”;
          }’ fruit_prices.txt
  2.5.4.                     for循环的基本语法:
                  for (init_cntr; test_cntr; incr_cntr) {
                      action
                  }
  这里init_cntr初始化计数器变量,test_cntr是一个测试计数器变量&#20540;得表达式,incr_cntr增加计数器的&#20540;。for循环中包围表达式的圆括号是必需的。要执行的操作action可以是任何有效的awk命令序列。当一个操作包含一个或多个语句时,涵括这些actions的大括号是必须的。
                  e.g.        awk ‘{
                                  for (x=1;x<=NF;x&#43;=1) {
                                      printf “%s”,$x;
                                  }
                                  printf “\n”;
                          }’ fruit_prices.txt
  
  3.         十八、其他工具
      evel        先置换再执行命令 (内部命令)  
          在用户需要shell执行置换后再执行命令的情况下使用,
  语法如下:       eval cmd
              e.g.    OUTPUT=”> out.txt”;echo hello $OUTPUT
                  则屏幕打印           hello> out.txt      没有正的输出到out.txt文件。
              e.g.        OUTPUT=”> out.txt”;eval echo hello $OUTPUT
                  则屏幕上没有文本输出,输出被重定向到out.txt   
      :命令的应用
          :和if     (内部命令)  
              :命令有时在if语句中紧接着than使用。
                  e.g.        if [ -x $CMD ]; then
                              :
                          else
                              echo Error: $CMD is not executable >&2
  如果命令没有紧跟then,shell就会标记语法出错,所以用户可以插入:命令作为临时空操作符来代替后面的代码。
          :while
              :总是返回正确的结果,所以通常被用来建立无限循环,如下:
                      while :
                      do
                          list
                      done
                  无限循环,除非在循环体内遇到break语句。
                  可以使用ture命令代替:来创建无限循环,但是true时外部命令。
          :和变量置换
              可以被用来评估参数
                  e.g.        :${LINES:=24} ${TERM:? “TERM not set”}
              这里:是空操作符,但shell仍然计算它的&#20540;,执行后面的变量替换,
      type命令    告诉用户一个命令的绝对路径名。(内部命令)
          语法:  type cmd1 … cmdN
              e.g.    type true vi
                      ture is /bin/true
                      vi is /bin/bin/vi
          当给定的命令是其他命令的别名时,type会给出实际调用的命令。
          当一个单一命令被指定时,type的退出码 0标示执行成功,1标示执行失败。
      sleep命令   暂停给定的秒数
          语法:  sleep n
          这里n是休眠或者暂停的秒数。n不能超过65534
      xargs命令
          从标准输入中接受单词列表的命令,并把这些单词作为参数传递给指定的命令。
          e.g.    cat filelist | xargs –n 20 rm
          这里 –n 20 是指仅仅传送20个参数到每一个命令行。
      expr命令    用于执行简单的整数运算
          基本语法:   expr int1 op int2
          这里int1和int2是整数,而op是下表的操作符之一。op前后的空&#26684;是必须的
    操作符
  &#43;
  -
  \*
  /
  %
  描述
  
  
  
  整数除
  模除

              整数除  表示 除不尽的部分被舍去
              模除 表示 得到除法的余数部分
          e.g.    CNT=`expr $CNT &#43; 1`
      expr命令和正则表达式
          基本语法:   expr str : regex
  这里str是要匹配的字符串,regex是正则表达式。该命令返回由一个正则表达式所匹配的字符的数目。
              e.g.    expr 1234abc : ‘[0-9]*’
                  返回为4。  匹配所有数字
  如果正则表达式regex中包含了转义后的括号,则expr返回的是则对括号所包含的内容。
              e.g.    expr 1234abc : ‘...\(..\)..’
                  返回为4a
      bc命令 算术运算,不限于整数运算
          bc可以处理 &#43; - * / % ^
          e.g.        AVERAGE=`echo “scale=4; $PRICE/$UNITS” | bc`      
  
  4.         十九、信号
      信号基础
          shell脚本中重要的信号
    名称
  &#20540;
  描述
  
  0
  Shell脚本结束退出时,都会给自己发信号0表明脚本执行完成并且应该终止
  SIGHUP
  1
  控制终端发现被挂起或控制进程死亡
  SIGINT
  2
  键盘中断
  SIGQUIT
  3
  来自键盘的退出信号
  SIGKILL
  9
  杀死进程的信号
  SIGALRM
  14
  定时时钟中断(用作定时器)
  SIGTERM
  15
  终止信号

              根据系统的不同,信号的数量略有变化。每一个信号,都有一个与之相关联的缺省动作。
  列出信号
              命令1: man signal
              命令2: kill -l
      发送信号
              方法1:用快捷键  如Ctrl&#43;C 会向程序发送一个SIGINT信号。
              方法2: kill –signal pid   
                  这里singal表示要发送的信号的整数或是信号的名称。pid指进程号。
              举例1: SIGTERM信号
                  kill pid    等价于      kill –s SIGTERM pid
              举例2: SIGHUP信号
                  kill –s SIGHUP 1001 等价于  kill –1 1001
                  向pid 1001运行的程序发送HUP 挂起 信号。
              举例3: SIGQUIT信号和SIGINT信号
  在某些情况下,SIGTERM不足以用来终止一个进程。可以尝试用SIGQUIT或SIGINT信号来终止进程的执行
  kill –s SIGQUIT 1001 或 kill –s SIGINT 1001
              举例4:SIGKILL信号
                  kill –9 1001
                  使用SIGKILL信号的缺点是:接收到它的进程没有任何机会进行退出时的清理工作。
  
  
  
  
  
  
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-130820-1-1.html 上篇帖子: 启动的shell时,属于root用户 下篇帖子: Android查询:模拟键盘鼠标事件之adb shell 实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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