首先介绍一下我的个人情况,23届二本网络工程专业毕业,运气爆棚进入了一家制造业上市公司,到现在也工作两年多了。在两年的工作过程中慢慢接触了BPM,ERP,SRM,OA,MES,WMS等制造业常用软件公司,也接触了一些代理商、集成商等。也是找到了想要未来发展的方向,高级系统运维或云服务器方向,因此开始逐步接触学习虚拟机VMware VSphere,Linux、shell编程、Python编程,K8S,redis,zabbix,docker,jenkins等。目前还属于刚入门,我把个人的学习成长经历记录下来以便后来的兄弟姐妹们参考。
本篇内容主讲的是Linux的基础命令及系统管理,疑难释疑等,会不断修改完善。
本篇内容并不会一次性把所有的命令及用法都罗列出来,而是随着讲解系统的各个方面而逐步学习所涉及到的命令。
目录
一、Linux系统了解
在介绍基础命令之前要先明确的两个概念就是相对路径和绝对路径。
相比大家对windows系统都已经有了一定的了解,对于初学者而言Linux与Windows最大的区别就是windows提供了丰富的图形化界面(就是我们现在用的通过鼠标点一点就可以完成页面跳转,文件打开,软件安装使用等),而Linux系统更多的是使用命令行的模式,如图所示。

绝对路径:绝对路径一定是由根目录 / 开始写起。使用绝对路径的表示方式指明 bin 文件所在的位置,该路径应写为 /usr/bin
相对路径:不需要从根目录\ 开始写起,可以从当前所在的工作目录开始写起。
应该说linux的目录结构是比windows的简单一些:windows是以多根的方式组织文件C:\ D:\ ;而linux则是以单根的方式组织文件 / ;
下表为根目录下部分比较重要的目录及其含义介绍:
| root | 超级管理员root的家目录,只有超管才有权限进 |
| bin | 普通用户执行命令的目录 |
| boot | 启动目录,存放了开机启动程序 |
| dev | 硬件及驱动目录 |
| etc | 配置文件目录 |
| home | 用户的家目录,用户创建的文件都存在这里 |
| var | 日志邮件目录 |
| sbin | 管理员执行特权命令目录 |
| usr | 应用程序目录 |
| tmp | 临时目录 |
| sbin | 管理员执行特权命令目录 |
首先我们打开终端,在这里可以输入命令进行操作。

命令:pwd 打印当前路径
pwd是print working directory(打印工作路径)的缩写,其功能是显示当前所在工作目录的绝对路径。当我们不确定当前在哪个路径下时,可以通过pwd来查看当前目录的绝对路径
[root@localhost ~]# pwd
/root
此时我们在根目录下的root文件夹里,单独的/代表根目录;而/root/桌面/learn,表示当面路径是根目录下【root】目录里的【桌面】目录里的【learn】目录。
PS:目录就相当于windows的文件夹。我们在windows里说A文件夹里的B文件,在Linux就是在A目录下的B文件。
这个命令很简单,当迷糊了不知道自己在哪个路径下了,就pwd看一看。
命令:ls
ls是list(列出)的缩写,他的作用是将当前目录下有哪些文件和子目录都列出来
[root@localhost ~]# ls
anaconda-ks.cfg eee file1 file100 file1.txt file2 initial-setup-ks.cfg test 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]#
这里你跟我列出的内容不一样是因为我新建了一些文件,不必在意。
这只是ls最基础的用法,我们可以在ls后加上参数例如 ls -l 或 ls -a /root等进阶用法来查看更多信息,比如隐藏的文件及目录、这些文件的大小、这些文件的权限分配等等,详情可以跳转文章【Linux命令全解之ls用法全解】
命令:cd 切换路径
cd命令的功能与双击进入某个文件夹比较像。改变工作目录,从当前目录改变到指定目录下。
语法格式:cd+目录
常用参数搭配
cd + 绝对路径
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /usr/tmp
[root@localhost tmp]# pwd
/usr/tmp
cd + 相对路径
当前路径有两种表现形式:第一种直接加当前目录下的子目录名。第二种用.代表当前目录,用.【/子目录名】来定位子目录
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd 桌面 \\第一种
[root@localhost 桌面]# ls
a1 b2
[root@localhost 桌面]# cd ./b2 \\第二种
[root@localhost b2]# pwd
/root/桌面/b2
cd.. 去往父目录,上一级目录
[root@localhost b2]# pwd
/root/桌面/b2
[root@localhost b2]# cd ..
[root@localhost 桌面]#
cd ~ 去往用户家目录,既用户登录打开终端的默认位置
[root@localhost 桌面]# pwd
/root/桌面
[root@localhost 桌面]# cd ~
[root@localhost ~]# pwd
/root \\我用的是root超级管理员用户,所以会是/root
[root@localhost ~]#
cd - 返回上一个目录位置
[root@localhost 桌面]# pwd
/root/桌面
[root@localhost 桌面]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd -
/root/桌面
[root@localhost 桌面]# cd -
/root
[root@localhost ~]# cd -
/root/桌面
二、文件及用户管理
(一)文件管理
1.文件类型
文件类型按照常用和不常用分成两类,重点记住常用类型
| 常见类型 | - | 普通文件:文本文件、二进制文件、压缩文件、电影、图片、视频 |
| d | 目录文件:蓝色的 | |
| 不常见类型 | b | 设备文件(块设备):存储设备硬盘、U盘 |
| c | 设备文件(字符设备):打印机、终端、dev/tty1 | |
| l | 链接文字(淡蓝色) | |
| s | 套接字文件 | |
| p | 管道文件 |

2.文件管理命令
命令:touch 创建空白文件
touch 命令通常用于将文件的访问和修改时间更新为当前时间。如果指定的文件名不存在,会创建一个 0KB 的空文件。不允许在创建文件时向其中输入任何文本。
[root@localhost /]# cd /root
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# touch file1.txt //touch + 相对路径
[root@localhost ~]# touch file2
[root@localhost ~]# touch /root/file3 //touch + 绝对路径
命令: mkdir 创建目录
mkdir命令是用来创建目录的基础命令,用于创建一个或多个目录。它可以创建新的目录结构,有助于文件的组织和管理。
mkdir + 目录名
[root@localhost ~]# mkdir dir1 \\创建单个目录
[root@localhost ~]# mkdir dir2 dir3 dir4 \\一次创建多个目录
[root@localhost ~]# mkdir Dir{1..5} \\一次性创建大量的连续的目录
[root@localhost ~]# ls
anaconda-ks.cfg Dir1 Dir2 Dir3 Dir4 file1.txt file3 公共 视频 文档 音乐
dir1 dir2 dir3 dir4 Dir5 file2 initial-setup-ks.cfg 模板 图片 下载 桌面
mkdir -m +目录名
-m:设定权限模式(如755或644)。这允许在创建目录的同时设定此目录权限。权限的相关知识会在后面详细介绍,这里纸介绍mkdir的用法
[root@localhost ~]# mkdir -m 755 mdir1
[root@localhost ~]# ls -l
总用量 8
-rw-------. 1 root root 1515 9月 17 18:24 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 10月 28 16:47 dir1
-rw-r--r--. 1 root root 0 10月 28 15:19 file1.txt
-rw-r--r--. 1 root root 1546 9月 18 09:49 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 10月 29 09:46 mdir1
mkdir -p + 父级目录/目录 在指定目录下创建新目录,当父级目录不存在时,会迭代创建目录
[root@localhost mdir1]# mkdir -p /root/mdir1/fdir1/dir2
[root@localhost ~]# mkdir -p /home/{qianfeng/{dir7,dir8},nizhan}
//在home下创建qingfeng和nizhan,在qianfeng下创建dir7和dir8
mkdir -v +目录 将创建过程显示出来
[root@localhost mdir1]# mkdir -v vdir1
mkdir: 已创建目录 "vdir1"
[root@localhost mdir1]# mkdir vdir2
[root@localhost mdir1]# mkdir -pv vdir2/vdir3/vidr4 \\ 选项参数可以联合使用来满足复杂要求
mkdir: 已创建目录 "vdir2/vdir3"
mkdir: 已创建目录 "vdir2/vdir3/vidr4"
[root@localhost mdir1]#
命令: cp 复制文件或文件夹
cp是copy的缩写,主要用于复制文件和目录,是 Linux系统中最常用的文件操作命令之一,可以将一个或者多个文件、目录复制到一个制定的文件或目录下,也可以同时复制多个文件到一个指定的目录中。
语法:
cp [选项] 源文件 目标文件
cp [选项] 源文件 目标目录
cp [选项] -r 源目录 目标目录
用法1:将一个文件复制到一个不存在的文件
相当于复制粘贴生成一个同内容的新文件(文件名、路径可不同)
源文件只有一个,不添加任何参数,简单的文件复制。文件内容、权限、归属用户、用户组等等属性没有改变。atime、mtime、ctime 改变成执行命令的日期。
[root@localhost dir1]# cp cpfile1 /root/dir2/cpfile4
[root@localhost dir1]# cat cpfile1
ifdfdsf
fdfdsfdsf
hello linux
[root@localhost dir1]# cat /root/dir2/cpfile4
ifdfdsf
fdfdsfdsf
hello linux
[root@localhost dir1]# stat cpfile1
文件:"cpfile1"
大小:67 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:35256305 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-30 10:27:56.700651136 +0800
最近更改:2025-10-30 10:27:49.455526465 +0800
最近改动:2025-10-30 10:27:49.469526706 +0800
创建时间:-
[root@localhost dir1]# stat /root/dir2/cpfile4
文件:"/root/dir2/cpfile4"
大小:67 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:67406502 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-30 10:35:34.754532713 +0800
最近更改:2025-10-30 10:35:11.188127406 +0800
最近改动:2025-10-30 10:35:11.188127406 +0800
创建时间:-
[root@localhost dir1]#
用法2:将一个文件复制到一个已经存在的文件
相当于将源文件中的内容覆盖至目的地文件的内容中。
此时由于涉及到内容的覆盖所以cp默认解释为cp -i,既提醒用户是否覆盖
[root@localhost dir1]# vim cpfile1
[root@localhost dir1]# cp cpfile1 /root/dir2/cpfile4
cp:是否覆盖"/root/dir2/cpfile4"? y
[root@localhost dir1]# cat /root/dir2/cpfile4
hello linux
hello 月入过万
i am coming
[root@localhost dir1]#
用法3:将一个文件复制到已存在的目录
在目的地的文件夹下新建与原文件同名的文件,并将源文件中内容填充到新文件中
[root@localhost dir1]# cp cpfile1 /root/dir2
[root@localhost dir1]# ls /root/dir2
cpfile1 cpfile2 cpfile4
[root@localhost dir1]# cp cpfile1 /root/dir2
cp:是否覆盖"/root/dir2/cpfile1"? y
[root@localhost dir1]# ls /root/dir2
cpfile1 cpfile2 cpfile4
[root@localhost dir1]#
用法4:对多个文件进行复制到一个目录中
多个文件复制到已存在的目录,将这些文件复制到目的目录下,内容与原文件一致
不能将多个文件复制到一个文件上,只能复制到一个文件夹里
[root@localhost dir1]# cp cpfile1 cpfile2 cpfile3 /root/dir3
[root@localhost dir1]# ls /root/dir3
cpfile1 cpfile2 cpfile3
[root@localhost dir1]#
[root@localhost dir1]# cp cpfile1 cpfile2 cpfile3 /root/dir77
cp: 目标"/root/dir77" 不是目录
[root@localhost dir1]# cp cpfile1 /root/dir77
[root@localhost dir1]#
用法5:将目录复制到不存在同名文件的新目录下
将目录复制到不存在同名文件的路径中,会创建指定目录的同名目录,复制源目录中的所有文件到目的路径下。要将目录下的子目录和文件都复制过去,需要使用递归复制,-r
[root@localhost ~]# ls dir1
cpfile1 cpfile2 cpfile3
[root@localhost ~]# cp -r /root/dir1 /root/dir2
[root@localhost ~]# ls /root/dir2/dir1
cpfile1 cpfile2 cpfile3
[root@localhost ~]#
用法6: cp -a 保留属性
复制的时候将源文件的所有属性保留,链接、文件属性等。并复制指定目录下的所有内容,常用于复制目录。复制后的文件除了名字(或路径)、最近改动时间不同,其他属性都和源文件一模一样,是最完整的复制方式。cp -a命令用于创建源文件或目录的一个完美副本,力求在内容和元数据上与原文件没有任何区别。他是进行系统备份、目录迁移等任务时最常用且最可靠的复制命令。
[root@localhost dir1]# stat cpfile1
文件:"cpfile1"
大小:45 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:35256307 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-30 10:41:44.501891802 +0800
最近更改:2025-10-30 10:41:17.782432269 +0800
最近改动:2025-10-30 10:41:17.784432304 +0800
创建时间:-
[root@localhost dir1]# cp -a cpfile1 /root/dir2/cpfile44
[root@localhost dir1]# stat /root/dir2/cpfile44
文件:"/root/dir2/cpfile44"
大小:45 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:67406505 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-30 10:41:44.501891802 +0800
最近更改:2025-10-30 10:41:17.782432269 +0800
最近改动:2025-10-30 14:00:49.675097500 +0800
创建时间:-
用法7:cp -b 在覆盖前提示并备份
如果目的文件存在,会先询问是否要覆盖,并在覆盖时将原文件进行备份。备份文件名后面带~
[root@localhost dir1]# ls
cpfile1 cpfile2 cpfile3
[root@localhost dir1]# cp -b cpfile1 cpfile2
cp:是否覆盖"cpfile2"? y
[root@localhost dir1]# ls
cpfile1 cpfile2 cpfile2~ cpfile3
用法8: cp -d 复制符号链接
当复制的文件是符号链接时,把目标文件也建立为符号链接,并指向与源文件指向相同。
通俗的讲就是复制链接文件,并保留原链接属性。
[root@centos7 app]#ll
lrwxrwxrwx. 1 root root 2 Dec 7 21:57 f1_softlink -> f1
-rw-r--r--. 2 root root 12 Dec 13 22:27 f2
-rw-r--r--. 2 root root 12 Dec 13 22:27 f2_hardlink
-rw-r--r--. 1 root root 22 Dec 14 22:36 f4
[root@centos7 app]#cp -d f1_softlink f4
cp: overwrite ‘f4’? y
[root@centos7 app]#ll
lrwxrwxrwx. 1 root root 2 Dec 7 21:57 f1_softlink -> f1
-rw-r--r--. 2 root root 12 Dec 13 22:27 f2
-rw-r--r--. 2 root root 12 Dec 13 22:27 f2_hardlink
lrwxrwxrwx. 1 root root 2 Dec 14 22:36 f4 -> f1
用法9: cp -f 强制复制
强行复制文件或目录,不论目标文件或目录是否已存在。
- f 强制覆盖,其实是先删除,再创建。任何家目录的文件可以删掉再覆盖。
用法10: cp -i 交互提示
其实cp就是cp -i的缩写
用法11: cp -l 创建硬链接
使用硬链接(两个文件数据和属性同步,索引号相同,但删除其中一个不会影响另外的文件)。
就是一个文件,两个名字,给原文件再起了另一个名字。
目的文件不能是已存在的,否则会保错
[root@centos7 app]#cp -l a c
[root@centos7 app]#ll
-rw-r--r--. 2 root root 0 Dec 14 22:54 a
-rw-r--r--. 2 root root 0 Dec 14 22:54 c
[root@centos7 app]#stat a
File: ‘a’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 805h/2053d Inode: 88 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2022-12-14 22:54:11.429106109 +0800
Modify: 2022-12-14 22:54:11.429106109 +0800
Change: 2022-12-14 22:57:40.847116095 +0800
Birth: -
[root@centos7 app]#stat c
File: ‘c’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 805h/2053d Inode: 88 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2022-12-14 22:54:11.429106109 +0800
Modify: 2022-12-14 22:54:11.429106109 +0800
Change: 2022-12-14 22:57:40.847116095 +0800
Birth: -
用法12:cp -L 复制链接源文件的内容
cp -L 链接文件 目标文件,真正复制的不是链接文件,而是链接文件所指向的文件的内容
[root@centos7 app]#cp -L f1_softlink zzzzzz
[root@centos7 app]#ll
-rw-r--r--. 1 root root 22 Dec 13 22:34 f1
lrwxrwxrwx. 1 root root 2 Dec 7 21:57 f1_softlink -> f1
-rw-r--r--. 1 root root 22 Dec 14 23:04 zzzzzz
[root@centos7 app]#cat f1 #原文件
word
1234
aaaaa
bbbbb
[root@centos7 app]#cat zzzzzz #复制后的文件,内容与f1一样
word
1234
aaaaa
bbbbb
用法13: cp -p 保留权限和时间戳
保留了权限和时间戳,但不会递归复制目录,也不会特殊处理符号链接(会解引用)
[root@localhost dir1]# cp -p cpfile1 cpfile5
[root@localhost dir1]# stat cpfile1
文件:"cpfile1"
大小:45 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:35256307 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-30 10:41:44.501891802 +0800
最近更改:2025-10-30 10:41:17.782432269 +0800
最近改动:2025-10-30 10:41:17.784432304 +0800
创建时间:-
[root@localhost dir1]# stat cpfile5
文件:"cpfile5"
大小:45 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:35256309 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-30 10:41:44.501891802 +0800
最近更改:2025-10-30 10:41:17.782432269 +0800
最近改动:2025-10-30 15:47:39.654369656 +0800
创建时间:-
用法14: cp -s 创建软连接
对源文件建立符号链接(软链接),不可对目录创建
[root@centos7 app]#cp -s a c
[root@centos7 app]#ll
total 52
-rw-r--r--. 1 root root 0 Dec 14 23:38 a
-rw-r--r--. 1 root root 0 Dec 14 23:38 b
lrwxrwxrwx. 1 root root 1 Dec 14 23:38 c -> a
用法15: cp -S 后缀
备份后缀符号
root@centos7 app]#cp -S a b 1234
[root@centos7 app]#ll
-rw-r--r--. 1 root root 0 Dec 14 23:41 1234
-rw-r--r--. 1 root root 0 Dec 14 23:38 a
-rw-r--r--. 1 root root 0 Dec 14 23:38 b
[root@centos7 app]#cp -S a b ~~~~~~~
[root@centos7 app]#ll
-rw-r--r--. 1 root root 0 Dec 14 23:43 ~~~~~~~
-rw-r--r--. 1 root root 0 Dec 14 23:41 1234
-rw-r--r--. 1 root root 0 Dec 14 23:38 a
-rw-r--r--. 1 root root 0 Dec 14 23:38 b
用法16: cp --attributes-only
保留文件属性,但不保留文件内容,相当于cp -a后再将文件内容删除
用法17: \cp 去掉提示
在使用cp命令复制文件时,有时候需要覆盖大量同名文件,需要不停地按Y来确定执行覆盖,所以使用\cp可以全部执行同意
[root@localhost dir1]# cp cpfile1 cpfile3
cp:是否覆盖"cpfile3"? y
[root@localhost dir1]# \cp cpfile1 cpfile3
[root@localhost dir1]# ls
cpfile1 cpfile2 cpfile2~ cpfile3 cpfile5
命令:mv 移动文件或目录的路径
mv 【选项】 /路径/源文件 /目标目录
9万+

被折叠的 条评论
为什么被折叠?



