• shell命令工作总结


    shell命令工作总结:

    1.sed命令:
    1.1.将文本input.txt中含有”姓名”字符串的行中的谢朝辉替换成扎巴依:sed -e '/姓名/s/谢朝辉/扎巴依/g' input.txt
    1.2.将input.txt中第n(5)行替换成”jiangdiwuhangtihuan”:sed -e '5c jiangdiwuhangtihuan' input.txt
    1.3.将input.txt中的4至6行的资料区替换为:”tihuan4zhi6hang   tihuanchenggong”:sed -e'4,6c tihuan4zhi6hang tihuanchenggong' input.txt
    1.4.删除input.txt中含有两个ff字母的行:sed -e '/f.*f/d' input.txt //表示删除所有含两"f"字母的资料行。其中 "." 表示任意字元; "*" 表示其前字元可重任意次,它们结合".*" 表示两"f" 字母间的任意字串
    1.5.将input.txt中含有2b至含有4d的区域删除(首个2b至找到第一个4d的区域):sed -e '/2b/,/4d/d' input.txt
    1.6.查询文件中匹配行:查询文件中含有6f的文件:grep 6f *     等价   ls * | nl * |sed -n '/6f/p' 、ls |xargs grep  6f
    在input.txt文件的第二行添加1aa和2bb

    2.awk命令:
    2.1.awk去空行:等值为cat input.txt |grep -v "^$",grep -v "^$" input.txt,cat input.txt | tr -s ' '

    3.tr命令:(格式tr [OPTION]... SET1 [SET2]凡是标准输出存在sel1的字符都会被替换成sel2字符)-s
    3.1.将input.txt文件中的7替换成8:tr 7 8 <input.txt
    3.2.将大小字母替换成小写字母: tr 'a-z' 'A-Z'<input1.txt
    3.3.-s(是将如果发现有连续的SET1里的字符,就把它们缩减为1个): tr -s ' ' <input.txt

     4.date命令:
    4.1.将日期转成时间戳:date -d now +%s
    4.2.将时间戳转换为日期:date -d '1970-01-01 1447209286 sec utc' +%Y:%m:%d:\%T或者
    date +%Y:%m:%d:%H:%M:%S -d "1970-01-01 UTC 1447209286  seconds"或者date -d "1970-01-01 UTC 1447209286 seconds" +%Y-%m-%d:%H:%M:%S

    5.read命令:-p,-a
    5.1.–p是提示语句,指定提示语句:read –p “提示语句:” value
    5.2.-a按分隔符(空格符分隔,连续的分隔符算一个分隔)将串分配给数组: read –a value aa bb  ${value[0] = aa},${value[0]} = aa},${value[0]} =bb},小标以0开始。
    5.3.向单个变量中输入值(向变量id和passwd中读入数据):read  id passwd  (按空格及顺序存放)

    6.符号的用法:@、$、=、>、>>、#、<、<<、&& 、!
    6.1.@:号的用法:
    6.2.$:号的用法:截取取字符串变量,从下标为0开始(第一位开始)取4为长度${value:0:4}
    6.3.=:号的用法:1.给变量赋值时等号之间不要空格
    6.4.>:表示重定向,>>表示重定向追加
    6.5.#:可以取变量长度,例如:value=”123456”,${#value}的长度是6
    6.6.<:文件输入
    6.7.<<:标准输入(相当于键盘输入,其中+号可以用其他替代EOF,但是一定要配对使用,表示输入结束)
    $HOME/bin/MyShell <<+
    start -s filesrvGW
    quit
    +
    6.8.&&:且,与运算(result1=`netstat -anp|grep 7501|awk '$1=="tcp" && $6=="CLOSE_WAIT" {print $0}'|wc -l`)
    6.9.!:

    7.进程查看相关命令:ps、top ps –ef | grep gddw

    8.echo命令参数:-n、 应为echo默认是换行,加–n表示不换行。

    9.head与tail命令参数:-n、 显示文件开头的n行:head –n input.txt

    10.顺坏语句L:for、while、until for循环:循环指定路径下的文件 for var in /app/int44/tmp/xzh/*  do echo "$var" done

    11.条件判断:if 1.判断一个文件是否存在:if [ ! -s /app/int44/transfile/merch/filena ];then echo "info" fi

    12.打包和解包命令:
    12.1.tar 打包: tar cvf /back/baklog/int44-log20170914.tar.gz /app/int44/log
    12.2.解包: tar xzvf /back/baklog/int44-log20170914.tar.gz /app/int44/log

    13.printf格式化输出:
    13.1:printf 换行:不像 echo 那样会自动换行,必须显式添加换行符( )。
    13.2.左对齐定长输出:bw=`printf "%-10s" "${t_qt}"`  //结果11921149  13.3.右对齐定长输出:bw= `printf "%10s" "${t_qt}"`  //结果  11921149

    14.字母大小写转换:toupper(String),tolower(String)
    14.1:小写转大写toupper: md5sum PTFH_00403031909002017101460638.txt |awk '{print toupper($1)}'
    14.2:大写转小写tolower: md5sum PTFH_00403031909002017101460638.txt |awk '{print tolower($1)}'

    15.sed命令:主要是重新组织每一行文本重定向
    15.1.替换文本内容:echo -ne "${headln}"|awk '{print substr($0,118,16)}'|sed -e 's/ //g'  //将空格用a替换

    16.sftp命令:  sftp、 16.1. 未指定端口:sftp user@ip,指定端口:sftp –o port=8011 user@ip 16.2.function getfile() #定义函数 {  lftp -u {user},{password} -p{port}  sftp://127.0.0.1 << EOM   set net:max-retries 2   get filename   bye   EOM }        getfile #执行函数

    17.ssh:本地无法直接访问,第三方终端(146.0.245.197:9080)<-->外联前置终端(10.242.3.240)<-->本地终端(22.32.80.51),由于本地终端无法访问第三方终端,但是外联前置和其他两方都是联通的,因此在外联前置上做一个映射ssh -NfgL 5577:146.0.245.197:9080 monitor@127.0.0.1,然后再数据库客户端配置文件中添加配置(HOST = 10.242.3.240)(PORT = 5577),这样客户端就可以连接上了。 9.1: ssh -NfgL 5577:146.0.245.197:9080 monitor@127.0.0.1,说明:参数:NfgL  对方ip:146.0.245.197  对方端口:9080 映射对口:5577  本地用户名和本地ip:monitor@127.0.0.1 17.1.shh 用户名@ip地址进入外系统    ssh  user@ip

    18.sh下执行命令:sh 18.1.常用的判断进程是否存在,存在则强行kill掉:ps -ef | grep "${EXE}" | grep -v grep |awk '{if ($2>0) print "kill -9 "$2}'|sh

    19.动态库编译相关命令:ldd,gcc 19.1.查看依赖的动态库文件: ldd  main int44@/app/int44/tmp/xzh/libso>ldd main         libshow.so (0x0000002a95557000)         libc.so.6 => /lib64/tls/libc.so.6 (0x0000003296c00000)         /lib64/ld-linux-x86-64.so.2 (0x0000003296a00000) 19.2.生成目标文件(calc.o和show.o): gcc -c -fPIC calc.c     gcc -c -fPIC show.c 19.3.生成动态库(libshow.so): gcc -shared -fPIC -o libshow.so show.o 19.4.生成静态库(libcalc.a):  ar cr libcalc.a calc.o 19.5:生成可执行程序(main): gcc -o main main.c -L. -lcalc  -lshow 19.6:使用make进行编译:Makefile文件和源文件放在一起,每一行命令必须使用Tab键,不能有空格。 CC = gcc

    all: main main: libcalc.a main.c libshow.so         gcc -o main main.c -L. -lcalc  -lshow

    lib: libcalc.a libshow.so libcalc.a : calc.o         ar crs libcalc.a calc.o calc.o : calc.c         $(CC) -c calc.c -o calc.o libshow.so: show.o         $(CC) -shared -o libshow.so show.o show.o: show.c         $(CC) -fPIC -Wall -c show.c -o show.o

    clean:         rm -rf *.o *.so *.a main

    20.mget获取文件大量文件关闭提示命令:prompt off

    21.sh命令 21.1.将文件名前两位修改为DZ开头的文件:ls -l FCCZ*.txt |awk ' {print "mv "$0" " ""DZ"substr($0,3)}' |sh

    22.修改linux文件权限命令:chmod   //详细可参考博客园:https://www.cnblogs.com/avril/archive/2010/03/23/1692809.html 22.1:创建一个文件 vi test.txt int44@/app/int44/tmp/xzh>ll test.txt -rw-r--r--  1 int44 interf 10000 12月 28 17:53 test.txt  //横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。后面9位分三组(文件所有者u,同组用户g、其他用户o //a代表所有用户),每组占三位标数许可权限。 22.2:设定文件访问方式有两种(+号添加权限,-号去掉权限):数字设定发_>chmod  777 test.txt;文字设定发->chmod u+rwx,g+rwx,o+rwx test.txt  或者chmod a+rwx test.txt

  • 相关阅读:
    parted 2T以上磁盘分区和挂载
    MySQL 表空间恢复
    MySQL 绿色版安装
    EF core
    让vs自动提示没有using的类
    Android Studio 的 Gradle 面板没有 Task
    JMS微服务远程调用性能测试 vs .Net Core gRPC服务
    electron打包,使用electron-packager
    EasyNetQ(RabbitMQ)在处理消息时,如果抛出异常,继续不断发送到订阅队列,不断处理(也就是不自动确认消息已到达)
    调用系统默认浏览器,打开网页
  • 原文地址:https://www.cnblogs.com/zhabayi/p/7659382.html
Copyright © 2020-2023  润新知