rust实现简单的tail命令
- 寻找到文件结尾
- 倒叙匹配字符 ‘\n’
- 匹配完成后输出文件内容到标注输出
pub fn tail_file_to_stdout(path: &str, n: &mut usize){
let mut f = match File::open(path) {
Ok(f) => f,
Err(e) => return
};
f.seek(SeekFrom::End(0)).unwrap();
let mut b: [u8; 1] = [0];
while *n > 0 {
let i = match f.seek(SeekFrom::Current(-1)){
Ok(i) => i,
Err(e) => return
};
if i > 0 {
f.read(&mut b).unwrap();
f.seek(SeekFrom::Current(-1)).unwrap();
if b[0] as char == '\n' {
*n -= 1;
}
}else {
break;
}
}
io::copy(&mut f , &mut io::stdout()).unwrap();
}