文章目录
Linux 目录结构以及操作命令
Linux 目录结构
像jdk、redis、mysql等软件可以安装在/usr/local目录下
Linux 目录切分:
-
Linux以正斜线 \ 作为切分
-
Windows以反斜线 / 作为切分
Linux 路径格式:
-
绝对路径:从根目录 / 开始写起
-
相对路径:当前目录 . || 上级目录 . . || 家目录(主目录) ~
Linux 命令格式
命令 [选项] [参数1] [参数2]
例如:ls -l /
查看根目录并以长格式来输出
- ls:查看目录
- -l:以长格式输出
- /:表示根目录
关机/重启命令
-
shutdown -h now
立即关机 -
shutdown -h 10
10分钟后关机 -
shutdown -r now
或reboot
立即重启 -
shutdown -r 10
10分钟后重启
Linux 清屏命令
- 清屏命令:clear
Linux 目录管理命令
显示当前目录
- pwd 显示当前目录
pwd 显示当前目录(名称)
查看目录结构
命令 | 用途 |
---|---|
ls | 查看当前目录的目录结构,不包括隐藏目录 |
ls -a | 查看当前目录的目录结构,包括隐藏目录 |
ls -l | 查看当前目录的目录结构,并以长格式输出 |
ls / | 查看根目录的目录结构 |
ls -l / | 查看根目录的目录结构,并以长格式输出 |
ls -lh / | 查看根目录的目录结构,以长格式输出并显示文件大小 |
ls home | 查看home目录的目录结构 |
ls -l home | 查看home目录的目录结构,并以长格式输出 |
ls -lh home | 查看home目录的目录结构,以长格式输出并显示文件大小 |
ls --help | 查看ls命令帮助 |
切换目录
-
cd / 切换回根目录
-
cd /home/project 切换到project目录
目录创建、删除
- 目录创建:mkdir 目录名称
mkdir test //在当前目录下创建test空白目录(只能创建一级目录)
- 目录创建:mkdir -p 目录名称
mkdir -p test/test2 //在当前目录下创建test/test2二级空白目录(可以创建多级目录)
- 空白目录删除:rmdir 目录名称
rmdir test //删除当前目录下的test空白目录 (只能删除空白目录,不能删除非空白目录)
- 非空目录删除:rm -rf 目录名称
rm -rf test //删除当前目录下的test目录
Linux 文件管理命令
创建文件
- 创建文件:touch 文件名
touch test.txt
删除文件
- 删除文件:rm 文件名
rm test.txt
编辑文件
- 编辑文件需要用到vi编辑器,vi编辑器可以编辑已有文件,也可以创建一个新文件进行编辑。
vi test.txt //编辑test.txt文件(test.txt是已有文件)
vi test2.txt //创建一个test2.txt文件进行编辑(test2.txt是新文件)
- vi编辑器有三种模式:命令模式、编辑模式、最后行模式
-
输入vi 文件名命令后,会进入命令模式,编辑模式不能编辑文件内容,只能移动光标查看文件信息
-
进入命令模式后,可以在键盘上按 i,I,a,A,o,O键进入编辑模式:i 键是在光标前插入,I 键是在光标所在行的行首插入; a 键是在光标后插入,A 键是在光标所在行行尾插入; o 键是在光标所在行的下一行插入,O 键是在光标所在行的上一行插入。
-
编辑完后,按 esc 键回退到命令模式
-
编辑并回退命令模式后,使用 : 命令进入最后行模式,然后使用 wq命令保存编辑并退出vi编辑器
编辑文件总结:
-
命令模式 相关命令: i,I,a,A,o,O键
i 键
进入编辑模式并在光标前插入;I 键
进入编辑模式并在当前行的行首插入;a 键
进入编辑模式并在光标后插入;A 键
进入编辑模式并在当前行的行尾插入;o 键
进入编辑模式并在当前行之下插入;O 键
进入编辑模式并在当前行之上插入;
-
编辑模式 相关命令:
yy
复制当前行,dd
剪切当前行,p
在下一行黏贴,P
在上一行黏贴 -
最后行模式 相关命令:
:w
保存,:wq
保存并退出,:q!
不保存并退出
查看文件内容
-
虽然通过vi编辑文件时也可以查看到文件内容,但Linux中有提供专门的命令来查看文件内容。
-
查看文件内容: cat 文件名 、more 文件名、less 文件名、head 文件名、tail 文件名等. . .
查看文件内容总结:
-
cat 文件名
一次显示所有内容 -
more 文件名
通过enter回车键一行一行显示 -
less 文件名
通过方向键向上或向下一行一行查看文件内容 -
head 文件名
显示文件前面部分 -
tail 文件名
显示文件后面部分
文件及目录管理命令
复制
- cp [-r] 来源文件 目标文件
cp 只能用于复制文件; cp -r 可以复制文件或目录( -r 是循环递归的意思)
cp a.txt b.txt //将a.txt内容复制到b.txt中 (b.txt文件存在则覆盖,不存在则创建)
cp a.txt test //将a.txt文件复制到当前目录下的test目录
cp a.txt ../test //将a.txt文件复制到上级目录的test目录
cp a.txt b.txt /home/test //将a.txt和b.txt文件复制到/home/test目录
cp -r /home/test /home/caidong //将/home/test目录复制到/home/caidong目录下 (/home/test是否为非空白目录均可)
移动
- mv 来源文件 目标文件
mv a.txt b.txt //将a.txt命名为b.txt
mv a.txt test/b.txt //将a.txt移动到test目录并命名为b.txt
mv a.txt /home/test //将a.txt移动到test目录
mv a.txt b.txt /home/test //将a.txt和b.txt移动到test目录
mv /home/caidong /home/test //将/home/caidong目录移动到/home/test里
删除
- rm [ -rf ] 文件或目录
rm 只能用于删除文件; rm -r 可以删除文件或目录( -r 是循环递归的意思); -f 删除前询问是否删除
rm a.txt //删除a.txt文件前,询问是否删除该文件
rm -f a.txt //不询问,直接删除a.txt文件
rm -rf a.txt //不询问,直接删除a.txt文件
rm -rf /home/test //不询问,直接删除test目录 (非空白目录或空白目录都可以)
rm -f ./* //不询问,删除当前目录下的所有文件 (不包括子目录)
rm -rf aa* //删除当前目录中所有以aa开头的文件和目录
查找
- which 命令名称 - 查找mkdir命令所在
which mkdir //查找mkdir命令所在
which touch //查找touch命令所在
- find [-name] 文件/目录 - 查找文件或目录
find a.txt //在当前目录查找a.txt文件
find -name a.txt //在当前目录及其子目录下 查找a.txt文件
find test //在当前目录下 查找test目录,并列出test目录下的文件及子目录
find -name test //在当前目录及其子目录下 查找test目录,并列出test目录下的文件及子目录
---------------------------------------------------------------------------------------------
find ./ -name a.txt //在当前目录及其子目录下 查找a.txt文件
find ../ -name a.txt //在上一级目录及其子目录下 查找a.txt文件
find / -name a.txt //在根目录及其子目录下 查找a.txt文件
find /home/test -name test2 //在/home/test目录及其子目录下查找test2目录,并列出test目录下的文件及子目录
---------------------------------------------------------------------------------------------
find -name aa* //查找当前目录下以aa开头的文件或目录
find -name aa??? //查找当前目录下以aa开头,并且aa后面跟着三个字符的文件或目录
总结:
- cp 、mv、rm 可以对文件或目录:复制、移动、删除
- cp,mv 在复制、移动单个文件时可以进行重命名
用户管理以及群组管理
用户管理:
- 查看当前连接Linux的用户: who
- 创建用户:useradd [-g 群组] 用户名
- 设置密码:passwd 用户名
- 删除用户:userdel [-r] 用户名
- 查看用户列表: compgen -u 或 getent passwd 或 cat /etc/passwd
用户群组管理:
- 查看用户所在群组: groups 用户名
- 创建群组: groupadd 群组名
- 删除群组: groupdel 群组名
- 修改用户所在群组: usermod [ -g 群组名 ] 用户名
- 查看用户群组列表:cat /etc/group
用户分为:root超级权限用户和普通用户。/root目录是root用户的家目录;普通用户的家目录都存放在/home目录中,在我们创建一个普通用户时,就会在/home目录下创建一个该用户的家目录,名称与该用户名一致。
root用户才具备管理(创建、删除、修改)用户和用户群组的权限,普通用户没有管理用户和用户群组的权限,即普通用户的职能是管理其家目录下的文件和目录。
用户管理
- 查看当前连接Linux的用户: who
从上图可看出,当前连接的用户是root用户
-
创建用户:useradd [-g 群组] 用户名
useradd 用户名用于创建用户,[ -g 用户组名 ] 是可选项,表示在创建用户时,将其添加到某个用户组中。
我们可以在用户创建时将其添加到某个用户群组,也可以在用户创建后再将其添加到某个用户群组
注意:root用户才具有创建和删除用户的权限
[root@izuf61l1mtrhtuk2cjhj73z home]# useradd wangwu//创建一个用户名为wangwu的用户 [root@izuf61l1mtrhtuk2cjhj73z home]# useradd -g group1 zhangsan //创建一个用户名为zhangsan的用户,并将其添加到group1用户群组
创建普通用户时,系统会自动在/home目录中创建一个同名的目录作为该用户的家目录。该用户的操作权限就是在它的家目录,没有操作其它目录的权限。
-
设置/修改密码:passwd 用户名
密码设置规则:1. 长度超过8个字符 2. 包含数字、大小写字母、符号 3. 密码要健壮
输入 passwd 用户名并回车后,就会提示输入新密码,输入新密码后还需重复输入一次密码进行确认
注意: 设置的密码需要符合密码设置规则(如:用户zhangsan的密码我设置成Zhang@San4356 用户wangxiaoming的密码设置成Wang@Xiao@Ming4356)
-
删除用户:userdel [-r] 用户名
在创建用户的时候,系统会自动帮我们在/home中创建该用户的家目录。而当我们使用 (userdel 用户名) 删除该用户时,不会自动删除掉该用户的家目录。但使用 (userdel -r 用户名) 来删除用户时,会连带该用户的家目录一起删除掉。
注意:root用户才具有创建和删除用户的权限
-
查看用户列表: compgen -u 或 getent passwd 或 cat /etc/passwd
[zhangsan@izuf61l1mtrhtuk2cjhj73z ~]$ compgen -u root bin daemon adm lp sync shutdown halt mail operator games ftp nobody systemd-bus-proxy systemd-network dbus polkitd tss sshd postfix chrony ntp nscd tcpdump saslauth mailnull smmsp www admin mysql redis cc aa zhangsan [zhangsan@izuf61l1mtrhtuk2cjhj73z ~]$
群组管理
- 查看用户所在群组: groups 用户名
[root@izuf61l1mtrhtuk2cjhj73z home]# groups
root
[root@izuf61l1mtrhtuk2cjhj73z home]#
- 创建群组: groupadd 群组名
[root@izuf61l1mtrhtuk2cjhj73z home]# groupadd group1 // 创建group1用户群组
[root@izuf61l1mtrhtuk2cjhj73z home]# groupadd group2 // 创建group2用户群组
- 删除群组: groupdel 群组名
[root@izuf61l1mtrhtuk2cjhj73z home]# groupdel group2 // 删除group2用户群组
[root@izuf61l1mtrhtuk2cjhj73z home]# groupdel group3 // 删除group3用户群组,如果群组不存在则提示错误
groupdel: group 'group3' does not exist
- 修改用户所在群组: usermod [ -g 群组名 ] 用户名
[root@izuf61l1mtrhtuk2cjhj73z home]# usermod -g group1 wangwu //给已创建的用户设置群组
- 查看用户群组列表:cat /etc/group
[root@izuf61l1mtrhtuk2cjhj73z home]# cat /etc/group
root:x:0: // 这是root群组,也就是root用户所在群组
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:30:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
input:x:999:
systemd-journal:x:190:
systemd-bus-proxy:x:998:
systemd-network:x:192:
dbus:x:81:
polkitd:x:997:
ssh_keys:x:996:
dip:x:40:
tss:x:59:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
chrony:x:995:
ntp:x:38:
nscd:x:28:
tcpdump:x:72:
saslauth:x:76:
mailnull:x:47:
smmsp:x:51:
www:x:1000:
admin:x:1001:
mysql:x:1002:
redis:x:1003:
cc:x:1004:
aa:x:1005:
group1:x:1006: //group1 是新增群组
group2:x:1007: //group2 也是新增群组
[root@izuf61l1mtrhtuk2cjhj73z home]#
断开用户连接
-
断开远程用户:fuser -k /dev/pts/pts序号
-
断开本地用户:fuser -k /dev/tty序号
[root@izuf61l1mtrhtuk2cjhj73z home]# who
root pts/0 2020-05-02 20:24 (113.116.42.107)
zhangsan pts/1 2020-05-02 18:07 (113.116.42.107)
[root@izuf61l1mtrhtuk2cjhj73z home]# fuser -k /dev/pts/1
/dev/pts/1: 24615
[root@izuf61l1mtrhtuk2cjhj73z home]# who
root pts/0 2020-05-02 20:24 (113.116.42.107)
打包压缩与解压缩
打包和压缩的区别:压缩也是一种打包,但压缩在打包的同时会对打包的文件进行压缩处理,使它占用更小的磁盘空间。而打包只是单纯的把一些文件或目文件夹打成一个包,便于保存和传输。
Linux常见压缩类型
类型 | 描述 |
---|---|
*.gz | gzip压缩格式的文件 |
*.bz2 | bzip2压缩格式的文件 |
*.xz | xz压缩格式的文件 |
*.tar | tar打包的文件 |
*.zip | zip压缩格式的文件 |
*.tar.gz | 打包并使用gzip压缩的文件 |
*.tar.bz2 | 打包并使用bzip2压缩的文件 |
*.tar.xz | 打包并使用xz压缩的文件 |
压缩、解压相关命令
tar [-ctxzjJvf] 压缩文件名 源文件
- c 打包; t 查看内容; x 解打包解压缩
- z 使用gzip方式压缩; j 使用bzip2方式压缩;J 使用xz方式压缩
- v 显示过程; f 指定压缩包名称
打包压缩
- 将a.txt、b.txt、c.txt三个文件打包,包名为abc.tar
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a a.txt b b.txt c.txt
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -cvf abc.tar a.txt b.txt c.txt
a.txt
b.txt
c.txt
[root@izuf61l1mtrhtuk2cjhj73z test]#
- 查看abc.tar的内容
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a a.txt b b.txt c.txt
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -tvf abc.tar
-rw-r--r-- root/root 0 2020-05-04 02:23 a.txt
-rw-r--r-- root/root 0 2020-05-04 02:23 b.txt
-rw-r--r-- root/root 0 2020-05-04 02:23 c.txt
[root@izuf61l1mtrhtuk2cjhj73z test]#
- 将a、b文件夹打包(包名为ab.tar.gz),并以gzip方式压缩
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a b mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -czvf ab.tar.gz a b
a/
a/c.txt
a/b.txt
a/a.txt
b/
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a ab.tar.gz b mydir
- 查看ab.tar.gz的内容
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -tvf ab.tar.gz
drwxr-xr-x root/root 0 2020-05-04 01:02 a/
-rw-r--r-- root/root 4003 2020-05-04 01:02 a/c.txt
-rw-r--r-- root/root 4003 2020-05-04 01:01 a/b.txt
-rw-r--r-- root/root 4003 2020-05-04 01:00 a/a.txt
drwxr-xr-x root/root 0 2020-05-04 01:09 b/
- 将a、b文件夹打包(包名为ab.tar.bz2),并以bzip2方式压缩
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a b mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -cjvf ab.tar.bz2 a b
a/
a/c.txt
a/b.txt
a/a.txt
b/
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a ab.tar.bz2 b mydir
- 查看ab.tar.bz2的内容
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -tvf ab.tar.bz2
drwxr-xr-x root/root 0 2020-05-04 01:02 a/
-rw-r--r-- root/root 4003 2020-05-04 01:02 a/c.txt
-rw-r--r-- root/root 4003 2020-05-04 01:01 a/b.txt
-rw-r--r-- root/root 4003 2020-05-04 01:00 a/a.txt
drwxr-xr-x root/root 0 2020-05-04 01:09 b/
- 将a、b文件夹打包(包名为ab.tar.xz),并以xz方式压缩
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a b mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -cJvf ab.tar.xz a b
a/
a/c.txt
a/b.txt
a/a.txt
b/
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a ab.tar.xz b mydir
- 查看ab.tar.xz的内容
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -tvf ab.tar.xz
drwxr-xr-x root/root 0 2020-05-04 01:02 a/
-rw-r--r-- root/root 4003 2020-05-04 01:02 a/c.txt
-rw-r--r-- root/root 4003 2020-05-04 01:01 a/b.txt
-rw-r--r-- root/root 4003 2020-05-04 01:00 a/a.txt
drwxr-xr-x root/root 0 2020-05-04 01:09 b/
解压缩
- 解压abc.tar到当前目录
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
abc.tar mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -xvf abc.tar
a.txt
b.txt
c.txt
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
abc.tar a.txt b.txt c.txt mydir
- 解压ab.tar.gz到当前目录
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
ab.tar.gz mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -xzvf ab.tar.gz
a/
a/c.txt
a/b.txt
a/a.txt
b/
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a ab.tar.gz b mydir
- 解压ab.tar.xz到当前目录
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
ab.tar.xz mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -xJvf ab.tar.xz
a/
b/
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a ab.tar.xz b mydir
- 解压ab.tar.bz2到当前目录
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
ab.tar.bz2 mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -xjvf ab.tar.bz2
a/
b/
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
a ab.tar.bz2 b mydir
- 解压abc.tar到当前目录下的mydir目录中(Linux解压到指定目录需要使用 -C 命令)
[root@izuf61l1mtrhtuk2cjhj73z test]# ls
abc.tar mydir
[root@izuf61l1mtrhtuk2cjhj73z test]# tar -xvf abc.tar -C ./mydir
a.txt
b.txt
c.txt
[root@izuf61l1mtrhtuk2cjhj73z test]# cd mydir
[root@izuf61l1mtrhtuk2cjhj73z mydir]# ls
a.txt b.txt c.txt