5.Linux文件和目录相关操作

一、目录管理:
        cd, pwd, ls  都是来查看目录的

mkdir: make directory  创建目录
            -p: 当指定的目标目录的父目录不存在时,则先创建之
            -p, --parents
              no error if existing, make parent directories as needed
      -v, --verbose
              print a message for each created directory  打印创建每个目录的信息
[[email protected]_basic tmp]# mkdir hello
[[email protected]_basic tmp]# ls
hello
[[email protected]_basic tmp]# ls hello/
[[email protected]_basic tmp]# mkdir how are
[[email protected]_basic tmp]# ls
are  hello  how
        rmdir: remove directory
        rmdir - remove empty directories  删除空目录
            -p: 删除单传目录路径中各空目录
            -p, --parents
              remove DIRECTORY and its ancestors; e.g., ‘rmdir -p a/b/c’ is similar to ‘rmdir a/b/c a/b a’
[[email protected]_basic tmp]# ls
are  hello  how
[[email protected]_basic tmp]# rmdir are
[[email protected]_basic tmp]# ls
hello  how
[[email protected]_basic tmp]# rmdir how
[[email protected]_basic tmp]# ls
hello
[[email protected]_basic tmp]# mkdir -pv test/apache/you
mkdir: created directory `test‘
mkdir: created directory `test/apache‘
mkdir: created directory `test/apache/you‘
[[email protected]_basic tmp]# ls
hello  test  you
[[email protected]_basic tmp]# ls test/
apache
[[email protected]_basic tmp]# rmdir test/apache -p
[[email protected]_basic tmp]# ls
hello  you

bash的工作特点:没有返回信息通常最好的信息
            每个命令执行结束后,会有一个“执行状态返回值”,有效范围0-255
                0: 表示执行成功
                1-255: 表示执行失败

使用特殊变量$?可以获取最近一条命令的状态返回值
                # echo $?
[[email protected]_basic tmp]# ls
hello
[[email protected]_basic tmp]# echo $?  查看上一条命令的状态返回值
0
[[email protected]_basic tmp]# ls
hello
[[email protected]_basic tmp]# rmdir are 目录不存在,删除报错
rmdir: failed to remove `are‘: No such file or directory
[[email protected]_basic tmp]# echo $?
1   转态返回值不为0

[[email protected]_basic tmp]# ls
hello
[[email protected]_basic tmp]# mkdir you/are
mkdir: cannot create directory `you/are‘: No such file or directory
[[email protected]_basic tmp]# mkdir -p you/are  创建两层的目录
[[email protected]_basic tmp]# ls
hello  you
[[email protected]_basic tmp]# ls you/
are

bash特性之一:命令行展开
            ~: 用户家目录
            ~USERNAME: 指定用户的家目录
[[email protected]_basic tmp]# echo ~
/root
[[email protected]_basic tmp]# ls /home/
cactiuser
[[email protected]_basic tmp]# echo ~cactiuser
/home/cactiuser
            {}: 有多个的话,每个都会展开到对应项
                /tmp/{x,y}
                    /tmp/x, /tmp/y

/tmp/{x,y}/z
                    /tmp/x/z, /tmp/y/z

创建/tmp/x/z, /tmp/y/z, /tmp/x/m, /tmp/y/m
mkdir /tmp/{x,y}/{z,m}
            练习1:创建/tmp/
                a_b, c_b, a_d, c_d
[[email protected]_basic tmp]# mkdir -pv {a,c}_{b,d}
mkdir: created directory `a_b‘
mkdir: created directory `a_d‘
mkdir: created directory `c_b‘
mkdir: created directory `c_d‘

练习2:创建/tmp/mylinux/
                boot
                    grub
                bin
                sbin
                etc
                    rc.d
                        init.d
                    sysconfig
                        network-scripts
                lib
                    modules
                lib64
                usr
                    local
                        bin
                        sbin
                        lib
                        lib64
                    bin
                    sbin
                    lib
                    lib64
                proc
                sys
                dev
                var
                    log
                    run
                    lock
                tmp

# mkdir -pv /tmp/mylinux/{boot/grub,bin,sbin,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,usr/{bin,sbin,lib,lib64,local/{bin,sbin,lib,lib64}},proc,sys,dev,var/{log,run,lock},tmp}
用tree可以查看目录的结构,安装tree,yum install tree -y  ;此时是需要有网络的

二、文件查看和文件属性信息
    ls命令:
        list简写
NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...
        ls [option] [file]

常用选项:
                -l: long,长格式显示文件的详细属性信息
                    drwxr-xr-x.  2 root root  4096 Feb 12 09:55 account
                        左起第一位:文件类型
                        后面的9位:权限,常称为mode
                            r: 可读,Read
                            w: 可写, Write
                            x:可执行, eXcute
                        .: 表示文件有隐藏属性
                            lsattr命令可以查看隐藏属性
                        数字:此文件被硬链接的次数,目录一般都是2
                        属主:owner, 文件的拥有者
                        属组:group, 文件所属的组
                        4096: 文件大小,单位是字节
                            -h: human-readable,自动做单位换算,打印大小
                            -h, --human-readable
              with -l, print sizes in human readable format (e.g., 1K 234M 2G)
[[email protected]_basic tmp]# ls -lh /tmp/
total 8.0K
drwxr-xr-x. 2 root root 4.0K Dec 20 14:01 hello
drwxr-xr-x. 3 root root 4.0K Dec 20 14:08 you
                        文件最近一次被修改的时间
                        文件名
                -a: 显示所有文件
                -a, --all
              do not ignore entries starting with .
[[email protected]_basic tmp]# ls -a
.  ..  hello  .ICE-unix  you
                -d: 通常和-l一起使用,用于仅显示目录自身属性
                -d, --directory
              list directory entries instead of contents, and do not dereference symbolic links
[[email protected]_basic tmp]# ls -ld /tmp
drwxrwxrwt. 5 root root 4096 Dec 20 14:40 /tmp
                -r: reverse, 逆序显示  默认是升序显示的
[[email protected]_basic tmp]# ls
hello  you
[[email protected]_basic tmp]# ls -r
you  hello                
                -R: recursive, 递归显示,显示子目录中的内容
[[email protected]_basic tmp]# ls -R
.:
hello  you

./hello:

./you:
are

./you/are:

文件管理类的命令:
        查看:cat, tac, head, tail, less, more
        时间戳管理:touch
        复制:cp
        移动:mv
        查看元数据属性:stat
        文本编辑器:nano, vi

stat: 显示文件的元数据
        时间戳:每个文件都有三个时间戳
            atime   访问时间 最近一次被访问的时间
            mtime   修改时间 最近一次被修改的时间  文件内容的改变
            ctime   改变时间 最近一次改变的时间    文件元数据的改变
[[email protected]_basic tmp]# stat hello/
  File: `hello/‘
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 524365    Links: 2 被硬连接的次数
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-12-20 14:01:23.980000639 +0800 最近一次被访问的时间
Modify: 2014-12-20 14:01:19.755999191 +0800 最近一次被修改的时间  文件内容的改变
Change: 2014-12-20 14:01:19.755999191 +0800 最近一次改变的时间    文件元数据的改变
inode(索引节点号,每个文件都有索引节点,也叫元数据元数据条目的编号)  
[[email protected]_basic tmp]# stat you/   注意时间戳的改变
  File: `you/‘
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 524384      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-12-20 14:08:57.103000297 +0800
Modify: 2014-12-20 14:08:52.309009173 +0800
Change: 2014-12-20 14:08:52.309009173 +0800
[[email protected]_basic tmp]# touch you/
[[email protected]_basic tmp]# stat you/
  File: `you/‘
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 524384      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-12-20 14:55:18.363998749 +0800
Modify: 2014-12-20 14:55:18.363998749 +0800
Change: 2014-12-20 14:55:18.363998749 +0800
    
    touch:改变文件的atime和mtime
        NAME
       touch - change file timestamps

SYNOPSIS
       touch [OPTION]... FILE...
        DESCRIPTION
                 Update the access and modification times of each FILE to the current time.
            如果FILE不存在,默认会创建一个空文件

-a: 仅改变atime
            -a     change only the access time
            -m: 仅改变mtime
            -m     change only the modification time
            -c: 不创建空文件
            -c, --no-create
              do not create any files
            -t [[CC]YY]MMDDhhmm[.ss]  指定那个时间修改和改变的   
            -t STAMP
              use [[CC]YY]MMDDhhmm[.ss] instead of current time
[[email protected]_basic tmp]# stat test.txt
  File: `test.txt‘
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 524405      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-12-20 14:57:35.737999993 +0800
Modify: 2014-12-20 14:57:35.737999993 +0800
Change: 2014-12-20 14:57:35.737999993 +0800
[[email protected]_basic tmp]# date
Sat Dec 20 15:15:42 CST 2014
[[email protected]_basic tmp]# touch -a test.txt
[[email protected]_basic tmp]# stat test.txt
  File: `test.txt‘
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 524405      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-12-20 15:15:56.177992895 +0800
Modify: 2014-12-20 14:57:35.737999993 +0800
Change: 2014-12-20 15:15:56.177992895 +0800
[[email protected]_basic tmp]# touch -m test.txt
[[email protected]_basic tmp]# stat test.txt
  File: `test.txt‘
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 524405      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-12-20 15:15:56.177992895 +0800
Modify: 2014-12-20 15:16:53.171995492 +0800
Change: 2014-12-20 15:16:53.171995492 +0800
[[email protected]_basic tmp]# touch -a -t 201211091251.36 test.txt   
[[email protected]_basic tmp]# stat test.txt
  File: `test.txt‘
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 524405      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-11-09 12:51:36.000000000 +0800
Modify: 2014-12-20 15:20:31.025993115 +0800
Change: 2014-12-20 15:22:44.780992659 +0800
              
文件查看类命令:
        cat: 连接并显示文本文件内容
NAME
       cat - concatenate files and print on the standard output  连接文件和打印到标准输出

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

DESCRIPTION
       Concatenate FILE(s), or standard input, to standard output.
        数据流:stream

-E:显示行结束符
            -E, --show-ends
            display $ at end of each line
            -n: 显示行号
            -n, --number
              number all output lines
[[email protected]_basic tmp]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m

[[email protected]_basic tmp]# cat /etc/issue -n
     1  CentOS release 6.6 (Final)
     2  Kernel \r on an \m
     3
[[email protected]_basic tmp]# cat /etc/issue -E
CentOS release 6.6 (Final)$
Kernel \r on an \m$
$
Linux的换行符是$,windows下的换行符是$和回车符

tac: 逆序显示文件内容

Shift+PageUp/PageDown: 翻屏,在虚拟终端上翻屏

分屏显示:
            more 和 less
            more到文件尾部时,会自动退出
            less到文件尾部时,不会自动退出,用q退出,和man的选项相似

查看首部或尾部的部分内容:
            head  默认显示头10行
NAME
       head - output the first part of files

SYNOPSIS
       head [OPTION]... [FILE]...
            
            tail  默认显示尾部10行
                -n #: 指定的行数,head和tail都支持此选项
[[email protected]_basic tmp]# tail -5 /etc/inittab
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
S0:12345:respawn:/sbin/agetty ttyS0 115200

tail -f
            -f, --follow[={name|descriptor}]
              output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent
监控一个尾部不断变化的文件,对于日志文件的查看很方便,可以实时查看新增的信息

时间: 2024-10-17 00:40:30

5.Linux文件和目录相关操作的相关文章

文件及目录相关操作

PHP创建文件(夹)以及目录操作 一.目录操作         首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: <?php$base_dir="filelist/"; //打开目录 $fso=opendir($base_dir);echo  $base_dir."<hr/>";while($flist=readdir($fso)){//文件列表 echo $flist

第七章 Linux文件和目录相关的知识 作业题

1. rmdir -p  用来删除一串目录,比如 rmdir  -p /tmp/test/1/2/3  如果 /tmp/1/2/ 下面除了3目录外还有个4目录,4目录里还有个5目录,那么是否可以成功删除?   rmdir -p  删除一个不存在的目录时是否报错呢?rmdir -p 不能成功删除非空目录,rmdir -p 删除一个不存在的目录时会报错,提示"没有那个文件或目录" 2. 删除一个目录或者文件时,在删除之前会先问一下我们是否删除,如果直接回车,是否删除呢?如果输入的不是'y'

CentOS(九)--与Linux文件和目录管理相关的一些重要命令①

   接上一篇文章,实际生产过程中的目录管理一定要注意用户是root 还是其他用户. 一.目录与路径 1.相对路径与绝对路径 因为我们在Linux系统中,常常要涉及到目录的切换,所以我们必须要了解 "路径" 以及 "相对路径" 与 "绝对路径" 的概念. 在之前的学习中,就反复的强调了Linux的目录是 "树状目录" .假设我们需要在任意一个目录下切换到另一个目录下,通常是使用的是 cd 这个命令,此时在写切换的目录名时就有两

CentOS(十)--与Linux文件和目录管理相关的一些重要命令②

在结束了第二期的广交会实习之后,又迎来了几天休闲的日子,继续学习Linux.在上一篇随笔 Linux学习之CentOS(十七)--与Linux文件和目录管理相关的一些重要命令① 中,详细记录了与Linux文件和目录管理相关的一些重要命令,包括 目录与路径相关的命令(cd.pwd.mkdir.rmdir等).管理文件与目录的命令(ls.cp.rm.mv等).查看文件内容命令(cat.more.less等),在这一篇随笔中,将继续详细记录与Linux文件和目录管理相关的其他一些重要命令. 一.修改文

Linux文件与目录管理命令总结

在Linux下对文件和目录的操作是学习linux的基础,文件的操作无非就是增删改查等等.对于目录的操作也是对目录的增删改查以及修改目录属性等操作.在了解目录管理前得先了解目录的结构.linux下的目录是树型结构,所有的目录都从根(/)开始,其他的文件系统以挂载的方式挂载到目录上去进行使用.访问目录时有相对路径和绝对路径之分. 相对路径:路径的写法不是由根写起的,而是在当前路径的基础之上的.例如:例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd .

【转】第七章、Linux 文件与目录管理

原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 在第六章我们认识了Linux系统下的文件权限概念以及目录的配置说明. 在这个章节当中,我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换. 创建与删除目录.创建与删除文件,还有寻找文件.查阅文件内容等等, 都会在这个章节作个简单的介绍啊! 1. 目录与路径 1.1 相对路径与绝对路

Linux下的目录扫描操作函数使用实践

[文章摘要] 本文以实际的C源程序为例子,介绍了Linux下的目录扫描函数(scandir)的使用方法,为相关开发工作的开展提供了有益的参考. [关键词] C语言  Linux  目录扫描  makefile  scandir 一.scandir命令简介 scandir函数的声明为: int scandir(const char *dir, structdirent ***namelist, int (*filter) (const void *b), int ( * compare )( co

鸟哥的Linux私房菜_基础版_学习笔记3:第七章 Linux文件与目录管理

第七章 Linux文件与目录管理 7.1目录与路径: 7.1.1相对路径与绝对路径: 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录. 相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:『cd ../man』这就是相对路径的写法啦!相对路径意指『相对於目前工作目录的路径!』 7.1.2目录的相关操作: . 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录

(转)Linux 文件和目录的属性

原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/archive/2011/01/11/1932975.html 内容源于: 鸟哥的linux私房菜 链接如下: Linux 的文件权限与目录配置 Linux 磁盘与文件系统管理 Linux 文件与目录管理 目录 Linux文件属性 [文件属性解析(SUID/SGID/SBIT)][隐藏属性]修改文件属性 [chgrp][cho