Unix下shell对文件随机读写

简介:
在《高级Bash脚本编程指南》上有一个例子,用重定向,通过shell对文件随机读写,但那方法在Unix的sh下不管用,自己写了一个,例子如下:

Python代码

   1. #!/bin/sh  
   2. #randRead.sh  
   3. echo 1234567890 > sFile   
   4. exec 3<> sFile            
   5. #read -n 4 <&3            
   6. dd bs=1 count=4  of=/dev/null <&3 2>/dev/null  
   7. echo . | dd bs=1 count=1 >&3 2>/dev/null  
   8. exec 3>&-                
   9. cat sFile   

#!/bin/sh
#randRead.sh
echo 1234567890 > sFile 
exec 3<> sFile          
#read -n 4 <&3          
dd bs=1 count=4  of=/dev/null <&3 2>/dev/null
echo . | dd bs=1 count=1 >&3 2>/dev/null
exec 3>&-              
cat sFile 

运行结果如下:
Python代码

   1. root@SMP2> cat -n randRead.sh   
   2.      1  #!/bin/sh  
   3.      2  echo 1234567890 > sFile   
   4.      3  exec 3<> sFile            
   5.      4  #read -n 4 <&3            
   6.      5  dd bs=1 count=4  of=/dev/null <&3 2>/dev/null  
   7.      6  echo . | dd bs=1 count=1 >&3 2>/dev/null  
   8.      7  exec 3>&-                
   9.      8  cat sFile                 
  10. root@SMP2>   
  11. root@SMP2> ./randRead.sh   
  12. 1234.67890  
  13. root@SMP2>   

root@SMP2> cat -n randRead.sh 
     1  #!/bin/sh
     2  echo 1234567890 > sFile 
     3  exec 3<> sFile          
     4  #read -n 4 <&3          
     5  dd bs=1 count=4  of=/dev/null <&3 2>/dev/null
     6  echo . | dd bs=1 count=1 >&3 2>/dev/null
     7  exec 3>&-              
     8  cat sFile               
root@SMP2> 
root@SMP2> ./randRead.sh 
1234.67890
root@SMP2> 

附ABS上的例子:
Python代码

   1. 87       echo 1234567890 > File    # 写字符串到"File".  
   2. 88       exec 3<> File             # 打开"File"并且给它分配fd 3.  
   3. 89       read -n 4 <&3             # 只读4个字符.  
   4. 90       echo -n . >&3             # 写一个小数点.  
   5. 91       exec 3>&-                 # 关闭fd 3.  
   6. 92       cat File                  # ==> 1234.67890  

   7. 93       # 随机存储.


      本文转自glying 51CTO博客,原文链接:http://blog.51cto.com/liying/967765,如需转载请自行联系原作者






相关文章
|
9天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
38 1
|
9天前
|
人工智能 机器人 Shell
【shell】文件读写及read用法
【shell】文件读写及read用法
|
9天前
|
缓存 Shell Linux
【Shell 命令集合 链接器(linker)工具】Linux ld命令 将目标文件与库链接为可执行文件或库文件
【Shell 命令集合 链接器(linker)工具】Linux ld命令 将目标文件与库链接为可执行文件或库文件
51 0
|
9天前
|
Shell Linux C语言
【Shell 命令集合 系统设置 】Linux 创建Kickstart文件mkkickstart命令 使用指南
【Shell 命令集合 系统设置 】Linux 创建Kickstart文件mkkickstart命令 使用指南
32 0
|
9天前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
40 0
|
9天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
62 0
|
9天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
66 3
|
9天前
|
存储 网络协议 Shell
第十章 Shell编程时常用的系统文件
第十章 Shell编程时常用的系统文件
|
9天前
|
Shell
shell学习(三)【shell变量、数组,文件命令、特殊变量】
shell学习(三)【shell变量、数组,文件命令、特殊变量】
16 0
|
9天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 实时监控日志文件 swatch命令 使用指南
【Shell 命令集合 系统管理 】Linux 实时监控日志文件 swatch命令 使用指南
41 1