文件管理命令

Posted 酱油拌饭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件管理命令相关的知识,希望对你有一定的参考价值。

文件管理

[toc]

复制命令

#复制命令:
cp :copy
cp 选项  文件  路径

默认只能复制文件

#选项:
-t:是将路径和文件反过来输入  #例:cp -t /abc  源文件的位置   正常是:cp  原文件的位置  /abc

-p保持文件属性复制,文件的属性就是文件权限,文件拥有者,文件创建时间一类的,不加-p会更改创建时间    注#以目前我学到的得出的结论

-r:递归复制,递归就是可以连带整体的目录一起复制,包括目录里的内容

-a:-a相当于-rp的组合选项,既可以复制目录又可以保持文件的属性

-i:提示,-i我们系统默认cp命令就是cp -i 也就是系统别名里已经设置好的

-v:-v是显示复制的过程

#复制并改名
与mv剪切一样,如果复制的目标文件不存在将会改名,这个文件分存在与不存在的情况,存在的情况有两种一种是:存在,而且是个目录,第二种是:存在,但是是个文件,不存在就是不存在

第一个存在情况:你复制到的位置是个目录,那他就会把文件放在目录里面切不改名
第二个存在情况:你复制到的位置是个文件,那他就会提示你是否覆盖该文件

不存在的情况:就是复制过去并改成你输入的文件名

曾老师的举例:     (参考)
ooo是否存在
- 存在
1)存在,并且ooo是个目录:将oldboy.txt放到/tmp/ooo目录下,不改名
2)存在,并且ooo是个普通文件:则提示是否要覆盖,输入y则覆盖,输入n则不覆盖
- 不存在:复制到/tmp下,并且改名为ooo

#提示  即使没有ooo这个文件也会提示  因为我们 cp 这条命令本身就是 cp -i
[root@localhost ~]# cp /abc/oldboy.txt /tmp/ooo
cp: overwrite ‘/tmp/ooo’?
-----------------------------------------------

# 报错  因为我们 cp 这条命令默认只能复制普通文件,不能复制目录,需要复制目录可以加上选项 或者在cp前面加上\\   \\cp   选项   文件  路径
[root@localhost ~]# cp /abc /tmp/
cp: omitting directory ‘/abc’

#命令加选项的使用
----------------------------------------------

# -p保持文件属性
[root@localhost ~]# cp -p /abc/oldboy.txt .

-p保持文件属性复制,文件的属性就是文件权限,文件拥有者,文件创建时间一类的,不加-p会更改创建时间    注#以目前我学到的得出的结论

------------------------------------------------

# -r递归拷贝   复制tmp目录到root目录,正常cp是没法复制目录的,加上-r这个选项就可以
[root@localhost ~]# cp -r /tmp /root/

-r:递归复制,递归就是可以连带整体的目录一起复制,包括目录里的内容

---------------------------------------------------------------------------
# -a拷贝目录,保持目录属性,相当于选项-r和-p的组合,递归并保持文件的文件属性
[root@localhost ~]# cp -a /abc /root/

-p保持文件属性复制,文件的属性就是文件权限,文件拥有者,文件创建时间一类的,不加-p会更改创建时间   

-r:递归复制,递归就是可以连带整体的目录一起复制,包括目录里的内容
---------------------------------------------------------

-v:这个没什么说的,就是把复制的过程展示出来

# -i提示 提示这个功能 cp 自带的
[root@localhost ~]# cp -i /abc/oldboy.txt /tmp/zhujiao
cp: overwrite ‘/tmp/zhujiao’?

##避免提示的方法
1.转义符:\\:的使用,转义符就是让后面的内容,干自己的工作
比如 \\cp 这个就是让 cp 做他自己,他该干什么就干什么,我 cp 就是复制东西的,那你叫我复制什么我就复制什么

2.命令的绝对路径
首先找到 cp 这个命令的绝对路径,我们可以用which这个命令来查

例:[root@ltl /oldboy/0602]# which cp
alias cp=cp -i
    /usr/bin/cp这是我们 cp 这个命令的绝对路径,我们可以简化,用 /bin/cp的方式

例:[root@localhost ~]# /bin/cp -a /etc /tmp/

#这种方式也不会提示
------------------------------------------

删除命令

#删除命令
rm:remove
默认只能删除普通文件

#语法
rm  选项  文件

#选项
-i  提示  也就是提示是否删除,可输入y或n来表示yes 是的  n表示no  -i也是rm命令自带的功能,系统设置好的别名

-r 递归  也就是递归删除 可以删除目录和目录里的内容,会提示因为rm自带-i选项

-f 强制 强制删除  不论目录还是文件

-d 可以删除空目录,没啥用

## 报错   这是个目录不是文件,所以无法删除  Is a directory = 是个目录
[root@localhost ~]# rm /root/abc/
rm: cannot remove ‘/root/abc/’: Is a directory

#选项使用

-i提示
## 曾老师的举例
[root@localhost ~]# rm /tmp/ooo
rm: remove regular empty file ‘/tmp/ooo’?  提示是否删除

-r递归删除
# -r递归删除 曾老师举例   会提示是否删除因为 rm 自带-i选项
[root@localhost ~]# rm -r /root/abc/
rm: descend into directory ‘/root/abc/’? y
rm: remove regular file ‘/root/abc/oldboy.txt’? y
rm: remove directory ‘/root/abc/’? y

-f强制删除
#-f强制删除   不提示,不分目录与文件,强制删除

普通文件查看命令

cat 只能查看文件内容

#语法
cat  选项  普通文件

##选项
-n:number 显示行号 方便查看行数

-E:严格区分大小写:查看每一行的末尾,末尾会有一个$符号显示

-T:严格区分大小写:-T这个T是Tab键 也就是我们说的制表符 -T就是查看制表符的,以^I来表示一个制表符

-A:即显示制表符,又显示文件的结尾$

## 报错  tmp是一个目录 = /tmp: Is a directory
[root@localhost ~]# cat /tmp
cat: /tmp: Is a directory

#选项使用
# -n打印行号  曾老师的示例

-n:标注每一行的行数 方便观看
[root@localhost ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
20 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
21 nfsnobody:x:65534:65534:Anonymous NFS User:
/var/lib/nfs:/sbin/nologin
22 ntp:x:38:38::/etc/ntp:/sbin/nologin

# -E 查看文件结尾   文件的结尾会用一个$符来提示,并不是以$结尾而是以$前面哪一位为结尾
[root@localhost ~]# cat -E 1.txt
1 $
2 $
3 $
4 7 $
5 2 0$
6 9$
7$

# -T 查看文件中的制表符 制表符= ^I  什么是制表符,我们写文档时按Tab键会出现类似空格的功能,一个制表符正常代表4到8个(可修改) 空格,但是又不完全是空格,所以叫制表符而不是叫空格,那一个制表符就用一个 ^I  来提示  这就是-T的功能  
[root@localhost ~]# cat -T 1.txt
1^I^I
2
^I3
4^I^I7
5^I2^I^I^I0
6 9
7

# -A 既查看制表符,又查看文件结尾,等同于-E  -T  组合起来用

[root@localhost ~]# cat -A 1.txt
1^I^I $
2 $
^I3 $
4^I^I7 $
5^I2^I^I^I0$
6 9$
7$

#在文件不存在的情况下,创建文件并写入内容

#1.直接vi 一个不存在的文件
[root@localhost ~]# vi 4.txt
#这是直接在当前目录创建并编辑一个叫4.txt的文件,也可以指定目录来创建并编辑,前提是你的目录要存在

# 2.echo内容重定向到一个文件中
[root@localhost ~]# echo 5 > 5.txt
[root@localhost ~]# cat 5.txt
5

#和vi差不多一个是在内部一个在外部,但是echo是没办法换行输入的

# 3.使用cat创建文件并写入内容,曾老师没说细说,目前只知道内容是由<<这个符号交给  >>这个符号然后这个符号>>  写到6.txt里面   EOF是结尾输入的  不想写了就输入EOF回车 就可以退出,不是必须用EOF 可以自定义

[root@localhost ~]# cat >> 6.txt <<EOF
> 6
> EOF

#自定义
[root@localhost ~]# cat >> 8.txt << huanglong
> 1
> 2
> 3
> 45
> 6
> EOF
> huanglong

普通文件查看命令 扩展

1.
#more
#语法
more 文件名
使用方法:
按回车,一行一行向下展示
按空格,一页一页向下展示
ctrl + b 向上查看
ctrl + f 向下查看

2.
#less
#语法
less 文件名
Ctrl + b:向上查看
Ctrl + f:向下查看
按回车,一行一行向下显示
按空格,一页一页向下显示
可以搜索你想要的内容,并且标为高亮
按 n 查找下一个
Shift + n 查找上一个

3.
#head
#语法
head 文件名
默认显示一个文件的前十行内容

#选项
-n   n可以省略,直接输入数字  例 head -5   就是看五行
#曾老师的示例
[root@localhost ~]# head -5 /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10

4.
# tail
tail 文件名
默认显示一个文件的后10行内容

[root@localhost ~]# tail /etc/services
3gpp-cbsp 48049/tcp # 3GPP Cell Broadcast Service Protocol
isnetserv 48128/tcp # Image Systems Network Services
isnetserv 48128/udp # Image Systems Network Services
blp5 48129/tcp # Bloomberg locator
blp5 48129/udp # Bloomberg locator
com-bardac-dw 48556/tcp # com-bardac-dw
com-bardac-dw 48556/udp # com-bardac-dw
iqobject 48619/tcp # iqobject
iqobject 48619/udp # iqobject
matahari 49000/tcp # Matahari Broker

#选项
-n:指定查看文件末尾的后n行,n可以省略, 直接输入数字 例  tail -3  文件名

#曾老师的示例
[root@localhost ~]# tail -3 /etc/services
iqobject 48619/tcp # iqobject
iqobject 48619/udp # iqobject
matahari 49000/tcp # Matahari Broker

-f:实时监控一个文件的末尾内容,双终端的情况下,监控的一方可以看到,输入的一方,输入的内容

以上是关于文件管理命令的主要内容,如果未能解决你的问题,请参考以下文章

vim打开文件中每行末尾都带有 ^M

用FastCopy怎么删除文件,请详解

c++如何判断文件末尾

为啥建议在源文件末尾有空行?

为啥文本文件应该以换行符结尾?

Ubuntu 14.04 Cron 以 ^M 结尾输出文件名