Day02-阿铭Linux-文件目录管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day02-阿铭Linux-文件目录管理相关的知识,希望对你有一定的参考价值。

Day02-阿铭Linux-文件、目录管理

2.1 系统目录结构上

    [[email protected] ~]# ls /
    bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
    boot  etc  lib   media  opt  root  sbin  sys  usr

yum install  -y tree

        [[email protected] ~]# tree -L 1 /
        /
        ├── bin -> usr/bin
        ├── boot
        ├── dev
        ├── etc
        ├── home
        ├── lib -> usr/lib
        ├── lib64 -> usr/lib64
        ├── media
        ├── mnt
        ├── opt
        ├── proc
        ├── root
        ├── run
        ├── sbin -> usr/sbin
        ├── srv
        ├── sys
        ├── tmp
        ├── usr
        └── var

常用命令存放目录
    /usr/bin
    /usr/sbin
    /bin
    /sbin

/boot 系统启动相关文件
    grub
    grub2

        [[email protected] ~]# ls /boot
        config-3.10.0-693.el7.x86_64
        efi
        grub
        grub2
        initramfs-0-rescue-8c52e199b0324c32b27d6a9e03982bde.img
        initramfs-3.10.0-693.el7.x86_64.img
        initramfs-3.10.0-693.el7.x86_64kdump.img
        initrd-plymouth.img
        symvers-3.10.0-693.el7.x86_64.gz
        System.map-3.10.0-693.el7.x86_64
        vmlinuz-0-rescue-8c52e199b0324c32b27d6a9e03982bde
        vmlinuz-3.10.0-693.el7.x86_64

/dev   设备文件存放目录

/etc   系统配置文件存放目录

/home  用户家目录文件

系统库文件
    /lib
    /lib64

ldd /bin/ls    查看ls命令的依赖库文件

        [[email protected] ~]# ls /home
        [[email protected] ~]# useradd user1
        [[email protected] ~]# ls /home
        user1

2.2 系统目录结构下

/media  临时挂载目录,默认空的
/mnt    临时挂载目录,默认空的
/opt    默认空的
/proc   系统进程,不占用磁盘空间,运行在内存中,默认空的
/run    进程产生的临时文件,关机后会消失
/srv    存一些服务产生的文件
/sys    系统内核一些相关文件
/tmp    系统临时文件目录
/usr    系统用户会用到的一些命令
/var    /var/log  系统日志

常用目录
/usr/bin  /usr/sbin  /bin  /sbin  /etc  /var/  /usr/local

2.3 ls 命令

ls lh  -h人性化显示

ls -i   -i显示inode信息

ls -la   -a显示全部文件,.开头的文件是隐藏文件

ls -lta   -t以时间排序

ls -ld /root/  -d只显示root下的目录

        [[email protected] ~]# ls -lih
        总用量 8.0K
        33580930 -rw-------. 2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg
        33580930 -rw-------. 2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg.bak

        inode  文件类型  权限 selinux开启 有硬链接 所有者 所属组 占用空间 日期  文件名称

        [[email protected] ~]# which ls
        alias ls=‘ls --color=auto‘
            /usr/bin/ls
        [[email protected] ~]# which ll
        alias ll=‘ls -l --color=auto‘
            /usr/bin/ls

2.4 文件类型

d  目录
-  普通文件  可以使用cat查看
c  字符串设备
l  软连接文件 ,相当于Windows快捷方式
b  块设备
s  soket文件,通信功能

2.5 alias 命令别名

    [[email protected] ~]# alias
    alias cp=‘cp -i‘
    alias egrep=‘egrep --color=auto‘
    alias fgrep=‘fgrep --color=auto‘
    alias grep=‘grep --color=auto‘
    alias l.=‘ls -d .* --color=auto‘
    alias ll=‘ls -l --color=auto‘
    alias ls=‘ls --color=auto‘
    alias mv=‘mv -i‘
    alias rm=‘rm -i‘
    alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

    [[email protected] ~]# alias aming=‘ls -lha‘
    [[email protected] ~]# aming
    总用量 32K
    dr-xr-x---.  3 root root  202 2月  25 09:27 .
    dr-xr-xr-x. 17 root root  245 2月  24 22:55 ..
    -rw-------.  2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg
    -rw-------.  2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg.bak
    lrwxrwxrwx.  1 root root   15 2月  25 09:27 anaconda-ks.cfg.rbak -> anaconda-ks.cfg
    -rw-------.  1 root root 2.5K 2月  25 09:50 .bash_history
    -rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
    -rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
    -rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
    -rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
    drwx------.  2 root root   80 2月  25 00:40 .ssh
    -rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
    [[email protected] ~]# unalias aming
    [[email protected] ~]# aming
    -bash: aming: 未找到命令

2.6 绝对和相对路径

绝对路径:从根开始的
    ls /etc/sysconfig/network-scripts/ifcfg-ens33
    ls /root/.ssh/

相对路径:相对于当前路径开始的路径
    ls .ssh/authorized_keys
    ls network-scripts/ifcfg-ens33

pwd  查看当前路径

2.7 cd 命令

-  返回上一次打开的目录
~  返回家目录 或 直接cd 功能一样
.  当前目录
.. 返回上级目录

2.8 创建和删除目录 mkdir rmdir

mkdir
    -p 递归创建目录
    -v 显示过程

    mkdir -p /tmp/aming/123

rmdir  删除非空目录

2.9 rm 命令,谨慎使用

-r 连续多级文件夹删除
-f 强制,直接删除不提示
-v 显示过程

    rm -rf /tmp/aming/123

    [[email protected] ~]# which rm
    alias rm=‘rm -i‘
        /usr/bin/rm

2.10 环境变量 PATH

    [[email protected] ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

添加环境变量

    [[email protected] ~]# PATH=$PATH:/tmp/
    [[email protected] ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/

改回默认环境变量

    [[email protected] ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [[email protected] ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.11 cp 拷贝

-r 递归复制目录

     复制目录过程中,目标路径存在相同名称的目录,直接覆盖,不存在则自动创建这个名称的目录

        [[email protected] ~]# cp /etc/passwd /tmp/1.txt
        [[email protected] ~]# cp -r /etc/passwd/ /tmp/aming/
        [[email protected] ~]# ls /tmp
        1.txt
        aming

!$ 上一条命令的,最后一个参数
        [[email protected] ~]# tree !$
        tree /tmp
        /tmp
        ├── 1.txt
        ├── aming

    [[email protected] ~]# which cp
    alias cp=‘cp -i‘
        /usr/bin/cp

2.12 mv 移动

移动并改名
    mv 目标文件 新文件名称
    mv 目标目录 新目录名称

移动到目标文件到目标目录
    mv 目标文件 目标目录

2.13 文档查看 cat more less head tail

cat 目标文件
    -A  行尾显示结束符
    -n  显示行号

tac 目标文件,倒序查看

more 多屏显示

less 查看文件时,可以上下滚动浏览

head 查看文件的头十行
     head -n 20

tail 查看文件的后十行
     tail -n 5
     tail -f /var/log/messages  动态显示日志

2.14 chmod 修改文件或目录权限

-R 递归更改文件夹内所有目录和文件的权限

rwx
r=4  w=2  x=1

chmod 700 2.txt
chmod u=rwx,g=r,o=r 2.txt
chmod a+x 2.txt
chmod ugo-x 2.txt

2.15 chown 更改所有者和所属组

chown -R username:group filename

-R 递归更改文件夹内所有目录和文件的所属

        [[email protected] tmp]# chown aming /tmp/yum.log 
        [[email protected] tmp]# ll /tmp/yum.log 
        -rw-------. 1 aming root 0 2月  24 22:17 /tmp/yum.log
        [[email protected] tmp]# chgrp user1 /tmp/yum.log 
        [[email protected] tmp]# ll /tmp/yum.log 
        -rw-------. 1 aming user1 0 2月  24 22:17 /tmp/yum.log

        [[email protected] tmp]# chown user1:aming /tmp/yum.log 
        [[email protected] tmp]# ll /tmp/yum.log 
        -rw-------. 1 user1 aming 0 2月  24 22:17 /tmp/yum.log

2.16 umask

创建文件默认权限 644
创建目录默认权限 755

    [[email protected] tmp]# umask
    0022

022 644 755
002 664 775

目录  777 - 022 = 755
文件  666 - 022 = 644   遇到奇数+1

2.17 lsattr chattr 隐藏权限

chattr  设置隐藏权限

    +i 不允许对文件进行任何操作,可以更改目录内文件的内容
    +a 可以对文件进行追加内容和修改时间,不能更改名字、删除、更改原有内容
       可以对目录和目录里的文件进行修改内容和修改时间,不能更改目录名字、删除,可更改目录里内容

        [[email protected] tmp]# chattr +i 1.txt
        [[email protected] tmp]# lsattr 1.txt
        ----i----------- 1.txt
        [[email protected] tmp]# mv 1.txt 3.txt
        mv: 无法将"1.txt" 移动至"3.txt": 不允许的操作

        [[email protected] tmp]# chattr -i 1.txt
        [[email protected] tmp]# mv 1.txt 3.txt

2.18 特殊权限 set uid

普通用户在执行带S权限的这个命令时,临时获得root的权限执行命令

        [[email protected] tmp]# ls -l /usr/bin/passwd
        -rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

        [[email protected] ~]$ ls /root/
        ls: 无法打开目录/root/: 权限不够

        [[email protected] tmp]# chmod u+s /usr/bin/ls
        [[email protected] tmp]# ls -l /usr/bin/ls
        -rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

        [[email protected] ~]$ ls /root/
        anaconda-ks.cfg  anaconda-ks.cfg.bak  anaconda-ks.cfg.rbak

        [[email protected] tmp]# chmod u=rws /usr/bin/ls
        [[email protected] tmp]# ls -l /usr/bin/ls
        -rwSr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
        [[email protected] tmp]# chmod u+x /usr/bin/ls
        [[email protected] tmp]# ls -l /usr/bin/ls
        -rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

2.19 set gid

普通用户临时拥有所属组的权限,目录的所属组设置了S权限后,在这个目录下创建的子文件或子目录所属组和该目录的所属组相同

        [[email protected] tmp]# chmod g+s /usr/bin/ls
        [[email protected] tmp]# ls -l /usr/bin/ls
        -rwxr-sr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

        [[email protected] tmp]# mkdir 234
        [[email protected] tmp]# chmod g+s 234
        [[email protected] tmp]# ls -ld 234
        drwxr-sr-x. 2 root root 6 2月  25 20:42 234
        [[email protected] tmp]# chown :user1 234
        [[email protected] tmp]# ls -ld 234
        drwxr-sr-x. 2 root user1 6 2月  25 20:42 234
        [[email protected] tmp]# touch 234/aminglinux
        [[email protected] tmp]# mkdir 234/am
        [[email protected] tmp]# ls -l 234/
        总用量 0
        drwxr-sr-x. 2 root user1 6 2月  25 20:44 am
        -rw-r--r--. 1 root user1 0 2月  25 20:44 aminglinux

2.20 特殊权限 stick_bit

chmod o+t /tmp/aming

带t特殊权限的目录,防止别人删除该目录里的文件

        [[email protected] tmp]# ls -ld /tmp/
        drwxrwxrwt. 13 root root 4096 2月  25 20:42 /tmp/

2.21 软连接文件

ln -s 源filename 目标filename 
ln -s 源dir  目标dir

        [[email protected] tmp]# ls -l /bin
        lrwxrwxrwx. 1 root root 7 2月  24 22:18 /bin -> usr/bin

软连接:节省空间,尽量使用绝对路径,源文件改名或者路径改名,会找不到,通过软链接,可以把文件占用空间转移到其他分区,inode不同

        [[email protected] tmp]# ln -s /tmp/yum.log /root/yum.txt
        [[email protected] tmp]# ls -l /root/
        总用量 8
        lrwxrwxrwx. 1 root root   12 2月  25 21:06 yum.txt -> /tmp/yum.log

2.22 硬链接

ln 源filename 目标filename

inode相同,目录不能硬链接,不能跨分区创建硬链接,删除源文件后文件本身还存在

    [[email protected] tmp]# ln 2.txt 5.txt
    [[email protected] tmp]# ls -lih
    总用量 12K
    16784510 -rw-------. 2 root  root    0 2月  25 19:25 2.txt
    17377740 -rw-r--r--. 1 root  root  887 2月  25 18:21 3.txt
    16784510 -rw-------. 2 root  root    0 2月  25 19:25 5.txt

2.23-24-25 find

    which  在环境变量里搜索
    whereis 搜索一个库,不全
    locate  yum install mlocate  , updatedb 更新库

-name
-type f\d\l\b\s\c
-atime 最近访问时间 Access
-mtime 最近更改时间 Modify    更改了文件内容,mtime和ctime一定会边
-ctime 最近改动时间 Change    更改了文件权限ctime改变,mtime不变
-o  或者,很少用
-mmin -60  分钟
-size +size

        [[email protected] tmp]# find /dev -type b
        /dev/sr0
        /dev/sda3
        /dev/sda2
        /dev/sda1
        /dev/sda

        [[email protected] tmp]# find /etc/ -type f -mtime -1  1天以内
        [[email protected] tmp]# find /etc/ -type f -mtime +1  1天以前

        [[email protected] tmp]# find /etc/ -type f -o -mtime -1

        [[email protected] tmp]# find /root/ -type f -mmin -120 -exec ls -l {} \;

        [[email protected] tmp]# find /root/ -type f -mmin -150 -exec mv {} {}.bak \;
        [[email protected] tmp]# find /root/ -type f -mmin -150
        /root/.lesshst.bak

        [[email protected] tmp]# find /root/ -type f -size -50k -exec ls -lh {} \;
        -rw-r--r--. 1 root root 18 12月 29 2013 /root/.bash_logout
        -rw-r--r--. 1 root root 176 12月 29 2013 /root/.bash_profile
        -rw-r--r--. 1 root root 176 12月 29 2013 /root/.bashrc
        -rw-r--r--. 1 root root 100 12月 29 2013 /root/.cshrc
        -rw-r--r--. 1 root root 129 12月 29 2013 /root/.tcshrc

        [[email protected] tmp]# find /root/ -type f -size +1k -exec ls -lh {} \;
        -rw-------. 2 root root 1.4K 2月  24 22:22 /root/anaconda-ks.cfg
        -rw-------. 1 root root 2.5K 2月  25 09:50 /root/.bash_history
        -rw-r--r--. 1 root root 1.3K 2月  25 00:17 /root/.ssh/authorized_keys
        -rw-------. 1 root root 1.7K 2月  25 00:34 /root/.ssh/id_rsa
        -rw-------. 2 root root 1.4K 2月  24 22:22 /root/anaconda-ks.cfg.bak

2.26 文件名后缀

2.27 Linux和Windows互传文件

[[email protected] tmp]# yum install -y lrzsz

sz filename   linux文件传输到Windows
rz 选择文件     Windows文件传输到linux

以上是关于Day02-阿铭Linux-文件目录管理的主要内容,如果未能解决你的问题,请参考以下文章

Day03-01阿铭Linux-用户和组管理

跟阿铭学linux   第三课   文件目录管理

跟阿铭学linux   第二课   Linux 文件和目录管理

跟阿铭学linux   第二课   Linux 文件和目录管理-指令

2018-03-02 阿铭Linux

linux基础day06:文件管理02