Day-5  Linux命令结构下部

/data 移动到 /root目录下面

#move   mv

mv命令

该命令用于移动文件、目录或更名,move之意,它的常用参数如下:

1.  -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖

2.  -i :若目标文件已经存在,就会询问是否覆盖

3.  -u :若目标文件已经存在,且比目标文件新,才会更新

注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。

1.  mv file1 file2 file3 dir # 把文件file1、file2、file3移动到目录dir中

2.  mv file1 file2 # 把文件file1重命名为file2

 

[root@oldboyedu50 ~]# mv  /data/ /root/

[root@oldboyedu50 ~]# ls -l /data

ls: cannot access /data: No such file or directory

[root@oldboyedu50 ~]# ls -l /root/

total 44

-rw-------. 1 root root  1124 Jul 10 18:25 anaconda-ks.cfg

drwxr-xr-x. 2 root root  4096 Jul 11 02:13 data

-rw-r--r--. 1 root root 21736 Jul 10 18:25 install.log

-rw-r--r--. 1 root root  5890 Jul 10 18:24 install.log.syslog

 

day 5 Linux命令结构下部_结构下部

 

【管道的概念】进入/root目录下的data目录,删除oldboy.txt文件

 

#如何备份

[root@oldboyedu50 ~]# cd /root/data/进入data

[root@oldboyedu50 data]# pwd查看所在位置

/root/data

[root@oldboyedu50 data]# ls -l

total 12

-rw-r--r--. 1 root root   7 Jul 11 02:13 alex.txt

-rw-r--r--. 1 root root  14 Jul 11 01:16 lidao.txt

-rw-r--r--. 1 root root 254 Jul 11 01:08 oldboy.txt

[root@oldboyedu50 data]# cp oldboy.txt  oldboy.txt.bak备份

[root@oldboyedu50 data]# ls -l

total 16

-rw-r--r--. 1 root root   7 Jul 11 02:13 alex.txt

-rw-r--r--. 1 root root  14 Jul 11 01:16 lidao.txt

-rw-r--r--. 1 root root 254 Jul 11 01:08 oldboy.txt

-rw-r--r--. 1 root root 254 Jul 11 02:56 oldboy.txt.bak

 

 

.bak  === backup

 

#修改文件名  重命名

[root@oldboyedu50 data]# mv oldboy.txt  oldgirl.txt将oldboy.txt重命名为oldgirl.txt

[root@oldboyedu50 data]# ls -l

total 16

-rw-r--r--. 1 root root   7 Jul 11 02:13 alex.txt

-rw-r--r--. 1 root root  14 Jul 11 01:16 lidao.txt

-rw-r--r--. 1 root root 254 Jul 11 02:56 oldboy.txt.bak

-rw-r--r--. 1 root root 254 Jul 11 01:08 oldgirl.txt

 

 

rm:

该命令用于删除文件或目录,remove之间,它的常用参数如下:

1.   -f :就是force的意思,忽略不存在的文件,不会出现警告消息

2.   -i :互动模式,在删除前会询问用户是否操作

3.   -r :递归删除,最常用于目录删除,它是一个非常危险的参数

 

例如:

1.   rm -i file # 删除文件file,在删除之前会询问是否进行该操作

2.   rm -fr dir # 强制删除目录dir中的所有文件

 

#强制删除

[root@oldboyedu50 data]# rm  -f  /root/data/oldgirl.txt

[root@oldboyedu50 data]# ls -l /root/data/

total 12

-rw-r--r--. 1 root root   7 Jul 11 02:13 alex.txt

-rw-r--r--. 1 root root  14 Jul 11 01:16 lidao.txt

-rw-r--r--. 1 root root 254 Jul 11 02:56 oldboy.txt.bak

 

#强制删除目录

[root@oldboyedu50 data]# rm -rf  /tmp/data/

[root@oldboyedu50 data]# ls -l /tmp/data

ls: cannot access /tmp/data: No such file or directory

 

rm -rf  /tmp/data/

rm -fr /tmp/data/

 

#怎么样防止 误删除

 

#创建环境

 

touch  /root/oldboy.txt  /root/alex.txt /root/lidao.txt

 

#find命令

[root@oldboyedu50 data]# #find 在×××  -类型  f   -名字 "oldboy.txt"

[root@oldboyedu50 data]#

[root@oldboyedu50 data]# find /root/     -type  f  -name  "oldboy.txt"

/root/oldboy.txt

-type 找什么类型的 f  file      (文件)

                   d  directory (目录)

                  

-name "叫什么名字的"

 

#查找所有/root 下以.txt结尾的文件

oldboy.txt  lidao.txt  alex.txt

[root@oldboyedu50 data]# find /root/     -type  f  -name  "*.txt"

/root/oldboy.txt

/root/lidao.txt

/root/alex.txt

/root/data/lidao.txt

/root/data/alex.txt

[root@oldboyedu50 data]#  * 所有字符 任意字符

[root@oldboyedu50 data]# find /root/     -type  f  -name  "*.txt"

/root/oldboy.txt

/root/lidao.txt

/root/alex.txt

/root/data/lidao.txt

/root/data/alex.txt

[root@oldboyedu50 data]# find /root/     -type  f  -name  "*.txt"|xargs ls -l

-rw-r--r--. 1 root root  0 Jul 11 03:21 /root/alex.txt

-rw-r--r--. 1 root root  7 Jul 11 02:13 /root/data/alex.txt

-rw-r--r--. 1 root root 14 Jul 11 01:16 /root/data/lidao.txt

-rw-r--r--. 1 root root  0 Jul 11 03:21 /root/lidao.txt

-rw-r--r--. 1 root root  0 Jul 11 03:21 /root/oldboy.txt

 

find +|xargs 配合

||xargs区别

老男孩教育每日一题-2017518-说说|(管道)|xargs(管道xargs)的区别

http://blog.51cto.com/lidao/1927347

 

 

退出到上一级目录删除 data目录。(原来在/root/data

cd命令

这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:

1.  cd /root/Docements # 切换到目录/root/Docements

2.  cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录 

cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录

cd ..   进入当前目录的上一级目录

cd .    进入当前目录

#移动xxxxx文件 到当前目录

#复制xxxxx文件 到当前目录

 

[root@oldboyedu50 /]# cd /root/data/

[root@oldboyedu50 data]# pwd

/root/data

[root@oldboyedu50 data]# cp /root/oldboy.txt .

 

 

 

 

4.8 已知文件test.txt内容

test

lidao

oldboy

创建测试文件:

mkdir -p /data

cat >/data/test.txt<<EOF

test

liyao

oldboy

EOF

 

 

请给出输出test.txt文件内容时,不包含oldboy字符串的命令

方法1 -grep

[root@oldboyedu50 data]# #grep 过滤 显示你要或不要的内容

[root@oldboyedu50 data]# grep  "oldboy"  /data/test.txt

oldboy

[root@oldboyedu50 data]# grep -v "oldboy"  /data/test.txt

test

liyao

 

 

方法2 -head

[root@oldboyedu50 data]# head -n2 /data/test.txt

test

liyao

[root@oldboyedu50 data]# head -2 /data/test.txt

test

liyao

 

#head 显示文件的前几行内容 默认显示前10

#tail 显示文件的最后几行内容 默认显示最后10

 

 

#显示文件最后一行

[root@oldboyedu50 data]# tail -1 /data/test.txt

oldboy

 

 

#方法3  awk

[root@oldboyedu50 data]# #awk

[root@oldboyedu50 data]# #gawk

[root@oldboyedu50 data]# awk '/oldboy/'  /data/test.txt

Oldboy取‘oldboy’

[root@oldboyedu50 data]# awk '!/oldboy/'  /data/test.txt

(取除oldboy外的)

test

liyao

 

#方法4  sed

[root@oldboyedu50 data]# sed '/oldboy/d'  /data/test.txt

test

liyao

[root@oldboyedu50 data]# #delete

 

 

 

请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及/oldboy/test

 

[root@oldboyedu50 data]# mkdir -p  /oldboy/test

[root@oldboyedu50 data]# ls /oldboy/

test

#-p 创建多层目录

只查看ett.txt文件(共100行)内第20到第30行的内容

 

[root@oldboyedu50 data]# seq 10

1

2

3

4

5

6

7

8

9

10

 

 

seq 40  >/data/ett.txt

 

#方法1 head + tail 

root@oldboyedu50 data]# head -30 /data/ett.txt |tail

21

22

23

24

25

26

27

28

29

30

[root@oldboyedu50 data]# head -30 /data/ett.txt |tail -11

20

21

22

23

24

25

26

27

28

29

30

 

#显示文件的第3040

 

 head -40 /data/ett.txt |tail -11

 tail -11 /data/ett.txt

 

 

 

#方法2 sed 取行

[root@oldboyedu50 data]# sed -n  '3p' /data/ett.txt

3

#-n 取消默认输出(sed命令不会把文件内容都显示出来)

[root@oldboyedu50 data]# sed -n  '3p' /data/ett.txt

3

#print

[root@oldboyedu50 data]# sed -n  '20p' /data/ett.txt

20

[root@oldboyedu50 data]# sed -n  '20,30p' /data/ett.txt

20

21

22

23

24

25

26

27

28

29

30

 

 

#方法3 awk

[root@oldboyedu50 data]# awk  'NR==3' /data/ett.txt

3

[root@oldboyedu50 data]# #     'NR行号 等于  3'

[root@oldboyedu50 data]# awk  'NR==20,NR==30' /data/ett.txt

20

21

22

23

24

25

26

27

28

29

30

总结:

1.简单的命令

2.find +|xargs

3.三剑客 grep sed (过滤 取行)  awk 取行