获取文件的5-8行数据
1. head -n 8 | tail -4f
2.Linux中一个文件10行内容,如何输出5-8内容到屏幕_潇雨的技术博客_51CTO博客
==============================
linux git 时候提示一些信息
https://segmentfault.com/a/1190000002539169 关于shell变量的一些写法
https://www.cnblogs.com/huzhiwei/archive/2012/03/14/2395956.html eval函数
=============================================================
exersice grep.sh
============================================================
1.gzip file
2.gzip -v -c file>file.name
3.zcat
4.bzip2 file
5.bzip2 -k file
6.bzcat file
7.tar -zcvf 目标文件
8.tar -Jcvf 目标文件 原始目录
9.tar -jcvf 目标文件 原始目录
=============================================通配符
shell 支持通配符一般命令不支持通配符,命令的参数支持通配符(find 的参数支持通配符)
ls ./.* 这个代码很有意思(ls显示时候可以指定多个目录,这个就是匹配多个目录)
https://www.cnblogs.com/hesper/p/8674724.html---这比较详细
=============================================通配符
find . -maxdepth 1 -size +20k -exec ls -l {} \; -o -size -3k -exec ls -l {} \; ==必须两个-exec 否者之输出一个
find . -maxdepth 1 -size +20k -o -size -3k | xargs ls -l
find . -maxdepth 1 -perm 700
$ find . -type f -mmin -10 :搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
----find . -type f -name "*.jsp" | xargs grep ‘webJdbcTemplate’
cat sync-orders.log_bak | grep 'totalTime' | sed s/detail/#/g | cut -d "#" -f 2 | sed s/'totalTime \['/#/g | sort -t "#" -k2n,2
find . -name "*.jpg" -maxdepth 1 ----警告,相当于你查找完了在进行限制这样可定会有警告
find . -maxdepth 1 -size +4M ---写在前面就不发生警告
find /etc -name init
find /etc -iname init
find / -size +204800
find /home -user
find /home -group
find /etc -size +10M, k,单位
-a 并且 : -o 或者
find /etc -name inittab -exec ls -l {} \; — find /etc -name inintab | xargs ls -l ====感觉类似
$ find . -name 'my*' :搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find / -nouser :-nouser 参数的使用 ,在网络上面下载文件时候,用户,用户组 可能发生,删除一个用户的时候这个用户创建的文件就可以出现
==========================================locate
$ locate /etc/sh 搜索etc目录下所有以sh开头的文件。
$ locate ~/m 搜索用户主目录下,所有以m开头的文件。
$ locate -i ~/m 搜索用户主目录下,所有以m开头的文件,并且忽略大小写。(-i 忽略大小写 )
===========================================
whatis -------man -f
apropos -------man -k
chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01 //对文件f01的u,g,o都设置可执行属性
chmod +x f01 // 如果没有指定ugo的话就是全部添加
rwx --- file读写执行
rwx ----directory r list w--创建删除 ----x 就是进入
===========================================
stat fileName ====查看所有的时间
===========================================
rpm -q 包名
rpm -qa 所有
rpm -qi
rpm -qip
rpm -qf
rpm -qfp
rpm -qR ---查询软件包的依赖性题
===========================================
---所有的命令都是通过shell与内核交互的-
---1.命令行敲击的东西都会进行一次shell转换,转换完的结果在传递给命令的参数,这就是所谓的多层转译
---2.重要的一点,\ $这样的特殊字符,如果特殊字符后面出现的字符没有特殊意义或者不是变量的时候他就保留原来的字符的意思
1.grep "\\\(" grep.sh
获取grep.sh中的\(字符,命令的解释,如果硬转译来说就比较好
1.1shell命令会进行重组 \\-->参数变化成为\\(
1.2传递给grep时候就变化成 \\(但是\(是个正则表达式,所以应该把\给转意 所以传递\\( 就相当于\(忽略正则
=======================================
2.获取\结尾的行
grep "\\\\$" grep.sh
其实分析跟上面一样,第一级命令重组, \\ 在shell级别变化成为 \ ,
2.1 shell 级别变化 \\$
2.2 传递到grep级别 $是以什么结尾,\需要转意\\ 代表一个\的本意
$是个特殊字符所以要在多重转意时候给转换过来, echo "\\\\$" echo "\\\$",下面是总结
2.3 转译字符后面是特殊符号的时候才会转译你本来的意识,如果转译字符后面是普通的字符或者没有,那他就代表自己
echo "\" echo "$", $也是一样的只要是$后面没有字符也就是说没有变量的话也不会进行替换
为什么会比例子1里面多一个\的原因就是,例子1里面的( 前面的在shell层面不是特殊字,第三个 \ 就是是代表反斜线的本意
如果例子2中是\\\$的话,第三个反斜线会将$进行转译,所以呢我们用四个,第三个\来转译第四个\来代表他就是普通的\,所以多了一个\
啰嗦了点就是(非特殊字符,$ 是特殊字符).
=======================================
3.cut --基本常用的就是cut -d -f, -s 可以去掉没有分割符的行
3.1 没分割符号的显示整行
3.2 有分割符号的,长度不够显示空白
cat /etc/passwd | sort -t ':' -k 3
cat /etc/passwd | sort
last| cut -d ' ' -f1 -s | sort | uniq -ic
==-e -v 的顺序其实决定命令的是否执行
cut -sd ' ' -f 1 | sort | uniq -c |grep -e "wtmp\|reboot" -v
cat t.txt |sed s/']'/'['/g | sort -t '[' -k3,3n t.txt —debug
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
新浪博客 w 命令解答
=======================================
4.sed命令这个是个轻量级的流编辑器
4.1---vim subsitute---补习基础
sed '2p’ 1.txt --打印--带着重复— 升级版=sed -n '2p’ 1.txt --打印
sed '2,4d’ 1.txt 删除
sed '2a hello’ 1.txt --第二行后添加
sed '2i hello \ world’ 1.txt
sed '2c No such person’ 1.txt === 替换整行太暴力了
sed '3s/74/99/g’ 1.txt ----替换一行
# sed -e 's/Liming//g ; s/Gao//g’ 1.txt
#同时把“Liming”和“Gao”替换为空
#sed -i '3s/74/99/g’ 1.txt #sed操作的数据直接写入文件
==================================
cat 1.txt 2.txt
grep "" 1.txt 2.txt (-h) 可以去掉文件名,空串
sort 1.txt 2.txt
==================================
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
%-5s或(%5s)“-”限制显示宽度,-左对齐 普通的就是右对齐.如果长度超出了范围就没有这个限制了,具体时候查看文档就行了
主要是使用:awk '{printf "The name is: %-15s ID is %8d\n",$1,$3}’ e.txt
awk ‘条件1{动作1} 条件2{动作2}...’ 文件名
cat /etc/passwd | awk 'NR > 8 && NR < 20 {printf NR "\n”}’ === 显示8 到20行
awk 'END{printf "The End \n" } {printf $2 "\t" $6 "\n"}’ student.txt
awk 'BEGIN{printf "This is a transcript \n" } {printf $2 "\t" $6 "\n"}’ student.txt
cat student.txt | grep -v Name | awk '$6 >= 87 {printf $2 "\n" }'
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n”}’
cat student.txt | grep -v Name | awk '$6 >= 87 {printf $2 "\n" }'
==================================
sed '' conf/dubbo.properties 显示全部文件文件
grep ‘’ conf/dubbo.properties 显示全部文件
awk '/root/' 1111.sh 在没有指定动做的时候,默认匹配当前行
cat 1.txt 2.txt
grep "" 1.txt 2.txt (-h) 可以去掉文件名,空串
sort 1.txt 2.txt
CONTAINERS=` sed '/dubbo.container/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
!d 就是不删除选中行;
s/old/new/ 的语法就是:
dubbo.container=spring
.*= [ dubbo.container=]
// =[] 相当于 dubbo.container=替换空串