• linux文件和目录


    linux文件属性

    如下:

    [root@localhost /]# ll

    总用量 40

    lrwxrwxrwx. 1 root root 7 5月 26 06:11 bin -> usr/bin

    dr-xr-xr-x. 3 root root 4096 5月 25 22:50 boot

    drwxr-xr-x. 3 root root 15 6月 1 15:18 data

    上面的列分别为:

    权限 连接 所有者 用户组 文件容量 修改日期 文件名

    其中权限的结构为

    文件类型1+所有者权限3+用户组权限3+其他用户权限3

    改变文件的属性与权限

    chgrp:改变文件所属的组。

    chown:改变用户的所有者。

    chmod:改变文件的权限。

    示例:chmod 777 .bash

    三个数字分别为:所属用户权限,用户组权限,其他人权限。

    权限有:r:4 w:2 1:x组成。

    目录与文件的权限意义:

    权限对文件的意义:

    • r:可以读取此文件的内容,如文本文件的文字内容。
    • w:可以修改此文件的内容。
    • x:可以被执行。

    权限对目录的意义

    • r:具有读取目录结构列表的权限,如ls命令。
    • w:具有更改目录结构列表的权限:可以在该目录下新增新的文件和目录,删除改路下的文件和目录(不论改文件的权限如何),重命名该目录下的文件和目录,转移该目录内的文件和目录。
    • x:可以进入该目录。也就是cd命令。

    linux的常用目录

    /

    Linux系统的根目录。

    /bin/

    存放系统命令的目录,普通用户和超级用户都可以执行里面的命令。

    /sbin/

    存放与系统环境设置相关的命令,只有超级用户才可以执行里面的命令,但是有些命令允许普通用户查看。

    /usr/

    存放系统软件资源的目录。它是"Unix Software Resource"的缩写,而不是user的缩写。类似于windowsprogram files

    /var/

    存放动态数据的目录。主要保存日志、邮件、缓存等。一定程度上说,usr用来存储安装软件,var存储安装软件运行时的数据。

    /usr/bin/

    存放系统命令的目录,普通用户和超级用户都可以执行里面的命令。这些命令和系统启动无关(和/bin的区别)

    /usr/sbin/

    存放根文件系统不必要的系统管理命令,如多数服务程序。只有超级用户可以使用。

    /boot/

    系统启动目录,存放与系统启动相关的文件,如内核文件、启动引导程序(grub)文件等。

    /dev/

    存放硬件设备文件的目录。Linux中所有的内容都会以文件形式保存,包括硬件。这个目录就是用来保存所有的硬件设备文件的。

    /etc/

    存放配置文件的目录。系统内所有采用默认安装方式(rpm包安装)的服务的配置文件都保存在这个目录中,如用户名和密码、服务的启动脚本、常用服务的配置文件等。

    /root/

    超级用户root(也叫超级管理员)的家目录。家目录是用户的默认登录位置,当切换到其他目录后,想迅速返回家目录,可直接使用 cd 命令。

    /home/

    普通用户的家目录。创建普通用户时,每个用户要有一个默认的登录位置,这个位置就是该用户的家目录。普通用户的家目录就是在 /home/ 下自动创建一个和用户名相同的子目录。如用户user01的家目录就是 /home/user01/

    /lib/

    存放系统函数库的目录。一般是binsbin目录下的程序索要用到的函数库。

    /opt/

    第三方软件的安装目录。如:手工安装的源码包软件就可以安装到这个目录当中。不过,现在更多的用户和厂家倾向于把软件安装到 /usr/local/ 目录当中。

    /proc/

    虚拟文件系统。该目录中的数据并不是保存在硬盘中,而是保存在内存当中。主要用来保存进程、外部设备等信息。如 /proc/cpuinfo 保存的是CPU信息,/proc/devices 保存的是设备驱动信息列表。

    /sys/

    虚拟文件系统。和 /proc 目录相似,里面的数据也是保存在内存中的,它主要用来保存内核的相关信息。

    /srv/

    存放系统服务相关数据的目录。

    /tmp/

    临时目录。系统存放临时文件的目录,所有用户对于该目录都有读和写的权限。不要在该目录保存重要数据,最好每次开机都把该目录清空。

     

    目录命令:

    • cd:切换目录
    • pwd:显示当前位置。
    • mkdir:新建目录。
    • rmdir:删除空目录。不能删除非空目录。

    关于执行文件路径的变量:

    [root@localhost /]# echo $PATH

    /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

    这些目录下的可执行文件可以在任何的目录下直接使用命令执行。

    echo是打印的命令。

    文件与目录管理

    ls:

    • -a, --all            不隐藏任何以. 开始的项目
    • -d, --directory list directories themselves, not their contents
    • -l                使用较长格式列出信息

    ll命令:相当于ls -l

    ll -a 等于 ls -al

    复制:cp

    删除:rm

    移动:mv

    这三个命令都有这几个重要的选项:

    • -r 递归
    • -f强制 复制或者移动时目标文件已存在 那么会覆盖 删除的时候回忽略不存在的文件 不会提示
    • -i 是否询问 复制或者移动的时候 如果目标文件存在 会询问是否覆盖 删除的时候 会询问用户是否删除。

    显示文件内容

    cat

    -n输出行号

    缺点是会把所有内容一次性展示出来,如果文件内容较多,就很不方便。

    tac

    反向展示。

    more

    一页一页翻动。缺点是只能往前翻页。

    less

    一页一页翻动。可以往前(PgUp键)往后(PgDn键)翻动。

    /字符串 向下查找字符串

    ?字符串 向上查找字符串
    n 重复前一个查询 按n会定位到下一个符合的位置。

    N反向重复前一个查询

    q 退出

    head

    取出前几行

    如:head -n 10 file.conf

    tail

    取出后几行。

    创建新文件

    touch

    默认权限:

    创建的文件默认权限是666。

    注:mkdir创建的目录的默认权限是777。

    文件查找:

    which查找脚本文件

    在任何一个目录,在输入字符后,连续按两次tab键,就可以展示出所有这些字符开头的所有命令,这些命令就是在$PATH环境变量中配置的路径中的。

    如下:

    [root@localhost redis]# redis- 这里连续按两次tab键

    redis-benchmark redis-check-dump redis-server

    redis-check-aof redis-cli

    [root@localhost redis]# which redis-cli

    /usr/local/bin/redis-cli

    which可以展示$PATH中配置的路径下的一个可执行文件在哪个目录中。但是普通的用户使用which找不到root的命令。

    寻找特定文件

    • whereis

    根据文件名或者目录名进行全部匹配,不支持局部匹配。

    [root@localhost share]# whereis mysql

    mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

    可以查询出所有的mysql文件夹和mysql文件(不论任何文件类型)。

    [root@localhost share]# whereis mys

    什么也没找到。

    whereis的速度很快,因为它不是直接扫描硬盘的,而是根据类似于索引的结构来查找的,这个索引可能是过时的,所以可以通过updatedb命令重新生成索引。这个命令在我的电脑上需要几分钟。

    whereis是根据目录树进行查找的,所以可以看到自己有权限看到的所有文件,也能找到/sbin目录下的文件。

    • locate

    locate会扫描目录树,然后将所有局部包含查找字符串的路径都打印出来。locate也是根据目录树索引查找的,速度较快。

    [root@localhost mysql]# locate mys

    /etc/logrotate.d/mysql

    /etc/rc.d/init.d/mysql

    /etc/rc.d/rc0.d/K36mysql

    /etc/rc.d/rc1.d/K36mysql

    /etc/rc.d/rc2.d/S64mysql

    /etc/rc.d/rc3.d/S64mysql

    /etc/rc.d/rc4.d/S64mysql

    /etc/rc.d/rc5.d/S64mysql

    /etc/rc.d/rc6.d/K36mysql

    /etc/selinux/targeted/modules/active/modules/mysql.pp

    /root/.mysql_history

    • find

    find是通过扫描硬盘查找的。

    [root@localhost mysql]# find / -name mysql

    /run/lock/subsys/mysql

    /etc/logrotate.d/mysql

    /etc/rc.d/init.d/mysql

    /var/lib/mysql

    /var/lib/mysql/mysql

    /usr/bin/mysql

    /usr/lib64/mysql

    /usr/share/mysql

    /usr/include/mysql

    /usr/include/mysql/mysql

    /usr/mysql

    [root@localhost mysql]# find /var -name mysql

    /var/lib/mysql

    /var/lib/mysql/mysql

    [root@localhost mysql]# find / -name mys

    找不到

     

    注意:locate和find都不支持正则表达式,但是find支持*和?这种通配符。

    压缩命令

    • gzip zcat 解压压缩单个文件

    [root@localhost usr]# gzip my.cnf

    [root@localhost usr]# ll

    -rw-r--r--. 1 root root 556 6月 6 12:01 my.cnf.gz

    • tar打包目录

    主选项:

    c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。

    x 从档案文件中释放文件。相当于拆包。

    t 列出档案文件的内容,查看已经备份了哪些文件。

    特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。

    辅助选项:

    -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gzxx. tgz

    -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩或解压?一般格式为xx.tar.bz2  

    -v :压缩的过程中显示文件!这个常用

    -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!

    -p :使用原文件的原来属性(属性不会依据使用者而变)

    --exclude FILE:在压缩的过程中,不要将 FILE 打包!

       

    范例:

    范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

    [root@linux ~]# tar -cvf /tmp/etc.tar /etc    <==仅打包,不压缩!

    [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc  <==打包后,以 gzip 压缩

    [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc  <==打包后,以 bzip2 压缩

    [root@linu ~]# tar -zxvf /tmp/etc.tar.gz

     

     

  • 相关阅读:
    [设计模式] 10 外观模式 facade
    [设计模式] 11 享元模式 Flyweight
    [设计模式] 9 装饰者模式 Decorator
    [设计模式] 8 组合模式 Composite
    float2int
    《ASP.NET》数据绑定——GridView
    Android Studio左边栏Project不见了?
    Linux下的五种I/O模型
    Shell编程入门(第二版)(下)
    Android訪问网络,使用HttpURLConnection还是HttpClient?
  • 原文地址:https://www.cnblogs.com/xiaolang8762400/p/7354306.html
Copyright © 2020-2023  润新知