文件与目录管理命令(三)

目录管理类命令包括:cd,pwd,ls,mkdir,rmdir,tree,cp,mv,rm,touch,stat


1.1.ls

功能:列出文件或目录

命令帮助:

man ls

info ls

ls --help

help cd  #只有内部命令才能用
ls /usr/share/man 文档位置

常用选项

-a:列出所有的文件(包含隐藏文件)

-l:以长格式的形式列出信息

-i:显示文件inode号

-h:单位换算

-m:以逗号分割文件名列出

-t:按照修改时间来排序

-r:按照修改时间来反向排列

-S:按大小排

示例:

将家目录下的所有文件列出来(含属性与隐藏档)

[[email protected] /]# ls -al ~

total 88dr-xr-x---.  3 root root  4096 May  8 22:27

 .......长格式列出

 [[email protected] ~]# ls -l

 total 44-rw-------. 1 root root  1166 May  7 10:08 anaconda-ks.cfg

 -rw-r--r--. 1 root root 17957 May  7 10:08 install.log

 -rw-r--r--. 1 root root  4178 May  7 10:06 install.log.syslog

 -rw-r--r--. 1 root root  7273 May  7 21:30 system.sh

 按照修改时间倒序

 [[email protected] ~]# ls -lt

 total 44-rw-r--r--. 1 root root  7273 May  7 21:30 system.sh

 -rw-------. 1 root root  1166 May  7 10:08 anaconda-ks.cfg

 -rw-r--r--. 1 root root 17957 May  7 10:08 install.log

 -rw-r--r--. 1 root root  4178 May  7 10:06 install.log.syslog

 按照修改时间正序

 [[email protected] ~]# ls -lrt

 total 44-rw-r--r--. 1 root root  4178 May  7 10:06 install.log.syslog

 -rw-r--r--. 1 root root 17957 May  7 10:08 install.log

 -rw-------. 1 root root  1166 May  7 10:08 anaconda-ks.cfg

 -rw-r--r--. 1 root root  7273 May  7 21:30 system.sh

3.2.cd

功能:更改工作路径

cd是Change Directory的缩写

用法:

cd 直接回车 直接切换到当前用户的家目录里
cd ~:直接切换到当前用户的家目录里
cd .或者 ./:切换到当前目录
cd ..:切换到上一级目录
cd -:切换到上一次的工作目录
示例:

绝对路径切换:
[[email protected] ~]# cd /root/test

相对路径切换:
[[email protected] /]# cd ./test
当前是root,那就是回到root家目录

[[email protected] /]# cd ~

回到上一级目录

[[email protected] test]# cd ..

3.3.pwd(Print Working Directory)

功能:显示当前所在位置的绝对路径。

选项:

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

示例:

单纯显示出目前的工作目录
[[email protected] ~]# pwd
/root   

显示实际的工作目录,而非连接挡本身的目录名而已
[email protected] ~]# cd /var/mail   <==注意,/var/mail是一个连结档
[[email protected] mail]# pwd
/var/mail         <==列出目前的工作目录
[[email protected] mail]# pwd -P
/var/spool/mail   <==怎么跟上面显示不一样?
[[email protected] mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# /var/mail 是连结档,连结到 /var/spool/mail
# 加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径

3.4.touch 

功能

创建文件,更改文件的时间戳

当目标文件不存在:创建新的,空的文件
touch filename
touch file1 file2
touch {a,b,c}.txt
touch file{1..5}
当文件命有特殊字符时,可以进行如下转义:
touch a\ b\ c
touch "a b c"
touch ‘a b c‘
 当目标文件存在时,touch修改文件的时间戳:
# stat file1  查看文件详细信息(时间戳)
  File: `file1‘
  Size: 0         Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768dInode: 275119      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-03-30 14:34:51.724484689 +0800  访问时间
Modify: 2016-03-30 14:34:45.915484930 +0800  修改时间
Change: 2016-03-30 14:34:45.915484930 +0800  属性时间
 
touch -a file1 -t 202011111111  修改文件的访问时间
touch -m file1 -t 201011111212  修改文件的修改时间
touch -d 20201010 filename      修改文件的访问时间和修改时间

block  块,操作系统块是一次IO的单位,系统块默认大小为4096字节;以后oracle里也会学到块的概念,oracle块默认为8192字节

inode  是文件系统给文件的一个编号,类似于文件的一个门牌号码

一个优化有关的问题:

块大好,还小好?

块大,一次IO数据量大,IO吞吐量大,空间浪费较多

块小,正好和块大相反

批量创建文件:

第一种:touch {1..10}

第二种seq 11 2 20 |xargs touch  seq产生一个序列, |符号是管道(表示把前面的结果传到后面)

第三种:写shell脚本做循环

#!/bin/bash

. /etc/init.d/functions 

for i in `seq 10`;do   

    touch file$i && File_Status=$?   

    if [ $File_Status -eq 0 ];then      

       action "this is file$i successed" /bin/true  

    else      

       action "this is file$i failed" /bin/false   

    fi

done


3.5.stat

功能:显示文件或文件系统状态

常用选项:

-Z   显示selinux安全上下文

-f  显示文件系统状态

-c  指定格式输出内容

%y     Time of last modification(最近修改时间)

%x     Time of last access (最近访问时间)

-t  以简洁的形式打印

示例:

显示文件详细信息:

[[email protected] ~]# stat anaconda-ks.cfg  

File: `anaconda-ks.cfg‘  

Size: 1148          Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d    Inode: 267953      Links: 1

Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-04-05 10:38:15.690999958 +0800

Modify: 2017-04-05 10:38:16.614999958 +0800C

hange: 2017-04-05 10:38:18.527999957 +0800

只显示文件访问时间:

[[email protected] ~]# stat -c %x anaconda-ks.cfg

2017-04-05 10:38:15.690999958 +0800

3.6.mkdir

功能:创建新目录(make directory)

语法:mkdir [OPTION]... DIRECTORY...

常用选项:

-m :配置文件的权限

-p :递归创建目录

-v:显示创建过程

示例:

请到/tmp底下尝试创建数个新目录看看:

[[email protected] tmp]# pwd

/tmp

[[email protected] tmp]# mkdir test #创建test新目录

[[email protected] tmp]# mkdir -p test1/test2/test3/test4  递归创建多个目录

[[email protected] tmp]# tree test1 查看创建成功

test1

└── test2

    └── test3

        └── test4

directories, 0 files

范例:创建权限为rwx--x--x的目录

[[email protected] tmp]# mkdir -m 655 test2

[[email protected] tmp]# ll -d test2

drw-r-xr-x 2 root root 4096 May 24 10:19 test2

 

上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

创建多个目[[email protected] tmp]# mkdir {1,2}

[[email protected] tmp]# ll

total 24

drwxr-xr-x  2 root root 4096 May 24 10:21 1

drwxr-xr-x  2 root root 4096 May 24 10:21 2

创建连续目录:

[[email protected] tmp]# mkdir {3..10}

[[email protected] tmp]# ll

total 56

drwxr-xr-x  2 root root 4096 May 24 10:23 1

drwxr-xr-x  2 root root 4096 May 24 10:23 10

drwxr-xr-x  2 root root 4096 May 24 10:23 2

drwxr-xr-x  2 root root 4096 May 24 10:23 3

drwxr-xr-x  2 root root 4096 May 24 10:23 4

drwxr-xr-x  2 root root 4096 May 24 10:23 5

drwxr-xr-x  2 root root 4096 May 24 10:23 6

drwxr-xr-x  2 root root 4096 May 24 10:23 7

drwxr-xr-x  2 root root 4096 May 24 10:23 8

drwxr-xr-x  2 root root 4096 May 24 10:23 9

3.7.rmdir

功能:删除空的目录

语法:rmdir [OPTION]... DIRECTORY...

选项:

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

-v:显示过程

示例:

[[email protected] ~]# rmdir -v a #这里的a是空目录,所以可以直接删除
rmdir: removing directory, `a‘
[[email protected] ~]# rmdir -v 1  #这里报错,是因为1不是空目录,通过tree就看的出。
rmdir: removing directory, `1‘
rmdir: failed to remove `1‘: Directory not empty
[[email protected] ~]# tree 1
1
└── 2
    └── 3
        └── 4
3 directories, 0 files
[[email protected] ~]# rmdir -p 1 #使用递归删除时这样写删除也是会报错
rmdir: failed to remove `1‘: Directory not empty
[[email protected] ~]# rmdir -p 1/2/3/4 #这样写的意思就是先删除4,再删除3,依次递归

    3.8.tree

    功能:以树状图列出目录的内容;

    语法:语法很繁琐,这里就不介绍了

    常用选项:

    -d:只显示目录

    -L level:指定显示的层级数目

    -P pattern:只显示由指定pattern匹配到的路径,这里的P是大写;

    -p:列出权限

    示例:

    [[email protected] ~]# ll
    total 444
    -rw-------. 1 root root   1148 Apr  5 10:38 anaconda-ks.cfg
    drwxr-xr-x  2 root root   4096 May 22 10:52 b
    drwxr-xr-x  2 root root   4096 May 22 10:52 c
    drwxr-xr-x  2 root root   4096 May 22 10:52 d
    drwxr-xr-x  2 root root   4096 May 22 10:52 e
    -rw-r--r--  1 root root 389473 May  9 15:22 inotify-tools-3.13.tar.gz
    drwxr-xr-x  2 root root   4096 May 22 10:48 install
    -rw-r--r--. 1 root root  17957 Apr  5 10:38 install.log
    -rw-r--r--. 1 root root   4178 Apr  5 10:37 install.log.syslog
    drwxr-xr-x  2 root root   4096 May 22 10:48 tmp
    [[email protected] ~]# tree -d .
    .
    ├── b
    ├── c
    ├── d
    ├── e
    ├── install
    └── tmp
    [[email protected] ~]# mkdir -p 1/2/3/4/5/6
    [[email protected] ~]# tree -L 2 1 #从1开始的2个层级,到3
    1
    └── 2
        └── 3
    2 directories, 0 files
    [[email protected] ~]# tree 1 #不带L参数,全部层级都显示
    1
    └── 2
        └── 3
            └── 4
                └── 5
                    └── 6
    5 directories, 0 files
    [[email protected] ~]# tree -L 3 1 #从1开始的3个层级,到4 
    1
    └── 2
        └── 3
            └── 4
    [[email protected] ~]# tree -P *.gz .
    .
    ├── 1
    │   └── 2
    │       └── 3
    │           └── 4
    │               └── 5
    │                   └── 6
    ├── b
    ├── c
    ├── d
    ├── e
    ├── inotify-tools-3.13.tar.gz
    ├── install
    └── tmp
    [[email protected] ~]# tree -P *.log .
    .
    ├── 1
    │   └── 2
    │       └── 3
    │           └── 4
    │               └── 5
    │                   └── 6
    ├── b
    ├── c
    ├── d
    ├── e
    ├── install
    ├── install.log
    └── tmp
    [[email protected] ~]# tree -p *.gz .
    inotify-tools-3.13.tar.gz [error opening dir]
    .
    ├── [drwxr-xr-x]  1
    │   └── [drwxr-xr-x]  2
    │       └── [drwxr-xr-x]  3
    │           └── [drwxr-xr-x]  4
    │               └── [drwxr-xr-x]  5
    │                   └── [drwxr-xr-x]  6
    ├── [-rw-------]  anaconda-ks.cfg
    ├── [drwxr-xr-x]  b
    ├── [drwxr-xr-x]  c
    ├── [drwxr-xr-x]  d
    ├── [drwxr-xr-x]  e
    ├── [-rw-r--r--]  inotify-tools-3.13.tar.gz
    ├── [drwxr-xr-x]  install
    ├── [-rw-r--r--]  install.log
    ├── [-rw-r--r--]  install.log.syslog
    └── [drwxr-xr-x]  tmp

    3.9.cp

    功能:复制文件或目录

    语法:

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

    cp [OPTION]... SOURCE... DIRECTORY

    cp [OPTION]... -t DIRECTORY SOURCE...

    常用选项:

    -a  归档,相当于-dR --perserv=all

    -b  目标文件存在创建备份,备份文件是文件名跟~

    -f  强制复制文件或目录

    -r  递归复制目录

    -p  保留原有文件或目录属性,--perserv=mode,ownership,timestamp

    -i  交互式,即复制文件或目录会询问

    -u  当源文件比目的文件修改时间新时才复制

    -v  显示复制信息,--verbose

    区别:

    如果是目录需要拷贝所有属性,用-a或者-rp

    如果是文件需要拷贝所有属性,用-p或者-a

    注意:cp在管理员的情况下慎用,尽量用交互式来确定是否真的想cp覆盖文件或目录

    3.10.mv

    功能:移动文件或目录,或重命名

    语法:

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

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

    mv [OPTION]... -t DIRECTORY SOURCE..

    常用选项:

    -b  目标文件存在创建备份,备份文件是文件名跟~

    -u  当源文件比目的文件修改时间新时才移动

    -v  显示移动信息

    -i  交互式

    -f      强制

    注意:mv也是一个危险命令,使用时慎之又慎


    3.11.rm

    功能:remove,删除文件或目录

    语法:rm [OPTION]... FILE...

    常用选项:

    -i:交互式

    -f:强制删除

    -r:递归

    注意:rm相对于mv,cp,在生产环境就更危险了,好多同仁受其害不止一次两次,建议禁用。

    练习:

    (1)如何创建目录/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a,/tmp/x/y2/b,要求一次命令运行?

    [[email protected] ~]# mkdir /tmp/x /tmp/x/{y1,y2} /tmp/x/y1/{a,b} /tmp/x/y2/{a,b}
    [[email protected] ~]# tree /tmp/x
    /tmp/x
    ├── y1
    │   ├── a
    │   └── b
    └── y2
        ├── a
        └── b
    更简单的方法:
    [[email protected] tmp]# mkdir -p /tmp/x/{y1,y2}/{a,b}
    [[email protected] tmp]# tree /tmp/x
    /tmp/x
    ├── y1
    │   ├── a
    │   └── b
    └── y2
        ├── a
        └── b

    (2)如何创建目录 x_m,y_m,x_n,y_n,要求一次命令运行?

    [[email protected] tmp]# mkdir {x,y}_{m,n}
    drwxr-xr-x  2 root root 4096 May 22 14:20 x_m
    drwxr-xr-x  2 root root 4096 May 22 14:20 x_n
    drwxr-xr-x  2 root root 4096 May 22 14:20 y_m
    drwxr-xr-x  2 root root 4096 May 22 14:20 y_n

    (3)如何创建目录/tmp/bin, /tmp/sbin,/tmp/usr,/tmp/user/bin,/tmp/usr/sbin,要求一次命令运行?

    [[email protected] tmp]# mkdir -p /tmp/{bin,sbin} /tmp/user/bin /tmp/usr/sbin 
    [[email protected] tmp]# tree bin sbin user usr
    bin
    sbin
    user
    └── bin
    usr
    └── sbin

    (4)看一个实验

    [[email protected] tmp]# touch test
    [[email protected] tmp]# ll -i test
    396797 -rw-r--r-- 1 root root 0 May 22 14:26 test
    [[email protected] tmp]# cp test test1
    [[email protected] tmp]# ll -i test test1
    396797 -rw-r--r-- 1 root root 0 May 22 14:26 test
    396798 -rw-r--r-- 1 root root 0 May 22 14:26 test1
    [[email protected] tmp]# ll -i test1 test3
    396798 -rw-r--r-- 1 root root 0 May 22 14:26 test1
    396797 -rw-r--r-- 1 root root 0 May 22 14:26 test3

    说明:cp一个文件,新文件inode会改变,由396797->396798,mv一个文件,inode号不变,由396797->396797,这是同一分区不变

    那不同分区会改变吗:

    [[email protected] ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root
                           18G  1.4G   15G   9% /
    tmpfs                 491M     0  491M   0% /dev/shm
    /dev/sda1             477M   28M  425M   6% /boot
    /dev/mapper/VolGroup-lv01
                          4.8G   10M  4.6G   1% /data
    [[email protected] tmp]# ll -i test1 test3
    396798 -rw-r--r-- 1 root root 0 May 22 14:26 test1
    396797 -rw-r--r-- 1 root root 0 May 22 14:26 test3
    [[email protected] tmp]# mv test3 /data/test4
    [[email protected] tmp]# ll -i /data/test4
    12 -rw-r--r-- 1 root root 0 May 22 14:26 /data/test4
    把文件从根分区mv到data分区,跨区域移动,发现inode是改变了

    (5)如何把/etc/skel/目录里以.开头的隐藏文件拷到/tmp目

    有桌面可以用下面命令打开目录

    nautilus /etc/skel/         --图形打开一个目录
    # cp /etc/skel/* /tmp/ -rf    --错误用法,*号不能代表隐藏文件
    # cp /etc/skel/.* /tmp/ -rf   --错误用法, .*也包括..,也就是会把上级目录的东西也拷过去
    方法一:
    # cp /etc/skel/.[a-Z]*  /test/ -rf --正确做法
    方法2:
    #ls -a |xargs -i cp {} /test
    时间: 2024-10-24 21:43:33

    文件与目录管理命令(三)的相关文章

    第5章 LINUX文件及目录管理命令基础

    第5章 LINUX文件及目录管理命令基础5.1 操作LINUX必知必会基础知识5.1.1 Linux命令行组成结构root @ oldboy ~ # :当前用户名 分隔符 主机名 当前用户登陆后的位置,这是个变量 提示符 5.1.2 基本的Linux命令操作语法示例5.1.3 Linux与Windows的目录结构对比5.2 Linux文件及目录核心命令5.2.1 pwd:显示当前所在位置信息"print working directory"-L:逻辑路径:-P:物理路径系统Bash命令

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

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

    LINUX文件及目录管理命令基础(2)

    Linux文件类型 文件作为Linux操作系统中最常见的对象,在系统中被分为了多种类型 如下: - 普通文件 d 目录 l 链接 b 块设备 c 字符设备 p 管道设备 s 套接字文件 Linux目录结构 绝对路径及相对路径 绝对路径:一切从根开始"/" 相对路径:从当前所在路径开始 LINUX普通文件及目录核心命令 ls pwd cd tree mkdir touch cp mv rm ls命令 ls 查看当前目录下的内容 ls 常用选项: -a 显示指定目录下所有子目录与文件,包括

    Linux:文件及目录管理命令基础

    1.pwd显示当前所在位置信息 2.cd切换目录 3.tree以树形结构显示目录下的内容 4.mkdir创建目录 5.touch创建文件 6.ls显示目录下内容及属性信息的命令 7.cp复制文件或目录 8.mv移动或重命名文件或目录 9.rm删除文件或目录 1.pwd显示当前所在位置信息 pwd #查看当前所在目录(此命令一般直接使用) 2.cd切换目录 cd 命令语法: cd [选项] 目录 cd 的常用选项: cd ~ /cd #切换到当前用户的家目录 cd . #保持当前目录不变 cd .

    LINUX文件及目录管理命令基础

    Linux命令行组成结构 Linux命令结构 在Linux中一切皆文件,一切皆命令! 命令提示符: [[email protected] ~]# [[email protected] ~]$ Linux命令行常用快捷键 ctrl + c cancel 取消当前的操作 ctrl + l (小写字母L) clear(命令) ctrl + d 退出当前用户 ctrl + r查找(历史命令). history|grep ctrl + a 把光标移动到行首 ctrl + e 把光标移动到行尾 ctrl+

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

    1.cd cd ~,cd:回到自己的主文件夹:cd ..:目前的上一层:cd -:回到刚才那个目录 2.pwd显示当前的所在的目录 -p:标书不以连接文件的数据显示,而是显示正确的完整路径 3.mkdir新建新目录 -p:自行创建多层目录:-m mod:强制设置权限 4.rmdir删除“空”的目录 当要将一个非空的目录下的东西删掉:rm -r dirName 5.ls查看文件与目录 -a:全部文件,包括隐藏文件:-d:仅列出目录本身:-F:根据文件.目录等信息给予附加数据结构(*:代表可执行文件

    4,文件盒目录管理命令,shell的引用,shell历史

    目录: cd : 切换目录 cd    路径: 切换至该文件路径 cd ~[username]    : 切换至该用户的家目录, cd - : 切换至上一次所在的目录 pwd:pring working directory: 显示当前所在目录 mkdir : 创建目录 -p : 先创建父目录, 也就是 递归 创建 -v : 显示 创建 时 的 详细 信息 这里 涉及 到 一个 特性, bash关键字 的 展开, 例如 {a,b}_{c,d} 展开 之后 就是 a_c, a_d, b_c, b_d

    [Linux] Linux学习笔记(5)-文件与目录管理

    1.Linux目录结构为树状结构,最顶层的目录为跟目录"/",其它目录通过挂载可以将它添加到目录树中,通过解除挂载移除它们. 2.绝对路径与相对路径 绝对路径写法:由根目录"/"写起,例如:/usr/share/man这个目录: 相对路径写法:不是由"/"写起,例如要由/usr/share/man转移到/usr/share/doc,可以写成:cd ../doc .不过值得注意的是,假如我想从跟目录"/"跳转到"/us

    002-Linux文件类型、权限及目录管理命令

    l  1.基本概念: 1.)魔数(magic number):标识二进制程序的执行格式 2.)目录详解 1.目录(directory):文件,路径映射 工作目录(working directory) 当前目录(currentdirectory) 2.路径:从指定起始点到目的地所经过位置 绝对路径:以根为基准进行查找 相对路径:以当前目录为基准进行查找 3.文件系统(file system):层次化管理 3.)文件类型: -:普通文件(file) d: 目录文件(directory file) b