Linux上的文件管理类命令

时间:2022-12-31 16:37:59

 1、Linux上的文件管理类命令都有哪些,其常用的方法及其相关示例演示:

命令格式:命令   -选项     参数

文件处理命令

Ls

功能:查看目录下文件的详细信息

语法:ls 选项[-ald] [文件或目录]

        -a显示所有文件,包括隐藏文件

        -l 详细信息显示

        -d 查看目录属性

演示:

[root@server30 mytest1]# ls

p23b p2e

[root@server30 mytest]# ll

total 0

drwxr-xr-x. 2 root root 6 Sep 24 19:58 p23b

drwxr-xr-x. 2 root root 6 Sep 24 19:58 p2e

 

Cd

功能:切换目录

演示:cd /   (切换到根目录)

     Cd  ….  (回到上一级目录)

 

Pwd

功能:显示当前所在的工作目录

演示:

[root@server30 mytest1]# pwd

/tmp/mytest1

 

Touch

功能:创建空文件

语法:touch [文件名]

演示:

[root@server30 mytest1]# touch file 1

Mkdir

功能:创建新目录

语法:mkdir [目录名]

演示:

[root@server30 mytest1]#mkdir aaa

Cp

功能:复制文件或目录

语法:cp  -R[源文件或目录] [目的目录]

         -R复制目录

演示:

1.将文件file1,file2复制到目录dir1

$ cp file1file2 dir1

2.将dir1下的所有文件及子目录复制到dir2

$ cp -R dir1 dir2

Mv

功能:移动文件,更名

语法:mv [源文件或目录] [目的目录]

演示:

1.      将当前目录下的文件file1更名为file3

$ mv file2 dir2

 

 

 

RM

  功能:删除文件

   语法:rm -r [文件或目录]

            -r  删除目录

   演示:

1.      删除文件file3

$ rm file3

2.  删除目录dir1

$ rm-r dir1

Cat

   功能:显示文件内容

   语法:cat[文件名]

   演示:

$cat  /etc/services

More

   功能:分页显示文件内容

   语法:more[文件名]

        (空格)或f   显示下一页

        (enter)      显示下一行

         Q或q        退出

   演示:

$more /etc/services

 

 

Head

功能:产看文件的前几行

语法:head -n [文件名]

          n 显示文件的前几行

演示:

$head -20/etc/services

Tail

   功能:查看文件的后几行

   语法:tail  -n  [文件名]

              -n  显示文件的后几行

              -f   动态显示文件内容

   演示:$tail -30 /etc/services

Ln

   功能:产生链接文件

   语法:ln -s[源文件][目标文件]

           -s 创建链接

   演示:

1:创建文件/etc/issue的软链接/issye.soft

  [root@blog ~]# ln-s/etc/issue/issue.soft

 [root@blog ~]#ls-l/

etc/issue /issue.soft

-rw-r--r--. 1 root root 75 Jan 29 2013/etc/issue

lrwxrwxrwx. 1 root root10Oct 21 16:01 /issue.soft ->/etc/issue

2.创建文件/etc/issue的硬链接/issue.hard

[root@bolg ~]ln /etc/issue /issue.hard

[root@blog ~]

# ls -l/etc/issue/issue.hard

-rw-r--r--. 2 root root ll75 Jan 29 2013/etc/issue

-rw-r--r--. 2 root root 75 Jan 29 2013/issue.hard

硬链接与软链接的区别:

软链接类似于windows下的快捷方式,软链接可以跨文件系统生成,当删除原文件后软链接的目的文件也没意义了。

硬链接类似于windows下的拷贝,硬链接不能跨文件系统生成,当删除原文件后,硬链接后的文件还会存在,硬链接与原文件有相同的inode,所以可以同步更新。硬链接=cp+ 同步更新

文件搜索命令

Which

功能:显示系统命令所在目录

语法:which [命令名称]

演示:

$Which  ls

 

Find

功能描述:查找文件或目录

语法:find [搜索路径] [搜索关键字]

演示:

1.在目录/etc中查找文件init

$ Find  /etc -name init

2.      在根目录下查找大于100MB的文件

find  / -size +204800

 

3.      在根目录下查找所有者为sam的文件

 

Find  / -user sam

 

4.在/etc下查找24小时内被修改过属性的文件盒目录

 

$ find  /etc  -ctime -1

 

5.在/etc下查找大于80MB小于100MB的文件

 

$ find  /etc  -size +163840 -a -size -a  -204800

 

6.在/etc下查找inittab文件并显示其详细信息

 

   $find  /etc -nameinittab  -exec ls  -l{} \;

 

Find参数详解:

 

 (-name 文件名

 

 *:匹配任意字符包括零个字符,init*----》以init开头的文件

 

                         *init*--》文件名里包含init的文件

 

-size文件大小

 

文件大小以block数据块为最小单位,1个数据块大小等于512字节,512字节=0.5KB,1block=0.5KB.

 

100MB=?block

 

100MB=102400KB=204800block

 

大于 +

 

小于–

 

-user文件所有者

 

根据时间查找: 1.ctimeatimemtime以天为单位

 

              2.cmin  aminmmin以分钟为单位

 

c---change改变,表示文件的属性被修改过,所有者,所属组,权限。

a---access访问

m—modify修改,文件的内容被修改过。

“-”代表多长时间内,-1代表一天之内

“+”超过多久时间。

例如:find /etc -mmin  -120表示查询120分钟内被修改的文件。

1.       连接符:-a and 逻辑与

       -o  or  逻辑或

-type:按类型查询

  -f :二进制文件

  -l :链接文件

d: 目录文件

例如:[root@blog ~]# find /etc/ -name init*-a-type l

/etc/init.d

[root@blog ~]# find /etc/ -name inittab -o-size+204800

/etc/inittab

2.       连接符:find ……. –exec  命令{}\;

                  -ok  (询问确认)

 {}代表find查询的结果。

 \ 转义符,符号命令使用本身的含义。

;代表语句的结束。

-inum: 按i节点查询

例如:把文件名为-abc的文件删掉。

[root@blog test]#ls -i

655336 a  655340 ab 655341 -abc 655333 \-abc 655339 \-\a\b\c 655335 issue

[root@blog test]#find . -inum 655341

./-abc

[root@blog test]#find . -inum 655341 -exec rm -rf {}\;

 

Locate

功能:查找文件或目录    局限:对于新创的文件,用locate命令查询不到

语法:locate[搜索关键字]

演示:

列出所有跟file相关的文件

$ locate  file

 

Grep

功能:在文件中搜索字串匹配的行并输出

语法:grep [指定字串] [源文件]

演示:

#grep  ftp /etc/services

文件帮助命令

Man

功能:获得帮助信息

语法:man [命令或配置文件]

1.查看ls命令的帮助信息

$ man  ls

2.查看配置文件services的帮助信息

$Man  services

 

Info

功能:获得帮助信息

语法:info [任何关键字]

演示:

查看ls指令的帮助信息

$ info  ls

 

文件压缩解压命令

Tar

功能:压缩或解压目录

语法:

Tar 选项[cvf] [目录]

    -v   显示详细信息

    -f   指定压缩后的文件名

    -c   产生.tar打包文件

    -z   打包同时压缩(用于压缩时)

          解压缩(用于解压时)

    -x   解压缩

演示:

打包文件peng

#tar  -cf peng.tar  peng

#ls

Peng  peng.tar

将目录dir1压缩成一个打包并压缩的文件

$ tar  -zcvf dir1.tar.gz  dir1

解压dir1.tar.gz目录

$ tar  -zxvf dir1.tar.gz

 

Gzip

功能:

语法:

演示:

 

Zip

功能:压缩文件或目录

语法:zip  选项[-r] [压缩后文件名] [文件或目录]

优点:.zip默认windows和linux通用格式。当压缩文件时,和gzip命令不同的是压缩后会保留原文件

演示:

压缩文件

$zip services.zip  /etc/services

压缩目录

$ zip  -r test.zip /test

 

Gunzip

功能:解压.zip的压缩文件

语法:unzip[压缩文件]

演示:

$ unzip  test.zip

 

Bzip2

功能:压缩文件

语法:bzip2  选项[-k] [文件]

            -k  产生压缩文件后保留源文件

演示:

$ bzip2  -k file1

 

Bunzip2

功能:解压缩

语法:bunzip2 选项[-k] [压缩文件]

                -k  解压缩后保留源文件

演示:

$ bunzip2  -k file1.bz2

注意:于后缀为.tar.bz2包解压的命令:tar -jxvf  package

 

文件权限管理命令

Chmod

功能:改变文件或目录权限

语法:chmod [{ugo}[{+-=}{rwx}] [文件或目录]

             [mode=421]

演示:

1.赋予文件file1所所属组写权限

$ chmod  g+w  file1

2.设定目录dir1为所有用户具有全部权限

$ chmod 777 dir1

命令小结:文件目录的权限为r,w,x

文件:

R读---cat, more,  head,  tail

W写—echo, vim

X执行---命令脚本

目录:

R读---ls

W写—touch , rm,mkdir

X执行---cd

 

Chown

功能:改变文件或目录的所有者

语法:chown [用户] [文件或目录]

演示:

改变文件file1的所有者为nobody

$ chown nobody file1

 

Chgrp

功能:改变文件或目录的所属组

语法:chgrp [用户组] [文件或目录]

演示:

改变文件file1的所属组为adm

$ chgrp adm file1

 

2.Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示

3.请使用命令行展开功能来完成以下练习

创建/tmp目录下的a_c,a_d,b_c, b_d

 [root@server30 tmp]# mkdir a_c a_d b_cb_d

[root@server30 tmp]# ls

a_c  a_d b_c b_d

创建/tmp/mylinux目录下的:

Mylinux/

 |-----bin    一般命令存放目录

 |-----boot   系统启动目录,内核文件vmlinux引导文件,启动加载bootloader,grub

      |------grub  开机设置文件相关

 |------dev  任何设备与接口设备都是以文件的形式存放在此目录

 |------etc   配置文件存放目录,init.d下存放了各种软件的启动脚本

      |-----rc.d  存放脚本启动文件

      |    |-----init.d  存放通过xin

      |------sysconfig

         |---network-scripts

  |--lib   基本共享库

   | |---modules  内核模块文件

  |---lib64   专用于x86_64系统上的辅助共享库文件存放位置

  |---proc    属于虚拟文件系统如外设备的状态,网络状态,处于动态变化

  |---sbin    开机或单用户模式还能操作的命令

  |----sys    属于虚拟文件系统,内存中的数据,如内核、文件系统等

  |----tmp    临时存放目录,所用用户都能访问

  |----usr     用户程序

  |   |----local  包含了从源安装的用户程序

  |       |-----bin  普通用户可执行目录

  |        |-----sbin   超级用户root的可执行命令

  |-----var    常态性变动的文件

      |---lock  程序文件

      |--log    登录文件

      |--run    软件运行所产生的文件

4.文件的元数据信息有哪些,分别表示什么含义,如何查看?

文件的元素信息包括文件的权限,大小,拥有者,组,以及修改时间等信息

用ls -l可以查看

5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

释:这里涉及到命令别名和命令替换符两个小知识

定义一个别名:

演示:alias  copy=cp

     Alias xrm=’rm –r’

查看别名信息:alias

删除别名:unalias copy

 

在命令中引用另一个命令的执行结果:也叫命令替换

命令替换:

功能:将一个命令的输出作为另一个命令的参数

语法:命令1 `命令2`(注意:`是飘号,是一个重音符)

演示: ls  -l  `whichtouch`(当然这只是临时的,如果要想永久生效就需要)

补充shell变量知识:

$0获取当前执行的shell脚本的文件名,包括路径

$n获取当前执行的shell脚本的第n 个参数值,n=1….9,当n为0时表示脚本的文件名,如果n大于9用大括号括起来{10}

$*获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于$1$2$3….注意与$#的区别

$#获取当前shell命令行中参数的总个数

$@这个程序的所有参数’$1’ ‘$2’‘$3’‘….’,这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白

$?是上次执行结果的返回值

0是正确,非0是错误

举例演示:

用ping命令写一个脚本,判断目标主机是否存活

#! /bin/bash

 For n  in {1…20}

  Do

 Host=192.168.0.$n

 Ping -c2  $host &>/dev/null

  If[$?=0];

 Then

 Echo “$host  is  up”

 Else

 Echo “$host  is down”

 

6.显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现以数字(可以有其他字符)的文件或目录

 [root@server30var]# ls /var | grep  ^1[0-9]*[a-z]$

7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录

 [root@server30etc]# ls /etc | grep^[0-9]|grep -v [0-9]$

8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录

[root@server30 var]# ls  /etc |grep -v ^[a-z]|grep  [a-z]*$

9.在/tmp目录下创建以tfile开头,后面跟当前日期和时间的文件,文件名形如tfile-2016-05-27-09-32-22

[root@server30 tmp]# mkdir tfile`date +%Y-%m-%d-%H-%M-%S`

6—9知识点小结:这几题主要内容为grep搜索关键字和date(date的学习见博客一)

  关键字内容学习:

 *:表示匹配多个任意字符(可以是0个也可以是多个)

   ?:表示匹配一个字符

  [0-9]:表示匹配0到9这个范围中的任意一个字节

  [abc]:表示匹配abc中的任意一个

  [^abc]:表示匹配除abc中的其他任意

   tail -f/var/log/messages(在一个标签中,执行完后想要退出的话按ctl+c)

  /etc/init.d/NetworkManagerrestart(在另外一个标签中)

   显示中间部分

   head -n 20/etc/passwd |tail 

   cat passwd |head -n20 |tail -n 10

   head -n 22/etc/passwd |tail -n 3

  显示行号的两种方法:

   vim passwd ----:set nu

    nlpasswd

  *grep

  -v 除什么以外反选

  ^#表示以#开头

  $以什么结尾的搜索出来(^$表示空格)

   -A5匹配关键字后5行显示出来

   -B5匹配关键字前5行显示出来

    cat passwd |grep root筛选关键字以行为单位

    grep root passwd

  *cut -d(d是分界符的意思 f:from)  显示的是截止符前面的内容

  练习1:只显示/etc/passwd中的用户名

    解答:cut -d:-f1 /etc/passwd

  练习2:只显示/etc/passwd中的shell环境

    解答:cut -d:-f7 /etc/passwd

    解析:由于/etc/passwd文件中每排只有6个:这里是以:为分界符并且从第7个开始截取所以就是从最后的空格,也就是行尾截取

10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中

[root@server30 mytest1]# find /etc  -namep*[^0-9] -exec  /bin/cp-rf  {} /tmp/mytest1 \;

11.复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中

[root@server30 mytest2]# find  /etc -name *.d -exec  /bin/cp-rf {} /tmp/mytest2  \;

12.复制/etc/目录下所有以1或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中

  [root@server30mytest3]# find /etc -name [1mn]*.conf -exec /bin/cp {}  /tmp/mytest3\;

10-12知识点小结:考察的内容有find和cp(参见文件处理命令)