For loop 例子
for i in {1..5}
do
echo "Welcome $i times"
done
Linux Shell获取文件夹下的
Shell脚本如下:
#!/bin/bash
# get all filename in specified path
path=$1
files=$(ls $path)
for filename in $files
do
echo $filename >> filename.txt
done
另外,如果使用>而不是>>重定向输出,它将覆盖以前的文件。
https://www.bilibili.com/video/BV1Da4y1L7Nn/
shell去除重复行:
注:uniq只对相邻行做比较,一般结合sort先排序下(以使重复行相邻)
sort -n aa.txt | uniq > bb.txt
补充的重要内容:
1、统计两个文本文件的相同行
grep -Ff file1 file2
2、统计file2中有,file1中没有的行
grep -vFf file2 file1
如何比较两个文件并去删除相同的内容
for i in $(<file1); do grep $i file2 || echo $i >>tmp1 ; done
输出相同行:
$grep -wf file1 file2
输出不同行
$grep -wvf file1 file2
找出A和B 之间不同并输出
找出文件1和文件2中相同的行:
cat 09-07_as_route 09-14_as_route | sort | uniq -d | sort -n
或
grep -f 09-07_as_route 09-14_as_route 或 grep -f 09-14_as_route 09-07_as_route
也可以使用comm,但使用comm比较的结果不准。????
可参考:http://blog.csdn.net/shuckstark/article/details/7872176
comm - 12 就只显示在两个文件中都存在的行;
comm - 23 只显示在第一个文件中出现而未在第二个文件中出现的行;
comm - 123 则什么也不显示。
例如:找出a.txt文件有而b.txt文件中没有的放在c.txt文件中
[cpp] view plaincopy #!/bin/sh
# author by tianmo
# date 2011-11-21 20:33
#BEGIN
cat a.txt | sort | uniq | sort > a_u.txt
cat b.txt | sort | uniq | sort > b_u.txt
comm -23 a_u.txt b_u.txt > c.txt
# END
原文链接:https://blog.csdn.net/ysdaniel/article/details/7988140
tar查看目录结构(不解开压缩文件)
只查看目录结构:
tar -tvf sns.tar.gz | grep ^d
查看文件列表(包含路径):
tar -tf sns.tar.gz
遇到的问题:
[root@haha ~]#tar -czf /root/ss3.tat.gz /root/ss2
tar: Removing leading `/' from member names
意思就是让我们将路径的 ‘/’ 去除掉。
问题原因:
因为我们使用的是绝对路径,而不是相对路径。而tar 命令默认是采用相对路径来进行压缩打包的。
解决办法:
我们需要使用参数 -P(大写)来允许我们使用绝对路径进行压缩打包。
得到当前时间:
#!/bin/bash
cur_dateTime=`date +"%Y-%m-%d %H:%m"`
echo ${cur_dateTime}
Centos 7 下载 crontab 包
On CentOS 7 you need to use cronie
:
yum install cronie
在centos系统中,如果/sbin目录下没有service这个命令,就会出现
bash: service: command not found
1
解决步骤如下:
1、 输入
yum list | grep initscripts
1
会出现:
initscripts.x86_64
1
(其实一共有三个信息,但是后面根据版本不同,显示的信息也不同)
2、 上面给出了可安装软件的yum源版本,然后执行
yum install initscripts -y
1
3、 此时service命令就可用了
Crontab 使用注意:
在脚本中也要使用绝对路径,不然会报错!!!