shell脚本(3)以文件之名
2019-05-16 本文已影响0人
盖小聂
1、comm命令
comm命令可以用来比较两个文件的差异;前提是这两个文件中的行已经是排好序的,如果没有排好序可以使用sort命令进行排序;comm命令会将两个文件的比较结果分成3列展示出来,第一列为只包含在第一个文件中的行,第二列为只包含在第二个文件中的行,第三列为同时包含在两个文件中的行;
comm A.txt B.txt
参数 | 描述 |
---|---|
-1/-2/-3 | 分别表示去除第1行的内容/去除第2行的内容/去除第3行的内容 |
comm -1 -2 A.txt B.txt //打印AB两个文件的交集
comm -3 A.txt B.txt //打印出AB两个文件中不相同的行
2、sed命令
s代表替换,第一个反斜杠中的内容为需要被替换的内容,第二个反斜杠中的内容为要替换成的内容,^表示行首
sed 's/^\t//' //去掉行首的制表符
3、ls命令
Linux系统中文件都与多种类型的权限相关联。这些权限中,我们通常要和三类权限打交道(用户,用户组和其他用户)。用户(user)是文件的所有者,用户组(group)是多个用户的集合(由系统管理员指定),系统允许这些用户对文件进行某种形式的访问。其他用户就是除用户和用户组之外的任何人。
参数 | 描述 |
---|---|
-l | 可以查看文件的详细信息;第一个字符代码文件类型,-为普通文件,d为目录;接下来有9个字符,这个9个字符分成3组,每组3个分别代表用户,用户组和其他用户的读,写,可执行权限。 |
-lS | 可以列出当前目录下的所有文件按照从大小顺序排列的详细信息 |
通过chmod命令修改文件的权限。
chmod u=rwx g=rw o=r filename //没有效果
chmod 764 filename //有效果
4、diff命令
diff命令用于比较两个文件的差异
参数 | 描述 |
---|---|
-u | 新增的行用+开始,删除的行用-开始 |
diff -u version1.txt version2.txt > version.patch
patch命令可以将修改作用于第一个文件使得第一个文件与第二个文件相同,通过再使用patch命令可以还原文件1的修改;作用于文件2也是同样的效果
patch -p1 version1.txt < version.patch
5、head和tail命令
head命令打印文件的开头多少行;默认是10行,-n参数的值为指定的查看文件开头多少行;tail命令从行尾开始。
6、只列出目录的各种方法
方法一 ls -d */
方法二 ls -F | grep "/$"
方法三 ls -l | grep "^d"
方法四 find . -type d -maxdepth 1 -print
7、pushd和popd命令
pushd命令可以将当前目录添加到目录栈中;可以通过dirs命令查看栈目录中的文件,这样就可以通过pushd + [0..n]跳转到相应的目录。
popd命令用于删除目录栈中的目录。
如果目录栈中只存在两个目录,可以使用cd -进行相互切换。
其他
1、文件可以设置黏滞位表示这个文件或者目录只能有文件所有者才能删除
2、查找重复文件通过两个文件的MD5值是否相等来判断。