Linux系统——文件目录管理操作
一、命令提示符的格式
ctrl + shift + “+” , 调大字体
ctrl + “-” 缩小字体
- 命令提示符的格式
[root@localhost ~]#
[用户名@主机名 当前目录] 身份标识符
身份标识符:
# 管理员
$ 普通用户
当前目录:
~ 当前用户的家目录
- 切换用户的命令
[root@localhost ~]# su - martin
上一次登录:五 9月 27 09:16:37 CST 2024pts/0 上
[martin@localhost ~]$
[martin@localhost ~]$
[martin@localhost ~]$ exit
登出
- 查看当前登录系统的用户
[root@localhost ~]# whoami
root
[root@localhost ~]# su - martin
上一次登录:五 9月 27 09:21:16 CST 2024pts/0 上
[martin@localhost ~]$
[martin@localhost ~]$ whoami
martin
[martin@localhost ~]$
[martin@localhost ~]$ exit
登出
- 查看、修改主机名
[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostnamectl set-hostname node01
[root@localhost ~]# hostname
node01
- 查看当前目录
[root@node01 ~]# pwd
/root
[root@node01 ~]#
[root@node01 ~]# su - martin
上一次登录:五 9月 27 09:22:03 CST 2024pts/1 上
[martin@node01 ~]$
[martin@node01 ~]$ pwd
/home/martin
二、切换目录、查看文件
1、切换目录、查看目录
# cd [目录名称]
[root@node01 ~]# pwd
/root
[root@node01 ~]#
[root@node01 ~]# cd /etc/
[root@node01 etc]# pwd
/etc
[root@node01 etc]# cd /home/
[root@node01 home]# pwd
/home
[root@node01 home]# cd /etc/sysconfig/
[root@node01 sysconfig]# pwd
/etc/sysconfig
[root@node01 sysconfig]# cd ..
[root@node01 etc]# pwd
/etc
[root@node01 etc]# cd ..
[root@node01 /]# pwd
/
- 支持按tab键补全
[root@node01 /]# cd /etc/sysconfig/
[root@node01 sysconfig]#
[root@node01 sysconfig]# cd
[root@node01 ~]#
[root@node01 ~]# pwd
/root
[root@node01 ~]#
[root@node01 ~]# cd /dev/
[root@node01 dev]# pwd
/dev
[root@node01 dev]# cd
[root@node01 ~]# pwd
/root
- 绝对路径, /etc, /etc/sysconfig
- 相对路径, 相对于当前目录
[root@node01 /]# cd etc/
[root@node01 etc]# cd sysconfig/
[root@node01 sysconfig]# pwd
/etc/sysconfig
2、查看目录下的文件
# ls [选项] [目录名称]
- 查看当前目录的文件
[root@node01 ~]# pwd
/root
[root@node01 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@node01 ~]#
[root@node01 ~]#
[root@node01 ~]# cd /boot/
[root@node01 boot]# pwd
/boot
[root@node01 boot]# ls
config-3.10.0-1160.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-84faae06b9db47f58cdea28d49806099.img
initramfs-3.10.0-1160.el7.x86_64.img
initramfs-3.10.0-1160.el7.x86_64kdump.img
symvers-3.10.0-1160.el7.x86_64.gz
System.map-3.10.0-1160.el7.x86_64
vmlinuz-0-rescue-84faae06b9db47f58cdea28d49806099
vmlinuz-3.10.0-1160.el7.x86_64
- 查看指定目录下的文件
[root@node01 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
[root@node01 ~]# ls /var/log/
2.1 常用选项
- -a
查看所有文件
// Linux系统以.点开头的文件,为隐藏文件
[root@node01 ~]# ls -a
. .bash_history .bashrc .cshrc .ICEauthority .tcshrc 模板 文档 桌面
.. .bash_logout .cache .dbus initial-setup-ks.cfg .Xauthority 视频 下载
anaconda-ks.cfg .bash_profile .config .esd_auth .local 公共 图片 音乐
- -l -h
查看文件的详细信息
-h 显示容量单位
[root@node01 ~]# ls -l -h
总用量 8.0K
-rw-------. 1 root root 2.2K 9月 27 10:45 anaconda-ks.cfg
anaconda-ks.cfg: 文件名
9月 27 10:45: 文件最近一次修改时间
2.2K: 大小
rw-------. 1 root root:权限
第1个字符:文件类型
-: 普通文件
d: 目录
c: 字符设备文件、键盘、鼠标、显示器、打印机【顺序读写】
b: 块设备文件、硬盘、分区、U盘、光盘【随机读写】
l: 软链接/符号链接,类似于快捷方式
查看文件/etc/fstab的权限
[root@node01 ~]# ls -lh /etc/fstab
[root@node01 ~]# ls -l /etc/shadow
[root@node01 ~]# ls -lh /home/
[root@node01 ~]# ls -lh /tmp/
- -d 显示目录的详细信息
[root@node01 ~]# ls -ldh /etc/
drwxr-xr-x. 147 root root 8.0K 9月 27 09:27 /etc/
- S 按文件大小排序显示
[root@node01 ~]# ls -lhS /boot/
总用量 137M
-rw-------. 1 root root 77M 9月 26 14:50 initramfs-0-rescue-84faae06b9db47f58cdea28d49806099.img
-rw-------. 1 root root 31M 9月 26 14:53 initramfs-3.10.0-1160.el7.x86_64.img
-rw-------. 1 root root 14M 9月 26 15:20 initramfs-3.10.0-1160.el7.x86_64kdump.img
- t 按文件修改时间排序显示
[root@node01 ~]# ls -lht /boot/
总用量 137M
-rw-------. 1 root root 14M 9月 26 15:20 initramfs-3.10.0-1160.el7.x86_64kdump.img
drwx------. 5 root root 97 9月 26 14:53 grub2
-rw-------. 1 root root 31M 9月 26 14:53 initramfs-3.10.0-1160.el7.x86_64.img
3、查看文件、目录占用的硬盘空间
// 统计文件大小
[root@node01 ~]# du -h /etc/fstab
4.0K /etc/fstab
[root@node01 ~]# du -h /boot/vmlinuz-3.10.0-1160.el7.x86_64
6.5M /boot/vmlinuz-3.10.0-1160.el7.x86_64
// 统计目录大小
[root@node01 ~]# du -sh /etc/
46M /etc/
[root@node01 ~]#
[root@node01 ~]# du -sh /boot/
153M /boot/
// 统计/boot目录下所有文件大小
[root@node01 ~]# du -ah /boot/
4.0K /boot/efi/EFI/centos/BOOT.CSV
4.0K /boot/efi/EFI/centos/BOOTX64.CSV
1.2M /boot/efi/EFI/centos/MokManager.efi
1.2M /boot/efi/EFI/centos/mmx64.efi
1.2M /boot/efi/EFI/centos/shim.efi
1.2M /boot/efi/EFI/centos/shimx64-centos.efi
三、创建、删除文件目录
3.1 创建空白文件
# touch 文件名称
[root@node01 ~]# touch /opt/file01
[root@node01 ~]# ls /opt/
file01 rh
[root@node01 ~]# ls -l /opt/file01
-rw-r--r--. 1 root root 0 9月 27 14:05 /opt/file01
3.2 创建目录
# mkdir 目录名称
[root@node01 ~]# mkdir /opt/work
[root@node01 ~]# ls -ldh /opt/work/
drwxr-xr-x. 2 root root 6 9月 27 14:07 /opt/work/
常用选项: -p 递归创建目录
[root@node01 ~]# mkdir -p /opt/db/redis
[root@node01 ~]# mkdir -pv /opt/web/nginx
mkdir: 已创建目录 "/opt/web"
mkdir: 已创建目录 "/opt/web/nginx"
3.3 大括号展开、命令引用
3.3.1 大括号展开
[root@node01 ~]# touch /opt/db/{1..10}.sql
[root@node01 ~]# touch /opt/db/{a..z}.sql
[root@node01 ~]# touch /opt/db/{bj,sh,wh}.sql
3.3.2 命令引用 $(命令)
调用命令的结果,命令引用
查看系统时间
[root@node01 ~]# date
2024年 09月 27日 星期五 14:21:17 CST
[root@node01 ~]#
[root@node01 ~]# date +%Y
2024
[root@node01 ~]# date +%m
09
[root@node01 ~]# date +%d
27
[root@node01 ~]# date +%H
14
[root@node01 ~]# date +%M
22
[root@node01 ~]# date +%S
37
[root@node01 ~]# date +%H_%M_%S
14_23_21
[root@node01 ~]# date +%F
2024-09-27
[root@node01 ~]# date +%T
14:23:55
[root@node01 ~]# date +%F_%T
2024-09-27_14:24:11
- $(命令)
[root@node01 ~]# touch /opt/web_$(date +%F_%T)
[root@node01 ~]# ls /opt/
a a.jpg db file01 rh web web_2024-09-27_14:26:51 work
- 反引号
命令
[root@node01 ~]# touch /opt/`date +%F`
[root@node01 ~]# ls /opt/
2024-09-27
3.4 删除文件目录
[root@node01 ~]# rm /opt/file01
rm:是否删除普通空文件 "/opt/file01"?y
删除目录: -r
[root@node01 ~]# rm -r /opt/work/
rm:是否删除目录 "/opt/work/"?y
[root@node01 ~]# rm -rf /opt/web
四、查看文件内容
4.1 cat
# cat 文件名称
[root@node01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
// 查看主机名配置文件
[root@node01 ~]# cat /etc/hostname
node01
// 查看系统版本
[root@node01 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
- 查看内核版本
[root@node01 ~]# uname -r
3.10.0-1160.el7.x86_64
[root@node01 ~]# uname -a
Linux node01 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
4.2 more/less 分页显示文件内容
[root@node01 ~]# more /usr/share/dict/words
[root@node01 ~]# less /usr/share/dict/words
4.3 head/tail
- head
默认显示文件的前10行内容
[root@node01 ~]# head /etc/passwd
[root@node01 ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
- tail
默认显示文件的后10行内容
[root@node01 ~]# tail /etc/passwd
[root@node01 ~]# tail -n 2 /etc/passwd
注意:只能查看文本文件内容
[root@node01 ~]# file /etc/fstab
/etc/fstab: ASCII text
[root@node01 ~]# file /usr/bin/cat
/usr/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=b97cc8358edb123e8a9e21390f30924fe66a5e55, stripped
4.4 wc 统计文件的字符数
// 行数、单词数、字符数
[root@node01 ~]# wc /etc/hosts
2 10 158 /etc/hosts
[root@node01 ~]#
// 行数
[root@node01 ~]# wc -l /etc/hosts
2 /etc/hosts
[root@node01 ~]#
五、管道符 |
将前一个命令的执行结果,交给后一条命令处理
[root@node01 ~]# head -n 4 /etc/passwd | tail -n 1
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@node01 ~]# tail -n 2 /etc/passwd | head -n 1
tcpdump:x:72:72::/:/sbin/nologin
[root@node01 ~]# ls -l /etc/ | less
[root@node01 ~]# ls -lhS /boot/ | head -n 2 | tail -n 1
截取网卡的IP地址
[root@node01 ~]# ifconfig ens33 | head -n 2 | tail -n 1 | awk '{print $2}'
192.168.140.135
[root@node01 ~]#
[root@node01 ~]# ifconfig ens33 | head -n 2 | tail -n 1 | awk '{print $2,$4}'
192.168.140.135 255.255.255.0
六、复制文件目录
# cp 源文件 目的文件
[root@martin-host ~]# mkdir /backup
[root@martin-host ~]# cp /etc/passwd /backup/
[root@martin-host ~]# ls /backup/
passwd
[root@martin-host ~]#
[root@martin-host ~]# cp /etc/passwd /backup/passwd_$(date +%F)
[root@martin-host ~]# ls /backup/
passwd passwd_2024-09-28
复制目录 -r
[root@martin-host ~]# cp -r /opt/db/ /backup/
[root@martin-host ~]# ls /backup/
db passwd passwd_2024-09-28
七、移动文件目录
# mv 源文件 目的文件
[root@martin-host ~]# mv /backup/10.sql /new/
[root@martin-host ~]# ls /new/
10.sql
[root@martin-host ~]# mv /backup/redis/ /new/
[root@martin-host ~]# ls /new/
10.sql redis
重命名,同目录下移动文件等于重命名
[root@martin-host ~]# mv /backup/1.sql /backup/1_new.sql
八、压缩、解压缩
8.1 压缩/解压缩文件
- gzip .gz
[root@martin-host ~]# gzip /backup/file01
[root@martin-host ~]# ls /backup/
file01.gz file02 file03
[root@martin-host ~]# file /backup/file01.gz
/backup/file01.gz: gzip compressed data, was "file01", from Unix, last modified: Sat Sep 28 16:13:27 2024
[root@martin-host ~]# gzip -d /backup/file01.gz
[root@martin-host ~]# ls /backup/
file01 file02 file03
- bzip2 xxx.bz2
[root@martin-host ~]# bzip2 /backup/file02
[root@martin-host ~]# ls /backup/
file01 file02.bz2 file03
[root@martin-host ~]#
[root@martin-host ~]# file /backup/file02.bz2
/backup/file02.bz2: bzip2 compressed data, block size = 900k
[root@martin-host ~]#
[root@martin-host ~]#
[root@martin-host ~]# bzip2 -d /backup/file02.bz2
[root@martin-host ~]# ls /backup/
file01 file02 file03
- xz
[root@martin-host ~]# xz /backup/file03
[root@martin-host ~]# ls /backup/
file01 file02 file03.xz
[root@martin-host ~]# file /backup/file03.xz
/backup/file03.xz: XZ compressed data
[root@martin-host ~]# xz -d /backup/file03.xz
[root@martin-host ~]#
[root@martin-host ~]# ls /backup/
file01 file02 file03
8.2 tar 创建压缩包
# tar cf 归档文件名称.tar 源文件
c: 创建
f: 指定归档文件名称
将/etc目录下所有文件打包存放到/backup/data.tar
// 无任何压缩
[root@martin-host ~]# tar cf /backup/data.tar /etc/
tar: 从成员名中删除开头的“/”
[root@martin-host ~]# ls /backup/
data.tar
[root@martin-host ~]# du -sh /etc/
46M /etc/
[root@martin-host ~]# du -h /backup/data.tar
41M /backup/data.tar
- 调用gzip压缩
# tar czf 文件名称.tar.gz 源文件
z: 调用gzip压缩
将/etc目录下所有文件打包压缩到/backup/data_02.tar.gz
[root@martin-host ~]# tar czf /backup/data_02.tar.gz /etc/
tar: 从成员名中删除开头的“/”
[root@martin-host ~]# ls /backup/
data_02.tar.gz
- 调用bzip2
# tar cjf 文件名称.tar.bz2 源文件
j: 调用bzip2
将/etc目录下所有文件打包压缩到/backup/data_03.tar.bz2
[root@martin-host ~]# tar cjf /backup/data_03.tar.bz2 /etc/
[root@martin-host ~]# ls /backup/
data_02.tar.gz data_03.tar.bz2
- 调用xz
# tar cJf 文件名称.tar.xz 源文件
J: 调用xz
将/etc目录下所有文件打包压缩到/backup/data_04.tar.xz
[root@martin-host ~]# tar cJf /backup/data_04.tar.xz /etc/
[root@martin-host ~]# ls /backup/
data_02.tar.gz data_03.tar.bz2 data_04.tar.xz
- 解压缩
# tar xf 压缩包名称 [-C 目录名称]
x:解压
默认是解压到当前目录
[root@martin-host ~]# tar xf /backup/data_03.tar.bz2
[root@martin-host ~]# pwd
/root
[root@martin-host ~]# ls
etc
[root@martin-host ~]# tar xf /backup/data_03.tar.bz2 -C /opt/