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 '\n'
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 那样会自动换行,必须显式添加换行符(\n)。
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
shell命令工作总结的更多相关文章
- 工作中常用的 Shell 命令及技巧
调试 bash 脚本的技巧 加 -x 参数运行 bash 脚本时,会显示执行的语句 # 也可以在 demo.sh 中加上 set -x bash -x demo.sh 设置环境变量,然后通过如上方式运 ...
- Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)
最近在调试一个基于Matlab的程序,在偶然间发现了几个比较有趣的技巧,给大家分享一下(很可能是太菜鸟了,没有涉及这方面,大方之家请勿见笑,对您有所帮助请点赞!) 1. Matlab语言是一种解释型语 ...
- Hadoop Shell命令大全
hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...
- Linux SHELL 命令入门题目答案(一)
1.如何使用shell 打印 “Hello World!” (1)如果你希望打印 !,那就不要将其放入双引号中,或者你可以通过转义字符转义(2)echo 'hello world!' 使用单引号ech ...
- Linux 下 Shell 命令的分类及用法
当你打算真正操纵好你的 Linux 系统,没有什么能比命令行界面更让你做到这一点.为了成为一个 Linux 高手,你必须能够理解 Shell命令的不同类型,并且会在终端下正确的使用它们. 在 Linu ...
- bash shell命令(2)
在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...
- adb shell 命令详解(转)
adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面 ...
- [SHELL进阶] (转)最牛B的 Linux Shell 命令 (三)
1. 更友好的显示当前挂载的文件系统 mount | column -t 这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt ...
- 73条日常Linux shell命令汇总,总有一条你需要!
转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...
随机推荐
- QlikView sheet权限
最近遇到了个新问题,需要针对不同的sheet设置不同的权限,具体是用户登录不同账户,可以看到统一文档的不同sheet 对于Qlikview权限设置就不做描述,下面直接进行sheet操作 第一步,打开脚 ...
- [转] Linux Daemon Writing HOWTO
Linux Daemon Writing HOWTO Devin Watson v1.0, May 2004 This document shows how to write a daemon in ...
- gdb中run出现的Missing separate debuginfos, use: debuginfo-install XXX
问题: Missing separate debuginfos, use: debuginfo-install glib 解决方法: 1.将/etc/yum.repo.d/CentOS-Debugin ...
- sql基础语法大全 转载过来的,出处忘了!
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- Why we should overwrite the hashCode() when we overwrite the equals()
Preface Though I have used Java programme language for almost a year, I'm not familiar with a notion ...
- 如何解决“There is no locally stored library”的问题
今天我在用pyCharm开发网页的时候,用cdn引入js文件,但是程序报错,说“there is no locally stored library”.于是我上网找到了解决方案,特整理如下: 在你报错 ...
- linux命令更改服务器时间
1. linux更改服务器时间: 权限:root用户才有权限更改服务器时间 使用date命令即可设置系统时间. 2. 查看系统时间 date 3. 设置当前系统时间为2015年5月8日19点48分0秒 ...
- SQL SERVER DATETIME应用
),, , ),); ),, ),); ),, , ),); ),, ),); ),, , ),); ),, ),); How to get first and last day of previou ...
- java多线程3种方式
Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...
- opencv3.2.0形态学滤波之形态学梯度、顶帽、黑帽
/*一.形态学梯度 (1)含义:是膨胀图和腐蚀图之差 (2)数学表达式:dst=morph-grad(src,element) =dilate(src,element) - erode(src,ele ...