首页 > 其他 > 详细

三 、 文件增删改查

时间:2021-01-10 22:31:37      阅读:29      评论:0      收藏:0      [点我收藏+]

复制文件和文件夹

cp copy 默认情况下是别名,原来本身命令是不提示覆盖的

Usage: cp [OPTION]... [-T] SOURCE DEST
or:  cp [OPTION]... SOURCE... DIRECTORY
or:  cp [OPTION]... -t DIRECTORY SOURCE...
 -i 显示提示信息
 -n 不覆盖
 -r -R 递归复制
 -d 只复制链接文件,不复制源文件
 -a 归档
 -v 显示过程
 -b 备份原来的文件
 --backup=number 备份文件加上数字
 -p 保留原来的属性
 
  • 如果源文件是文件的话

    • 目标是文件

      • 目标文件如果不存在的话,则新建目标文件,并把内容写到目标文件中

      • 如果目标文件存在的话,本来的命令是直接覆盖,建议使用-i来提示用户

    • 目标是文件夹

      • 在文件夹中新建一个同名的文件,并把文件内容写到新文件中

  • 如果源文件为多个文件的话

    • 目标必须是文件夹,文件夹必须存在,其他情况都会报错

  • 如果源文件是文件夹的话

    • 目标文件是文件: 不可以

    • 目标文件必须是文件夹,必须使用-r选项

    • 如果目标文件不存在:则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹

    • 如果目标文件存在:

      • 如果是文件的话,则报错

      • 如果是文件夹:则在目标文件夹中创建同名文件夹,并把所有数据都复制到新文件夹

移动、重命名

mv move

Usage: mv [OPTION]... [-T] SOURCE DEST
or:  mv [OPTION]... SOURCE... DIRECTORY
or:  mv [OPTION]... -t DIRECTORY SOURCE...
-i 提示
-f 强制
-b 备份
--backup=number 备份后面加数字
-v 显示过程

删除

rm remove

Usage: rm [OPTION]... FILE...
-i 提示
-r -R 递归删除
-f 强制删除
rm -rf 慎用
rm -rf /*
cd /
rm -rf *

链接

软链接

  • 相当于windows的快捷方式

  • 创建命令 ln -s 源文件 目标文件

  • 可以对目录做软链接

  • 指向另外的一个文件或者目录的路径,大小是路径的长度的字符

  • 对磁盘引用次数没有影响

  • 可以跨分区

  • 源文件发生改变,软链接会跟着发生变化

  • 源文件删除,软链接不能访问

硬链接

  • 磁盘引用次数会发生变化

  • 指向的是硬盘上的同一块区域

  • 磁盘的引用数会随着硬链接次数来增加

  • 不能对目录做硬链接

  • 不能跨越分区

  • 源文件发生改变,硬链接也会跟着变化

  • 源文件删除以后,硬链接可以访问

查看文件类型

file

输入和输出

  • 标准输入 默认是来自键盘的输入 stdin 0

  • 标准输出 默认输出到终端窗口 stdout 1

  • 标准错误输出 默认输出到终端窗口 stderr 2

I/O重定向

> 覆盖

  • > 将标准输出重定向到文件中

  • 2> 将错误输出重定向到文件中

  • &> 将所有的输出都重定向到文件中

禁止、允许覆盖

  • 禁止覆盖 set -C

  • 允许覆盖 set +C

>> 追加

>> 将标准输出追加到文件中

2>> 将错误输出追加到文件中

&>> 将所有输出追加到文件中

标准输入和错误输入分开保存

[root@localhost ~]#ls f 45yuio > log.log 2> error.log
[root@localhost ~]#cat log.log
f
[root@localhost ~]#cat error.log
ls: cannot access 45yuio: No such file or directory
?

合并所有的输出

  • &> 覆盖重定向

  • &>> 追加重定向

  • command > file 2>&1

  • command >> file 2>&1

  • ():合并多个文件的输出

  • /dev/null 黑洞

从文件导入stdin

tr 字符替换

-t 截断
-d 删除
-s 压缩,去重
-c 取反
[root@localhost ~]#tr ‘a-z‘ ‘A-Z‘ < /etc/issue
\S
KERNEL \R ON AN \M
[root@localhost ~]#tr ‘a-z‘ ‘A-Z‘
qwertyy
QWERTYY
12345678
12345678
ASDFGHJ
ASDFGHJ
qwertyuio
QWERTYUIO
^C
[root@localhost ~]#tr ab 12
ab
12
abb
122
asdfghjkl
1sdfghjkl
^C
[root@localhost ~]#tr abc 12
ab
12
abc
122
abc
122
^C
[root@localhost ~]#tr ab 123
ab
12
abb
122
avc
1vc
qbc
q2c
abc
12c
[root@localhost ~]#tr -t abc 12
abc
12c
ab
12
[root@localhost ~]#tr -d abc
qwertyui
qwertyui
an^H^H
n
?
abc
?
artyibrtyuiocrtyuiop
rtyirtyuiortyuiop
^C
[root@localhost ~]#tr -d abc < /etc/issue
\S
Kernel \r on n \m
?
[root@localhost ~]#cat /etc/issue
\S
Kernel \r on an \m
[root@localhost ~]#tr -s a
abc
abc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabc
abc
^C
[root@localhost ~]#tr -sc a
aasdaaaaaaa
aasdaaaaaaa
^[[A^H^H^C
[root@localhost ~]#tr -sc a
aaaaaaaaabbbbbbbbbbbbbccccccccddddddddddd
aaaaaaaaabcd
[root@localhost ~]#tr -dc a
aaaaaaaaaaaabbbbbbbbbb
asdfghjkqwertyuiozxcvbnmxcvbnm,.
aaaaaaaaaaaaa
ctrl+d 结束
[root@localhost ~]#tr -dc "a\n"
asdfghjk
a
wertyujk;l
?
?
?
asdfghj
a
[root@localhost test]#tr -d a < issue > issue 处理完成以后不能写会到源文件,要写到新的文件中
[root@localhost test]#seq 1 10 > b
[root@localhost test]#cat b
1
2
3
4
5
6
7
8
9
10
[root@localhost test]#tr -d "\n" < b
12345678910[root@localhost test]#tr -d "\n" < b
[root@localhost test]#tr "\n" " " <b
1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr "\n" " " <b >c
[root@localhost test]#cat c
1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr " " "\n" <c
1
2
3
4
5
6
7
8
9
10

多行发送给stdin

# 第一种方式
[root@localhost test]#cat > f1
qwert
wertyui
wertyui
wertyuiopasdfghjk
sdfghjkl
sdfyhjkl;sdfghjkl;xcvb
?
# 第二种方式
[root@localhost test]#cat > f2 <<EOF
> qwerty
> qwertyu
> wertyui
> qwertyu
> EOF
EOF 不是必须得,只要两个相同就可以

管道

管道使用“|”来表示

命令1|命令2|命令3

  • 把命令1的输出结果当做命令2的输出结果,把命令2的输出结果当成命令3的输入结果

  • 默认情况下,管道只能传送标准输出

  • 如果需要把错误输出也传递,则需要|&

  • 一般用来组合多个命令

  • 有一些命令是不接受管道的

[root@localhost test]#ls f1|tr ‘a-z‘ ‘A-Z‘
F1
[root@localhost test]#ls f
ls: cannot access f: No such file or directory
[root@localhost test]#ls f|tr ‘a-z‘ ‘A-Z‘
ls: cannot access f: No such file or directory
[root@localhost test]#ls f|&tr ‘a-z‘ ‘A-Z‘
LS: CANNOT ACCESS F: NO SUCH FILE OR DIRECTORY
[root@localhost test]#echo file{1..20}|touch
touch: missing file operand
Try ‘touch --help‘ for more information.
?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三 、 文件增删改查

原文:https://www.cnblogs.com/zhuangdd/p/14252355.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!