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

 

 

原文地址:https://www.cnblogs.com/xiaolang8762400/p/7354306.html