文件目录管理类命令与SHELL的特性

文件目录管理类命令与SHELL的特性

 一、列出目录内容。

ls:列出当前目录的内容或指定目录

用法:ls[options][file_or_dirs]

选项:

ls  -a 列出所有文件

ls  -l 显示具体信息

ls  -R 目录递归

ls  -ld 目录和符号链接信息

ls  -1 文件分行显示

ls  -S 按从大到小排序

ls  -u 配合-t选项,显示并按atime从新到旧排序

ls  -U 不排序按目录存放顺序显示

 二、文件通配符

*:匹配零个或者多个字符。

?:匹配任何单个字符。

~:当前用户家目录。

~username:用户家目录。

~+:当前工作目录。

~-:前一个工作目录

^:取反。

[0-9]:匹配一个数字范围

[a-z]:小写字母开头,小写在前大写在后。

[A-Z]:大写字母开头,后一个字母小写开头,结尾为大写字母

[wxc]:匹配列表中的任何的一个字符

[^wxc]:匹配列表中的所有字符以外的字符

预定义的字符类:#man 7 glob

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:upper:]:任意大写字母

[:alpha:]:任意大小写字母

[:alnum:]:任意数字或字母

[:space:]:空格

[:punct:]:标点符号

练习:

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

先使用touch命令创建几个符合要求的文件,然后写出命令显示他们。

ls -d /var/l*[0-9]*[[:lower:]]

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

使用touch 与mkdir创建几个符合项与几个不符合项然后输入命令显示。

ls -d /etc/[[:digit:]]*[^[:digit:]]*

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

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

4、显示/etc目录下,所有以m开头以非数字结尾的文件或目录。

ls -d /etc/m[^[:migit:]]*

5、显示/etc目录下,所有以.d结尾的文件或目录。

ls -d /etc/*.d

6、显示/etc目录下,所有以.conf结尾,以m,n,r,p开头的文件或目录。

ls -d /etc/[mnrp]*.conf

三、alias别名的用法

alias别名:

显示当前所有别名~]#alias

定义别名alias NAME=‘VALUE’(只在当时内存中生效,退出登录后就无效了。)

别名永久生效:

仅对当前用户生效:配置文件~/.bashrc

对所有用户都生效:配置文件/etc/bashrc

如果想让配置文件立即生效,需要重新读取配置文件,有以下两种方法重新读取配置文件

1: soure /path/to/config_file

2: .  /path/to/config_file

撤销别名:unalias

使用方法:unalias[-a] name [name...]

 四、文件管理类命令

  stat命令:

stat:显示文件或者文件系统的状态

stat FILE...

文件:两类数据

元数据:metadata

数据:data

时间戳:

最近访问access time:最近一次读取文件数据的时间。

最近更改modify time:文件最近增删内容的时间。

最近改动change time:文件源数据最近更改的时间(如大小)。

 touch命令:

touch:时间状态更改

touch[OPTION]...FILE...

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

-a:仅修改access time;

-m:仅修改modify time;

-t STAMP

[[CC]YY]MMDDhhmm[.ss]

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

cp命令:copy

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

如果DEST不存在:则实现创建此文件并复制源文件的数据流至目标(dest)中。

如果DEST存在:

如果DEST是非目录文件:则覆盖目标文件。

如果DEST是目录文件,则现在DEST目录下创建一个与源文件同名的文件,并复制其数据流。

多源复制:cp[OPTION]...SOURCT...DIRECTORY

:cp[OPTION]...-t DIRECTORY SOURCT

如果DEST不存在:错误。

如果DEST存在:

如果DEST是非目录文件,错误。

如果DEST是目录文件:分别复制每个文件至目标文件中,并保持原名。

常用选项:

-i:交互式复制,即覆盖前提醒用户确认。

-f(force):强制覆盖目标文件。(其实是删除源文件,复制新文件至目标)

-r:递归复制目录。

-d:复制符号链接文件本身,而非其指向的源文件;

-a:归档(备份)相当于-dr --preserv=all

--preserv[=ATTR_LIST]

mode:权限。

ownership:属主属组

timestamp:时间戳

links:链接

all:全部

-p:复制保留权限,属主属组,时间戳。

-v:查看具体复制过程

mv命令:move

单元复制:cp[OPTION]...[-T] SOURCT  DEST

多源复制:cp[OPTION]...SOURCT...DIRECTORY

:cp[OPTION]...-t DIRECTORY SOURCT

常用选项:

-i:交互

-f:强制

rm命令:remove

rm [option]...FILE...

常用选项:

-i:交互

-f:强制删除

-r:递归

--no-preserve-root

小技巧:不想使用别名可以用反斜线\‘’绝对路径来使用原始命令。

练习:

1、定义别名baketc每日将/etc/目录下所有文件备份到/testdir/独立的新目录下,并要求新目录的格式为backupyyyy-mm-dd,备份过程可见。

alias baketc="cp -rv /etc/ /testdir/back`date +%F`"

定义别名 -v显示过程 复制根下ect下文件至跟下testdie下的back加日期目录下

备份过程

2、先创建/testdir/rootdir目录,在复制/root所有文件到该目录中,并要求保留其权限。

cp -r --preserv=mode /root /testdir/rootdir

之前错了一次是没有加空格。

 六目录管理类的命令:mkdir,rmdir

mkdir:make directory

使用规则:mkdir[OPTIONS]...DIRECTORY...

-p:自动按需要创建父目录;

-v:verbose,显示详细过程;

-m MODE;直接给定权限;

注意:路径的基名就是命令的操作对象。基名之前的路径必须存在。

rmdir:remove empty directories

使用规则:rmdir[options]...DIRECTORY...

-p:递归删除。

-v:显示过程。

练习:

1、如何创建/testdir/dir1/x,/testdir/dir1/y,/testdir/dir1/x/a,/testdir/dir1/x/b

/testdir/dir1/y/a,/testdir/dir1/y/b.

mkdir -pv /testdir/dir1/{x,y}/{a,b}

这条命令就像多项式相乘一样理解x与/a,/b结合y也与后面的/a,/b结合。

2、如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir1/x/a,/testdir/dir1/b.

mkdir -pv /testdir/dir2/{x/{a,b},y}

    

3、如何创建/testdir/dir3,/testdir/dir4,/testdir/dir5,/testdir/dir5/dir3

/testdir/dir5/dir4.

mkdir -pv /testdir/{dir3,dir4,dir5/{dir3,dir4}}

    

 五、索引节点

    • inode(index node)表中包含文件系统所有文件列表
    • 一个节点(索引节点)是在一个表项,包含有关文件信息(源数据)包括:
    • 文件类型,权限,UID,GID连接数,文件大小,时间戳,指向磁盘上的数据块指针,有关文件的其他数据
    • 在分区中,节点号是唯一的,不同分区节点号可能相同,但不是一个文件。

在每一个分区中都是这样的一套存贮文件方式,所以节点号可能相同。

1、cp在inode中的作用

分配一个空闲的inode号,在inode表中生成新条目在目录中创建一个目录项,将名称与inode编号关联拷贝数据生成新文件。

2、rm在inode中的作用

    • 连接数递减,从而释放的inode号可以被重用
    • 把数据块放在空闲列表中
    • 删除目录项
    • 数据实际上不会马上被删除但是当另一个文件使用数据块时会被覆盖,所以在被覆盖之前,该数据块上的数据可以被找回。

3、mv在inode中的作用

如果mv命令的目标和源在相同的文件系统,作为mv命令:

用新的文件名创建对应新的目录项。

删除旧目录条目对应的旧的文件名。

不影响inode表(除了时间戳)或磁盘上的数据位置:没有数据被移动。

如果目标和源在一个不同的文件系统,mv相当于cp和rm

 六、硬链接与软连接

1、硬链接

    • 创建硬链接会增加额外的记录项以引用文件。
    • 对应一个分区中的一个物理文件。
    • 每个目录引用相同的索引节点号
    • 创建时链接数递增
    • 删除文件时:

      1、rm命令递减计数的链接

      2、文件要存在,至少要有一个链接数

      3、当链接数为零时该文件被删除

    • 不能跨越驱动器或分区
    • 语法:ln filename [linkname]

2、软链接

    • 一个符号链接指向另一个文件
    • ls -l 显示链接的名称和引用的文件
    • 一个符号链接内容是它引用文件的名称
    • 可以对目录进行
    • 可以跨分区
    • 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
    • 语法:ln -s filename[linkname]

硬链接与软连接的区别:

硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。硬连接的作用让一个文件拥有多个有效的路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。那么当你有一些重要的文件时,可以对重要文件创建很多个硬链接,只有最后一个链接被删除,才会对对应的链接释放。

软链接文件有点类似于Windows的快捷方式。

个人体会:

软链接是另一个文件,就像一个指针,对这个文件操作都直接转向软连接指向的文件,并且软连接就像另一个文件,所以要占用空间。

硬链接它只是实际文件的一个别名,它的作用就是防止文件被误删,给一个文件建立硬链接后,删除其中任意一个,实际文件并不会被删除。

 七:确定文件内容

1、文件可以包含多种类型的数据

2、检查文件类型,然后确定适当的开放命令或应用程序使用

3、file[OPTION]<filename>...

OPTION:

    • -b:列出文件辨识结果时,不显示文件名称。
    • -c:详细显示指令执行过程,便于排错或分析程序执行
    • -f:列出文件中文件名的文件类型。
    • -F:使用指定的分隔符号替换输出文件名后默认的“:”分隔符
    • -i:输出mime类型的字符串
    • -L:查看对应软链接对应的文件类型
    • -z:尝试去解读压缩文件内容
    • --help:显示命令在线帮助
时间: 2024-10-12 16:07:04

文件目录管理类命令与SHELL的特性的相关文章

文件目录管理类命令

目录管理类命令:mkdir命令:创建目录-p :递归创建-v :显示创建信息-m:创建目录并指定权限 tree命令: -d :只显示目录 -L :level,指定显示的层级数目 -P:pattern,只显示由指定pattern匹配到的路径 rmdir:删除空目录 文件查看类命令:more命令:-d:显示翻页及退出提示 less命令: head命令: -c # :指定获取前#字节 -n # :指定获取前#行(或 - #) tail命令: -c #:指定获取后#字节 -n #:指定获取后#行(或 -

Linux的文件系统、系统管理类命令、bash基础特性

Linux的文件系统根文件系统(rootfs) root fileysystem LSB,FHS(Filesystem Heirache Standard)文件系统层级结构标准,如:/etc./usr./var./root./home./dev /boot:引导文件存放目录,内核文件(vmlinuz).引导加载器(bootloader,grub)都存放于此目录: /bin:供所有用户使用的基本命令:不能关联至独立分区,OS启动即会用到的程序: /sbin:管理类的基本命令:不能关联至独立分区,O

用户和组管理类命令

1.列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户登陆多次,则显示一次即可. who |cut -d' ' -f1 | sort | uniq 2.取出最后登陆到当前系统的用户的相关信息 w|tail-n1或者who|tail-n1 3.取出当前系统上被用户当做其默认shell的最多的那个shell cat /etc/passwd | awk -F':' '{print $7}'|uniq –c 结果为:/sbin/nologin awk -F':' '{a[$7]++}END{fo

Linux学习笔记之常用用户管理类命令

开始这个话题之前应该先了解下/etc/shadow这个文件中的构造,对于列所代表的意思大体有个了解,先以ftpuser账户来介绍:后边会给出一些相应的例题来做使用说明补充(好吧我承认,这,又是一篇博客作业^_^万恶的标题党). ftpuser:$6$T9WUEls/$AK4hTO1bZ7MXW7VoMej8e7tVG1qqxPy5axVJAAIz4m6uuzZmoYDcQjUG2XlXx7klx/i8yJ1luZDtoKYwJAMa4.:16929:0:99999:7:5:: 总共有9个字段被"

用户和组管理类命令总结

用户和组管理类命令总结 一.用户管理 1.用户创建:useradd 2.用户属性修改:usermod 3.修改用户属性:chage 4.删除用户:userdel 5.给用户添加密码:passwd 6.切换用户或以其他身份执行:su 二.组管理 7.组创建:groupadd 8.组属性修改:groupmod 9.组删除:groupdel 10.组密码:gpasswd 11.临时切换基本组:newgrp 三.查看信息 12.查看用户相关的ID信息:id 13.其他查看信息的命令:chfn.chsh.

linux系统 用户和组管理类命令的使用方法

列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,则只显示一次即可. [[email protected] ~]# who    #显示当前用户登录信息 root    tty1         2016-10-05 15:58 root    pts/0        2016-10-05 16:07(192.168.0.17) [[email protected] ~]# who | cut -d' ' -f1    #取出当前用户登录信息的用户名 root root [[e

Linux用户管理类命令

Linux用户管理类命令详解 实验环境:RHEL6.5 ·用户管理命令 ->useradd 创建用户的命令,格式: useradd [options] USERNAME -u选项表示指定UID,ID号必须大于等于500,因为创建的是一般用户,且ID号不能重复 -g选项表示指定基本组,该指定的组必须事先存在 -g后面跟组名或GID均可 UID与GID不同的用户被称为特殊用户,我们在系统中新建用户的时候,如果不特意指定新建用户的ID号的话,那么我们新建用户的ID号默认为我们的/etc/passwd文

Linux用户和组管理类命令

1. 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.命令:who | cut -d ' ' -f1|uniq 2. 取出最后登录到当前系统的用户的相关信息.命令:who | tail -1 |cut -d '' -f1 |id 3. 取出当前系统上被用户当作默认shell的最多的那个shell.命令:cut -d: -f7 /etc/passwd |uniq -c |sort -n |tail -n1 4. 将/etc/passwd中的第三个字段数值最大的

用户和用户组管理类命令总结

groupadd命令:创建组 groupadd [ 选项 ] group_name选项: -g GID:自定义GID:默认是上一个组的GID+1 -r:创建系统组 groupmod命令:修改组属性 groupmod [ 选项 ] group 选项: -g GID:修改GID -n new_name:修改组名 groupdel命令:删除组 groupdel groupname useradd命令:创建用户 useradd [ 选项 ] 登录名 选项: -u,--uid UID:指定UID号 -g,