目录

1.生成任意大小的文件

2.文本文件的交集与差集

3.查找并删除重复文件

4.文件和目录权限

5.创建不可修改的文件

6.修改文件访问时间

7.查找符号链接与指向目标

8.查找文件差异并进行修补

9.head与tail

10.pushd和popd进行快速目录切换

11.统计文件行数,单词数和字符数

12.打印目录树


1.生成任意大小的文件

  • dd命令

dd命令会克隆给定的输入内容,然后将相同的副本写入到输出

if:输入文件,/dev/zero是一个字符设备,不断返回\0,如果不指定,默认从stdin输入

of:输出文件,如果不指定,默认输出到stdout

bs:block size,字节块大小

count:块个数

数据总体大小为 bs*count

Ian>dd if=/dev/zero of=junk.data bs=3M count=2
2+0 records in
2+0 records out
6291456 bytes (6.3 MB, 6.0 MiB) copied, 0.0119019 s, 529 MB/s

可以传输一个很大的数据来测试内存的操作速度

2.文本文件的交集与差集

comm命令可以用于求交集差集,必须使用排序过的文件

交集:两个文件共同的行

差集:包含在A文件,但不包含在其他指定文件中的行

求差:文件A和B包含的且互不相同的行

  • 基本使用

comm:求交集;第一列A文件行,第二列B文件行,第三列共有的行

-1 -2 -3:删除相应的列

sed 's/^\t//':格式化输出

Ian>cat a.txt.sort
apple
iron
orange
water
Ian>cat b.txt.sort
gold
silver
water
wood
Ian>comm a.txt.sort b.txt.sort
applegold
iron
orangesilverwaterwood
Ian>comm a.txt.sort b.txt.sort -3
applegold
iron
orangesilverwood
Ian>comm a.txt.sort b.txt.sort -3| sed 's/^\t//'
apple
gold
iron
orange
silver
wood
Ian>comm a.txt.sort b.txt.sort -1 -2
water
Ian>comm a.txt.sort b.txt.sort -1 -3
gold
silver
wood

3.查找并删除重复文件

使用md5sum校验文件,文件内容相同,校验和就相同。

4.文件和目录权限

  • 文件权限含义

-rwxrwxrwx 1 ian ian  133 Apr 12 15:45 auto_expect.sh
第一个代表文件类型,文件,目录或者链接,管道等

后面每三个为一组,分别代表用户,用户组,其他用户(非指定的用户和用户组的其他用户)

rwx:读写执行

  • 文件权限修改

chmod u=rwx g=rw o=r filename:使用角色修改

其中需要加权限:chmod o+x filename

需要减权限:chmod u-x filename

chmod 755 filename:使用数字修改

数字含义:

r--=4

-w-=2

--x=1

  • 更改所有权

chown user:group filename

  • 设置粘滞位

目录的粘滞位,只有目录的所有者才有权删除目录中的文件

chmod a+t dir_name:t为粘滞位

  • 递归方式修改

chmod 777 filename -R

chown user:group filename -R

  • 以不同的身份运行

setuid的特殊权限:先以user:group登录,将文件权限修改为想要执行的用户,然后+s修改

chmod +s filename

修改之后每次执行都是以user执行

5.创建不可修改的文件

chattr +i file:将文件设置为不可修改,任何用户包括超级用户都不能删除

chattr -i file:移除不可修改的属性

Ian>sudo chattr +i inter.sh
Ian>rm -f inter.sh
rm: cannot remove 'inter.sh': Operation not permitted
Ian>sudo chattr -i inter.sh
Ian>rm -f inter.sh

6.修改文件访问时间

touch可以修改访问时间,内容修改时间,指定特定的时间和日期

touch -a :只修改访问时间

touch -m:只修改文件内容修改时间

touch -d:指定文件时间

Ian>ll A*
-rw-r--r-- 1 ian ian 0 Apr 12 00:21 A.JPG
Ian>touch -d "Jan 20 2020" A.JPG
Ian>ll A*
-rw-r--r-- 1 ian ian 0 Jan 20 00:00 A.JPG

7.查找符号链接与指向目标

符号链接功能上类似于Mac中的别名或者windows的快捷方式。删除链接影响不到源文件

创建链接:ln -s target link

查看是否创建:ls -l

使用grep查找链接文件: grep "^l"

使用find查找: find path -type l

查看链接指向位置:readlink link

Ian>ln -s A.JPG A.link
Ian>ls -l
total 4
-rw-r--r-- 1 ian ian   0 Jan 20 00:00 A.JPG
lrwxrwxrwx 1 ian ian   5 Apr 12 18:59 A.link -> A.JPG
-rwxrwxrwx 1 ian ian 133 Apr 12 15:45 auto_expect.sh
-rw-r--r-- 1 ian ian   0 Apr 12 00:21 B.JPG
-rw-r--r-- 1 ian ian   0 Apr 12 18:43 chattr
-rw-r--r-- 1 ian ian   0 Apr 12 00:21 C.JPG
Ian>ls -l |grep "^l"
lrwxrwxrwx 1 ian ian   5 Apr 12 18:59 A.link -> A.JPG
Ian>find ./ -type l
./A.link
Ian>readlink A.link
A.JPG

8.查找文件差异并进行修补

一体化diff输出:diff -u f1 f2 >patch.txt,以f2的文本为基准

修复文本:patch -p1 v1.txt < patch.txt

撤销修复:patch  -p1 v1.txt < patch.txt

diff目录: diff -Naur dir1 dir2

-N:将所有缺失文件视为空文件

-a:将所有文件视为文本

-r:遍历目录下所有文件

Ian>cat v1.txt
2
3
4
a
Ian>cat v2.txt
2
3
a
b
Ian>diff -u v1.txt v2.txt
--- v1.txt  2020-04-13 00:16:04.891985569 +0800
+++ v2.txt   2020-04-13 00:16:24.000706757 +0800
@@ -1,4 +1,4 @@23
-4a
+b
Ian>patch -p1 v1.txt < patch.txt
patching file v1.txt
Ian>cat v1.txt
2
3
a
b

9.head与tail

head和tail分别默认前10和后10行

打印前4行:head -n 4 file

打印除了最后5行之外所有行:head -n -5 file

打印后4行:tail -n 4 file

打印除前5行之外所有行:tail -n -6 file

监控某个进程:tail -f --pid $PID

10.pushd和popd进行快速目录切换

Ian>pwd
/home/ian/test/rename
Ian>pushd /home/ian/
~ ~/test/rename
Ian>pushd /usr/bin/
/usr/bin ~ ~/test/rename
Ian>dirs
/usr/bin ~ ~/test/rename
Ian>pwd
/usr/bin
Ian>pushd +1
~ ~/test/rename /usr/bin
Ian>pushd /etc/
/etc ~ ~/test/rename /usr/bin
Ian>dirs
/etc ~ ~/test/rename /usr/bin
Ian>pushd +2
~/test/rename /usr/bin /etc ~
Ian>popd +2
~/test/rename /usr/bin ~

11.统计文件行数,单词数和字符数

wc:统计行,单词,字符数

wc -l:统计行

wc -w:统计单词

wc -c:统计字符

wc -L:文件中最长一行的字符数

Ian>wc -l output.session
25 output.session
Ian>wc -w output.session
66 output.session
Ian>wc -c output.session
774 output.session
Ian>wc -L output.session
59 output.session
Ian>wc output.session 25  66 774 output.session

12.打印目录树

tree命令可打印文件目录

Ian>tree test/
test/
├── test.txt
├── tree1
└── tree22 directories, 1 file

tree -P pattern:标记某种样式的文件

tree -P pattern:标记某种样式之外的文件

tree -h:同时打印出文件和目录大小

Ian>ls
a.sh  test.txt  tree1  tree2
Ian>tree -P "*.sh"
.
├── a.sh
├── tree1
│   └── b.sh
└── tree22 directories, 2 files
Ian>tree -I "*.sh"
.
├── test.txt
├── tree1
│   └── c.log
└── tree22 directories, 2 files
Ian>tree -h
.
├── [   0]  a.sh
├── [   0]  test.txt
├── [4.0K]  tree1
│   ├── [   0]  b.sh
│   └── [   0]  c.log
└── [4.0K]  tree22 directories, 4 files

tree ./ -H http://localhost -o out.html:以当前的目录生成一个html文件

linux shell脚本攻略 第三章 以文件之名 find,chmod,touch,head,tail,tree,wc相关推荐

  1. linux shell脚本攻略 第五章 一团乱麻(web处理) wget curl

    1.从web下载(wget) wget url1 url2 url3 wget -t 5:重试次数,-t 0为一直重试 –limit-rate 20k:限速 -c:断点续传 –quota 100m:下 ...

  2. LINUX SHELL脚本攻略笔记[速查]

    LINUX SHELL脚本攻略笔记[速查] Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgr ...

  3. Linux Shell脚本攻略 读书笔记

    内容目录: 嗨,Echo一下 给终端来点颜色 shell的控制结构 算术比较 目录操作 网站下载 tar 归档工具 rsync 备份系统快照 ftp自动传输 磁盘管理 故障排查 使用syslog记录日 ...

  4. 《Linux Shell脚本攻略》读书笔记第三章 以文件之名

    1.生成任意大小文件 dd [root@stone ~]# dd if=/dev/zero of=f1_dd bs=1M count=1 1+0 records in 1+0 records out ...

  5. 《Linux Shell脚本攻略》学习笔记-第一章

    1.1 简介 计算机可以从文本文件(称为shell脚本)中读取并执行命令. sehll脚本不仅节省了时间,而且清楚明白地表明了所执行的操作. bash shell变成了UNIX和Linux中既成事实的 ...

  6. linux shell脚本攻略_(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤...

    今天为大家带来的内容是:(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤 本文内容主要介绍了Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤,文章 ...

  7. linux shell脚本攻略第3版_「技术干货」师傅说不会写shell脚本的网安不是一个好黑客,实战...

    shell脚本? 在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就 ...

  8. Linux Shell脚本攻略学习总结:一

    终端打印 终端打印的常用命令有两个:echo和print 首先,我先介绍echo 1.echo echo这个命令接受三种形式的参数,实例如下: echo "Hello World" ...

  9. Linux Shell脚本攻略-调试脚本+函数和参数

    调试脚本 可以利用Bash内建的调试工具或按照易于调试的方式编写脚本 # 1. 使用选项-x,启用shell脚本的跟踪调试功能 $ bash -x script.sh # 打印出所执行的每一行命令以及 ...

最新文章

  1. OpenGL材质和光照(转)part2
  2. T-SQL编程基础-基本语法
  3. 多线程的两种实现方式和区别?
  4. PHPRPC for PHP
  5. LockSupport的源码实现原理以及应用
  6. matlab三维选取二维,基于Matlab绘制二维和三维图形以及其他图形控制函数的使用方法...
  7. 恐怖之城(深圳)系列1---K113大巴洗劫一空
  8. 腾讯视频app怎么允许腾讯视频访问位置信息
  9. Java 联系Oracle 数据库
  10. Spring Cloud 中的@FeignClient注解中的contextId属性
  11. CCF201812-5 管道清洁【最小费可行流】(100分题解链接)
  12. 【Atcoder agc020 C】Median Sum,序列子集和中位数,bitset,01背包
  13. Android---06---2中动画效果
  14. CSS 3之美化表格样式
  15. 无法听到计算机发出的声音怎么办,qq语音听不到对方的声音怎么办_电脑qq语音我听不到对方声音修复方法-win7之家...
  16. 数据库及基本表的建立
  17. u盘中毒数据还能恢复吗?
  18. Python的前奏:excel常用功能简介,数据透视表,切片器
  19. PHP7.2与apache环境安装部署详细流程
  20. (1)学习ArduPilot代码库

热门文章

  1. HTTP状态代码2XX、3XX、4XX、5XX分析
  2. 论文阅读:ICCV2021 TransReID: Transformer-based Object Re-Identifification
  3. 曼哈顿算法公式_距离计算方法总结 | Public Library of Bioinformatics
  4. KL-MPLC无人值守系统
  5. QsciScintilla等编辑器实现不同区域鼠标右键处理方式不同的方法
  6. leetcode-94
  7. 配置Java远程监控授权(Java Mission Control)
  8. 给求职者的启示:发送求职邮件时的忌讳
  9. 怎样成为一个PS高手
  10. JS与jQuery获取任意事件的子元素下标(获取当前类数组的某一子元素下标)