Linux目录结构文件属性及高频操作命令

Posted 孔子-说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux目录结构文件属性及高频操作命令相关的知识,希望对你有一定的参考价值。

目录

1、Linux简介

2、Linux 和 windows 系统区别

3、Linux 的目录结构

3.1 系统启动相关的目录(boot、etc、lib、sys)

3.2 指令集合目录(bin、sbin)

3.3 外部文件管理目录(dev、media、mnt)

3.4 临时文件目录(run、lost+found、tmp)

3.5 账户目录(root、home、usr)

3.6 运行过程中要用的目录(var、proc)

3.7 扩展用的目录(opt、srv)

3.8 其他目录(selinux)

4、Linux 文件基本属性

5、Linux 高频操作命令简介

5.1 新建命令

5.2 查看命令

5.3 删除命令

5.4 复制命令

5.5 移动命令

5.6 重命名命令

5.7 压缩解压命令

5.8 上传文件工具命令

5.9 ln、file和touch命令

5.10 查找操作命令

5.11 sudo命令


1、Linux简介

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

现在市面上广泛使用的是 Linux 的发行版,所谓的 Linux 的发行版就是将 Linux(内核)与应用软件做一个打包,可供用户安装和配置。比较知名的发行版有:UbuntuRedHatCentOS 等等。

2、Linux 和 windows 系统区别

Linux和Windows区别
LinuxWindows
是否收费开源免费收费
软件资源大部分软件免费,同样功能的软件选择较少软件资源丰富,大部分都需要购买授权
技术支持主要是字符模式,命令行界面主要为图形化界面
稳定性更加稳定相对不稳定,易崩溃卡死
安全性发行版本较多,难集中攻击树大招风,更容易被攻击

3、Linux 的目录结构

Linux文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就构成了一个庞大的文件系统。

登录系统后,在当前命令窗口下输入命令ls / ,可以看到linux最上层根主目录的情况,在这些目录的下一层是子目录或文件,如下图所示:

linux的树状目录结构

图中最上层的表示Linux文件系统的上层根目录。以下按功能作用分别介绍各子目录:

3.1 系统启动相关的目录(boot、etc、lib、sys)

3.1.1 /boot

启动目录,存放引导系统启动的内核文件,包括启动 Linux 时使用的一些核心文件、连接文件以及镜像文件。

3.1.2 /etc

etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录,更改该目录下的文件可能会导致系统不能启动

  1. /etc/cron.d:用于存储cron进程调度运行后台进程所用的配置和控制文件。其他目录包括/etc/crontab文件定义的cron.hourly、cron.daily、cron.weekly和cron.monthly等四个目录。
  2. /etc/cups:用于存储通用UNIX打印系统(Commom UNIX Printing System,CUPS)使用的各种配置文件。
  3. /etc/default:其中的文件用于提供部分工具软件(如useradd程序)使用的变量及其默认值。
  4. /etc/httpd:Apache配置文件的根目录。Apache是一个通用的、高性能的HTTP服务器,也是世界上最流行的Web服务器。Apache采用模块化的设计方式,支持运行时的动态模块选择、虚拟主机,以及服务进程数量的动态调整等。
  5. /etc/init.d:用于存储进入相应运行级时需要由init调度执行的脚本文件。在Fedora Linux系统中,这只是一个符号链接文件,实际的目录应为/etc/rc.d/init.d。
  6. /etc/ipsec.d:用于存储IPSee使用的配置文件等。
  7. /etc/kde:其中含有部分KDE初始化文件和KDM配置文件。
  8. /etc/pki:用于存储各种密匙,如用于安装软件包的密匙等。
  9. /etc/ppp:用于存储PPP的脚本和配置文件。
  10. /etc/profile.d:用于存储/etc/profile等使用的辅助初始化文件,如lang.sh脚本文件等。
  11. /etc/rc.d:用于存储进入相应运行级是由init进程调度执行的脚本文件。其中含有init.d和rcN.d等子目录(其中的N为0、1、2、3、4、5和6,表示系统的运行级)。
  12. /etc/samba:Samba配置文件的根目录。Samba是一个网络共享软件的总称,Linux系统中实现的SMB协议,允许Linux系统为Windows系统提供文件和打印共享服务。
  13. /etc/security:用户存储的基本安全控制文件,包括注册控制文件、控制访问控制文件,以及资源限制控制文件等。
  14. /etc/selinux:SElinux(Security Enhanced Linux,由美国国家安全部(National Security Agency)领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击,据称相当于B1级的军事安全性能。比MSNT所谓的C2等高得多。应用SELinux后,可以减轻恶意攻击或恶意软件带来的灾难,并提供对机密性和完整性有很高要求的信息很高的安全保障。)配置文件的根目录。
  15. /etc/skel:其中存有默认的初始化文件,如.bash_logout、.bash_profile、.bashrc、.emacs、.kde和.zshrc等。每当新增一个新用户时,系统将会把其中的部分初始化文件复制到用户的主目录中。注意:上述文件均为隐藏文件。(即以“.“开头的文件名)
  16. /etc/ssh:这个目录含有系统配置过程,以及系统引导过程中需要用到的各种配置文件,也是chkconfig维护的各种后台服务进程配置文件的根目录。例如,其中的clock文件包含系统的时区设置,keyboard文件包含键盘的类型定义,init文件包含系统引导过程使用的参数定义等。
  17. /etc/tomcat5:tomcat的根目录
  18. /etc/vsftpd:包含FTP服务器的配置文件,其中包括vsftpd.conf、ftpusers和user_list等重要文件。
  19. /etc/xinetd.d:其中包含xinetd服务进程控制的所有传统网络服务使用的配置文件,尤其包含telnet等网络应用的配置文件。在Linux系统中,原有的inetd已由功能更强的xinetd服务进程取代,原有的inetd.conf配置文件也由xinetd.d目录中的一系列单独的配置文件取代。
  20. /etc/yum:其中包含yum软件更新工具使用的配置文件。
  21. /etc/yum.repos.d:其中包含每个软件仓库的配置文件。

3.1.3 /lib

lib 是 Library(库) 的缩写,主要存放着系统最基本的动态连接共享库(比如c++库),其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

3.1.4 /sys

Linux2.6 内核的一个很大的变化,该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

  • 该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

3.2 指令集合目录(binsbin

3.2.1 /bin

bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令,如vi,su等,是普通用户就可以读取的命令。常用的命令有:cp、dmesg、kill、login、rm、ping、chomd、bash、cat、echo、ls、 mail、vi等。

3.2.2 /sbin

s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放着只有系统管理员才能使用的系统管理程序(需要具有相关权限的用户才能使用)。

  • 目录/sbin、/usr/sbin和/usr/local/sbin存放了该目录启动系统时需执行的程序,如管理工具、应用软件和通用的根用户权限命令等内容。如包含getty、init、update。

3.3 外部文件管理目录(dev、media、mnt)

3.3.1 /dev

Device(设备) 的缩写,存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

3.3.2 /media

类windows的其他设备,例如U盘、光驱等等,linux 系统会自动识别这些设备,当识别后,Linux 会把识别的设备挂载到这个目录下。

3.3.3 /mnt

系统提供该目录是为了让用户临时挂载别的文件系统的,例如我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

3.4 临时文件目录(run、lost+found、tmp)

3.4.1 /run

是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

3.4.2 /lost+found

一般情况下为空的,系统非法关机后,这里就存放一些文件。

3.4.3 /tmp

tmp 是 temporary(临时) 的缩写,这个目录是用来存放一些临时文件的。

3.5 账户目录(root、home、usr)

3.5.1 /root

该目录为系统管理员的用户主目录,也称作超级权限者的用户主目录,主要存放root用户的相关文件。(在Linux系统中,斜杠字符“/”是整个系统的根目录,而非超级用户的主目录)

3.5.2 /home

用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,主要存放普通用户的相关文件。

3.5.3 /usr

usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  1. /usr/X11R6:存放X-Windows的目录。
  2. /usr/bin:系统用户使用的应用程序与指令。
  3. /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  4. /usr/doc:这就是Linux文档的大本营.
  5. /usr/include:Linux下开发和编译应用程序需要的头文件在这里找.
  6. /usr/lib:存放一些常用的动态链接共享库和静态档案库.
  7. /usr/local:这是提供给一般用户的/usr目录,在这安装软件最适合.
  8. /usr/man:是帮助文档目录.
  9. /usr/src:内核源代码默认的放置目录(Linux开放的源代码就存在这个目录),爱好者们别放过哦!
  10. /usr/X11R6:存放X-Windows的目录;
  11. /usr/games:存放着XteamLinux自带的小游戏;
  12. /usr/bin:用户和管理员的标准命令;
  13. /usr/sbin:存放root超级用户使用的管理程序;
  14. /usr/doc:Linux技术文档;
  15. /usr/include:来存放Linux下开发和编译应用程序所需要的头文件,for c 或者c++;
  16. /usr/lib:应用程序和程序包的连接库;
  17. /usr/local:系统管理员安装的应用程序目录;
  18. /usr/man:帮助文档所在的目录;
  19. /usr/src:Linux开放的源代码;
  20. /usr/share:用于存放一些共享的数据,比如音乐文件或者图标等等

3.6 运行过程中要用的目录(var、proc)

3.6.1 /var

var 是 variable(变量) 的缩写,这个目录中存放着在不断变化的文件,我们习惯将那些经常被修改的目录/数据放在这个目录下,比如程序运行的日志文件(/var/log 目录下)、计划性任务和邮件等内容。

  1. /var/cache:应用程序缓存目录;
  2. /var/crash:系统错误信息;
  3. /var/games:游戏数据;
  4. /var/log:日志文件;
  5. /var/mail:电子邮件;
  6. /var/tmp:临时文件目录;

3.6.2 /proc

proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,主要管理内存空间。

该目录是虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

  • /proc/net:其中的文件分别表示各种网络协议(如TCP、UDP以及ARP等)的状态与统计信息。
  • /proc/sys:这个目录不仅存有各种系统信息,而且也包含系统内核与TCP/IP网络的可调参数。其中的kernel子目录含有共享内存和消息队列的可调参数,net子目录中含有TCP/IP的各种可调参数。例如,shmmax文件中含有系统的最大共享内存定义,如果使用“echo somevalue > /proc/sys/kernel/shmmax”命令,可以直接修改运行系统的内核参数,而无需重新引导系统。这一做法要谨慎,有的文件可能包含多个数值,或不同类型的数值,因此,在修改以前一定要弄清参数的意义和实际的数值。为了在每次启动系统时都能使用定制的系统可调参数,可以设置sysctl.conf配置文件,或编写自己的Shell启动脚本。

3.7 扩展用的目录(opt、srv)

3.7.1 /opt

opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

3.7.2 /srv

该目录存放一些服务启动之后需要提取的数据(不用服务器就是空)

3.8 其他目录(selinux)

3.8.1 /selinux

这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

注意:在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

  • /etc: 是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。其中/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

4、Linux 文件基本属性

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。

从左至右用 0-9 这些数字来表示。

  • 第 0 位确定文件类型;
  • 第1-3 位确定属主(该文件的所有者)拥有该文件的权限;
  • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限;
  • 第7-9位确定其他用户拥有该文件的权限;
  • 其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
  • 第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;
  • 第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

5、Linux 高频操作命令简介

在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 .. 来表示。

  • 根目录:目录的最高层,所有文件都在根目录下面;
  • 家目录:在/home/用户名里面(root用户的家目录不在home里面,而在/root),在任意目录下通过cd ~ 命令可以直接进入家目录。
  • 当前目录:. 代表当前的目录,也可以使用 ./ 来表示;
  • 上层目录:.. 代表上一层目录,也可以 ../ 来代表。
  • 隐藏目录或文件:如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。以默认方式查找时,不显示该目录或文件。
  • 绝对路径:由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:不是由 / 写起,如从 /usr/share/doc 跳到 /usr/share/man 目录时,可写成: cd ../man。

5.1 新建命令

mkdir abc #新建一个文件夹
touch abc.sh #新建一个文件
echo "abc" > test.txt #新建一个文件,并将abc写入。这里用到了重定向符

5.2 查看命令

  • 1)查看目录
ll #显示目录文件详细信息
du -h 文件/目录  #查看大小
pwd #显示路径
  • 2)查看文件内容 cat|head|tail命令
cat abc.txt #查看abc的内容
head -5 abc.txt #查看abc前5行内容。默认是10行

tail [选项] 文件名
各选项的含义如下:
+num:从第num行以后开始显示
-num:从距文件尾num行处开始显示。如果省略num参数,系统默认值为10.
-f: 循环读取,例如查看服务器日志时,可以实时观察
#filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新。
tail -f filename 
#查看最后20行
tail -f filename
  •  3)查看文件内容 more命令
more命令一次显示一屏信息,若信息未显示完屏幕底部将出现“-More-(xx%)”。

此时按Space键,可显示下一屏内容;

按“回车”键,显示下一行内容;

按B键,显示上一屏;

按Q键,可退出more命令。

如:显示文件中从第3行起的内容命令:  more +3 log2012.log
  • 4)less命令:和more命令类似,但是比more命令更强大。在很多时候,必须使用less,比如管道。例如:
ll /etc | less
  • 5)查看状态或文件类型:stat 命令:查看文件的详细信息,比如创建修改时间,大小等。
[root@localhost zx]# stat index.html 
  文件:"index.html"
  大小:29006     	块:64         IO 块:4096   普通文件
设备:fd00h/64768d	Inode:17589607    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:home_root_t:s0
最近访问:2019-09-02 21:47:41.824053666 +0800
最近更改:2019-09-02 21:44:33.588587500 +0800
最近改动:2019-09-02 21:44:33.588587500 +0800
创建时间:-

  • 6)file命令: Linux中后缀并没有实际约束意义。
file test.txt #查看test.txt的文件类型
  • 7)du 命令:选项:-h 以合适的单位显示(会根据文件的大小自动选择kb或M等单位)
[root@localhost zx]# du -h index.html 
32K	index.html

5.3 删除命令

rm -f  aa.txt #强制删除aa.txt
rm -rf fileDir #强制删除fileDir文件夹和里边的所有文件

5.4 复制命令

1)同一机器的复制

cp:复制文件或目录
语法:
cp [options] source dest

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

举例:
#将../html/index.html 复制到当前目录
cp ../html/index.html .    
#将../html/ 目录下的文件及子目录复制到当前的tt目录下,如果tt不存在,会自动创建
cp -r ../html/  tt/       
#将文件file复制到目录/usr/men/tmp下,并改名为file1
cp file /usr/men/tmp/file1  
    
#如果dir2目录已存在,则需要使用
cp -r dir1/. dir2
#如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求。
ps:dir1、dir2改成对应的目录路径即可。

2)远程复制(不同机器)

#将当前目录下的test.txt复制到远程111.12机器的/zx目录下
scp test.txt root@192.168.111.12:/zx

#将test.txt复制到远程用户的根目录,并命名为textA.txt
scp test.txt root@192.168.111.12:testA.txt

#也可以不指定用户,在后续提示中再输入,如下:
scp test.txt 192.168.111.12:/zx

#从远程复制到本地: -r用于递归整个目录
scp -r remote_user@remote_ip:remote_folder local_path

5.5 移动命令

移动操作可以理解成复制文件后,删除原文件。

mv /zx/soft/* . #复制/zx/soft目录中的所有文件到当前目录
mv a.txt ./test/a.txt  #复制当前目录a.txt到当前的test目录下。
mv a.txt ./test/ -f  #移动到test目录,如果存在就覆盖
mv /zx/soft/  /tmp/soft  #复制文件夹到/tmp/下,必须保证tmp是存在的文件夹

5.6 重命名命令

重命名还是用的移动操作命令。

#将目录(文件)A重命名为B
mv A B
#将/a目录(文件)移动到/b下,并重命名为c。要保证b目录存在。
mv /a /b/c
#将当前test1目录移动到当前的test目录并命名为b
mv ./test1 ./test/b 

5.7 压缩解压命令

tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

三、举例说明:
tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar
eg2:
    tar -xzf nginx-1.14.0.tar.gz //解压到当前目录
    tar -zxf nginx-1.14.0.tar.gz -C /usr/local/nginx  #解压到对应目录
 eg3:
 	tar -zxvf nginx...tar.gz #解压并显示过程
 	
注意:有些压缩程序提示命令找不到,需要进行安装,例如:
yum install unzip
或在ubuntu上:
apt-get install unzip

四、总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压  

解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数
unzip -n test.zip
unzip -n -d /temp test.zip
只看一下zip压缩包中包含哪些文件,不进行解压缩
unzip -l test.zip
查看显示的文件列表还包含压缩比率
unzip -v test.zip
检查zip文件是否损坏
unzip -t test.zip
如果已有相同的文件存在,要求unzip命令覆盖原先的文件
unzip -o test.zip -d /tmp/
示例:
 eg1:  unzip mydata.zip -d mydatabak #解压到mydatabak目录
 eg2 :zip -r xxx.zip ./*  #压缩当前目录下的内容为一个xxx.zip
 eg3: zip xx.zip  a.txt b.txt c.txt #将abc三个文件压缩为xx.zip
10. xz
	这是两层压缩,外面是xz压缩方式,里层是tar压缩,所以可以分两步实现解压
	$ xz -d node-v6.10.1-linux-x64.tar.xz
    $ tar -xvf node-v6.10.1-linux-x64.tar

5.8 上传文件工具命令

从本地windows上传一些文件到远程Linux服务器可以通过xshell的xftp也可以通过下面这个小工具lrzsz,使用更加方便。

yum install lrzsz #安装工具

常用命令:
sz dist.zip #下载文件dist.zip到本地
rz #会打开窗口,上传文件到远程服务器

5.9 ln、file和touch命令

  • 1)ln命令:名用于创建链接文件,包括硬链接(Hard Link)和符号链接(Symbolic Link) 。我们常用的是符号链接,也称软连接。软连接就类似windows里的快捷方式。
#在当前目录创建一个软连接,指向/etc/fastab,名称也是fastab
ln -s /etc/fastab

#在当前目录创建一个指向/boot/grub的软连接,命名为gb
ln -s /boot/grub gb

注意:删除软连接 正确方式是:rm -rf ./gb ; 错误方式: rm -rf ./gb/ , 这样会删除了原有grub下的内容。特别是针对系统文件的软连接,删除一定要慎重。

  • 2)file命令用于识别文件的类型,Linux中文件后缀只是方便使用者识别,没有实质的约束作用。file命令可以查看文件的实质类型:
file [-bcLz] 文件|目录

选项说明:

文件|目录:需要识别的文件或目录
-b: 显示识别结果时,不显示文件名
-c: 显示执行过程
-L: 直接显示符号链接文件指向的文件类型
-z: 尝试去解读压缩文件的内容


示例: 可以看出,index.mp4本质是一个HTML而非一个mp4文件
[root@VM_0_13_centos soft]# file index.mp4 
index.mp4: HTML document, UTF-8 Unicode text, with very long lines
  • 3)touch命令: 用于改变文件或目录的访问时间和修改时间。 
touch [-am] [-t<日期时间>] [目录|文件]

选项说明:

-a: 只修改访问时间
-m : 只修改 修改时间
-t : 使用指定日期时间,而非系统时间 。例如要修改为2019年10月20日16:38分13秒。参数就是:‘20191020163813’


如果指定目录文件不存在,则会直接创建一个空文件,所以touch也常用来创建一个空白文件。

示例:
#创建一个新文件aa.txt
touch aa.txt

# 将index.html文件的访问和修改时间修改成当前系统的时间。
# 修改之前可以先查看文件的时间戳: 用stat 命令查看
touch index.html

5.10 查找操作命令

对于要用到的文件,目录等,经常有忘记的时候,所以查找命令就显得极为必要:

  • 1)find: 查找文件或目录 (常用)
find [目录…] [-amin <分钟>] [-atime <24小时数>] [-cmin <分钟>] [-ctime<24小时数>][-empty][-exec<执行命令>][-fls<列表文件>][-follow]
    [-fstype <系统文件类型>] [-gid <组编号>] [-group <组名称>] [-nogroup] [-mmin <分钟>]  [-mtime
    <24小时数>] [-name <查找内容>] [-nogroup] [-nouser] [-perm <权限数值>] [-size <文件大小>] [-uid
    <用户编号>] [-user <用户名称>] [-nouser]

几个常用选项说明:

  • -size <文件大小>:查找符合指定大小的文件。文件大小单位可以是“c”表示Byte;“k”表示KB。如配置为“100k”,find命令会查找文件大小正好100KB的文件;配置为“+100k”,find命令会查找文件大小大于100KB的文件;配置为“-100k”,find命令会查找文件大小小于100KB的文件。
  • -user<用户名称>:查找所有者是指定用户的文件或目录,也能以用户编号指定
  • -name <查找内容>:查找指定的内容,在查找内容中使用“*” 表示任意个字符;使用“?”表示任何一个字符
  • -mtime <24小时数>:查找在指定时间曾更改过内容的文件或目录,单位以24小时计算。如配置为2,find命令会查找刚好在48小时之前更改过内容的文件;配置为+2,find命令会查找超过在48小时之前更改过内容的文件;配置为-2,find命令会查找在48小时之内更改过内容的文件。
  • -mmin <分钟>:查找在指定时间曾被更改过内容的文件或目录,单位以分钟计算。
  • cmin <分钟>:查找在指定时间曾被更改过权限属性的文件或目录,单位以分钟计算。-ctime对应小时。
  • -amin <分钟>:查找的是指定时间访问过的文件或目录。-atim对应小时。
  • -perm <权限数值>:查找符合指定权限数值(有关权限数值见第6章)的文件或目录。如配置为“0700”,find命令会查找权限数值正好是“0700”的文件或目录;配置为“+0700”,find命令会查找权限数值大于 “0700”的文件或目录;配置为“-0700”,find命令会查找权限数值小于 “0700”的文件或目录;

find选项大概有以下几类:

  • 1.按时间范围查找
  • 2.按文件大小查找
  • 3.按文件名称查找
  • 4.按其他:比如权限、用户组、类型等
#从根目开始,查找名称以nginx开头的目录和文件
find / -name nginx*  

#查找文件大小超过100M的文件
find / -size +100M

#查找/home/zx目录下,10分钟内被修改过的文件和目录
find /home/zx/  -mmin -10
  • 2)locate: 查找文件或目录(不常用)
locate 查找内容

例如:locate nginx 会将所有包含nginx的目录和文件都列出来。可以用* 或?等匹配符。

locate的查找速度非常快,因为该命令查找的是数据库,所以有些刚修改的文件和目录,可能无法找到。可以采用:updatedb 命令更新数据库。

  • 3)which: 查找文件(不常用)

which [文件], which命令只会在PATH环境变量定义的路径及命令别名中查找,所以范围有限。

  • 4)whereis : 查找文件(不常用)
whichis [-bu] [-B<目录>] [-M<目录>] [-S<目录>] [文件]
常用选项:

文件:要查找的命令

-b: 只查找二进制文件

-u: 查找不包含指定类型的文件

-B<目录>: 只在指定目录下查找二进制文件

-M<目录>:只在指定目录查找帮助文件

-S<目录>:只在指定目录查找源码目录

例如: 默认只会在指定目录查找(/bin ,/etc ,/usr)
[root@VM_0_13_centos soft]# whereis nginx
nginx: /usr/local/nginx /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

5.11 sudo命令

sudo 表示 “superuser do”。 它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令。

使用权限:在 /etc/sudoers 中有出现的使用者。

# 以root权限执行上一条命令
$ sudo !!

# 以特定用户身份进行编辑文本
# 以 uggc 用户身份编辑  home 目录下www目录中的 index.html 文件
$ sudo -u uggc vi ~www/index.html
# 以root用户身份创建文件夹
sudo mkdir demo1

# 列出目前的权限
sudo -l

# 列出 sudo 的版本资讯
sudo -V

# 显示sudo设置
sudo -L 

# 普通用户切换到root用户下
sudo -i

# root用户切换到普通用户下
su testuser

例子:

ubuntu@xnzysq20210118001:/home$ ls
b  kz  test  ubuntu

# 创建目录demo失败
ubuntu@xnzysq20210118001:/home$ mkdir demo
mkdir: cannot create directory ‘demo’: Permission denied

# 以root权限执行上一条命令,创建目录demo成功
ubuntu@xnzysq20210118001:/home$ sudo !!
sudo mkdir demo
ubuntu@xnzysq20210118001:/home$ ls
b  demo  kz  test  ubuntu

# sudo命令以root权限创建目录demo1成功
ubuntu@xnzysq20210118001:/home$ sudo mkdir demo1
ubuntu@xnzysq20210118001:/home$ ls
b  demo  demo1  kz  test  ubuntu

# 普通用户切换到root用户下
ubuntu@xnzysq20210118001:/home$ sudo -i
root@xnzysq20210118001:~# 

# root用户切换到普通用户下
root@xnzysq20210118001:~# su ubuntu
ubuntu@xnzysq20210118001:/root$

以上是关于Linux目录结构文件属性及高频操作命令的主要内容,如果未能解决你的问题,请参考以下文章

linux运维常用命令汇总

Linux系统常用操作命令都有哪些

0002 嵌入式开发带你从小白到大佬系列之——Linux文件系统常用文件操作命令及用户权限

Linux系统下的文件管理类常命令及使用方式

LINUX文件及目录管理命令基础

Linux:文件及目录管理命令基础