美文网首页
Linux-文件系统-学习笔记

Linux-文件系统-学习笔记

作者: tiny9999 | 来源:发表于2018-12-21 00:18 被阅读0次

    1、文件系统与目录结构

    在不重启的情况下,磁盘扫描搜索新增加的磁盘的方法:

    echo '- - -' > /sys/class/scsi_host/host2/scan


    centos6和centos7 根目录差别:

    run目录是centos7新增加的

    除了/\以及nul以外,理论上其他字符都可以用作文件名:

    touch  "a b"   创建了叫a b的文件

    touch  /root/-a   创建了叫-a的文件

    但不建议这样做,避免引起不必要的误读和操作麻烦

    命令: lsblk  = list  block  列出块设备的意思

    dd   if=/dev/zero   of=/data/bigfile   bs=1m   count=1024

    以上命令实现在data目录下生成一个1G的bigfile文件,从dev目录中用0填满bigfile


    pwd  -P    绝对路径

    显示当前目录或文件夹真实路径

    ../     ./  相对路径

    ../   表示父目录   ./表示当前目录

    命令:basename   文件路径

    只查看路径的基名

    命令: dirname    文件路径

    只查看路径的基目录,不要文件

    du  -sh    /*

    查看并列出根目录下各文件大小(如此类推)

    *文件系统如果是NTFS格式,则linux系统默认是无法识别的

    cd  ~tiny

    直接进tiny用户的家目录

    cd   - 

    回到刚才离开的目录

    echo  $OLDPWD

    $OLDPWD记录上一次进入过的文件夹路径

    2、ls 命令

    ls   -R  

    递归显示文件夹内的所有文件

    ls  -ld     (ls   -l  相当于 ll)

    显示当前文件夹内各文件(或文件夹)的详细列表,不显示递归子文件

    ll  /bin   与ll  /bin/  效果不一样  /bin实际上是个软链接

    ls  /data  -1

    单列显示

    文件名优先级排列顺序:

    数字 > 字母(不区分大小写) > 字母+数字

    ls   -S 

    按文件大小排序(默认从大到小)

    ls   -Sr

    按文件大小排序(从小到大)

    ls   -t

    按修改时间(mtime)排序(从最新到最旧)

    ll   --time=atime    /data/file

    查看读文件/data/file的时间

    ll   --time=ctime    /data/file

    查看/data/file文件的元数据的变化时间

    stat   /data/file

     查看/data/file文件的三个时间,数据修改时间,读取时间,元数据修改时间

    ls   -ltu

    按atime从新到旧,详细列表排序

    ls   -U

    按创建时间从新到旧 排序

    ls   -X

    按文件后缀排序

    ls   -d  */

    只显示当前文件夹的内容,不显示子文件夹内容

    3、文件通配符

    通配符  *   代表文件名的字符(不代表文件内容)

    ls  ?

    查看文件名是单个字符的文件

    ls  ~-/file

    查看上个浏览过的文件的file文件夹

    ls   file[1..20]

     显示名称是1到2和0的file前缀文件夹,..在里面没用

    ls  file  [137]

    表示显示file文件名包含1或者3或者7的文件

    ls  file[1-7]  或者ls  file{1..7}   (花括号内这样书写获得顺序)

    显示文件名包含1234567顺序的文件

    笛卡尔积的ls文件查看,按照ASCII码规则显示文件

    ls  f[wang]

    表示查看文件名f +w或 a或 n或 g 四个字符的f文件

    ls  f[^wang]

    表示查看不包含w a n g 四个字符的f文件

    ls  -d  .*   (也可以  l.  )

    只显示当前目录的隐藏文件

    ls  -R   .[^.]*   (排除 ..)

    显示当前目录的隐藏子文件

    4、touch命令

    touch    路径/新建文件名

    如果文件名已经存在,touch命令并不会新建并覆盖原有文件,但会把原有文件的三时间刷新到现在。

    touch   -t   201910200830.50   /etc/hosts

    指定了/etc/hosts文件的atime和mtime的时间戳

    touch  -c   f2

    如果f2文件不存在,则不创建  (多用来刷新文件的三时间)

    touch  `date  -d   "-1 day"  +%F`.log

    反向单引号嵌套日期命令,创建指定日期的.log文件名文件

    5、cp命令


    cp    etc/hosts    ~tiny/

    被复制到的地址,tiny家目录后没有明确文件名,则自动生成同名hosts文件,如果tiny家目录下已经有hosts文件,则直接覆盖,如果在管理员账户下,系统询问你是否覆盖。

    为什么呢?

    在root账号里,cp命令并不是真cp,而是别名 cp -i  ,将会询问你是否覆盖


    cp    文件1   文件2    目标文件目录

    当多个文件复制到一个文件目录下时,目标文件必须是文件夹,否则报错


    cp   -r   文件夹    目标文件目录

    必须加-r才可以复制文件夹

    如果以上操作再一次执行,那么文件夹会直接被复制进新建的文件夹底下,成了子文件夹


    cp    -a    (包含-d  -p  -r  ,保留软链接,保留文件原有属性,递归复制子文件)

    可用于完整文件复制,相当于文件备份


    cp   -av  

    可以看到复制过程(但容易造成死机)

    cp  -u

    只复制新文件到旧同名文件,旧文件不会覆盖新同名文件

    cp   --backup=numbered  复制文件   被复制文件   

    以上命令,被复制文件会被覆盖,但事先会生成一份备份,可避免误操作

    cp   /data/*   /data/f1

    以上复制命令,*表示data目录下的所有文件,但是有个问题要注意,*并不包含.后缀的隐藏文件。

    cp  -a   /dev/sda   /data

    复制设备文件,加-a ,只复制设备文件的属性

    rename  "conf"  "conf.bak"   file*

    rename命令,批量改名,将原来带.conf后缀的file.conf文件名,增加后缀.bak,变成file.conf.bak

    6、mv命令

    mv  a   b

    没有指明路径,则表示将a文件改名为b,对于文件夹也适用

    mv  downloads/   D

    改文件夹名字为D

    mv  -t    移入的目录   移出的目录

    移出目录与移入目录的位置对调

    在root管理员下,mv  rm  都是别名,会询问你是否覆盖或者是否删除

    7、rm命令


    rm   -r  文件

    递归删除文件

    rm  -rf    文件

    强行删除文件(慎用)

    rm  -rf     /    --no-preserve-root 

    强行删除根目录下所有文件(非常危险)

    出于安全起见,可以把rm定义成别名,别名实际是mv

    lsof   | grep deleted

    以上命令可查看部分已经被删除了的文件,但还未释放空间。有的时候当一个用户删除了一个文件,但同时另一个终端的用户在占用这个文件,就会出现这类情况。

    >    file

    rm    -f    file

      使用以上方法删除大文件file,可确保空间立即被释放。

    8.tree命令

    centos7系统默认没有安装tree程序包:

    输入:rpm   -ivh  /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm

    可进行安装。

    mkdir  -p   /data/dir1/dir2/dir3/dir4

    自动判断并创建子目录dir1/dir2/dir3/dir4

    rmdir   /data/dir1

    删除子目录(目录必须是空的才可以删)相比rm命令,rmdir相对安全,只能删除空目录

    rmdir    -p   /data/dir1

    递归删除子目录(只要递归的目录是空的就可以删)

    cp    /etc/hosts{,.bak}

    以上命令利用花括号构成参数组合,等价于:

    cp   /etc/hosts    /etc/hosts.bak

    表示对hosts文件在本地etc文件夹复制一份进行备份hosts.bak

    9、索引节点

    inode  --》节点编号

    ls  -i

    可以查看当前文件夹下各文件的节点编号

    节点编号在同一个磁盘分区下,是唯一的

    直接指针最大容量为48K=12X4k

    间接指针通过不断生成间接指针表,一个表4k,一个表指针4字节,则一个表可以接受1024个间接指针,如此类推,4字节X1024X1024X1024。。。

    df  -i

    以上命令 查看各磁盘空间内的节点编号存量

    **如果系统遇到显示磁盘空间满,但是实际上查询空间没有满的情况,这个问题很可能就是节点编号被消耗干净了,创建空文件也会占用节点编号。

    当命令参数过多时:

    命令会报错

    echo  file{1..100000}  | xargs  rm

    以上命令可以批量删除花括号组合文件(参数过多时使用)

    对于目录的文件结构:

    要访问f1 ,f2 文件,首先要查看目录的节点编号,再通过节点编号找到目录的数据内容,目录的数据内容就是所存放的f1,f2两个文件名以及各自的节点关系,如:f1对应1000号节点 ,f2对应2000号节点。


    **当系统删除文件f1时,系统实际上是删除了f1的节点空间。实际的数据内容空间,并未第一时间删除。等待新的数据对它进行覆盖


    *shred  -zv  hosts

    *shred  -zv  -n 6  hosts  (覆盖6次)

    以上命令是利用其它字符覆盖hosts的内容,真正删除文件数据内容

    10、软链接和硬链接

    ln  f1  f2

    创建硬链接,f1和f2 两个节点编号相同

    2是指链接数,f1,f2,随着硬链接数量增长

    **硬链接本质上是同一个文件,起了多个名字。

    **假如用rm删除了f2,对读写f1不受影响

    **硬链接和windows里面的快捷方式,有区别

    **硬链接的创建,不能跨分区

    **硬链接不支持目录的创建


    ln  -s   f2  f2link

    创建软链接,f2和f2link 节点编号不同

    **软链接之间的文件大小毫无关系

    **如果软链接的原文件f2被删除,则链接不能访问f2

    **软链接可以跨分区创建

    **软链接可以创建目录链接

    **  ll -i   查看的链接数不会增长

    以上创建f2的软链接时出现红色错误。要避免创建错误,输入的f2路径必须是相对于目标位置/root/的路径,而不能是相对于当前目录data下的路径。也可以直接键入f2的绝对路径。


    readlink   文件名

    直接查看文件的软链接


    11、file命令

    file    文件

    例: file  tree.txt

    以上命令可以查看文件属于什么类型(文本、压缩、可执行程序),而判断文件类型的方式是看该文件的头部信息,叫magic number

    相关文章

      网友评论

          本文标题:Linux-文件系统-学习笔记

          本文链接:https://www.haomeiwen.com/subject/hixjhqtx.html