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

目录与路径

相对路径与绝对路径

绝对路径:路径的写法【一定由根目录 / 写起】

/usr/share/doc 这个目录。

相对路径:路径的写法【不是由 / 写起】

由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: 【cd ../man】这就是相对路径的写法。相对路径意指相对于当前的工作目录

cd (切换目录)

.         代表当前目录

..        代表上一层目录

–         代表前一个工作目录

~         代表【目前用户身份】所在的自家目录

~account  代表 account 这个用户的自家家目录

我们通过实例来看一下这些特殊命令的使用方法:

[root@yangxu ~]# cd /home

[root@yangxu home]# cd .

[root@yangxu home]# cd ..

[root@yangxu /]# cd ~

[root@yangxu ~]# cd ~yangxu

~account表示 account 这个用户的自家家目录 ,我如果想进入 yangxu 这个用户的主目录,输入 cd ~yangxu即可

[root@yangxu yangxu]# cd –

/root

pwd (显示当前所在的目录)

[root@yangxu ~]# pwd [-P]

参数:

-P  :显示出确实的路径,而非使用链接 (link) 路径。(P是大写)

范例:

[root@yangxu ~]# pwd

/root   <== 显示出当前所在的目录

[root@yangxu ~]# cd /var/mail

[root@yangxu mail]# pwd

/var/mail

[root@yangxu mail]# pwd -P

/var/spool/mail   <== 怎么回事?有没有加 -P 差很多

[root@yangxu mail]# ls -l /var/mail

lrwxrwxrwx.  1 root root   10 3月  30 10:37 mail -> spool/mail

看到这里应该知道为啥了吧?因为 /var/mail 是连结文件,连结到 /var/spool/mail 

加上 pwd -P 的参数后,会不以连结文件的数据显示,而是显示正确的完整路径!

mkdir (建立新目录)

[root@yangxu ~]# mkdir [-mp] 目录名称

参数:

-m :配置文件目录的权限!我们可以自己设定自己想要的权限,而不需要使用umask定义的默认权限

-p :帮助你直接将所需要的目录递归建立起来!

范例:

[root@yangxu ~]# cd /home

[root@yangxu home]# mkdir test    <== 建立一名为 test 的新目录

[root@yangxu home]# mkdir test1/test2/test3/test4

mkdir: 无法创建目录"test1/test2/test3/test4": 没有那个文件或目录

[root@linux tmp]# mkdir -p test1/test2/test3/test4

加了这个 -p 的参数,可以自行帮我们建立多层目录!

[root@yangxu home]# mkdir -p test1/test2/test3/test4

[root@yangxu home]#  mkdir -m 711 test2

[root@yangxu home]#  ls -l

drwxr-xr-x.  2 root    root         4096 4月  21 13:08 test

drwxr-xr-x.  3 root    root         4096 4月  21 13:10 test1

drwx–x–x.  2 root    root         4096 4月  21 13:11 test2

-m 来强制设定属性,否则系统会使用默认属性。

rmdir (删除"空"目录)

[root@yangxu ~]# rmdir [-p] 目录名称

参数:

-p :连同上层『空的』目录也一起删除

范例:

[root@yangxu home]# ls -l

drwxr-xr-x.  2 root    root         4096 4月  21 13:08 test

drwxr-xr-x.  3 root    root         4096 4月  21 13:10 test1

drwx–x–x.  2 root    root         4096 4月  21 13:11 test2

[root@yangxu home]# rmdir test

[root@yangxu home]# rmdir test1

rmdir: 删除 "test1" 失败: 目录非空

[root@yangxu home]# rmdir -p test1/test2/test3/test4/

[root@yangxu home]# ls -l

drwx–x–x.  2 root    root         4096 4月  21 13:11 test2

利用 -p 这个参数,立刻就可以将 test1/test2/test3/test4 一次删除~

不过要注意的是,这个 rmdir 仅能【删除空的目录】!

管理文件与目录

ls (查看文件和目录)

[root@yangxu ~]# ls [-aAdfFhilRS] 目录名称

[root@yangxu ~]# ls [–color={none,auto,always}] 目录名称

[root@yangxu ~]# ls [–full-time] 目录名称

参数:

-a  :全部的文件,连同隐藏文件( 开头为 . 的目录) 一起列出来~

-A  :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录,一起列出来~

-d  :仅列出目录本身,而不是列出目录内的文件数据

-f  :直接列出结果,而不进行排序 (ls 预设会以文件名排序!)

-F  :根据文件、目录等信息,给予附加数据结构,例如:

      *:代表可执行文件; /:代表目录; =:代表 socket 档案; |:代表 FIFO 文件;

-h  :列出文件的打小(例如GB、KB等等)

-i  :列出 inode 位置,而非列出文件属性;

-l  :长数据串行出,包含文件的属性等等数据;

-n  :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在账号管理提到!)

-r  :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小;

-R  :连同子目录内容一起列出来;

-S  :以文件容量大小排序!

-t  :依时间排序

–color=never  :不要依据文件特性给予颜色显示;

–color=always :显示颜色

–color=auto   :让系统自行依据设定来判断是否给予颜色

–full-time    :以完整时间模式 (包含年、月、日、时、分) 输出

–time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime) 

cp (复制命令)

[root@yangxu ~]# cp [-adfilprsu] 源文件(source) 目的文件(destination)

[root@yangxu ~]# cp [options] source1 source2 source3 …. directory

参数:

-a  :相当于 -pdr 的意思;

-d  :若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身;

-f  :为强制 (force) 的意思,若有重复或其他疑问时,不会询问使用者,而强制复制;

-i  :若目的文件(destination)已经存在时,在覆盖时会先询问是否真的动作!

-l  :进行硬式连结 (hard link) 的连结文件建立,而非复制文件本身;

-p  :连同文件的属性一起复制过去,而非使用默认属性;

-r  :递归持续复制,用于目录的复制行为;

-s  :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;

-u  :若 destination 比 source 旧才更新 destination 

rm (删除文件或目录)

[root@yangxu ~]# rm [-fir] 文件或目录

参数:

-f  :就是 force 的意思,强制移除;

-i  :互动模式,在删除前会询问使用者是否动作

-r  :递归删除!最常用在目录的删除了

[root@yangxu tmp]# rm bashrc 

rm:是否删除普通文件 "bashrc"?y

[root@yangxu tmp]# rm wtmp wtmp2

rm:是否删除普通文件 "wtmp"?y

rm:是否删除普通文件 "wtmp2"?y

mv (移动文件与目录、文件重命名)

[root@yangxu ~]# mv [-fiu] source destination

[root@yangxu ~]# mv [options] source1 source2 source3 …. directory

参数:

-f  :force 强制的意思,强制直接移动而不询问;

-i  :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u  :若目标文件已经存在,且 source 比较新,才会更新 (update)

查看文件内容

cat (concatenate)

[root@yangxu~]# cat [-AEnTv]

参数:

-A  :相当于 -vET 的整合参数,可列出一些特殊字符~

-E  :将结尾的断行字符 $ 显示出来;

-n  :打印出行号;

-T  :将 [tab] 按键以 ^I 显示出来;

-v  :列出一些看不出来的特殊字符

我们通过实例来看一下cat命令的常用使用方法:

[root@yangxu ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=yangxu

[root@yangxu ~]# cat -n /etc/sysconfig/network

     1  NETWORKING=yes

     2  HOSTNAME=yangxu

[root@yangxu ~]# cat -A /etc/sysconfig/network

NETWORKING=yes$

HOSTNAME=yangxu$

tac (反向显示)

[root@yangxu ~]# tac /etc/sysconfig/network

HOSTNAME=yangxu

NETWORKING=yes

tac是将cat反写,所以它的功能就与cat相反

nl (显示时添加行号)

[root@yangxu ~]# nl [-bnw] 文件

参数:

-b  :指定行号指定的方式,主要有两种:

      -b a :表示不论是否为空行,也同样列出行号;

      -b t :如果有空行,空的那一行不要列出行号;

-n  :列出行号表示的方法,主要有三种:

      -n ln :行号在屏幕的最左方显示;

      -n rn :行号在自己字段的最右方显示,且不加 0 ;

      -n rz :行号在自己字段的最右方显示,且加 0 ;

-w  :行号字段的占用的位数。

[root@yangxu ~]# nl /etc/issue

     1  CentOS release 6.4 (Final)

     2  Kernel \r on an \m

[root@yangxu ~]# nl -b a /etc/issue

     1  CentOS release 6.4 (Final)

     2  Kernel \r on an \m

     3

[root@yangxu ~]# nl -b a -n rz /etc/issue

000001  CentOS release 6.4 (Final)

000002  Kernel \r on an \m

000003

自动在自己字段的地方补上 0 了 预设字段是六位数,如果想要改成 3 位数 可以加上 -w 这个参数

[root@yangxu ~]# nl -b a -n rz -w 3 /etc/issue

001     CentOS release 6.4 (Final)

002     Kernel \r on an \m

003

head (取出前几行)

[root@yangxu ~]# head [-n number] 文件 

参数:

-n  :后面接数字,代表显示几行的意思

[root@yangxu ~]#  head /etc/man.config

默认显示前面十行

[root@yangxu ~]# head -n 20 /etc/man.config

显示前 20 行

tail (取出后面几行)

[root@yangxu ~]# tail [-n number] 文件 

参数:

-n  :后面接数字,代表显示几行的意思

范例:

[root@yangxu ~]#tail /etc/man.config

默认显示最后的十行

[root@yangxu ~]# tail -n 20 /etc/man.config

显示最后的 20 行

修改文件时间与创建新文件

每个文件在Linux下面都会记录3个主要的修改时间:

   modification time (mtime): 当该文件的 内容数据变更时

   status time (ctime): 当该文件的 状态改变时

   access time (atime): 当 该文件的内容被修改 时

[root@yangxu ~]# ls -l /etc/passwd

[root@yangxu ~]# ls -l –time=atime /etc/passwd

[root@yangxu ~]# ls -l –time=ctime /etc/passwd

touch 命令  (修改文件时间与创建新文件)

[root@yangxu ~]# touch [-acdmt] 文件

选项与参数:

-a  :仅修订 access time;

-c  :仅修改文件的时间,若该文件不存在则不创建新文件;

-d  :后面可以接欲修订的日期而不用目前的日期,也可以使用 –date="日期或时间"

-m  : 仅修改 mtime ;

-t  : 后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]

接下来我们通过一些实例来看一下touch命令的这几个参数的使用方法:

新建一个空的文件

[root@yangxu ~]# cd /home/

[root@yangxu home]# touch test.txt

[root@yangxu home]# ls -l test.txt 

-rw-r–r–. 1 root root 0 4月  25 22:07 test.txt

注意,这个文件的大小是 0 !在默认的状态下,如果 touch 后面有接文件,

则该文件的三个时间 (atime/ctime/mtime) 都会更新为目前的时间。若该文件不存在,

则会主动的创建一个新的空的文件!!

文件与目录的默认权限与隐藏权限

umask (文件默认权限)

umask就是指定 "目前使用者在创建文件或目录时候的权限默认值"

[root@yangxu home]# umask

0022

[root@yangxu home]# umask -S

u=rwx,g=rx,o=rx

查看方式有两种,一种可以直接输入 umask ,

一种则是加入 -S (Symbolic) 这个选项会以符号显示出权限

搜索文件

which (寻找"执行文件")

[root@yangxu ~]# which [-a] command

参数:

-a :将所有可以找到的指令均列出,而不止第一个被找到的指令名称

[root@yangxu ~]# which passwd  –>> 列出第一个找到的可执行文件

/usr/bin/passwd    

[root@yangxu ~]# which -a tracepath   –>> 列出所有找到的同名可执行文件

/bin/tracepath

/usr/sbin/tracepath

whereis (寻找特定文件)

[root@yangxu ~]# whereis [-bmsu] 文件名或目录名

参数:

-b    :只找 binary 的文件

-m    :只找在说明文件 manual 路径下的文件

-s    :只找 source 来源文件

-u    :没有说明文件的文件!

[root@yangxu ~]# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

任何与 passwd 有关的文件名都会被列出来

[root@yangxu ~]# whereis -b passwd

passwd: /usr/bin/passwd /etc/passwd

[root@yangxu ~]# whereis -m passwd

passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

locate (寻找特定文件)

[root@yangxu ~]# locate filename

[root@yangxu ~]# locate passwd

/etc/passwd

/etc/passwd-

/etc/dovecot/conf.d/auth-passwdfile.conf.ext

/etc/pam.d/passwd

/etc/samba/smbpasswd

/etc/security/opasswd

/etc/sysconfig/ha/web/secure/passwd.php

/lib64/security/pam_passwdqc.so

/lib64/security/pam_unix_passwd.so

/usr/bin/RSA_SecurID_getpasswd

find

[root@yangxu ~]# find [PATH] [option] [action]

参数:

与时间有关的参数:

   -atime n :n 为数字,意义为在 n 天之前的『一天之内』被 access 过的文件;

   -ctime n :n 为数字,意义为在 n 天之前的『一天之内』被 change 过状态的文件;

   -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被 modification 过的文件;

   -newer file :file 为一个存在的文件,意思是说,只要档案比 file 还要新,

                 就会被搜索出来2. 与使用者或组名有关的参数:

   -uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在

            /etc/passwd 里面与账号名称对应的数字。这方面我们会在第四篇介绍。

   -gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在

            /etc/group,

   -user name :name 为使用者账号名称!例如 dmtsai 

   -group name:name 为组名,例如 users ;

   -nouser    :寻找档案的拥有者不存在 /etc/passwd 的人!

   -nogroup   :寻找档案的拥有群组不存在于 /etc/group 的文件!

                当您自行安装软件时,很可能该软件的属性当中并没有文件拥有者,

                这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

与文件权限及名称有关的参数:

   -name filename:搜寻文件名为 filename 的文件;

   -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:

                   c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB

                   还要大的文件,就是『 -size +50k 』

   -type TYPE    :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),

                   装置文件 (b, c), 目录 (d), 连结文件 (l), socket (s), 

                   及 FIFO (p) 等属性。

   -perm mode  :搜寻文件属性『刚好等于』 mode 的档案,这个 mode 为类似 chmod

                 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !

   -perm -mode :搜寻文件属性【必须要全部囊括 mode 的属性】的文件,举例来说,

                 我们要搜寻 -rwxr–r– ,亦即 0744 的文件,使用 -perm -0744,

                 当一个档案的属性为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,

                 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr–r– 的属性了。

   -perm +mode :搜寻文件属性【包含任一 mode 的属性】的档案,举例来说,我们搜寻

                 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw——-

                 也会被列出来,因为他有 -rw…. 的属性存在!

额外可进行的动作:

   -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到

                   的结果。

   -print        :将结果打印到屏幕上,这个动作是预设动作!

将过去系统上面 24 小时内有改变过内容 (mtime) 的文件列出

[root@yangxu ~]# find / -mtime 0

那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,

有变动过内容的档案都会被列出来!那如果是三天前的 24 小时内?

find / -mtime 3 ,意思是说今天之前的 3*24 ~ 4*24 小时之间

有变动过的档案都被列出的意思!同时 -atime 与 -ctime 的用法相同。

我们现在知道 atime, ctime 不 mtime 的意义,如果你想要找出一天内被更改过的癿文件名, 可以使用上述实例一的作法。但如果我想要找出 (4 天内被更改过的文件名)呢?那

可以使用【find /var -mtime -4 】。那如果是【4 天前的那一天】就用【 find /var -mtime 4 】。有没有加上【+, -】差别非常的大!我们可以用简单的图来表示一下:

图中最右边为目前的时间,越往左边则代表越早之前的时间轴。由图 我们可以清楚的知道:

寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出

[root@xialuo ~]# find /etc -newer /etc/passwd

-newer 用在分辨两个文件之间的新旧关系是很有用的!

搜寻 /home 底下属于 yangxu 的文件

[root@yangxu ~]# find /home -user yangxu

当我们要找出任何一个用户在系统当中的所有文件时,

就可以利用这个指令将属于某个使用者的所有文件都找出来!

搜寻系统中不属于任何人的文件

[root@yangxu ~]# find / -nouser

通过这个命令,可以轻易的就找出那些不太正常的文件。

找出文件名为 passwd 这个文件

[root@yangxu ~]# find / -name passwd

利用这个 -name 可以搜寻文件名!

搜寻文件属性为 f (一般文件) 的文件

[root@yangxu ~]# find /home -type f

这个 -type 的属性也很有用!尤其是要找出那些怪异的文件,

例如 socket 与 FIFO 文件,可以用 find /var -type p 或 -type s 来找!

搜寻文件当中含有 SGID/SUID/SBIT 的属性

[root@yangxu ~]# find / -perm +7000 

所谓的 7000 就是 —s–s–t ,那么只要含有 s 或 t 的就列出,

所以当然要使用 +7000 ,使用 -7000 表示要含有 —s–s–t 的所有三个权限,

将上个范例找到的文件使用 ls -l 列出来

[root@yangxu ~]# find / -perm +7000 -exec ls -l {} \;

注意到,那个 -exec 后面的 ls -l 就是额外的指令,

而那个 {} 代表的是【由 find 找到的内容】的意思~所以, -exec ls -l {}

就是将前面找到的那些档案以 ls -l 列出长的数据!至于 \; 则是表示

-exec 的指令到此为止的意思。 意思是说,整个指令其实只有在 

-exec (里面就是指令下达) \;

也就是说,-exec 最后一定要以 \; 结束才行!

找出系统中,大于 1MB 的文件

[root@yangxu ~]# find / -size +1000k

原创文章,作者:N24_yangxu,如若转载,请注明出处:http://www.178linux.com/57913

(0)
N24_yangxuN24_yangxu
上一篇 2016-11-06
下一篇 2016-11-06

相关推荐

  • dd工具

    dd     dd命令:convert and copy a file     用法:        ddif=/PATH/FROM/SRC of=/PATH/TO/DEST       &…

    Linux干货 2016-09-02
  • 基础命令。

    简单基础小命令 查看目录 ls 查看当前路径下的目录 ls -a 查看当前路径下的所有目录,包含隐藏目录(带.的就是隐藏) ls -A 跟-a一样,只是不显示上一路径和本身路径(就是.和..) ls -l 显示额外的信息 ls -R 进入每个文件夹查看(递归) ls -ld 查看元数据 ls -1(数字) 排列 ls -r 倒序 ls -t 按修改时间排序 …

    Linux干货 2017-05-29
  • Linux磁盘管理及其相关命令使用

    Linux磁盘及文件系统    CPU MEMORY(RAM) I/O    I/O:disks entercard    Disks:持久存储数据    接口类型:      IDE(ata):并行 133MB/s     &n…

    Linux干货 2016-08-26
  • 我的第一篇博客

        对于一个连日记都懒得写的人来说,写博客博客还真是一个难题。但是为了能让自己有所进步有所提高、更是为了记录自己逐步成长的过程,还是下定决心记录下在接下来的日子里的点点滴滴。当然,这点点滴滴指的是 —— 知识     我想刚学linux的新手眼里除了图形化就只有黑白两种颜色了吧!但是为了提高自己…

    Linux干货 2017-07-15
  • shuc之学习目标

    1,每天学习二小时 2,半年熟悉数据中心LINUX技术

    Linux干货 2016-10-23
  • 网络管理之基础知识

    Linux的网络配置 IP地址   它们可唯一标识 IP 网络中的每台设备  每台主机(计算机、网络设备、外围设备)必须具有唯 一的地址  IP地址由两部分组成: • 网络ID: • 标识网络 • 每个网段分配一个网络ID • 主机 ID: • 标识单个主机 • 由组织分配给各设备   IPv4地址格式:点分十进制记法  …

    Linux干货 2016-09-10