Linux常用命令整理
文章目录
- Linux常用命令整理
- 一、常用快捷键
- 二、获取帮助信息
- 三、文件目录操作
- 四、用户管理
- 五、用户组管理
- 六、文件权限管理
- 七、搜索查找命令
- 八、压缩解压文件/目录
- 九、查看磁盘分区
- 十、网络命令
- 十一、进程管理
- 十二、时间日期查看
- 十三、设置定时任务
- 十四、软件包管理
- 总结
- 参考资料
一、常用快捷键
操作 | 描述 |
---|---|
【ctrl】+ c | 结束进程 |
【ctrl】+ l | 清屏 |
tab | 提示,补全 |
历史命令切换:
操作 | 描述 |
---|---|
history | 列出执行过的命令 |
【ctrl】+ p 或 ↑ | 向上遍历(previous) |
【ctrl】+ n 或 ↓ | 向下遍历(next) |
光标移动:
操作 | 描述 |
---|---|
【ctrl】+ p 或 ↑ | 光标向上移动(previous) |
【ctrl】+ n 或 ↓ | 光标向下移动(next) |
【ctrl】+ b 或 ← | 光标向左移动(backward) |
【ctrl】+ f 或 → | 光标向右移动(forward) |
【ctrl】+ a | 光标移动到头部 |
【ctrl】+ e | 光标移动到尾部 |
删除字符:
注意:Linux下光标宽一个字符,光标盖住的字符为光标后的字符
操作 | 描述 |
---|---|
【ctrl】+ d 或 【backspace】 | 删除光标后边的字符 |
【ctrl】+ h | 删除光标前边的字符 |
【ctrl】+ u | 删除光标前的所有内容 |
【ctrl】+ k | 删除光标后的所有内容 |
二、获取帮助信息
2.1 man获取帮助信息
man 【命令/配置文件】
信息 | 描述 |
---|---|
NAME | 命令的名称和单行描述 |
SYNOPSIS | 如何使用命令 |
DESCRIPTION | 命令功能的深入讨论 |
EXAMPLES | 使用命令的样例 |
SEE ALSO | 相关主题,通常是手册页 |
例:查看ls的帮助信息===>man ls
2.2 help获取shell内置命令的帮助信息
help 【命令】
一部分命令直接内嵌在shell中,在系统加载启动之后随着shell一起加载,常驻在系统内存中,这部分命令称为内置命令。
例:查看cd命令的帮助信息====>help cd
2.3 which查看指定命令所在路径
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
[vvvcxjvvv@localhost ~]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[vvvcxjvvv@localhost ~]$ which cd
/usr/bin/cd
[vvvcxjvvv@localhost ~]$ which cp
/usr/bin/cp
三、文件目录操作
Linux系统目录结构:
1>. 根目录:
2>. /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。
3>. /dev: dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
4>. /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
5>. /home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
6>. /lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
7>. /media: linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
8>. /mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
9>. /root: 该目录为系统管理员,也称作超级权限者的用户主目录。
10>. /usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
11>. /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
12>. /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
13>. /opt: 这是给主机额外安装软件所摆放的目录。
14>. /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
15>. /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
16>. /selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
17>. /srv: 该目录存放一些服务启动之后需要提取的数据。
18>. /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs.sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统种被创建。
19>. /tmp:这个目录是用来存放一些临时文件的。
20>. /usr/bin:系统用户使用的应用程序。
21>. /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
22>. /usr/src:内核源代码默认的放置目录。
23>. /var: 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
3.1 cd切换路径
cd 【参数】
操作 | 描述 |
---|---|
cd 绝对路径/相对路径 | 切换到指定路径 |
. | 当前目录 |
. . | 当前的上一级目录 |
cd . . | 回到当前目录上一级目录 |
cd | 切换到用户的家目录(宿主目录)(即/home/当前用户名) |
cd ~ | 切换到用户的家目录(宿主目录)(即/home/当前用户名) |
cd - | 回到上一次所在目录(在两个临近目录之间进行切换) |
cd - P | 跳转到实际物理路径而非快捷方式路径 |
[vvvcxjvvv@localhost ~]$ cd ./Desktop
[vvvcxjvvv@localhost Desktop]$ cd ~
[vvvcxjvvv@localhost ~]$ cd -
/home/vvvcxjvvv/Desktop
[vvvcxjvvv@localhost Desktop]$ cd ..
[vvvcxjvvv@localhost ~]$ pwd
/home/vvvcxjvvv
[vvvcxjvvv@localhost ~]$ cd /home/vvvcxjvvv/Desktop/cxj_data
[vvvcxjvvv@localhost cxj_data]$
[vvvcxjvvv@localhost cxj_data]$ 代表含义:
vvvcxjvvv:当前用户名
@:at
localhost:主机名
cxj_data:代表当前所在目录
$:表示当前用户为普通用户
#:表示当前用户为超级用户root
进入超级用户:sudo su
退出超级用户:exit
3.2 pwd获得当前工作目录的绝对路径
pwd
pwd:print working directory——打印工作目录
[vvvcxjvvv@localhost ~]$ pwd
/home/vvvcxjvvv
3.3 ls列出目录中文件内容
ls 【选项】【目录/文件】
选项 | 描述 |
---|---|
-a | all,列出全部文件,包括隐藏文件(以.开头的文件) |
-l | 等价于ll,列出文件及其属性、权限等数据 |
-R | (recursive)同时列出所有子目录层 |
[vvvcxjvvv@localhost cxj_data]$ ls
2022-07-11 03-45-26屏幕截图.png Linux速查备忘手册.pdf listenTogetherDialing.wav pdf redis SayHello
[vvvcxjvvv@localhost cxj_data]$ ls -l
total 932
-rw-r--r--. 1 vvvcxjvvv vvvcxjvvv 44903 Jul 11 03:45 2022-07-11 03-45-26屏幕截图.png
-rw-rw-r--. 1 vvvcxjvvv vvvcxjvvv 246149 Jul 11 03:43 Linux速查备忘手册.pdf
-rw-rw-r--. 1 vvvcxjvvv vvvcxjvvv 651160 Jul 11 04:01 listenTogetherDialing.wav
drwxr-xr-x. 2 vvvcxjvvv vvvcxjvvv 215 Jul 16 07:07 pdf
drwxrwxr-x. 2 vvvcxjvvv vvvcxjvvv 4096 Jul 11 03:55 redis
-rw-r--r--. 1 vvvcxjvvv vvvcxjvvv 449 Jul 11 20:56 SayHello
3.4 mkdir创建新目录
mkdir 【选项】 要创建的目录
选项 | 说明 |
---|---|
-p | 创建多层目录 |
创建一个新目录:
[vvvcxjvvv@localhost ~]$ mkdir cxj_temp
创建多层目录:
[vvvcxjvvv@localhost ~]$ mkdir -p cxj_temp2/tempfolder2
3.5 rmdir删除空目录
rmdir 要删除的空目录
删除空目录:
[vvvcxjvvv@localhost ~]$ rmdir cxj_temp2
rmdir: failed to remove ‘cxj_temp2’: Directory not empty
[vvvcxjvvv@localhost ~]$ rmdir cxj_temp2/tempfolder2
[vvvcxjvvv@localhost ~]$ rmdir cxj_temp
3.6 touch创建空文件
touch 文件名称
[vvvcxjvvv@localhost ~]$ cd ./Desktop/cxj_data
[vvvcxjvvv@localhost cxj_data]$ ls
2022-07-11 03-45-26屏幕截图.png Linux速查备忘手册.pdf listenTogetherDialing.wav pdf redis SayHello
[vvvcxjvvv@localhost cxj_data]$ touch study.txt
[vvvcxjvvv@localhost cxj_data]$ ls
2022-07-11 03-45-26屏幕截图.png Linux速查备忘手册.pdf listenTogetherDialing.wav pdf redis SayHello study.txt
3.7 cp复制文件/目录
cp 【选项】 源文件/目录 目标文件/目录
[vvvcxjvvv@localhost ~]$ ls
a.out cxj_temp cxj_temp2 Desktop 下载 公共 图片 文档 桌面 模板 视频 音乐
[vvvcxjvvv@localhost ~]$ touch cxj_temp/study.txt
[vvvcxjvvv@localhost ~]$ cp cxj_temp/study.txt cxj_temp2
[vvvcxjvvv@localhost ~]$ cp -r cxj_temp cxj_temp2
[vvvcxjvvv@localhost ~]$ cd cxj_temp2
[vvvcxjvvv@localhost cxj_temp2]$ ls
cxj_temp study.txt
三种情况:
- cp 源文件 目标文件——若目标文件存在则源文件对目标文件进行覆盖;若目标文件不存在,则创建目标文件后,将源文件复制到目标文件中。
- cp 源文件 目标文件目录——源文件复制到目标文件目录中
- cp -r 源文件目录 目标文件目录——将源文件目录递归复制到目标文件目录中(目标目录不存在创建目录)
例子:拷贝dir1目录下所有文件到dir2目录下
[vvvcxjvvv@localhost ~]$ cp dir1/* dir2
3.8 mv移动文件/目录或重命名
mv 旧文件名 新文件名
——重命名
[vvvcxjvvv@localhost ~]$ cd cxj_temp
[vvvcxjvvv@localhost cxj_temp]$ ls
study.txt
[vvvcxjvvv@localhost cxj_temp]$ mv study.txt study2.txt
[vvvcxjvvv@localhost cxj_temp]$ ls
study2.txt
mv 待移动文件 目标文件夹
——移动文件
[vvvcxjvvv@localhost cxj_temp]$ mv study2.txt ../cxj_temp2/
[vvvcxjvvv@localhost cxj_temp]$ cd ../cxj_temp2
[vvvcxjvvv@localhost cxj_temp2]$ ls
study2.txt
3.9 rm删除文件/目录
rm 【选项】 待删除文件
选项 | 描述 |
---|---|
-r | 递归删除文件所有内容 |
-f | force,不用提示来确认,强制执行删除操作 |
-v | 显示指令的详细执行过程 |
-i | 提示用户是否需要删除目录或文件 |
删除文件:
[vvvcxjvvv@localhost cxj_temp2]$ ls
cxj_temp study.txt
[vvvcxjvvv@localhost cxj_temp2]$ rm study.txt
[vvvcxjvvv@localhost cxj_temp2]$ ls
cxj_temp
递归删除目录:
[vvvcxjvvv@localhost cxj_temp2]$ rm cxj_temp
rm: cannot remove ‘cxj_temp’: Is a directory
[vvvcxjvvv@localhost cxj_temp2]$ rm -rf cxj_temp
[vvvcxjvvv@localhost cxj_temp2]$ ls
[vvvcxjvvv@localhost cxj_temp2]$
3.10 查看文件内容
3.10.1 cat查看文件内容
cat 【选项】 待查看文件
查看文件内容,从第一行开始显示,一般用于查看较小的文件
选项 | 描述 |
---|---|
-n | 显示所有行的行号,包括空行 |
3.10.2 more分屏查看
more 待查看文件
操作 | 描述 |
---|---|
【SPACE】 | 向下翻一页 |
【ENTER】 | 向下翻一行 |
【ctrl】 + c 或 q | 退出more |
【ctrl】 + F | 向下滚动一屏 |
【ctrl】 + B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
3.10.3 less分屏查看
less 待查看文件
操作 | 描述 |
---|---|
【SPACE】 | 向下翻一页 |
【ENTER】 | 向下翻一行 |
【pagedown】 | 向下翻一页 |
【pagedown】 | 向上翻一页 |
q | 退出less |
ctrl+p 或 ↑ | 滚动到上一行 |
ctrl+n 或 ↓ | 滚动到下一行 |
/word | 向下查找word字符串;n:向下查找;N:向上查找 |
?word | 向上查找word字符串;n:向上查找;N:向下查找 |
3.10.4 head显示文件头部内容
head 【选项】 文件
显示文件开头部分内容,默认情况显示10行
选项 | 描述 |
---|---|
-n<行数> | 指定显示头部内容行数 |
3.10.5 tail输出文件尾部内容
tail【选项】 文件
显示文件尾部内容,默认情况显示最后10行
选项 | 描述 |
---|---|
-n<行数> | 指定显示头部内容行数 |
-f | 显示文件最新追加的内容,监视文件变化 |
3.11 echo输出内容至控制台
echo 【选项】 【输出内容】
选项 | 描述 |
---|---|
-e | 支持反斜杠控制的字符转换 |
转义字符 | 描述 |
---|---|
\ | \ |
\n | 换行符 |
\t | 制表符tab |
[vvvcxjvvv@localhost cxj_temp2]$ echo "Hello\tWorld"
Hello\tWorld
[vvvcxjvvv@localhost cxj_temp2]$ echo -e "Hello\tWordl"
Hello Wordl
[vvvcxjvvv@localhost cxj_temp2]$ echo -e "\\ \n \t \\"
\
\
[vvvcxjvvv@localhost cxj_temp2]$
3.12 >输出重定向和>>追加
ls -l > 文件
——输出重定向(覆盖原文件内容)
cat filename >> 文件
——追加(列表内容追加到源文件末尾)
[vvvcxjvvv@localhost cxj_temp2]$ cat study2.txt
[vvvcxjvvv@localhost cxj_temp2]$ echo "Hello World" > study2.txt
[vvvcxjvvv@localhost cxj_temp2]$ cat study2.txt
Hello World
[vvvcxjvvv@localhost cxj_temp2]$ echo "Hello Linux" > study2.txt
[vvvcxjvvv@localhost cxj_temp2]$ cat study2.txt
Hello Linux
[vvvcxjvvv@localhost cxj_temp2]$ echo "Hello World" >> study2.txt
[vvvcxjvvv@localhost cxj_temp2]$ cat study2.txt
Hello Linux
Hello World
[vvvcxjvvv@localhost cxj_temp2]$
3.13 ln链接
3.13.1 软链接
软链接类似快捷方式,有自己的数据块,主要存放链接其它文件的路径
ln -s 【原文件或目录】 【软链接名】
——给原文件建立一个软链接
注意:
rm -rf 软链接名
——删除软链接
rm -rf 软链接名/
——会把软链接对应的真实目录下的内容删掉
注意:创建软链接时指明文件的绝对路径
测试1:使用相对路径创建软链接,将软链接移动到别的地方后软链接失效
注意软链接大小为9:软链接指向相对路径大小为9个字节。
由于创建软链接时使用的是相对路径,所以当软链接被移动后(所在当前目录发生改变),链接时自然找不到指向的文件/目录。
测试2:使用绝对路径创建软链接
软链接的大小为38:注意到软链接指向绝对路径的大小为38个字节。
此时软链接指向的是绝对路径,当软链接被移动后仍然可以链接到原来指向的文件/目录。
测试3:给目录创建软链接
3.13.2 硬链接
硬链接以文件副本的形式存在,但不占用实际空间。不允许给目录创建硬链接。硬链接只有在同一个文件系统中才能创建。linux下每一个文件都对应一个Inode,创建硬链接后,两个文件的Inode是相同的。文件创建硬链接后,硬链接计数+1,删除一个硬链接,硬链接计数-1。
注意:删掉被链接的文件hello.txt,对新创建的硬链接没有影响,只是硬链接计数减少了。
查看文件的Inode:stat 文件名
测试:对创建的硬链接移动到一个其它目录
3.14 查看文件/目录属性命令
3.14.1 wc查看文件字数、字节数、行数
参数 | 描述 |
---|---|
-c | 只显示字节数 |
-l | 只显示行数 |
-w | 只显示字数 |
[vvvcxjvvv@localhost test]$ ll
total 4
-rw-rw-r--. 2 vvvcxjvvv vvvcxjvvv 26 Jan 6 05:57 hello.txt
[vvvcxjvvv@localhost test]$ cat hello.txt
Hello World~
Hello Linux~
[vvvcxjvvv@localhost test]$ wc hello.txt
2 4 26 hello.txt
结果:2行,4个字,26个字节
3.14.2 od查看二进制文件信息
参数 | 描述 |
---|---|
-c | ASCII字符 |
-d | 有符号十进制数 |
-f | 浮点数 |
-o | 八进制数 |
-u | 无符号十进制数 |
-x | 十六进制数 |
例:以ASCII字符形式查看二进制文件hello
3.14.3 du查看某个目录大小
du===>disk use
[vvvcxjvvv@localhost cxj_data]$ du -h GCC_Demo/
36K GCC_Demo/src
4.0K GCC_Demo/include
60K GCC_Demo/
3.14.4 df查看磁盘使用情况
df===>disk free
[vvvcxjvvv@localhost Desktop]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 98G 7.8G 90G 8% /
/dev/sda1 297M 213M 84M 72% /boot
tmpfs 182M 40K 182M 1% /run/user/1000
tmpfs 182M 0 182M 0% /run/user/0
四、用户管理
4.1 查看用户
4.1.1 cat /etc/passwd查看创建哪些用户
cat /etc/passwd
[vvvcxjvvv@localhost ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
vvvcxjvvv:x:1000:1000:vvvcxjvvv:/home/vvvcxjvvv:/bin/bash
cxj:x:1001:1001::/home/cxj:/bin/bash
4.1.2 id查看用户是否存在
id 用户名
[vvvcxjvvv@localhost ~]$ id cxj
uid=1001(cxj) gid=1001(cxj) groups=1001(cxj)
[vvvcxjvvv@localhost ~]$ id cxj2
id: cxj2: no such user
[vvvcxjvvv@localhost ~]$ id vvvcxjvvv
uid=1000(vvvcxjvvv) gid=1000(vvvcxjvvv) groups=1000(vvvcxjvvv)
4.1.3 who查看登录用户信息
who可以查看当前在线用户的情况,使用的设备终端(pts),登录到系统的时间
whoami
——显示自身用户名称
who am i
——显示登陆用户的用户名及登录时间
[vvvcxjvvv@localhost ~]$ whoami
vvvcxjvvv
[vvvcxjvvv@localhost ~]$ who am i
vvvcxjvvv pts/0 2022-07-16 06:55 (xxx.xxx.xxx.xxx)
4.2 useradd增加用户
sudo useradd 用户名
——添加新用户
参数:
-s
: 指定新用户登陆时shell类型
-g
:指定所属组,该组必须已经存在
-d
:用户家目录
-m
:用户家目录不存在时,自动创建该目录
例子:sudo useradd -s /bin/bash -g group1 -d /home/user1-m user1
常用:添加新用户至某个组——useradd -g 组名 用户名
[root@localhost vvvcxjvvv]# useradd cxj2
[root@localhost vvvcxjvvv]# id cxj2
uid=1002(cxj2) gid=1002(cxj2) groups=1002(cxj2)
[root@localhost vvvcxjvvv]# useradd -g 1002 cxj3
[root@localhost vvvcxjvvv]# id cxj3
uid=1003(cxj3) gid=1002(cxj2) groups=1002(cxj2)
另一种添加新用户方法:sudo adduser 用户名
4.3 userdel删除用户
sudo userdel 用户名
——删除用户但保留该用户的主目录
sudo userdel -r 用户名
——同时删除用户和用户主目录
选项 | 描述 |
---|---|
-r | 删除用户的同时删除与用户相关的所有文件 |
[root@localhost home]# ls
cxj cxj2 cxj3 vvvcxjvvv
[root@localhost home]# userdel cxj2
[root@localhost home]# ls
cxj cxj2 cxj3 vvvcxjvvv
[root@localhost home]# userdel -r cxj3
[root@localhost home]# ls
cxj cxj2 vvvcxjvvv
4.4 usermod修改用户
sudo usermod -g 用户组 用户名
选项 | 描述 |
---|---|
-g | 修改用户的初始登录组,给定的组必须存在。默认组id为1 |
[root@localhost home]# id cxj3
uid=1003(cxj3) gid=1002(cxj2) groups=1002(cxj2)
[root@localhost home]# usermod -g 1001 cxj3
[root@localhost home]# id cxj3
uid=1003(cxj3) gid=1001(cxj) groups=1001(cxj)
4.5 passwd设置用户密码
sudo passwd 用户名
——设置用户密码
[root@localhost home]# passwd cxj2
Changing password for user cxj2.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
4.6 su切换用户
su 用户名
——切换用户,只获得用户的执行权限而不能获得该用户的环境遍历
su - 用户名
——切换到用户并获得该用户的执行权限和环境遍历
[vvvcxjvvv@localhost ~]$ su cxj
Password:
[cxj@localhost vvvcxjvvv]$ ls
ls: cannot open directory .: Permission denied
[cxj@localhost vvvcxjvvv]$ cd
[cxj@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
4.7 sudo为普通用户设置root权限
切换到root用户:sudo su
sudo 操作
[root@localhost ~]# su vvvcxjvvv
[vvvcxjvvv@localhost root]$ ls
ls: cannot open directory .: Permission denied
[vvvcxjvvv@localhost root]$ sudo ls
[sudo] password for vvvcxjvvv:
anaconda-ks.cfg original-ks.cfg
4.8 exit退出登录用户
exit
[vvvcxjvvv@localhost ~]$ sudo su
[sudo] password for vvvcxjvvv:
[root@localhost vvvcxjvvv]# exit
exit
[vvvcxjvvv@localhost ~]$ exit
logout
Connection closed.
Disconnected from remote host(centos_home) at 21:57:11.
五、用户组管理
5.1 cat /etc/group查看创建了哪些用户组
cat etc/group
[vvvcxjvvv@localhost ~]$ cat /etc/group
root:x:0:
...
vvvcxjvvv:x:1000:vvvcxjvvv
cxj:x:1001:
5.2 groupadd添加用户组
groupadd 组名
[vvvcxjvvv@localhost ~]$ groupadd cxj_temp1
groupadd: Permission denied.
groupadd:无法锁定 /etc/group,请稍后再试。
[vvvcxjvvv@localhost ~]$ su root
密码:
[root@localhost vvvcxjvvv]# groupadd cxj_temp1
5.3 groupdel删除用户组
groupdel 组名
[root@localhost vvvcxjvvv]# groupadd cxj_temp2
[root@localhost vvvcxjvvv]# groupdel cxj_temp2
5.4 groupmod修改用户组
group -n 新组名 旧组名
选项 | 描述 |
---|---|
-n<新组名> | 指定工作组的新组名 |
[root@localhost vvvcxjvvv]# groupmod -n cxj_temp1 cxj_temp3
groupmod:“cxj_temp3”组不存在
[root@localhost vvvcxjvvv]# groupmod -n cxj_temp3 cxj_temp1
六、文件权限管理
6.1 文件属性介绍
文件属性由十个字符进行描述:
- 首字符(第0位):代表文件类型;-代表文件;d代表目录;l代表链接
- 1-3位:描述该文件所有者(user)对该文件的权限
- 4-6位:描述该文件所有者的同组用户(group)对该文件的权限
- 7-9位:其它用户对该文件的权限
1-9位出现【-】说明没有该权限
rwx对于文件:
- r:可读取,查看
- w:可以写(修改),但不一定可以删除(用户必须得具有该文件所在目录的写(w)权限才可删除)
- x:可执行
rwx对于目录:
- r:可读取,可以使用ls命令查看目录内容
- w:可修改,目录内创建、删除、重命名目录
- x:可执行,可以进入该目录
6.2 chmod改变文件权限
chmod ===> change mod——修改文件属性/访问权限
- 方式一:
chmod 【{ugoa} {+-=} {rwx}】 文件或目录
注:u:所有者、g:所有组、o:其他人、a:所有人(u、g、o之和,默认)
[vvvcxjvvv@localhost cxj_data]$ ll
总用量 932
-rw-rw-r--. 1 vvvcxjvvv vvvcxjvvv 0 7月 16 07:18 study.txt
[vvvcxjvvv@localhost cxj_data]$ chmod u+x,o-r study.txt
[vvvcxjvvv@localhost cxj_data]$ ll
总用量 932
-rwxrw----. 1 vvvcxjvvv vvvcxjvvv 0 7月 16 07:18 study.txt
[vvvcxjvvv@localhost cxj_data]$ sudo chmod -100 study.txt
[sudo] password for vvvcxjvvv:
[vvvcxjvvv@localhost cxj_data]$ ll
total 11604
-rw-rw----. 1 cxj vvvcxjvvv 53 Jul 23 02:12 study.txt
- 方式二
chmod 【mod = 421】 文件或目录
——方式二
注:r=4、w=2、x=1 、没有权限=0
例:rwx=4+2+1=7
[vvvcxjvvv@localhost cxj_data]$ ll
总用量 932
-rw-r--r--. 1 vvvcxjvvv vvvcxjvvv 449 7月 11 20:56 SayHello
[vvvcxjvvv@localhost cxj_data]$ chmod 745 SayHello
[vvvcxjvvv@localhost cxj_data]$ ll
总用量 932
-rwxr--r-x. 1 vvvcxjvvv vvvcxjvvv 449 7月 11 20:56 SayHello
6.3 chown改变文件/目录所有者
chown ===> change owner——将指定文件的拥有者改为指定的用户或组
chown 【选项】 【最终用户】 【文件/目录】
选项 | 描述 |
---|---|
-r | 递归操作 |
修改文件所有者:
[vvvcxjvvv@localhost cxj_data]$ chown cxj study.txt
chown: 正在更改"study.txt" 的所有者: 不允许的操作
[vvvcxjvvv@localhost cxj_data]$ sudo chown cxj study.txt
[sudo] vvvcxjvvv 的密码:
[vvvcxjvvv@localhost cxj_data]$ ll
总用量 932
-rwxrw----. 1 cxj vvvcxjvvv 0 7月 16 07:18 study.txt
递归修改目录所有者:
[vvvcxjvvv@localhost temp]$ mkdir -p temp1/temp2
[vvvcxjvvv@localhost temp]$ ll
总用量 0
drwxrwxr-x. 3 vvvcxjvvv vvvcxjvvv 19 7月 16 23:16 temp1
[vvvcxjvvv@localhost temp]$ sudo chown cxj temp1
[vvvcxjvvv@localhost temp]$ ll
总用量 0
drwxrwxr-x. 3 cxj vvvcxjvvv 19 7月 16 23:16 temp1
6.4 chgrp改变文件/目录所属组
chgrp ===> change group——改变文件或目录的所属群组
chgrp 【最终用户组】 【文件/目录】
[vvvcxjvvv@localhost temp]$ ll
总用量 0
drwxrwxr-x. 3 vvvcxjvvv vvvcxjvvv 19 7月 16 23:16 temp1
[vvvcxjvvv@localhost temp]$ sudo chown cxj temp1
[vvvcxjvvv@localhost temp]$ ll
总用量 0
drwxrwxr-x. 3 cxj vvvcxjvvv 19 7月 16 23:16 temp1
[vvvcxjvvv@localhost temp]$ chgrp cxj_temp3 temp1
chgrp: 正在更改"temp1" 的所属组: 不允许的操作
[vvvcxjvvv@localhost temp]$ sudo chgrp cxj_temp3 temp1
[vvvcxjvvv@localhost temp]$ ll
总用量 0
drwxrwxr-x. 3 cxj cxj_temp3 19 7月 16 23:16 temp1
例:修改文件hello.txt的所有者为Alan,所属组为China
[vvvcxjvvv@localhost temp]$ sudo chown Alan:China hello.txt
七、搜索查找命令
7.1 find查找文件/目录
find 【搜索范围】 【选项】
选项 | 描述 |
---|---|
-name<查询方式> | 按指定文件名查找文件 |
-user<用户名> | 查找属于指定用户的所有文件 |
-size<文件大小> | 按指定文件大小查找文件 |
-type<文件类型> | 按文件类型查询 |
文件类型:
- f:普通文件类型
- d:目录
- l:符号链接
- b:块设备文件
- c:字符设备文件
- s:socket文件(网络套接字)
- p:管道
按文件名/用户名查找:
[vvvcxjvvv@localhost Desktop]$ find cxj_data/ -name "*.txt"
cxj_data/study.txt
[vvvcxjvvv@localhost Desktop]$ find cxj_data/ -user cxj
cxj_data/study.txt
cxj_data/temp/temp1
按文件大小查找:
- +n:size大于n
- -n:size小于n
- n:size大小等于n
注意:单位k必须小写,M必须大写
例如:查找目录下大于10M的文件
[vvvcxjvvv@localhost Desktop]$ find cxj_data/ -size +10240
cxj_data/pdf/STL源码剖析简体中文完整版(清晰扫描带目录).pdf
[vvvcxjvvv@localhost Desktop]$ find cxj_data -size +10M
cxj_data/pdf/STL源码剖析简体中文完整版(清晰扫描带目录).pdf
按文件类型查找:
[vvvcxjvvv@localhost cxj_data]$ tree GCC_Demo
GCC_Demo
├── dynamicmain
├── include
│ └── sayHello.h
├── main.cpp
├── main.o
└── src
├── 2
├── libsayHello.so
├── sayHello.cpp
└── sayHello.o
2 directories, 8 files
[vvvcxjvvv@localhost cxj_data]$ find GCC_Demo -type d
GCC_Demo
GCC_Demo/src
GCC_Demo/include
[vvvcxjvvv@localhost cxj_data]$ find GCC_Demo -type f
GCC_Demo/src/sayHello.cpp
GCC_Demo/src/sayHello.o
GCC_Demo/src/2
GCC_Demo/src/libsayHello.so
GCC_Demo/main.cpp
GCC_Demo/include/sayHello.h
GCC_Demo/main.o
GCC_Demo/dynamicmain
7.2 locate快速定位文件路径
第一次运行前需要使用updatedb
创建locate数据库
locate 文件
[vvvcxjvvv@localhost Desktop]$ updatedb
updatedb: 无法为 `/var/lib/mlocate/mlocate.db' 打开临时文件
[vvvcxjvvv@localhost Desktop]$ sudo updatedb
[sudo] vvvcxjvvv 的密码:
[vvvcxjvvv@localhost Desktop]$ locate temp1
/home/vvvcxjvvv/Desktop/cxj_data/temp/temp1
/home/vvvcxjvvv/Desktop/cxj_data/temp/temp1/temp2
7.3 grep过滤查找与管道符“I”
grep可以按文件内容进行查找
grep 【选项】 【查找内容】 【源文件】
选项 | 描述 |
---|---|
-n | 显示匹配行及行号 |
-r | 递归操作 |
例子:查看cxj_data目录下哪些文件包含了#include <iostream>
,并显示该内容所在行号
[vvvcxjvvv@localhost cxj_data]$ sudo grep -rn "#include <iostream>" /home/vvvcxjvvv/Desktop/cxj_data/
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp/include/myfriend.h:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp/main.cpp:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/hello/hello.cpp:1:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp1/include/myfriend.h:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp1/main.cpp:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp2/include/myfriend.h:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp2/main.cpp:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/mycode/temp3/include/myfriend.h:2:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/GCC_Demo/src/sayHello.cpp:1:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/GCC_Demo/main.cpp:1:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/GCC_Demo/include/sayHello.h:1:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/GCC_Test/hello.cpp:1:#include <iostream>
/home/vvvcxjvvv/Desktop/cxj_data/GDB_Demo/GDBTest.cpp:1:#include <iostream>
管道符|
表示将前一个命令的处理结果输出传递给后面命令处理
[vvvcxjvvv@localhost cxj_data]$ ls | grep -n SayHello
6:SayHello
[vvvcxjvvv@localhost cxj_data]$ ls
2022-07-11 03-45-26屏幕截图.png listenTogetherDialing.wav redis study.txt
Linux速查备忘手册.pdf pdf SayHello temp
[vvvcxjvvv@localhost cxj_data]$ ll
总用量 932
-rw-r--r--. 1 vvvcxjvvv vvvcxjvvv 44903 7月 11 03:45 2022-07-11 03-45-26屏幕截图.png
-rw-rw-r--. 1 vvvcxjvvv vvvcxjvvv 246149 7月 11 03:43 Linux速查备忘手册.pdf
-rw-rw-r--. 1 vvvcxjvvv vvvcxjvvv 651160 7月 11 04:01 listenTogetherDialing.wav
drwxr-xr-x. 2 vvvcxjvvv vvvcxjvvv 215 7月 16 07:07 pdf
drwxrwxr-x. 2 vvvcxjvvv vvvcxjvvv 4096 7月 11 03:55 redis
-rwxr--r-x. 1 vvvcxjvvv vvvcxjvvv 449 7月 11 20:56 SayHello
-rwxrw----. 1 cxj vvvcxjvvv 0 7月 16 07:18 study.txt
drwxrwxr-x. 3 vvvcxjvvv vvvcxjvvv 19 7月 16 23:16 temp
八、压缩解压文件/目录
8.1 gzip/gunzip压缩解压文件
gzip 文件
——压缩文件,只能将文件压缩为.gz文件
gunzip 文件(.gz)
——解压.gz文件
注:
- 只能压缩文件不能压缩目录
- 不保留原来的文件
- 同时压缩多个文件会产生多个压缩包
[vvvcxjvvv@localhost gzTest]$ ls
hello1.txt hello2.txt
[vvvcxjvvv@localhost gzTest]$ gzip hello1.txt
[vvvcxjvvv@localhost gzTest]$ ls
hello1.txt.gz hello2.txt
[vvvcxjvvv@localhost gzTest]$ gunzip hello1.txt.gz
[vvvcxjvvv@localhost gzTest]$ ls
hello1.txt hello2.txt
[vvvcxjvvv@localhost gzTest]$ gzip hello1.txt hello2.txt
[vvvcxjvvv@localhost gzTest]$ ls
hello1.txt.gz hello2.txt.gz
[vvvcxjvvv@localhost gzTest]$ mkdir aa/bb -p
[vvvcxjvvv@localhost gzTest]$ ls
aa hello1.txt.gz hello2.txt.gz
[vvvcxjvvv@localhost gzTest]$ gzip aa
gzip: aa is a directory -- ignored
8.2 bzip2/bunzip2压缩解压文件
bzip2 参数 文件名
——压缩文件为.bz2
格式
注:
- 参数
-k
:keep,保留源文件 - 不能对目录进行压缩
- 不能对多个文件进行打包压缩
bunzip2 压缩文件名
——解压.bz2
格式文件
[vvvcxjvvv@localhost Desktop]$ tree bz2Test/
bz2Test/
├── aa
│ └── bb
├── hello1.txt
└── hello2.txt
2 directories, 2 files
[vvvcxjvvv@localhost Desktop]$ cd bz2Test/
[vvvcxjvvv@localhost bz2Test]$ bzip2 hello1.txt
[vvvcxjvvv@localhost bz2Test]$ ls
aa hello1.txt.bz2 hello2.txt
[vvvcxjvvv@localhost bz2Test]$ bzip2 -k hello2.txt
[vvvcxjvvv@localhost bz2Test]$ ls
aa hello1.txt.bz2 hello2.txt hello2.txt.bz2
[vvvcxjvvv@localhost bz2Test]$ bzip2 aa
bzip2: Input file aa is a directory.
[vvvcxjvvv@localhost bz2Test]$ bunzip2 hello1.txt.bz2 hello2.txt.bz2
bunzip2: Output file hello2.txt already exists.
[vvvcxjvvv@localhost bz2Test]$ ls
aa hello1.txt hello2.txt hello2.txt.bz2
8.3 tar打包(压缩、解压)内容
压缩文件:
tar + 参数(zcvf) + 压缩包名字.tar.gz + 待压缩文件/目录
tar + 参数(jcvf) + 压缩包名字.tar.bz2 + 待压缩文件/目录
解压文件:
tar + 参数(zxvf) + 压缩包名(xxx.tar.gz)
tar + 参数(jxvf) + 压缩包名(xxx.tar.bz2)
选项 | 描述 |
---|---|
-z | 用 gzip 来压缩/解压缩文件 |
-j | 用 bzip2 来压缩/解压缩文件 |
-c | (create)创建新的压缩文件,如果用户想备份一个目录或文件,就要选择这个选项 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-x | 解包.tar文件 |
-v | 详细报告tar处理的文件信息 |
-C | 解压到指定目录 |
压缩多个文件/目录:
[vvvcxjvvv@localhost tarTest]$ ls
couple joey.txt phoebe.txt
[vvvcxjvvv@localhost tarTest]$ tree couple
couple
├── chandler.txt
├── monica.txt
├── rachel.txt
└── ross.txt
0 directories, 4 files
[vvvcxjvvv@localhost tarTest]$ tar -zcvf mytar.tar.gz couple joey.txt phoebe.txt
couple/
couple/chandler.txt
couple/monica.txt
couple/ross.txt
couple/rachel.txt
joey.txt
phoebe.txt
[vvvcxjvvv@localhost tarTest]$ ls
couple joey.txt mytar.tar.gz phoebe.txt
[vvvcxjvvv@localhost tarTest]$ tar -jcvf mytar.tar.bz2 couple joey.txt phoebe.txt
couple/
couple/chandler.txt
couple/monica.txt
couple/ross.txt
couple/rachel.txt
joey.txt
phoebe.txt
[vvvcxjvvv@localhost tarTest]$ ls
couple joey.txt mytar.tar.bz2 mytar.tar.gz phoebe.txt
解压文件(不指明解压目录,默认解压到当前目录):
[vvvcxjvvv@localhost friend3]$ ls
mytar.tar.gz
[vvvcxjvvv@localhost friend3]$ tar -zxvf mytar.tar.gz
couple/
couple/chandler.txt
couple/monica.txt
couple/ross.txt
couple/rachel.txt
joey.txt
phoebe.txt
[vvvcxjvvv@localhost friend3]$ ls
couple joey.txt mytar.tar.gz phoebe.txt
解压到指定文件夹:
tar zxvf xxx.tar.gz -C + 解压目录
tar jxvf xxx.tar.bz2 -C + 解压目录
[vvvcxjvvv@localhost tarTest]$ mkdir friend1
[vvvcxjvvv@localhost tarTest]$ tar -zxvf mytar.tar.gz -C friend1
couple/
couple/chandler.txt
couple/monica.txt
couple/ross.txt
couple/rachel.txt
joey.txt
phoebe.txt
[vvvcxjvvv@localhost tarTest]$ tree friend1
friend1
├── couple
│ ├── chandler.txt
│ ├── monica.txt
│ ├── rachel.txt
│ └── ross.txt
├── joey.txt
└── phoebe.txt
1 directory, 6 files
[vvvcxjvvv@localhost tarTest]$ mkdir friend2
[vvvcxjvvv@localhost tarTest]$ tar -jxvf mytar.tar.bz2 -C friend2
couple/
couple/chandler.txt
couple/monica.txt
couple/ross.txt
couple/rachel.txt
joey.txt
phoebe.txt
[vvvcxjvvv@localhost tarTest]$ tree friend2
friend2
├── couple
│ ├── chandler.txt
│ ├── monica.txt
│ ├── rachel.txt
│ └── ross.txt
├── joey.txt
└── phoebe.txt
1 directory, 6 files
[vvvcxjvvv@localhost tarTest]$
8.4 zip/unzip压缩解压文件/目录
压缩:
zip 【选项】 XXX.zip 待压缩的文件/目录
zip选项 | 描述 |
---|---|
-r | 递归操作,压缩目录 |
注:可以压缩目录且保留源文件
压缩文件:
[vvvcxjvvv@localhost Desktop]$ tree zipTest/
zipTest/
├── couple
│ ├── chandler.txt
│ ├── monica.txt
│ ├── rachel.txt
│ └── ross.txt
├── joey.txt
└── phoebe.txt
1 directory, 6 files
[vvvcxjvvv@localhost Desktop]$ cd zipTest/
[vvvcxjvvv@localhost zipTest]$ zip friend1.zip couple joey.txt phoebe.txt
adding: couple/ (stored 0%)
adding: joey.txt (stored 0%)
adding: phoebe.txt (stored 0%)
[vvvcxjvvv@localhost zipTest]$
注意:没有使用递归参数-r,couple目录下的文件并没有被打包
递归压缩目录:
[vvvcxjvvv@localhost zipTest]$ zip -r friend2.zip couple joey.txt phoebe.txt
adding: couple/ (stored 0%)
adding: couple/chandler.txt (stored 0%)
adding: couple/monica.txt (stored 0%)
adding: couple/ross.txt (stored 0%)
adding: couple/rachel.txt (stored 0%)
adding: joey.txt (stored 0%)
adding: phoebe.txt (stored 0%)
[vvvcxjvvv@localhost zipTest]$
解压:
unzip 【选项】 XXX.zip
unzip选项 | 描述 |
---|---|
-d<目录> | 指定解压后文件的存放目录 |
指定目标文件夹解压缩:
[vvvcxjvvv@localhost zipTest]$ unzip friend2.zip -d friend2
Archive: friend2.zip
creating: friend2/couple/
extracting: friend2/couple/chandler.txt
extracting: friend2/couple/monica.txt
extracting: friend2/couple/ross.txt
extracting: friend2/couple/rachel.txt
extracting: friend2/joey.txt
extracting: friend2/phoebe.txt
[vvvcxjvvv@localhost zipTest]$ ls
couple friend1.zip friend2 friend2.zip joey.txt phoebe.txt
[vvvcxjvvv@localhost zipTest]$ tree friend2
friend2
├── couple
│ ├── chandler.txt
│ ├── monica.txt
│ ├── rachel.txt
│ └── ross.txt
├── joey.txt
└── phoebe.txt
1 directory, 6 files
8.5 rar压缩/解压文件
rar使用前需要安装。
centos7安装rar步骤(64位):
[root@localhost ~]# wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
--2023-01-09 00:56:21-- http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
Resolving www.rarlab.com (www.rarlab.com)... 51.195.68.162
Connecting to www.rarlab.com (www.rarlab.com)|51.195.68.162|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz [following]
--2023-01-09 00:56:22-- https://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
Connecting to www.rarlab.com (www.rarlab.com)|51.195.68.162|:443... connected.
HTTP request sent, awaiting response... 200
Length: 1149037 (1.1M) [application/x-gzip]
Saving to: ‘rarlinux-x64-5.3.0.tar.gz’
100%[==============================================================================================================================>] 1,149,037 164KB/s in 7.4s
2023-01-09 00:56:31 (152 KB/s) - ‘rarlinux-x64-5.3.0.tar.gz’ saved [1149037/1149037]
[root@localhost ~]# tar -zxvf rarlinux-x64-5.3.0.tar.gz
rar/
rar/order.htm
rar/acknow.txt
rar/readme.txt
rar/rar_static
rar/default.sfx
rar/license.txt
rar/rarfiles.lst
rar/whatsnew.txt
rar/makefile
rar/rar
rar/unrar
rar/rar.txt
[root@localhost ~]# cd rar
[root@localhost rar]# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
[root@localhost rar]# rar
bash: rar: command not found...
[root@localhost rar]# ls
acknow.txt default.sfx license.txt makefile order.htm rar rarfiles.lst rar_static rar.txt readme.txt unrar whatsnew.txt
[root@localhost rar]# cp rar_static /usr/local/bin/rar
cp: overwrite ‘/usr/local/bin/rar’? y
[root@localhost rar]# exit
exit
语法:rar <命令> -<选项1> ….-<选项N> <操作文档> <文件…> <@文件列表…> <解压路径>
命令:
a:添加文件到操作文档
x:带路径解压文档中内容到当前目录
选项:-r
——递归子目录(对目录下文件压缩需要用到)
压缩: rar a 压缩文件名(xxx.rar) 待压缩文件/目录
[vvvcxjvvv@localhost rarTest]$ ls
test
[vvvcxjvvv@localhost rarTest]$ rar a -r test.rar test
RAR 5.30 Copyright (c) 1993-2015 Alexander Roshal 18 Nov 2015
Trial version Type RAR -? for help
Evaluation copy. Please register.
Creating archive test.rar
Adding test/couple/chandler.txt OK
Adding test/couple/monica.txt OK
Adding test/couple/ross.txt OK
Adding test/couple/rachel.txt OK
Adding test/joey.txt OK
Adding test/phoebe.txt OK
Adding test/couple OK
Adding test 38%
Done
[vvvcxjvvv@localhost rarTest]$ ls
test test.rar
解压: rar x 压缩文件名(xxx.rar)
[vvvcxjvvv@localhost rarTest]$ ls
test test.rar
[vvvcxjvvv@localhost rarTest]$ rar x test.rar
RAR 5.30 Copyright (c) 1993-2015 Alexander Roshal 18 Nov 2015
Trial version Type RAR -? for help
Extracting from test.rar
Would you like to replace the existing file test/couple/chandler.txt
16 bytes, modified on 2023-01-09 01:36
with a new one
16 bytes, modified on 2023-01-09 01:36
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit q
Program aborted
解压缩至指定目录: rar x 压缩文件名(xxx.rar) 目录
[vvvcxjvvv@localhost rarTest]$ ls
test test.rar
[vvvcxjvvv@localhost rarTest]$ mkdir myDir
[vvvcxjvvv@localhost rarTest]$ rar x test.rar myDir
RAR 5.30 Copyright (c) 1993-2015 Alexander Roshal 18 Nov 2015
Trial version Type RAR -? for help
Extracting from test.rar
Creating myDir/test OK
Creating myDir/test/couple OK
Extracting myDir/test/couple/chandler.txt OK
Extracting myDir/test/couple/monica.txt OK
Extracting myDir/test/couple/ross.txt OK
Extracting myDir/test/couple/rachel.txt OK
Extracting myDir/test/joey.txt OK
Extracting myDir/test/phoebe.txt OK
All OK
九、查看磁盘分区
9.1 mount/unmount 挂载/卸载
系统默认挂载目录:/media
手动挂载目录:/mnt
mount 【-t cfstype】 【-o options】 device dir
——挂载设备
参数 | 描述 |
---|---|
-t cfstype | 指定文件系统的类型 |
-o options | 描述设备或档案的挂载方式 |
device | 待挂载的设备 |
dir | 设备在系统上的挂载点 |
默认手动挂载到 /mnt。挂载到/mnt以外的目录 – 挂载成功后会遮蔽掉目录中原来的东西,卸载设备之后才能看到目录中原来的数据。
unmount 设备文件名或挂载点
——卸载设备
卸载的时候,用户的当前位置一定不能再 /mnt(/media)或者其子目录下,否则无法卸载。
9.2 du查看文件或目录所占磁盘空间
du 目录/文件
——显示目录的磁盘使用状况
选项 | 描述 |
---|---|
-h | 以Gbytes、MBytes、Kbytes等格式显示 |
-a | 不仅查看子目录大小,还查看文件 |
-c | 显示所有文件和子目录大小和,显示总和 |
-s | 只显示总和 |
–max-depth=n | 指定统计子目录的深度为n |
[vvvcxjvvv@localhost ~]$ du -sh
329M
9.3 df查看磁盘空间使用状况
df 【选项】
——列出文件系统整体磁盘使用量,检查文件系统磁盘空间占用状况
选项 | 描述 |
---|---|
-h | 以Gbytes、MBytes、Kbytes等格式显示 |
[vvvcxjvvv@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 98G 6.0G 92G 7% /
/dev/sda1 297M 164M 134M 55% /boot
tmpfs 182M 40K 182M 1% /run/user/1000
9.4 lsblk查看设备挂载情况
lsblk
选项 | 描述 |
---|---|
-f | 查看详细设备挂载情况,显示文件系统信息 |
[vvvcxjvvv@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 97.7G 0 part /
sr0 11:0 1 1024M 0 rom
9.5 fdisk分区
fdisk -l
——查看磁盘分区详情
选项 | 描述 |
---|---|
-l | 显示所有硬盘分区列表 |
[vvvcxjvvv@localhost ~]$ sudo fdisk -l
[sudo] vvvcxjvvv 的密码:
磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c3be4
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 4812799 2098176 82 Linux swap / Solaris
/dev/sda3 4812800 209715199 102451200 83 Linux
fdisk 硬件设备名
——对新增硬盘进行分区操作
十、网络命令
10.1 ifconfig显示网络接口配置信息
ifconfig
ens33:网卡名
UP:网卡开启状态
RUNNING:网卡的网线被接上
MULTICAST:支持组播
inet:IP地址
netmask:掩码
broadcast:广播地址
RX:接收数据包
TX:发送数据包
lo:主机的回环网卡
Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等。
注:CentOS7 提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、wlan0 更难读,比如 ens33 。
10.2 ping测试主机间网络连通性
语法:ping 【参数】 目的主机名/IP地址
参数:
-c 数目
:在发送指定数目的包后停止。
-i 秒数
:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次
[vvvcxjvvv@localhost ~]$ ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=128 time=32.0 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=128 time=34.3 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=128 time=29.6 ms
^C
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 29.688/32.018/34.319/1.901 ms
[vvvcxjvvv@localhost ~]$ ping 39.156.66.10
PING 39.156.66.10 (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10: icmp_seq=1 ttl=128 time=46.8 ms
64 bytes from 39.156.66.10: icmp_seq=2 ttl=128 time=30.4 ms
64 bytes from 39.156.66.10: icmp_seq=3 ttl=128 time=29.8 ms
^C
--- 39.156.66.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 29.865/35.750/46.894/7.886 ms
注意不加参数需要手动停止——ctrl + c
[vvvcxjvvv@localhost ~]$ ping -c 4 baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=128 time=34.3 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=128 time=34.2 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=128 time=33.0 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=128 time=30.5 ms
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 30.575/33.056/34.316/1.530 ms
[vvvcxjvvv@localhost ~]$
10.3 nslookup查看服务器域名对应的IP地址
使用nslookup 域名
就可查看服务器域名对应的IP地址
[vvvcxjvvv@localhost ~]$ nslookup www.baidu.com
Server: 192.xxx.xxx.2
Address: 192.xxx.xxx.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 36.152.44.96
Name: www.a.shifen.com
Address: 36.152.44.95
十一、进程管理
11.1 ps查看当前系统进程状态
ps ===> process status
ps 【选项】
选项 | 描述 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 查看进程所有者及其他一些信息 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
显示所有用户的所有进程信息:ps aux
[vvvcxjvvv@localhost ~]$ ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1299 0.0 3.2 336924 59960 tty1 Ssl+ Jan08 0:04 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-kWy31W/database
vvvcxjv+ 3472 0.0 0.1 116576 3220 pts/0 Ss Jan08 0:01 -bash
cxj 9305 0.0 0.1 116324 2864 pts/1 Ss+ 02:02 0:00 -bash
vvvcxjv+ 9429 0.0 0.1 155448 1868 pts/0 R+ 02:10 0:00 ps au
[vvvcxjvvv@localhost ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193932 6168 ? Ss Jan08 0:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
...
root 9292 0.2 0.2 161072 5580 ? Ss 02:02 0:00 sshd: cxj [priv]
cxj 9298 0.0 0.1 161072 2552 ? S 02:02 0:00 sshd: cxj@pts/1
cxj 9305 0.0 0.1 116324 2864 pts/1 Ss+ 02:02 0:00 -bash
root 9377 0.0 0.0 0 0 ? S 02:05 0:00 [kworker/1:0]
root 9395 0.0 0.0 0 0 ? S 02:07 0:00 [kworker/1:1]
root 9418 0.0 0.2 386024 4912 ? Sl 02:09 0:00 gdm-session-worker [pam/gdm-password]
root 9427 0.0 0.0 0 0 ? R 02:09 0:00 [kworker/0:1]
root 9455 0.0 0.0 108052 360 ? S 02:10 0:00 sleep 60
vvvcxjv+ 9456 0.0 0.1 155448 1868 pts/0 R+ 02:10 0:00 ps aux
查询结果中PID表示进程ID。
对于TTY设备:tty1 - tty6 表示文字界面,tty7表示图形界面
对显示的进程进行过滤:ps aux | grep xxx
[vvvcxjvvv@localhost ~]$ ps aux | grep sshd
root 1096 0.0 0.1 112900 2756 ? Ss 21:53 0:00 /usr/sbin/sshd -D
root 2842 0.0 0.1 160988 3560 ? Ss 21:54 0:00 sshd: vvvcxjvvv [priv]
vvvcxjv+ 2846 0.0 0.1 160988 2140 ? S 21:54 0:00 sshd: vvvcxjvvv@pts/0
vvvcxjv+ 6481 0.0 0.0 112828 976 pts/1 S+ 23:47 0:00 grep --color=auto sshd
[vvvcxjvvv@localhost ~]$ ps -ef | grep sshd
root 1096 1 0 21:53 ? 00:00:00 /usr/sbin/sshd -D
root 2842 1096 0 21:54 ? 00:00:00 sshd: vvvcxjvvv [priv]
vvvcxjv+ 2846 2842 0 21:54 ? 00:00:00 sshd: vvvcxjvvv@pts/0
vvvcxjv+ 6491 5031 0 23:48 pts/1 00:00:00 grep --color=auto sshd
grep查询是需要占用一个进程的,所有结果 > 2 才能说明查询结果存在;如果结果有一条,表示没有查询的进程。
[vvvcxjvvv@localhost ~]$ ps aux | grep aaaaaa
vvvcxjv+ 9609 0.0 0.0 112808 976 pts/0 S+ 02:22 0:00 grep --color=auto aaaaaa
[vvvcxjvvv@localhost ~]$
查看进程树:pstree
pstree 【选项】
选项 | 描述 |
---|---|
-p | 显示进程PID |
-u | 显示进程所属用户 |
11.2 kill中止进程
kill 【选项】 进程号
——通过进程号杀死进程
killall 进程名称
——通过进程名称杀死进程
选项 | 描述 |
---|---|
-9 | (SIGKILL)强制立即停止进程 |
[vvvcxjvvv@localhost ~]$ ps aux | grep bash
root 641 0.0 0.0 115408 972 ? S Jan08 0:01 /bin/bash /usr/sbin/ksmtuned
vvvcxjv+ 2238 0.0 0.0 72552 780 ? Ss Jan08 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
cxj 9305 0.0 0.1 116324 2864 pts/1 Ss+ 02:02 0:00 -bash
vvvcxjv+ 9723 1.7 0.1 116456 2908 pts/0 Ss 02:29 0:00 -bash
vvvcxjv+ 9771 0.0 0.0 112812 976 pts/0 S+ 02:29 0:00 grep --color=auto bash
[vvvcxjvvv@localhost ~]$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[vvvcxjvvv@localhost ~]$ kill -SIGKILL 9305
-bash: kill: (9305) - Operation not permitted
[vvvcxjvvv@localhost ~]$ sudo kill -SIGKILL 9305
[sudo] password for vvvcxjvvv:
[vvvcxjvvv@localhost ~]$ ps aux | grep bash
root 641 0.0 0.0 115408 972 ? S Jan08 0:01 /bin/bash /usr/sbin/ksmtuned
vvvcxjv+ 2238 0.0 0.0 72552 780 ? Ss Jan08 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
vvvcxjv+ 9723 0.2 0.1 116456 2976 pts/0 Ss 02:29 0:00 -bash
vvvcxjv+ 9821 0.0 0.0 112812 976 pts/0 R+ 02:30 0:00 grep --color=auto bash
[vvvcxjvvv@localhost ~]$
11.3 env查看当前进程环境变量
Linux下环境变量格式为键值对:key=value:value (多个值之间用 :分隔)
[vvvcxjvvv@localhost ~]$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin:/home/vvvcxjvvv/software/Typora/bin/Typora-linux-x64/:/home/vvvcxjvvv/.local/bin:/home/vvvcxjvvv/bin
PATH:该环境变量中记录着shell命令解析器去查找命令的目录位置,从前往后的顺序查找。
11.4 top实时监控系统进程状态
top 【选项】
选项 | 描述 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新,默认3秒 |
-i | 使得top不显示任何闲置或僵死的进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
操作 | 描述 |
---|---|
P | 以cpu使用率排序(默认此项) |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出top |
11.5 netstat查看网络状态和端口占用信息
netstat -anp | grep 进程号
——查看该进程的网络信息
netstat -nlp | grep 端口号
——查看网络端口号的占用情况
选项 | 描述 |
---|---|
-a | all,显示所有正在监听(listen)和未监听的套接字(socket) |
-n | 拒绝显示别名,能显示数字的全部转为数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
查看进程sshd的网络信息:
[root@localhost vvvcxjvvv]# netstat -anp | grep sshd
查看端口号100占用情况:
[root@localhost vvvcxjvvv]# netstat -nlp | grep 100
十二、时间日期查看
12.1 date显示时间
date 【选项】 【时间/日期格式】
选项 | 描述 |
---|---|
-d<时间字符串> | 显示指定时间字符串所表示的时间而不是当前时间 |
-s<日期时间> | 设置系统日期时间 |
参数 | 描述 |
---|---|
<+日期时间格式> | 指定显示时使用的日期时间格式 |
举例 | 描述 |
---|---|
date -d’1 days ago’ | 显示一天前时间 |
date | 显示当前时间 |
date “+%Y-%m-%d %H:%M:%S” | 以年月日时分秒显示当前时间 |
[vvvcxjvvv@localhost ~]$ date
Sat Jul 16 07:47:40 PDT 2022
[vvvcxjvvv@localhost ~]$ date "+%Y-%m-%d %H:%M:%S"
2022-07-16 07:48:18
[vvvcxjvvv@localhost ~]$ date -d'1 days ago'
Fri Jul 15 07:48:35 PDT 2022
12.2 date设置系统时间
date -s 字符串时间
例:
date -s"2022-07-26 17:05:03"
[vvvcxjvvv@localhost ~]$ date -s"2022-07-16 22:49:03"
date: cannot set date: Operation not permitted
Sat Jul 16 22:49:03 PDT 2022
[vvvcxjvvv@localhost ~]$ sudo date -s"2022-07-16 22:49:03"
[sudo] password for vvvcxjvvv:
Sat Jul 16 22:49:03 PDT 2022
[vvvcxjvvv@localhost ~]$ date
Sat Jul 16 22:49:06 PDT 2022
12.3 cal查看日历
cal 【year】
——查看year年时的日历,若只有cal则查看当前月的日历
[vvvcxjvvv@localhost ~]$ cal
July 2022
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
十三、设置定时任务
13.1 启动crond服务
systemctl restart crond
——重启crond服务
13.2 crontab设置定时任务
crontab 【选项】
选项 | 描述 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户所有crontab定时任务 |
十四、软件包管理
14.1 RPM
14.1.1 RPM查询
rpm -qa
——查询所安装的所有rpm软件包
rpm -qa | grep xxx
——采取过滤操作,查询安装的xxx软件包
[root@localhost vvvcxjvvv]# rpm -qa | grep firefox
firefox-68.10.0-1.el7.centos.x86_64
14.1.2 RPM安装
rpm -ivh RPM软件包全名
选项 | 描述 |
---|---|
-i | install,安装 |
-v | –verbose,显示详细信息 |
-h | –hash,进度条 |
–nodeps | 安装前不检查依赖 |
[root@localhost vvvcxjvvv]# rpm -qa|grep mysql
14.1.3 RPM卸载
rpm -e RPM软件包
rpm -e --nodeps 软件包
选项 | 描述 |
---|---|
-e | 卸载软件包 |
–nodeps | 卸载软件时不检查依赖 |
[root@localhost vvvcxjvvv]# rpm -e firefox
14.2 YUM
yum 【选项】 【参数】
选项 | 描述 |
---|---|
-y | 对所有提问都回答yes |
参数 | 描述 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查是否有可用的更新rpm软件包 |
remove | 删除指定的rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包所有的依赖关系 |
总结
本文对常用的Linux操作命令进行了归纳与整理
参考资料
《鸟哥的Linux私房菜》