linux文件目录管理命令概述

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

目录管理类命令:cd,pwd,ls,mkdir,rmdir,tree

cd:change directory切换目录

cd [/PATH/TO/SOMEDIR]   

    cd: 切换回家目录

    cd ~:切换回自己的家目录(bash中,~表示家目录)

    cd ~USERNAME:切换至指定用户的家目录

    cd -:在上一次所在目录与当前目录之间来回切换
[root@localhost ~]# cd /etc/
[root@localhost etc]# cd 
[root@localhost ~]# 

pwd: 显示当前工作目录

[root@localhost ~]# pwd
/root

ls: list, 列出指定目录下的内容

ls [OPTION]... [FILE]...

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

    -A:显示除.和..之外的所有文件

    -l:  长格式列表,即显示文件的详细属性信息

    -h, :对文件大小单位换算;换算后结果可能会非精确值

    -d:查看目录自身而非其内部的文件列表

    -r: reverse, 逆序显示

    -R: recursive,递归显示
[root@localhost ~]# ls -l /tmp/
total 0
drwxr-xr-x. 2 root root 23 Jan 31 20:23 magedu
drwxr-xr-x. 4 root root 28 Feb  5 22:30 mytest1
drwx------. 3 root root 16 Feb  6 21:02 systemd-private-mDzNGp
drwx------. 3 root root 16 Feb  6 21:01 systemd-private-soCRw5
drwx------. 3 root root 16 Mar  1 18:24 systemd-private-TmTWUJ
drwx------. 3 root root 16 Mar  1 18:23 systemd-private-zsO2hy
drwxr-xr-x. 3 root root 65 Feb 21 00:36 test
drwx------. 2 root root  6 Feb 23 18:10 vmware-root
------------------------------------------------------------------------------
[root@localhost ~]# ls -a /tmp/
.           magedu                  systemd-private-zsO2hy  .X11-unix
..          mytest1                 test                    .XIM-unix
.esd-0      systemd-private-mDzNGp  .Test-unix
.font-unix  systemd-private-soCRw5  vmware-root
.ICE-unix   systemd-private-TmTWUJ  .X0-lock

mkdir:创建工作目录

mkdir [OPTION]... DIRECTORY...

    -p: 如果父目录不存在,则递归的创建目录

    -v: verbose,显示详细过程
[root@localhost test]# mkdir -pv abc/bcd
mkdir: created directory ‘abc’
mkdir: created directory ‘abc/bcd’

[root@localhost test]# tree /tmp/test/
/tmp/test/
|-- abc
|   `-- bcd
|-- file.sh
|-- hostname.sh
|-- tmp
`-- useradd.sh

注意:以路径为命令的作用对象;路径必须得存在否则用-p选项;不给绝对路径时默认在当前目录下创建.

rmdir:删除空目录

rmdir [OPTION]... DIRECTORY...

    -p:递归删除,删除某目录后,如果其父目录为空,则一并删除之

    -v: 显示过程
[root@localhost test]# rmdir -pv abc/bcd/
rmdir: removing directory, ‘/tmp/test/abc/bcd/’
rmdir: removing directory, ‘/tmp/test/abc’

tree命令:树状结构显示当前目录结构

tree [options] [directory]

    -L level:指定要显示的层级
[root@localhost test]# tree -L 2 /tmp/
/tmp/
|-- magedu
|   `-- machine-id
|-- mytest1
|   |-- pam.d
|   `-- pki
|-- systemd-private-mDzNGp
|   `-- tmp
|-- systemd-private-soCRw5
  `-- tmp

文件查看类命令:cat, tac, head, tail, more, less,

cat: 文件文本查看工具,从前面往后面查看

cat [OPTION]... [FILE]...

    -n:给显示的文本行编号

    -E: 显示行结束符$
[root@localhost test]# cat -nE /etc/issue
     1  \S$
     2  Kernel \r on an \m$
     3  $

tac:文件文本查看工具,从后面往前面查看, tac /etc/fstab;

tac [OPTION]... [FILE]...
[root@localhost test]# tac  /etc/issue

Kernel \r on an \m
\S

head: 查看文件的前n行

        head [options] FILE

            -n #: 查看前面第几行的信息,默认显示前面10行
[root@localhost test]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail: 看文件的后n行;

tail [options] FILE

    -n # : 查看倒数的第几行,默认查看最后的10行,n可以不写

    -f:查看文件尾部内容结束后不退出,跟随显示新增的行
[root@localhost test]# tail -5 /etc/passwd
tuser1:x:2004:2004::/home/tuser1:/bin/bash
hadoop:x:2005:2005::/home/hadoop:/bin/bash
testbash:x:2006:2006::/home/testbash:/bin/bash
basher:x:2007:2007::/home/basher:/bin/bash
nologin:x:2008:2008::/home/nologin:/sbin/nologin

more:翻屏至文件尾部后自动退出

h:获取帮助信息
space:向后翻一屏
b:向前翻一屏
 q:退出

less, :和more的功能类似

但是文件到尾部的时候不会自动退出,可以来回翻动查看的文件

    h:获得帮助

    q:退出

    space:向后翻一屏

    b:向前翻一屏

文件管理工具:cp, mv, rm

cp命令:copy

单源复制:cp [OPTION]... [-T] SOURCE DEST
多源复制:cp [OPTION]... SOURCE... DIRECTORY
         cp [OPTION]... -t DIRECTORY SOURCE...

      常用选项:

          -i:交互式复制,即覆盖之前提醒用户确认;
          -f:强制覆盖目标文件;
          -r, -R:递归复制目录;
          -t:  设置目标目录
          -d:复制符号链接文件本身,而非其指向的源文件;
          -a:用于实现归档;

  单源复制:cp [OPTION]... [-T] SOURCE DEST

SOURCE是文件
如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
如果DEST是非目录文件:则覆盖目标文件;
如果DEST是目录文件:则先在DEST目录下创建一个与源文件名的文件,并复制其数据流;

[root@localhost test]# pwd
/tmp/test
[root@localhost test]# ls
file.sh  hostname.sh  tmp  useradd.sh
[root@localhost test]# cp /etc/issue /tmp/test/abc
[root@localhost test]# cat /tmp/test/abc 
\S
Kernel \r on an \m

多源复制:cp [OPTION]... SOURCE... DIRECTORY
         cp [OPTION]... -t DIRECTORY SOURCE...

SOURCE是目录,则必须使用-r选项
如果DEST不存在:错误;
如果DEST是非目录文件:错误;
如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;

[root@localhost test]# ls /etc/rc0.d/
K03rhnsd  K50netconsole  K79iprdump  K80iprinit  K80iprupdate  K90network
[root@localhost test]# cp -r /etc/rc0.d/ /tmp/test/
[root@localhost test]# ls /tmp/test/rc0.d/
K03rhnsd  K50netconsole  K79iprdump  K80iprinit  K80iprupdate  K90network

mv命令:剪切或重命名

在同一目录中移动文件则实现重命名功能

      mv [OPTION]... [-T] SOURCE DEST

      mv [OPTION]... SOURCE... DIRECTORY

     mv [OPTION]... -t DIRECTORY SOURCE..           
          常用选项:

          -i:交互式;

          -f:force

SOURCE是单文件时,如果DEST不存在:则创建DEST文件并实现剪切功能.如果DEST存在:则SOURCE文件内容将覆盖DEST原文件内容
SOURCE是多文件时,DEST如果存在必须为目录,否则报错.
如果DEST不存在:剪切功能
如果DEST存在,必须是目录,否则报错
SOURCE是目录
如果DEST是不存在, 剪切功能
如果DEST是目录文件, 剪切功能:

[root@localhost test]# ls 
file.sh  hostname.sh  tmp  useradd.sh
[root@localhost test]# mv file.sh new_file.sh
[root@localhost test]# ls
hostname.sh  new_file.sh  tmp  useradd.sh
------------------------------------------------------------------------------
[root@localhost yum.repos.d]# tree /tmp/
/tmp/
|-- a
|   |-- c
|   `-- d
|-- anaconda.log
|-- b
|   |-- c
|   `-- d

[root@localhost tmp]# mv /tmp/b /tmp/test/
[root@localhost tmp]# tree /tmp/test/
/tmp/test/
`-- b
    |-- c
    `-- d


rm命令:remove ,rm [OPTION]... FILE...

    常用选项:

        -i:interactive,交互式

        -f:force,强制

        -r: recursive,递归式
[root@localhost test]# file /tmp/issue 
/tmp/issue: ASCII text
[root@localhost test]# rm -rf /tmp/issue 
[root@localhost test]# file /tmp/issue 
/tmp/issue: cannot open (No such file or directory)

注意:所有不用的文件建议不要直接删除,特别是rm -rf /* 这样的危险操作.而是移动至某个专用目录.

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

bash使用特殊的变量$?保存最近一条命令的执行状态结果,echo $?可以查看其返回值,成功:0.失败:1-255. 命令正常执行时,有的还回有命令返回值, 根据命令及其功能不同,结果各不相同

[root@localhost test]# ls 
file.sh  hostname.sh  tmp  useradd.sh
[root@localhost test]# echo $?
0
----------------------------------------------
[root@localhost test]# lsl
bash: lsl: command not found...
[root@localhost test]# echo $?
127

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

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

[root@localhost test]# ls
file.sh  hostname.sh  tmp  useradd.sh
[root@localhost test]# mkdir -p /tmp/{a,b}/{c,d}
[root@localhost test]# tree /tmp/
/tmp/
|-- a
|   |-- c
|   `-- d
|-- b
|   |-- c
|   `-- d

(2)、创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run

[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}


[root@localhost tmp]# tree /tmp/mylinux/
/tmp/mylinux/
|-- bin
|-- boot
|   `-- grub
|-- dev
|-- etc
|   |-- rc.d
|   |   `-- init.d
|   `-- sysconfig
|       `-- network-scripts
|-- lib
|   `-- modules
|-- lib64
|-- proc
|-- sbin
|-- sys
|-- tmp
|-- usr
|   `-- local
|       |-- bin
|       `-- sbin
`-- var
    |-- lock
    |-- log
    `-- run

24 directories, 0 files

文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

文件:两类数据

        元数据:metadata,文件的属性数据

        数据: data,文件的实际数据

可以使用stat命令查看文件的元数据,如: stat /etc/passwd

[root@localhost tmp]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 1926        Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 134333990   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2018-03-01 20:33:51.552016909 +0800
Modify: 2018-01-25 18:19:55.855550535 +0800
Change: 2018-01-25 18:19:55.856550537 +0800
 Birth: -


相关参数描述:
File:文件名;

Size:文件大小;

Blocks:文件占了多少数据块;

IO Block:文件所占数据块的大小;

Device:文件所在的硬盘的位置;

Inode:文件的节点;

Links:文件的链接数;

Access:用户或组对该文件的访问权限;

Uid:文件的属主;

Gid:文件的属组;

Context:文件的安全上下文;

Access:文件上一次的访问时间,又称为access time;

Modify:文件最近一次修改的时间,又称为modify time;

Change:文件属性最近一次改动时间,又称为change time;

可以使用touch命令来修改文件的时间戳信息, touch [option] [FILE]

-c:指定的文件路径不存在时不予创建;

-a:仅修改access time;

-m:仅修改modify time;

-t [[CC]YY]MMDDhhmm[.ss]:使用指定的日期时间修改时间戳;
[root@localhost tmp]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 1926        Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 134333990   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2018-03-01 20:33:51.552016909 +0800
Modify: 2018-01-25 18:19:55.855550535 +0800
Change: 2018-01-25 18:19:55.856550537 +0800
 Birth: -
[root@localhost tmp]# touch -m /etc/passwd
[root@localhost tmp]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 1926        Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 134333990   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2018-03-01 20:33:51.552016909 +0800
Modify: 2018-03-01 21:18:49.289034098 +0800
Change: 2018-03-01 21:18:49.289034098 +0800
 Birth: -

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

alias命令 alias NAME=’COMMAND’对当前shell设置别名, 如果想要永久有效。需要定义在配置文件/etc/bashrc中.用反引号来或者使用$()的形式引用另一个命令的结果

root@localhost tmp]# ls /tmp/test/
b
[root@localhost tmp]# mkdir /tmp/test/$(date +%F-%m-%d).backup
[root@localhost tmp]# ls /tmp/test/
2018-03-01-03-01.backup  b
-----------------------------------------------------------------
[root@localhost tmp]# rootid=`id root`
[root@localhost tmp]# echo rootid
rootid

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

ls -d /var/l[0-9][[:alpha:]]

[root@localhost tmp]# ls -d /var/l[0-9][[:alpha:]]
ls: cannot access /var/l[0-9][[:alpha:]]: No such file or directory
[root@localhost tmp]# ls /var/
account  cache  db     games  gopher    lib    lock  mail  opt       run    tmp  yp
adm      crash  empty  gdm    kerberos  local  log   nis   preserve  spool  var

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

ls -d /etc/[0-9][^0-9]

[root@localhost tmp]# ls -d /etc/[0-9][^0-9]
ls: cannot access /etc/[0-9][^0-9]: No such file or directory

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

ls -d /etc/[^[:alpha:]][[:alpha:]]

[root@localhost tmp]#  ls -d /etc/[^[:alpha:]][[:alpha:]]
ls: cannot access /etc/[^[:alpha:]][[:alpha:]]: No such file or directory

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

mkdir -v /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)

[root@localhost tmp]# mkdir -v /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
mkdir: created directory ‘/tmp/tfile-2018-03-01-21-12-12’

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

mkdir  -v /tmp/mytest1 
cp -rv /etc/p[^0-9] /tmp/mytest1

[root@localhost tmp]# mkdir -v /tmp/mytest1 
mkdir: created directory ‘/tmp/mytest1’
[root@localhost tmp]# cp -rv /etc/p[^0-9] /tmp/mytest1
‘/etc/pm’ -> ‘/tmp/mytest1/pm’
‘/etc/pm/config.d’ -> ‘/tmp/mytest1/pm/config.d’
‘/etc/pm/power.d’ -> ‘/tmp/mytest1/pm/power.d’
‘/etc/pm/sleep.d’ -> ‘/tmp/mytest1/pm/sleep.d’

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

mkdir  -v /tmp/mytest2    
cp -vr /etc/*.d /tmp/mytest2

[root@localhost tmp]#  mkdir  -v /tmp/mytest2
mkdir: created directory ‘/tmp/mytest2’

[root@localhost tmp]# cp -vr /etc/*.d /tmp/mytest2
‘/etc/bash_completion.d’ -> ‘/tmp/mytest2/bash_completion.d’
‘/etc/bash_completion.d/yum’ -> ‘/tmp/mytest2/bash_completion.d/yum’
‘/etc/bash_completion.d/yummain.py’ -> ‘/tmp/mytest2/bash_completion.d/yummain.py’
.......


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

mkdir -v /tmp/mytest3    
cp -rv /etc/[lmn]*.conf  /tmp/mytest3


[root@localhost tmp]# mkdir -v /tmp/mytest3
mkdir: created directory ‘/tmp/mytest3’
[root@localhost tmp]# cp -rv /etc/[lmn]*.conf  /tmp/mytest3
‘/etc/ld.so.conf’ -> ‘/tmp/mytest3/ld.so.conf’
‘/etc/libaudit.conf’ -> ‘/tmp/mytest3/libaudit.conf’
‘/etc/libuser.conf’ -> ‘/tmp/mytest3/libuser.conf’
‘/etc/locale.conf’ -> ‘/tmp/mytest3/locale.conf’
‘/etc/logrotate.conf’ -> ‘/tmp/mytest3/logrotate.conf’
‘/etc/man_db.conf’ -> ‘/tmp/mytest3/man_db.conf’
‘/etc/mke2fs.conf’ -> ‘/tmp/mytest3/mke2fs.conf’
‘/etc/mtools.conf’ -> ‘/tmp/mytest3/mtools.conf’
‘/etc/nfsmount.conf’ -> ‘/tmp/mytest3/nfsmount.conf’
‘/etc/nsswitch.conf’ -> ‘/tmp/mytest3/nsswitch.conf’
‘/etc/numad.conf’ -> ‘/tmp/mytest3/numad.conf’
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,146评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,202评论 9 467
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 趁着舍友在睡觉,悄悄出来散步,出发喽。 这算是朝霞吧。 走在这环山的小路上,很是怀念和同学们说说笑笑的时光。 这座...
    Emily辉阅读 154评论 0 0
  • 第二章 短暂的温暖 “小夏姐姐”“嗯 那你猜一猜姐姐这一次给你带来了什么”“嗯……是我最喜欢的故事书?”“不是 你...
    与君共饮阅读 213评论 0 1