day3-文件管理

1. Linux系统的目录结构

在Linux中一切皆文件,这些文件按照一定的规则存放在不同的目录当中。为了能够快速找到文件及以后的操作的规范性,我们必须记清楚Linux的目录结构。


CentOS 7 目录结构

Windows:以多跟的方式组织文件 C:\ D:\ E:
Linux:以单跟的方式组织文件 /

1.1 存放命令相关的目录

/bin:普通用户使用的命令。例如:/bin/ls; /bin/date
/sbin:超级管理元使用的命令。例如/sbin/service;/sbin/useradd

[test1@node2 ~]$ useradd jack
-bash: /usr/sbin/useradd: Permission denied
# 普通用户无法使用useradd的命令

1.2存放用户相关的家目录

/home:存放普通用户的家目录。
/root:超级管理员root的家目录,普通用户无操作权限。

每个用户的家目录文件存在着差异,就像Windows一样,不同的用户登陆系统显示的桌面环境是不一样的。

1.3 系统文件目录

/usr:相当于C:\Windows。
/usr/local:软件安装的目录,相当于C:\Program File。
/usr/bin:普通用户使用的应用程序(重要)。
/usr/sbin:超级管理员使用的应用程序(重要)
/usr/lib:库文件Glibc 32bit。若删除可能导致命令不可用。
/usr/lib64:库文件Glibc 64bit。若删除可能导致命令不可用。

1.4 启动目录

/boot:存放的系统启动相关的文件,例如kernel,grub(引导装载程序)等。

[root@node2 ~]# ll /boot | grep vm
-rwxr-xr-x. 1 root root  6639904 Jul 24 23:38 vmlinuz-0-rescue-cc09b6cf7038418bae14d61df6427b48
-rwxr-xr-x. 1 root root  6639904 Nov  9  2018 vmlinuz-3.10.0-957.el7.x86_64
开机引导页面

上图说明/boot目录下有关于开机应道相关的文件。

1.5 配置文件

/etc:配置文件目录。极其重要,后续所有服务的配置文件都在这个目录中。
/etc/sysconfig/network-scripts/ifcfg- :网络配置文件。
/etc/hostname:更改主机名。
/etc/resolv.conf:更改DNS,优先级小于网络配置文件中的DNS。具体格式如下:

[root@node2 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.254
nameserver 114.114.114.114

/etc/hosts:本地域名解析文件。

[root@node2 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.201  www.node.com

测试解析结果

[root@node2 ~]# ping www.node.com
PING www.node.com (10.0.0.201) 56(84) bytes of data.
64 bytes from www.node.com (10.0.0.201): icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from www.node.com (10.0.0.201): icmp_seq=2 ttl=64 time=0.050 ms

1.6 可变项目与临时目录

/var:存放一些可变的文件。例如日志文件,即/var/log/下的文件。
查看登陆到服务器的用户:

[root@node2 log]# cat /var/log/secure
Jul 26 14:55:48 node2 sshd[7342]: Address 10.0.0.1 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Jul 26 14:55:48 node2 sshd[7342]: Accepted password for root from 10.0.0.1 port 60772 ssh2
# 从10.0.0.1就受了一个root的密码。端口为60772
Jul 26 14:55:49 node2 sshd[7342]: pam_unix(sshd:session): session opened for user root by (uid=0)
# 为root用户打开了会话。
Jul 26 14:56:41 node2 sshd[7371]: Address 10.0.0.1 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Jul 26 14:56:45 node2 sshd[7371]: Accepted password for test2 from 10.0.0.1 port 60784 ssh2
# 从10.0.0.1接受了test2的密码。对口好为60784
Jul 26 14:56:45 node2 sshd[7371]: pam_unix(sshd:session): session opened for user test2 by (uid=0)
# 为test2用户打开了一个会话。

/var/tmp:进程产生的临时文件。
/tmp:系统历史目录(类似与公共厕所)

1.7 设备目录文件

/dev:存放设备文件。比如硬盘、分区、光驱、会话终端等。
/dev/sd :硬盘分区及硬盘分区。例如sda sdb sdc4等。

[root@node2 log]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Jul 26 14:06 /dev/sda
brw-rw----. 1 root disk 8, 1 Jul 26 14:06 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jul 26 14:06 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jul 26 14:06 /dev/sda3

/dev/null:黑洞设备,只进不出。
/dev/zero:源源不断的产生数据。

[root@node2 ~]# dd if=/dev/zero of=/opt/test.txt bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 19.7035 s, 54.5 MB/s
[root@node2 ~]# ll -h /opt/test.txt 
-rw-r--r--. 1 root root 1.0G Jul 26 15:30 /opt/test.txt

/dev/random:生产随机数的设备。

[root@node2 ~]# echo $RANDOM
29939
[root@node2 ~]# echo $RANDOM
26472
[root@node2 ~]# echo $RANDOM
22698

1.8 虚拟的文件系统

/proc:反应当前系统正在运行的进程实时状态。
例:

[root@node2 ~]# ps aux | grep httpd
# 查看httpd相关的服务进程
root       7268  0.0  0.5 230408  5228 ?        Ss   14:48   0:00 /usr/sbinhttpd -DFOREGROUND
apache     7272  0.0  0.3 230408  3028 ?        S    14:49   0:00 /usr/sbinhttpd -DFOREGROUND
apache     7273  0.0  0.3 230408  3028 ?        S    14:49   0:00 /usr/sbinhttpd -DFOREGROUND
apache     7274  0.0  0.3 230408  3028 ?        S    14:49   0:00 /usr/sbinhttpd -DFOREGROUND
apache     7275  0.0  0.3 230408  3028 ?        S    14:49   0:00 /usr/sbinhttpd -DFOREGROUND
apache     7276  0.0  0.3 230408  3028 ?        S    14:49   0:00 /usr/sbinhttpd -DFOREGROUND
root       7547  0.0  0.0 112708   976 pts/2    R+   15:42   0:00 grep --color=auto httpd
[root@node2 ~]# ls /proc/7268
# 在/proc中可以查看到这个进程号所对应的文件
attr             cwd       map_files   oom_adj        schedstat  task
autogroup        environ   maps        oom_score      sessionid  timers
auxv             exe       mem         oom_score_adj  setgroups  uid_map
cgroup           fd        mountinfo   pagemap        smaps      wchan
clear_refs       fdinfo    mounts      patch_state    stack
cmdline          gid_map   mountstats  personality    stat
comm             io        net         projid_map     statm
coredump_filter  limits    ns          root           status
cpuset           loginuid  numa_maps   sched          syscall
[root@node2 ~]# systemctl stop httpd
# 停止httpd这个服务
[root@node2 ~]# ls /proc/7268
# 查看不到这个进程所对应的文件
ls: cannot access /proc/7268: No such file or directory

1.9 软连接形式目录

在CentOS7中/bin,/sbin,/lib,/lib64都是以软链接的形式连接到/usr目录下。

[root@node2 ~]# ll / | grep lr
lrwxrwxrwx.   1 root root    7 Jul 24 23:31 bin -> usr/bin
lrwxrwxrwx.   1 root root    7 Jul 24 23:31 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jul 24 23:31 lib64 -> usr/lib64
lrwxrwxrwx.   1 root root    8 Jul 24 23:31 sbin -> usr/sbin

/media:提供设备的挂载点。
/mnt:提供设备的挂载点。
/opt:第三方工具默认的安装目录。比如oracle数据库。
/run:进程运行的pid。

[root@node2 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

2.文件定义

比如: /etc/hostname,整个文件中包含文件名称以及文件所在的位置,我们将这个叫做路径,也就是说我们是通过路径对文件进行定位。
绝对路径:只要是以/开始的命令都算绝对路径。例如:

[root@node2 ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens32

相对路径:相对于当前目录的路径。例如:

[root@node2 sysconfig]# cat network-scripts/ifcfg-ens32 

cd常用参数及说明
cd: 切换目录,例: cd /etc
cd - : 切换回上一次所在的目录
cd ~ : 切换回当前用户的家目录,注意:root和普通用户是否有所不同。
cd . : 代表当前目录,一般在拷贝、移动等情况下使用 cp /etc/hostname ./
cd .. : 切换回当前目录的上级目录

例:

[root@node2 ~]# cd /etc/sysconfig/network-scripts/
# 绝对路径,进入/etc/sysconfig/network-scripts/目录
[root@node2 network-scripts]# cd 
# 回到家目录
[root@node2 ~]# cd -
/etc/sysconfig/network-scripts
#回到上次所在的目录
[root@node2 network-scripts]# cd ~
[root@node2 ~]# cd .
# 到当前目录
[root@node2 ~]# cd ..
# 回到上级目录
[root@node2 /]# 

3. 文件操作

文件操作主要包括文件的创建、复制、移动、删除等
mkdir常用参数及说明

选项 解释
-p 递归创建目录

创建一个名称为haha目录

[root@node2 ~]# mkdir haha

同时创建多个目录

[root@node2 ~]# mkdir hehe xixi lala

创建dir-1到dir-50的目录

[root@node2 ~]# mkdir dir-{1..50}

利用{ }灵活创建目录

[root@node2 ~]# mkdir -p /opt/{bin,logs,conf}/test 
[root@node2 ~]# tree /opt
/opt
├── bin
│   └── test
├── conf
│   └── test
└── logs
    └── test

touch命令
创建一个名为test.txt的文件

[root@node2 ~]# touch test.txt

mv命令
把test.txt移动到dir-1目录中

[root@node2 ~]# mv test.txt dir-1/

把dir-1中的test.txt移动到dir-2目录下,并重命名为test2.txt

[root@node2 ~]# mv dir-1/test.txt dir-2/test2.txt

把test2.txt重命名为test3.txt

[root@node2 dir-2]# mv test2.txt test3.txt

把dir-1、dir-2 和 dir-3 移动到 dir-4 中

[root@node2 ~]# mv dir-1 dir-2 dir-3 dir-4
[root@node2 ~]# ll dir-4
total 0
drwxr-xr-x. 2 root root  6 Jul 26 17:03 dir-1
drwxr-xr-x. 2 root root 23 Jul 26 17:08 dir-2
drwxr-xr-x. 2 root root  6 Jul 26 16:54 dir-3

rm常用参数及说明

选项 解释
-f 强制删除,没有提示
-r 递归删除,删除目录时必须加r

强制删除test3.txt

[root@node2 dir-2]# rm -f test3.txt 

删除目录

[root@node2 dir-4]# rm  dir-1
rm: cannot remove ‘dir-1’: Is a directory
# 不加-r选项,删除失败
[root@node2 dir-4]# rm -r  dir-1
rm: remove directory ‘dir-1’? y

删除所有以 dir-开头的目录

[root@node2 ~]# rm -rf dir-*
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 对文件或目录的创建 复制 移动 删除 编辑 查找 等待.. 1.linux系统的目录结构 树状结构 window...
    生活一场戏而已_b526阅读 2,540评论 3 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,271评论 0 10
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 10,814评论 0 9
  • 一文件系统目录结构 /bin:普通用户使用的命令 /sbin:管理员使用的命令 /home:普通用户的家目录 /r...
    陌离_62d7阅读 1,544评论 0 1
  • 一、Linuxd 的系统目录结构 Windows: 以多根的方式组织文件 C:/ D:/ F:/ E:/ Linu...
    曾努力阅读 1,288评论 0 1

友情链接更多精彩内容