文件目录类命令
1)pwd命令:用于显示用户当前所处的目录。
[root@RHEL7-1 etc]# pwd
/etc
2)cd命令:用来在不同的目录中进行切换。后面跟想要切换的目录名即可。
[root@RHEL7-1 etc]# cd //改变目录位置至用户登录时的工作目录
[root@RHEL7-1 dir1]# cd ~ //改变目录位置至用户登录时的工作目录(用户的家目录)
[root@RHEL7-1 ~]# cd dir1 //改变目录位置至当前目录下的dir1子目录下
[root@RHEL7-1 etc]# cd /dir1/subdir1 //利用绝对路径表示改变目录到 /dir1/ subdir1目录下
[root@RHEL7-1 ~]# cd .. //改变目录位置至当前目录的父目录
[root@RHEL7-1 ~]# cd ../etc //改变目录位置至当前目录的父目录下的etc 子目录下
3)ls命令:用来列出文件或目录信息。
语法:ls [参数] [目录或文件]
常用参数选项如下:
-a:显示所有文件,包括以“.”开头的隐藏文件。
-l:以长格形式显示文件的详细信息。
-R: 递归显示目录
4)cat命令:用于滚屏显示文件内容或是将多个文件合并成一个文件。
语法:cat [参数] 文件名
常用参数选项如下:
-b:对输出内容中的非空行标注行号。
-n:对输出内容中的所有行标注行号。
5)more命令:通常用于分屏显示文件内容。按 Enter
键可以向下移动一行,按 Space
键可以向下移动一页;按 Q
键可以退出more命令。
语法:more [参数] 文件名
常用参数选项如下:
-num:这里的num是一个数字,用来指定分页显示时每页的行数。
+num:指定从文件的第num行开始显示。
6)head命令:用于显示文件的开头部分,默认情况下只显示文件的前10行内容。
语法:head [参数] 文件名
常用参数选项如下:
-n num:显示指定文件的前num行。
-c num:显示指定文件的前num个字符。
7)tail命令:用于显示文件的末尾部分,默认情况下,只显示文件的末尾10行内容。
语法:tail [参数] 文件名
常用参数选项如下:
-n num:显示指定文件的末尾num行。。
+num:从第num行开始显示指定文件的内容。
-f:持续刷新一个文件的内容
8)mkdir命令:用于创建一个目录。
语法:mkdir [-p] 目录名
9)rmdir命令:用于删除空目录。目录名可以为相对路径,也可以为绝对路径。但所删除的目录必须为空目录。
语法:rmdir [-p] 目录名
10)touch命令:用于建立文件或更新文件的修改日期。
语法:touch 文件名或目录名
11)cp命令:用于文件或目录的复制。
语法:cp [参数] 源文件 目标文件
常用参数选项如下:
-f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。
-i:如果目标文件或目录存在,提示是否覆盖已有的文件。
-r:递归复制目录,即包含目录下的各级子目录。
12)mv命令:用于文件或目录的移动或改名。
语法:mv [参数] 源文件或目录 目标文件或目录
常用参数选项如下:
-i:如果目标文件或目录存在,则提示是否覆盖目标文件或目录。
-f:无论目标文件或目录是否存在,直接覆盖目标文件或目录,不提示。
13)rm命名:用于文件或目录的删除。
语法:rm [参数] 文件名或目录名
常用参数选项如下:
-i:删除文件或目录时提示用户。
-f:删除文件或目录时不提示用户。
-r:递归删除目录,即包含目录下的文件和各级子目录。
14)grep命令:用于查找文件中包含有指定字符串的行。
[root@centos ~]# grep 'Use' anaconda-ks.cfg
# Use graphical install
# Use CDROM installation media
[root@centos ~]# cat anaconda-ks.cfg | grep 'Use'
[root@centos ~]# ll /etc | grep 'mnt'
进程管理类命令
1)ps命令:主要用于查看系统的进程。
语法:ps [参数]
常用参数选项如下:
-a:显示当前控制终端的进程(包含其他用户的)。
-u:显示进程的用户名和启动时间等信息。
-l:按长格形式显示输出。
2)pidof命令:用于查询某个指定服务进程的PID值,每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。
语法:pidof [参数] [服务名称]
3)kill命令:前台进程在运行时,可以用 Ctrl+C
组合键来终止它,但后台进程无法使用这种方法终止,此时可以使用kill
命令向进程发送强制终止信号,以达到目的。
语法:kill [-9] 进程1 进程2
其他常用命令
1)clear命令:用于清除字符终端屏幕内容。
[root@RHEL7-1 ~]# clear
2)man命令:用于列出命令的帮助手册。
[root@RHEL7-1 ~]# man ls
3)shutdown命令:用于在指定时间关闭系统。
语法:shutdown [参数] 时间 [警告信息]
常用的参数选项如下:
-r:系统关闭后重新启动。
-h:关闭系统。
时间可以是以下几种形式。
now:表示立即。
hh:mm:指定绝对时间,hh表示小时,mm表示分钟。
+m:表示m分钟以后。
4)reboot命令:用于重新启动系统,相当于 shutdown -r now。
5)poweroff命令:用于立即停止系统,并关闭电源,相当于 shutdown -h now
。
6)alias命令:用于创建命令的别名。
语法:alias 命令别名 = "命令行"
7)unalias命令:用于取消别名的定义。
[root@RHEL7-1 ~]# unalias httpd
8)wget命令:用于在终端中下载网络文件。
语法:wget [参数] 下载地址
9)who命令:用于查看当前登入主机的用户终端信息。
语法:who [参数]
10)echo命令:用于在终端输出字符串或变量提取后的值。
语法:echo [字符串 | $变量]
用户及用户组的创建与管理
新建用户
useradd [选项] <username>
[root@server1 ~]# groupadd dev
[root@server1 ~]# useradd tom
选 项 | 说 明 |
| 指定用户的主目录 |
| 禁用账号的日期,格式为YYYY-MM-DD |
| 设置账户过期多少天后用户账户被禁用。如果为0,账户过期后将立即被禁用;如果为-1,账户过期后,将不被禁用 |
| 用户所属主组群的组群名称或者GID |
| 用户所属的附属组群列表,多个组群之间用逗号分隔 |
| 不要创建用户主目录 |
| 不要为用户创建用户私人组群 |
| 加密的口令,无法直接登录 |
| 指定用户的登录shell,默认为/bin/bash |
| 指定用户的UID,它必须是唯一的,且大于499 |
设置口令
指定和修改用户账户口令的命令是passwd
。超级用户可以为自己和其他用户设置口令,而普通用户只能为自己设置口令。
passwd [选项] [username]
选 项 | 说 明 |
| 锁定(停用)用户账户 |
| 口令解锁 |
| 将用户口令设置为空,这与未设置口令的账户不同。未设置口令的账户无法登录系统,而口令为空的账户可以 |
//root用户修改自己的口令,直接用passwd命令回车即可
[root@RHEL7-1 ~]# passwd
//root用户修改user1用户的口令
[root@RHEL7-1 ~]# passwd user1
注意:需要注意的是,普通用户修改口令时,passwd命令会首先询问原来的口令,只有验证通过才可以修改。而root用户为用户指定口令时,不需要知道原来的口令。
删除用户账户
userdel [-r] 用户名
注意:如果加-r
选项,则在删除用户账户的同时,还将用户主目录以及其下的所有文件和目录全部删除掉。
创建用户组
[root@RHEL7-1 ~]# groupadd testgroup
删除用户组
[root@RHEL7-1 ~]# groupdel testgroup
为组群添加用户
gpasswd [选项] [用户] [组] # 只有root用户和组管理员才能够使用这个命令
# 把user1用户加入testgroup组,并指派user1为管理员
[root@RHEL7-1 ~]# groupadd testgroup
[root@RHEL7-1 ~]# gpasswd -a user1 testgroup
[root@RHEL7-1 ~]# gpasswd -A user1 testgroup
选 项 | 说 明 |
| 把用户加入组 |
| 把用户从组中删除 |
| 取消组的密码 |
| 给组指派管理员 |
su命令
su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户:
[root@RHEL7-1 ~]# useradd -G dev test
[root@RHEL7-1 ~]# su – test
[test@RHEL7-1 ~]$ id
当从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证。
[test@RHEL7-1 ~]$ su root
Password:
[root@RHEL7-1 ~]# su – test
上一次登录:日 5月 6 05:22:57 CST 2018pts/0 上
[test@RHEL7-1 ~]$ exit
logout
[root@RHEL7-1 ~]#
sudo 命令
尽管像上面这样使用su命令后,普通用户可以完全切换到root管理员身份来完成相应工作,但这会暴露root管理员的密码,从而增大了系统密码被黑客获取的概率,因此上述操作并不是最安全的方案。
sudo命名用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,这样既可保证普通用户能够完成特定的工作,也可以避免泄露root管理员密码。我们要做的就是合理配置sudo服务,以便兼顾系统的安全性和用户的便捷性。
sudo [参数] 命令名称
参数 | 作用 |
| 列出当前用户可执行的命令 |
| 指定用户身份执行命令 |
| 清空密码的有效时间,下次执行sudo时需要再次进行密码验证 |
| 在后台执行指定的命令 |
| 更改询问密码的提示框 |
关于文件权限的命令
每一行代码的第一个字符一般用来区分文件的类型
字符 | 具体含义 |
d | 表示是一个目录,在ext文件系统中目录也是一种特殊的文件。 |
- | 表示该文件是一个普通的文件。 |
l | 表示该文件是一个符号链接文件,实际上它指向另一个文件。 |
b、c | 分别表示该文件为区块设备或其他的外围设备,是特殊类型的文件。 |
s、p | 这些文件关系到系统的数据结构和管道,通常很少见到。 |
每一行的第2~10个字符表示文件的访问权限。这九个字符每3个一组,左边的3个字符表示所有者权限,中间3个字符表示与所有者同一组的用户权限,右边3个字符是其他用户权限。
这9个字符根据权限种类的不同分为3种类型。
权限类型 | 权限内容 |
r(Read,读取) | 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。 |
w(Write,写入) | 对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。 |
x(execute,执行) | 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。 |
- | 表示不具有该项权限 |
修改权限
数字表示法
(原文链接:https://www.yuque.com/cdhong/2022/qswqy8)
通常在权限修改时可以用两种方式来表示权限类型:数字表示法和文字表示法。
chmod
命令的格式是:chmod 选项 文件
所谓数字表示法是指将读取(r)、写入(w)和执行(x)分别以数字4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成。
原始权限 | 转换为数字 | 数字表示法 |
rwxrwxr-x | (421) (421) (401) | 775 |
rwxr-xr-x | (421) (401) (401) | 755 |
rw-rw-r-- | (420) (420) (400) | 664 |
rw-r--r-- | (420) (400) (400) | 644 |
文字表示法
使用权限的文字表示法时,系统用4种字母来表示不同的用户。
u
:user
,表示所有者。g
:group
,表示属组。o
:others
,表示其他用户。a
:all
,表示以上3种用户。
使用下面3种字符的组合表示法设置操作权限。
r
:read
,可读。w
:write
,写入。x
:execute
,执行。
操作符号包括以下几种。
+
:添加某种权限。-
:减去某种权限。=
:赋予给定权限并取消原来的权限。
[root@RHEL7-1 ~]# chmod u=rw,g=rw,o=r /etc/file
[root@RHEL7-1 ~]# chmod u+s /etc/file
[root@RHEL7-1 ~]# chmod a-x .bashrc
设置文件预设权限
umask命令指定用户在建立文件或目录时的默认权限值。那么如何得知或设定umask呢?
[root@RHEL7-1 ~]# umask # 查阅默认权限,以数字形态展示
0022 # 第1组数字是特殊权限用的,后面3组与之前一样
[root@RHEL7-1 ~]# umask -S # 以符号类型的方式显示权限
u=rwx,g=rx,o=rx
umask的分值指的是该默认值需要减掉的权限(r、w、x分别对应的是4、2、1),具体如下。
- 去掉
写入
的权限时,umask的分值输入2。 - 去掉
读取
的权限时,umask的分值输入4。 - 去掉
读取和写入
的权限时,umask的分值输入6。 - 去掉
执行和写入
的权限时,umask的分值输入3。
以上面的例子,因为umask为022,所以user并没有被去掉任何权限,不过group与others的权限被去掉了2(也就是w这个权限),那么使用者的权限如下。
- 建立文件时:(
-rw-
rw-
rw-
) =-rw-
r--
r--
。 - 建立目录时:(
drwx
rwx
rwx
) =drwx
r-x
r-x
。
目录与文件的默认权限是不一样的。x权限对于目录是非常重要的。但是一般文件的建立是不应该有执行的权限。因为一般文件通常是用于数据的记录。
[root@RHEL7-1 ~]# touch file1
[root@RHEL7-1 ~]# mkdir file2
-rw-r--r--. 1 root root 0 2月 17 14:40 file1
drwxr-xr-x. 2 root root 4096 2月 17 14:40 file2
利用 umask
可以修改默认预定权限,只需要在 umask 后面跟上数字即可。
设置文件隐藏属性
chattr命令
,改变文件属性。语法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
。
这项指令可改变存放在ext4文件系统上的文件或目录属性,这些属性共有以下8种模式。
a
:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。b
:不更新文件或目录的最后存取时间。c
:将文件或目录压缩后存放。d
:将文件或目录排除在倾倒操作之外。i
:不得任意改动文件或目录。s
:保密性删除文件或目录。S
:即时更新文件或目录。u
:预防意外删除。
操作符号包括以下几种。
-R
:递归处理,将指定目录下的所有文件及子目录一并处理。-v
<版本编号>:设置文件或目录版本。-V
:显示指令执行过程。+<属性>
:开启文件或目录的该项属性。-<属性>
:关闭文件或目录的该项属性。=<属性>
:指定文件或目录的该项属性。
[root@RHEL7-1 ~]# vim testfile
[root@RHEL7-1 ~]# chattr +i testfile
[root@RHEL7-1 ~]# rm testfile
rm:是否删除普通文件 "testfile"?y
rm: 无法删除"testfile": 不允许的操作
lsattr命令
,用于显示文件隐藏属性。语法:lsattr [-adR] 文件或目录
-a
:将隐藏文件的属性也显示出来。-d
:如果是目录,仅列出目录本身的属性而非目录内的文件名。-R
:连同子目录的数据也一并列出来。
[root@RHEL7-1 ~]# lsattr testfile
----i--------e-- testfile
配置与磁盘管理
查看虚拟机设置磁盘情况
fdisk -l
找到刚才新增的磁盘目录:
fdisk /dev/sdb
fdisk命令选项
命令 | 功能 | 命令 | 功能 |
a | 调整硬盘启动分区 | q | 不保存更改,退出fdisk命令 |
d | 删除硬盘分区 | t | 更改分区类型 |
l | 列出所有支持的分区类型 | u | 切换所显示的分区大小的单位 |
m | 列出所有命令 | w | 把修改写入硬盘分区表,然后退出 |
n | 创建新分区 | x | 列出高级选项 |
p | 列出硬盘分区表 |
mkfs命令
-t: 指令要创建的文件系统类型
-c: 建立文件系统前首先检查坏块
-l file:从file文件中读磁盘坏块列表,file文件一般是由磁盘坏块检查程序产生的
-V:输出建立文件系统详细信息
把 /dev/sdb1 分区格式化文件系统为ext4:mkfs -t ext4 /dev/sdb1
挂载到一个指定的目录,系统默认提供了一个挂载目录 /mnt
通过命令挂载:mount 分区 挂载目录 mount /dev/sdb1 /mnt/sdb1
[root@RHEL7-1 ~]# mkdir /newFs # 创建挂载点
[root@RHEL7-1 ~]# mount /dev/sdb1 /newFs/ # 挂载硬盘
[root@RHEL7-1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 9.8G 93M 9.2G 1% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.0M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 7.8G 3.0G 4.4G 41% /usr
/dev/sda3 7.8G 44M 7.3G 1% /home
/dev/sda6 7.8G 293M 7.1G 4% /var
/dev/sda8 976M 2.8M 906M 1% /tmp
/dev/sda1 283M 143M 122M 54% /boot
tmpfs 183M 28K 183M 1% /run/user/0
/dev/sdb1 4.8G 20M 4.6G 1% /newFs
df命令
df命令用来查看文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,以及目前还有多少空间等信息,还可以利用该命令获得文件系统的挂载位置。df命令的语法如下:df [参数选项]
。
常见参数选项如下:
-a
:显示所有文件系统磁盘使用情况,包括0块的文件系统,如/proc文件系统。-k
:以k字节为单位显示。-i
:显示i节点信息。-t
:显示各指定类型的文件系统的磁盘空间使用情况。-h
:以人们易读的GB、MB、KB等格式显示。-H
:与-h
参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。-x
:列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。-T
:显示文件系统类型。
# 列出各文件系统的占用情况及文件类型:
[root@RHEL7-1 ~]# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/sda2 ext4 10190100 94868 9554560 1% /
devtmpfs devtmpfs 919016 0 919016 0% /dev
tmpfs tmpfs 933524 0 933524 0% /dev/shm
tmpfs tmpfs 933524 9140 924384 1% /run
tmpfs tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda5 ext4 8125880 3091996 4598072 41% /usr
/dev/sda3 ext4 8125880 44848 7645220 1% /home
/dev/sda6 ext4 8125880 299352 7390716 4% /var
/dev/sda8 ext4 999320 2788 927720 1% /tmp
/dev/sda1 ext4 289285 145483 124346 54% /boot
tmpfs tmpfs 186708 28 186680 1% /run/user/0
mount与umount命令
在磁盘上建立好文件系统之后,还需要把新建立的文件系统挂载到系统上才能使用。这个过程称为挂载
。文件系统所挂载到的目录被称为挂载点(mount point)。Linux系统中提供了/mnt和/media两个专门的挂载点。一般而言,挂载点应该是一个空目录,否则目录中原来的文件将被系统隐藏
。
文件系统可以在系统引导过程中自动挂载,也可以手动挂载,手动挂载文件系统的挂载命令是mount。该命令的语法格式如下:mount 选项 设备 挂载点
。
主要选项如下:
-t
:指定要挂载的文件系统的类型。-r
:如果不想修改要挂载的文件系统,可以使用该选项以只读方式挂载。-w
:以可写的方式挂载文件系统。-a
:挂载/etc/fstab文件中记录的设备。
# 把文件系统类型为ext4的磁盘分区/dev/sdb1挂载到/newFS目录下
[root@RHEL7-1 ~]# mount -t ext4 /dev/sdb1 /newFs
挂载U盘
1. 新增USB硬件设备
2. 插入U盘,选择在虚拟机上加载
3. 通过fdisk -l 查看是否存在该设备
4. 挂载U盘
挂载光盘
1. 到虚拟机的设置中,指定CD目录
2. 在/dev/ 目录下就会出现 cdrom 这个目录
3. 只读挂载: mount -t auto /dev/cdrom /mnt/cd
卸载
umount 设备挂载地址
umount /mnt/cd
自动挂载
vim /etc/fstab
设备地址 挂载地址 文件格式 挂载方式 是否备份 是否检查
/dev/sdb3 /media/sdb3 ext4 defaults 0 0