序言
废话就不多说了,还没想好说啥废话,暂时直接先上干货吧。QAQ
如发现问题还请联系博主进行修改,谢谢!!!
文章版权为Anoyer博客所有,转载请以链接形式标明本文地址
Linux常用命令
1、pwd 命令
pwd
(Print Working Directory ):显示当前所在目录。
2、cd 命令
cd
(Change Directory): 切换当前目录。常用特殊目录表示:
1
2
3
4
5
6 cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为"/",则执行完后还在"/";".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。
3、ls 命令
ls
(list): 列出指定目录列表信息,如果没有参数默认列出当前目录下的所有文件和文件夹(隐藏文件和文件夹除外)。常见
ls
命令选项:
1
2
3
4
5
6
7
8
9 -l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-a:显示所有文件和文件夹(包括隐藏文件/文件夹);
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-l:列出内容的详细信息;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
-R:递归处理,将指定目录下的所有文件及子目录一并处理。例如:显示根目录下所有文件和文件夹。
- 如果一次查看多个目录,则每个目录名用空格隔开。
应用示例一:
查看目录
/mnt
下的所有信息(包括隐藏内容),则可以使用如下命令:
ls -a /mnt
![]()
应用示例二:
查看目录
/mnt
下的所有信息(包括隐藏内容),同时显示每个文件的详细信息,则可以使用如下命令:
ls -al /mnt
![]()
Linux文件操作
1、touch 创建文件
linux中创建文件的常用命令是
touch
,命令格式如下:
touch filename
有时可能需要创建一个空的文件的情况。在这种情况下,可以使用
touch
命令来轻松创建一个空文件。例如:创建一个新的文件
testfile
可以使用如下命令。
touch testfile
如果想同时创建多个文件也可以使用
touch
命令完成,具体格式如下:
touch file1 file2 ...
只需将不同的文件名用空格分隔即可完成创建多个文件。
2、rm 删除文件
Linux中常用的删除文件的命令是
rm
,使用格式如下:
rm [命令选项] filename
常用命令选项:
1
2
3 -f:强制删除文件或目录;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
-i:删除已有文件或目录之前先询问用户;例如,删除我们刚刚创建的文件
testfile
可以使用如下命令。
rm -f testfile
3、mkdir 创建文件夹
Linux中创建文件夹命令是
mkdir
,命令格式如下:
mkdir [命令选项] dirname
常用命令选项:
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
例如:我们新创建一个文件夹
testdir
可以使用如下命令。
1 mkdir testdir
因为新创建的文件夹是一个空的文件夹,所以使用
ls -l
显示的结果是空。
4、rmdir删除文件夹
Linux中删除文件夹的命令是
rmdir
或者rm -r
,命令格式如下:
rmdir [命令选项] dirname
常用命令选项:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
例如:将刚刚新创建的文件夹
testdir
删除可以使用如下命令。
rmdir testdir
在
Linux
系统命令行下删除一个不为空的目录,则可以使用如下命令:
rm -r Dir
5、cp 文件和文件夹拷贝
Linux使用
cp
命令用来将一个或多个源文件或者目录复制到指定的目录中,命令格式如下:
cp [命令选项] 源文件 目的文件
常用命令选项:
1
2
3 -f:强行复制文件或目录,不论目标文件或目录是否已存在; -i:覆盖既有文件之前先询问用户;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;例如:新建一个文件
newfile
和一个文件夹newdir
,将newfile
复制到newdir
目录下。具体命令如下。
1
2
3 touch newfile
mkdir newdir
cp newfile newdir
6、mv 文件和文件夹移动/重命名
Linux使用
mv
命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中,命令格式如下:
mv [命令选项] 源文件 目标文件
常用命令选项:
1
2 -f:强行复制文件或目录,不论目标文件或目录是否已存在; -i:覆盖既有文件之前先询问用户;-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;例如:新建一个文件
newfile
和一个文件夹newdir
,将newfile
剪切到newdir
目录下,并重新命名为newfileCpy
。具体命令如下。
1
2
3 touch newfile
mkdir newdir
mv newfile newdir/newfileCpy
Linux命令查询
1、man 查询命令的帮助文件
linux中使用
man
命令来查询命令的帮助文件,命令格式如下:
man [章节] command
常用命令如下:
1
2
3
4
5
6 d, Ctrl+D: 向文件尾部翻半屏
u, Ctrl+U: 向文件首部翻半屏
q: 退出
#:跳转至第#行
1G: 回到文件首部
G:翻至文件尾部命令的帮助文件通常存放在
/usr/share/man
目录下。
man
包含9
个章节,章节用数字表示,分别是:
1
2
3
4
5
6
7
8
9 1.用户命令
2.系统调用
3.C库调用
4.设备文件及特殊文件
5.配置文件格式
6.游戏
7.杂项
8.管理类的命令Linux
9.内核API如果查询命令的时候不追加章节,则默认从第一个章节开始查询,以此类推,直到找到对应要查询的命令为止。
例如:使用
man
命令查询open
命令的使用方法。
man open
如果想查询系统库函数的
open
函数的使用方法,则使用如下命令:
man 2 open
使用
man
搜索命令
/KEYWORD:
以
KEYWORD
指定的字符串为关键字,从当前位置向文件尾部搜索,不区分字符大小写;
1
2 n: 下一个
N:上一个
?KEYWORD:
以
KEYWORD
指定的字符串为关键字,从当前位置向文件首部搜索,不区分字符大小写;
1
2 >n: 跟搜索命令同方向,下一个
>N:跟搜索命令反方向,上一个
2、info 查询命令的帮助文件
linux中使用
info
命令来查询命令的帮助文件。info
页面比man page
编写得要更好、更容易理解,也更友好,但man page
使用起来确实要更容易得多。一个man page
只有一页,而info
页面几乎总是将它们的内容组织成多个区段(称为节点),每个区段也可能包含子区段(称为子节点)。命令格式如下:
info [命令参数] command
常用命令参数选项:
1
2
3
4 -d:添加包含info格式帮助文档的目录;
-f:指定要读取的info格式的帮助文档;
-n:指定首先访问的info帮助文件的节点;
-o:输出被选择的节点内容到指定文件。常见命令如下:
1
2
3
4
5
6
7
8
9
10 >?键:它就会显示info的常用快捷键。
>N键:显示(相对于本节点的)下一节点的文档内容。
>P键:显示(相对于本节点的)前一节点的文档内容。
>U键:进入当前命令所在的主题。
>M键:敲M键后输入命令的名称就可以查看该命令的帮助文档了。
>G键:敲G键后输入主题名称,进入该主题。
>L键:回到上一个访问的页面。
>SPACE键:向前滚动一页。
>BACKUP或DEL键:向后滚动一页。
>Q:退出info。例如:我们使用
info
来查询info
的帮助手册。
info info
3、whatis 显示命令的简短描述
whatis
用来显示命令的简短描述。命令格式如下:
whatis command
例如:我们使用
whatis
来查询ls
的使用方法。
Linux之文件/目录内容查看
1、cat 查看文件内容
具体命令如下:
cat 参数 文件名
常用参数如下:
-n 或 --number
:由1
开始对所有输出的行数编号;
--b 或 --number-nonblank
:和-n
相似,只不过对于空白行不编号。具体说明:
cat
命令支持同时查看多个文件,当一次查看多个文件时,每个文件的内容都会被打印到屏幕上;cat
命令不能对文件进行编辑操作,只能查看文件内容。应用示例:
查看文件
/etc/passwd
内容,则可以使用如下命令:
cat /etc/passwd
![]()
2、head 查看文件前n行内容
具体命令如下:
head 参数 文件名
常用参数如下:
-n number
:显示文件的前number
行内容;具体说明:
head
命令是从文件的开头显示内容,默认情况下只显示前10
行的内容;head
命令不能对文件进行编辑操作,只能查看文件内容。应用示例:
查看文件
/etc/passwd
的前8
行内容,则可以使用如下命令:
head -n 8 /etc/passwd
![]()
3、tail 查看文件后n行内容
具体命令如下:
tail 参数 文件名
常用参数如下:
-n number
:显示文件的最后number
行内容;具体说明:
tail
命令是从文件的结尾显示内容,默认情况下只显示最后10
行的内容;tail
命令不能对文件进行编辑操作,只能查看文件内容。应用示例:
查看文件
/etc/passwd
末尾5
行内容,则可以使用如下命令:
tail -n 5 /etc/passwd
![]()
Linux文件/目录高级管理一
1、chmod 用户文件/目录权限修改
Linux
中使用chmod
命令来修改文件或者目录权限。文字设定法具体命令如下:
chmod [who] [+ | - | =] [mode] 文件名/目录名
who
参数如下:
- u 表示“用户
(user)
”,即文件或目录的所有者;- g 表示“同组
(group)
用户”,即与文件属主有相同组ID的所有用户;- o 表示“其他
(others)
用户”;- a 表示“所有
(all)
用户”,它是系统默认值。操作符如下:
- +:添加某个权限;
- -:取消某个权限;
- =:赋予给定权限并取消其他所有权限。
mode
参数如下:
- r 可读;
- w 可写;
- x 可执行。
数字设定法具体命令如下:
chmod [mode] 文件名/目录名
mode
为具体的数字。首先了解用数字表示的属性的含义:
0
表示没有权限,1
表示可执行权限,2
表示可写权限,4
表示可读权限,然后将其相加。所以数字属性的格式应为3
个从0
到7
的八进制数,其顺序是u
、g
和o
。将文件
testFile
的所有权限设置为仅读权限,可以使用如下命令:
chmod a=r testFile
![]()
案例演示二:
将文件
testFile
的所有权限设置为可读可写,同组用户权限设置为只读,可以使用如下命令:
chmod u=rw,g=r testFile
![]()
2、chown 修改目录所有者命令
Linux中使用
chown
命令来修改目录所有者。具体命令如下:
chown 参数 用户名/用户ID 目录名
常见命令参数:
-R或——recursive
:递归处理,将指定目录下的所有文件及子目录一并处理;--help
:在线帮助;执行权限
chown
必须以root
权限才能执行,如果是普通用户想执行chown
时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示一:
将系统中已存在的目录
testDir
的所有者设置为newUser
,可以使用如下命令:
sudo chown newUser testDir
![]()
可以使用
ls -l
或ll
命令查看目录所有者是否修改成功。
![]()
将系统中已存在的目录
Dir
以及其所有子目录和子文件的所有者设置为newUser
,可以使用如下命令:
sudo chown -R newUser Dir
![]()
可以看到
Dir
目录下的所有子目录和子文件的所有者都已经修改成了newUser
。
3、chgrp 修改目录所属组命令
Linux中使用
chgrp
命令来修改目录所属组。具体命令如下:
chgrp 参数 用户组名/组ID 目录名
常见命令参数:
-R或——recursive
:递归处理,将指定目录下的所有文件及子目录一并处理;--help
:在线帮助;执行权限
执行权限
chgrp
必须以root
权限才能执行,如果是普通用户想执行chgrp
时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示一:
将系统中已存在的目录
testDir
的所属组设置为newGroup
,可以使用如下命令:
sudo chgrp newGroup testDir
![]()
案例演示二:
将系统中已存在的目录
Dir
以及其所有子目录和子文件的所属组设置为newGroup
,可以使用如下命令:
sudo chgrp -R newGroup Dir
![]()
linux
中也可以使用chown
命令来修改目录的所属组,其使用方法与修改文件的使用方法一致。案例演示一:
使用
chown
命令将系统已存在的文件Dir
以及其所有子目录和子文件的所有者设置为fzm
所属组设置为fzm
,可以使用如下命令:
sudo chown -R fzm:fzm Dir
![]()
Linux文件/目录高级管理二
1、df 显示磁盘分区上的可使用的磁盘空间
df
命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB
。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。具体命令如下:
df 命令参数 参数
常用参数如下:
-a或--all
:包含全部的文件系统,包括系统特有的/proc
等文件系统;-k
: 以KB为单位显示各文件系统;-m
: 以MB为单位显示各文件系统;-h
: 以可读性较高的方式来显示信息;-i或--inodes
:显示inode
的信息。案例演示一:
查看系统所有磁盘设备,默认是
KB
为单位,可以使用如下命令:
df
![]()
案例演示二:
使用
-h
选项以KB
以上的单位来显示,可读性高,可以使用如下命令:
df -h
![]()
案例演示三:
将
/etc
目录下的可用的磁盘容量以易读的格式显示出来,可以使用如下命令:
df -h /etc
![]()
2、du 对文件和目录磁盘使用的空间的查看
du命令也是查看使用空间的,但是与
df
命令不同的是Linux
du
命令是对文件和目录磁盘使用的空间的查看,还是和df
命令有一些区别的。具体命令如下:
du 命令参数 参数
常用参数如下:
- -a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;
- -h : 以可读性较高的方式来显示信息;
- -k : 以
KB
为单位显示容量;- -m : 以
MB
为单位显示容量;- -s : 列出总量,不列出每个目录占用的容量。
案例演示一:
列出当前目录下的所有文件的总容量,可以使用如下命令:
du
![]()
注: 直接输入
du
命令没有加任何参数时,则du
会分析当前所在目录的文件与目录所占用的磁盘空间,但是,实际显示时仅会显示目录容量。案例演示二:
列出当前目录下的所有文件的总容量,同时将每个文件大小也列出来,可以使用如下命令:
du -a
![]()
以可读性较高的方式显示多个文件所占磁盘大小,可以使用如下命令:
du -h c++ g++
![]()
3、ln 创建链接和软链接
硬链接指通过索引节点来进行链接。在
Linux
的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index
)。在Linux
中,多个文件名指向同一索引节点是存在的。一般这种链接就是硬链接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止误删的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。
硬链接特点如下:
- 文件有相同的
inode
及data block
;- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建;
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同
inode
号的文件。具体命令如下:
ln 源文件 目标文件
案例演示一:
为当前目录下的文件
testFile
创建一个硬链接testFileLink
,可以使用如下命令:
ln testFile testFileLink
![]()
在
ls
结果的最左边一列,是文件的inode
值,你可以简单把它想成C
语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。可以看到,这两个文件就如同一个文件一样,inode
值相同,都指向同一个区块。
软链接文件有类似于
Windows
的快捷方式。它实际上是一个特殊的文件。在符号链接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。
软链接特点如下:
- 源文件和目标文件有不相同的
inode
及data block
;- 软链接没有硬链接的限制,可以对目录文件做符号链接;
- 软链接可以在不同文件系统之间做软链接;
- 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是
l
;- 符号链接的大小是其链接文件的路径名中的字节数;
具体命令如下:
ln -s 源文件 目标文件
案例演示一·:
为当前目录下的文件
testFile
创建一个软链接myLink
,可以使用如下命令:
ln -s testFile myLink
![]()
4、mount 挂载
mount命令详解
mount
是Linux
下的一个命令,它可以将分区挂接到Linux
的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。
mount
命令的最常用于挂载cdrom
,使我们可以访问cdrom
中的数据,因为你将光盘插入cdrom
中,早先Linux
发行版并不会自动挂载,必须使用mount
命令来手动完成挂载。具体命令如下:
mount 命令参数 设备文件名 挂载点
常用命令参数:
1
2
3
4 -r:将文件系统加载为只读模式;
-h:显示帮助信息并退出;
-t <list>:指定文件系统类型;
-o <list>:描述设备的挂载方式;常用文件系统类型:
1
2
3
4
5
6 光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs常用设备的挂载方式:
1
2
3
4 loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集注意:通常在挂载设备时不需要指定文件系统类型,
mount
会自动选择正确的类型。执行权限:
mount
必须以root权限才能执行,如果是普通用户想执行mount
时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示:
将文件
/etc/passwd
制作成一个光盘镜像文件mydisk.iso
,创建一个挂载点/home/vcdrom
,将镜像文件mydisk.iso
挂载到/home/vcdrom
目录下,列出镜像文件中的内容,具体使用如下命令:
1
2 sudo mkisofs -r -J -V mydisk -o ./mydisk.iso /etc/passwd 2> /dev/nullsudo mkdir /home/vcdromsudo mount -o loop -t iso9660 ./mydisk.iso /home/vcdrom
ls -l /home/vcdrom
![]()
第一条命令是将
/etc/passwd
文件制作成一个iso
镜像文件;第二条命令是创建一个挂载点;
第三条命令是将创建好的镜像文件挂载到
/home/vcdrom
目录下;第四条命令是查看镜像文件的内容;
5、umount 卸载已经加载的文件系统
umount
命令用于卸载已经加载的文件系统。利用设备名或挂载点都能umount
文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。具体命令如下:
umount 命令参数 挂载点/设备名
常用命令参数:
1 >-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;-h:显示帮助信息并退出;执行权限:
mount
必须以root
权限才能执行,如果是普通用户想执行mount
时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示:
将上一个案例已经挂载好的镜像文件(
mydisk.iso
)卸载,然后看到挂载点目录内容,可以使用如下命令:
1 >sudo umount /home/vcdromls -l /home/vcdrom将镜像文件从
/home/vcdrom
目录卸载后,该目录还原为原有的内容,即为空目录。
![]()
Linux之用户管理
1、useradd 创建用户
Linux创建用户命令
Linux
中使用useradd
命令来创建一个新用户。命令格式格式:
useradd [命令参数] 参数
常见命令参数:
- -d<登入目录>:指定用户登入时的启始目录;
- -D:查看或变更预设值;
- -g<群组>:指定用户所属的群组;
- -m:自动建立用户的登入目录;
- -M:不要自动建立用户的登入目录;
- -s:指定用户登入后所使用的
shell
。
useradd
必须以root
权限才能执行,如果是普通用户想创建一个新用户时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示
1 . 查看
useradd
系统默认属性值,使用命令useradd -D
。笔者使用的系统是
Ubuntu16.04
,useradd
系统默认值如下所示:
参数 说明 GROUP 指新创建的用户将被添加到用户组ID为100的公共用户组中 HOME 指新创建的用户将在/home目录下创建一个HOME账户 INACTIVE 指当密码逾期时,用户将不会被禁用 EXPIRE 指新创建的用户不会在设定日期被设置为逾期 SHELL 指新创建的用户使用/bin/sh(也就是bash)作为默认shell SKEL 指系统会将/etc/skel目录中的内容复制到新创建的用户的HOME目录 CREATE_MAIL_SPOOL 指系统不会在邮件目录中创建一个文件用于新创建用户账户接受邮件 2 . 使用
useradd
命令新创建一个用户test
,并且自动建立用户的登入目录。
![]()
在背景介绍中,我们了解到,
Linux
中用户信息是保存在/etc/passwd
文件中,我们可以使用命令tail /etc/passwd
命令查看/etc/passwd
文件最后10行中是否存在刚刚新创建的test
用户信息。
![]()
2、userdel 删除用户
Linux删除用户命令
Linux
中使用userdel
命令来删除一个已经存在的用户。命令格式:
userdel [命令参数] 参数
常见命令参数:
- -f:强制删除用户,即使用户当前已登录;
- -r:删除用户的同时,删除与用户相关的所有文件。
userdel
必须以root
权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示
1 . 使用
userdel
命令删除一个已经存在的用户test
,并且自动删除其家目录文件。
因为系统默认是不会给新创建的用户自动创建一个文件夹用于用户账户接收邮件,所以在使用
userdel -r
命令删除的时候会提醒/var/mail/test
文件夹不存在。2、将当前工作目录切换到新创建的用户
newUser
家目录;
cd /home/newUser
3、passwd 修改用户密码
用户密码存放地及方式
Linux中用户的登录密码是存放在
/etc/shadow
文件中,/etc/shadow
文件中存放的是加密过后的密码,所以在/etc/shadow
文件中看到的密码是加密过后的密文。看下笔者的电脑中
/etc/shadow
文件存放的内容格式。
可以看到第一个冒号前是用户名,用户名是以明文的方式存放。
在第一个冒号和第二个冒号之间存放的是加密过后的密码,密码是以密文的方式存放,其中密文是由用户密码和其它信息加密后组成的,这里不做详细讲解,我们只需要知道如果第一个冒号和第二个冒号之间是
*
或者!
或者空,则表示该用户没有密码,否则,则表示该用户是有密码。例如:用户名
fzm
是存在密码,而mysql
是不存在密码的。使用passwd命令修改用户密码
命令格式:
passwd [命令参数] 参数
常见命令参数:
- -d 删除密码;
- -l 停止账号使用;
- -S 显示密码信息。
passwd
必须以root
权限才能执行,如果是普通用户想执行passwd
时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示
1: 使用
useradd
命令来新创建一个用户,使用passwd
命令来设置登录密码。
使用
useradd
命令创建一个新用户(test
),此时test
用户是没有密码的,所以使用tail -n 1 /etc/shadow
命令查看/etc/shadow
文件的最后一行可以看出test
用户密码部分为!
。使用
passwd
命令为test
用户设置密码时,可以看到需要输入两次密码,目的是为了确保两次输入的密码一致。当设置完密码后,可以看到/etc/shadow
文件中test
用户的密码部分已经为加密过后的密文。2: 使用
passwd
命令来清除用户的密码。
使用
passwd
命令清除用户test
的登录密码,使用tail -n 1 /etc/shadow
命令查看/etc/shadow
文件的最后一行可以看出test
用户密码部分为空,此时test
用户是没有密码的。
#### 4、chpasswd 修改用户密码
chpasswd
命令通常是用于批量修改用户密码,从标准输入批量读取成对的用户名和密码,其中输入的用户名和密码的格式为用户名:密码。例如要批量更新用户密码,将用户名和密码写入到一个文件中,格式如下所示:
然后执行执行如下命令来更新密码:
sudo chpasswd < batch.txt
<
符号表示输入重定向,接下来的实训中我们会详细的介绍。命令格式:
chpasswd [命令参数] 参数
常见命令参数
- -e:输入的密码是加密后的密文;
- -h:显示帮助信息并退出。
chpasswd
必须以root
权限才能执行,如果是普通用户执行时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示
1: 使用
chpasswd
命令来更新用户登录密码。
chpasswd
是从键盘不断的读入指令,我们可以使用Ctrl+D
组合键来结束键盘输入。
5、login 让用户登录系统
使用
login
命令登录
login
命令是让用户登录系统,可通过它的功能随时更换登入身份。当/etc
目录里含名称为nologin
的文件时,系统只允许root
帐号登入系统,其他用户一律不准登入。当使用
login
命令登录系统后,可以使用logout
命令或者exit
命令来退出当前用户登录,返回到登录前的用户状态。命令格式:
login [命令参数] 参数
参数为登录的用户名,可以不输入登录的用户名,直接输入
login
命令后回车,然后根据提示再输入用户名和密码。常见命令参数
- -p:告诉login指令不销毁环境变量;
- -h:指定远程服务器的主机名。
login
必须以root
权限才能执行,如果是普通用户执行时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示
1: 使用
login
命令来登录系统(文件/etc/nologin
不存在)。首先查看当前登录的用户名是
fzm
。使用
newUser
用户来登录系统,然后查看当前登录的用户名。
使用
logout
或者exit
命令退出newUser
用户,然后在查看当前登录用户是否为fzm
。2: 使用
login
命令来登录系统(文件/etc/nologin
存在)。首先查看当前登录的用户名是
fzm
。在
/etc
目录下新创建一个nologin
文件,使用如下命令创建:
sudo touch /etc/nologin
使用普通用户
newUser
来登录系统,查看是否可以登录成功。发现使用
newUser
用户是无法登录系统的,只有使用root
用户才能登录系统。
6、su 切换用户身份
使用
su
命令切换用户身份
su
命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。当使用
su
命令切换用户后,使用exit
命令退出当前身份,返回原有登录用户身份。注:如果当前用户身份是root,则使用su命令切换到其他用户的时候不需要相应用户的密码
命令格式:
su [命令参数] 参数
参数为登录的用户名,如果没有参数,则默认切换为
root
用户。常见命令参数
-c<指令>
或--command=<指令>
:执行完指定的指令后,即恢复原来的身份;-l
或--login
:改变身份时,也同时变更工作目录,以及HOME
,SHELL
,USER
,logname
。此外,也会变更PATH变量;-m
,-p
或--preserve-environment
:变更身份时,不要变更环境变量;-s<shell>
或--shell=<shell>
:指定要执行的shell
。
su
命令所有使用者都可以执行。案例演示
1: 使用
su
命令切换当前用户身份(不改变当前工作目录)。首先查看当前登录的用户名是
fzm
,当前工作目录是/home/fzm
。切换当前用户为
newUser
用户,然后查看当前用户身份和当前工作目录。使用
exit
命令退出newUser
用户,然后在查看当前登录用户身份和当前工作目录。2: 使用
su
命令切换当前用户身份(改变当前工作目录)。首先查看当前登录的用户名是
fzm
,当前工作目录是/home/fzm
。切换当前用户为
newUser
用户,然后查看当前用户身份和当前工作目录。使用
exit
命令退出newUser
用户,然后在查看当前登录用户身份和当前工作目录。*3、使用su命令切换当前用户身份为newUser,并且执行whoami指令,然后恢复原来的身份 *
su -c whoami newUser
用户高级管理
1、groupadd 创建一个新用户组
Linux创建用户组命令
Linux
中使用groupadd
命令来创建一个新用户组。命令格式:
groupadd [命令参数] 参数
常见命令参数:
- -g:指定新建工作组的id;
- -r:创建系统工作组,系统工作组的组ID小于500;
groupadd
必须以root
权限才能执行,如果是普通用户想使用该命令,需要在命令前加sudo
命令来提升权限为root
权限。案例演示一
使用
groupadd
命令新创建一个用户组testGroup
![]()
在背景介绍中,我们了解到,
Linux
中用户组信息是保存在/etc/group
文件中,我们可以使用命令tail /etc/group
命令查看/etc/group
文件最后10行中是否存在刚刚新创建的testGroup
用户信息。
![]()
案例演示二
使用
groupadd
命令新创建一个用户组testGroupID
,并且指定组的ID
![]()
注意:我们可以看到有时执行
sudo
命令就不需要输入密码,这是因为每次都输入密码比较麻烦,所以Linux
会设置一个sudo
的会话时间,就是说我们在第一次执行sudo
的时候是要输入密码,那么在接下来的一段时间内在执行sudo
的时候就不需要输入密码,这个会话时间默认是5
分钟,用户也可以通过编辑/etc/sudoers
来修改这个会话时间的大小。同样我们可以使用命令
tail /etc/group
命令查看/etc/group
文件最后10
行中是否存在刚刚新创建的testGroupID
用户信息。
![]()
2、groupdel 删除一个已经存在的用户组
Linux删除用户组命令
Linux
中使用groupdel
命令来删除一个已经存在的用户组。命令格式:
groupdel 参数
参数为要删除的用户组名
groupdel
必须以root
权限才能执行,如果是普通用户想使用该命令,需要在命令前加sudo
命令来提升权限为root
权限。案例演示一
使用
groupdel
命令删除上面创建的testGroup
和testGroupID
组
![]()
3、id 用于显示用户的ID,以及所属群组的ID
Linux查看用户所属组
使用
id
命令查看。命令格式:
id [命令参数] 参数
参数为要查询的用户名,默认是当前登录用户。
常见命令参数:
-g或--group
:显示用户所属群组的ID
;-G或--groups
:显示用户所属附加群组的ID
;-n或--name
:显示用户,所属群组或附加群组的名称。- -r或–real 显示实际ID。
- -u或–user 显示用户ID。
- -help 显示帮助。
- -version 显示版本信息。
id
命令的执行权限是面向所有用户。案例演示:
使用
id
命令查看用户fzm
所属组。
![]()
####4、groups 查看用户所属组
使用
group
命令查看。命令格式:
groups 参数
参数为要查询的用户名,默认是当前登录用户。
执行权限:
groups
命令的执行权限是面向所有用户。案例演示:
使用
groups
命令查看用户fzm
所属组。
5、usermod 修改用户属性
Linux用户信息修改命令
Linux
中usermod
命令是最强大的用户账户修改实用工具。
usermod
命令我们在上一关只是简单的用到其-g
、-G
参数对用户的所属组进行修改,本关我们将进一步使用usermod
命令的其它属性进行修改更多的属性。命令格式:
usermod [命令参数] 参数
常见命令参数:
- -c<备注>:修改用户帐号的备注文字;
- -d<登入目录>:修改用户登入时的目录;
- -e<有效期限>:修改帐号的有效期限;
- -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
- -g<群组>:修改用户所属的群组;
- -G<群组>;修改用户所属的附加群组;
- -l<帐号名称>:修改用户帐号名称;
- -L:锁定用户密码,使密码无效;
- -s:修改用户登入后所使用的
shell
;- -u:修改用户
ID
;- -U:解除密码锁定。
usermod
必须以root
权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo
命令来提升权限为root
权限。使用usermod命令修改用户组
如果要一个用户仅仅属于某一个组,而不是同时属于多个组,则使用如下命令:
命令格式:
usermod -g 组名 用户名
如果要给一个用户添加一个新的组,同时保留原来有所的组,则使用如下命令:
命令格式:
usermod -a -G 组名 用户名
usermod
必须以root
权限才能执行,如果是普通用户想执行usermod
时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示一:
新创建一个用户
newUser
和新创建一个用户组newGroup
,使用usermod
命令将newUser
用户所属组修改为newGroup
。
![]()
首先,创建用户
newUser
和组newGroup
,使用groups
命令查看用户newUser
所属的组,因为默认情况下新创建用户的时候会默认创建一个与用户名同名的私有组,并将新创建的用户所属组设置为私有组。接下来使用usermod
命令来修改用户所属组,最后查看修改是否成功。案例演示二:
新创建一个用户
newUser
和新创建一个用户组newGroup
,使用usermod
命令为newUser
用户新添加一个组newGroup
。
![]()
首先,创建用户
newUser
和组newGroup
,使用groups
命令查看用户newUser
所属的组。接下来使用usermod
命令来为用户添加一个新的组,最后查看添加是否成功。案例演示三:
使用
usermod
命令修改用户名。例如,在系统中已经存在一个用户名为
oldUser
的用户,由于某种原因,现在必须将其修改成newUser
。
![]()
案例演示四:
使用
usermod
命令修改用户登录目录。
![]()
首先使用
finger
命令查看用户newUser
的登录目录为/home/oldUser
,然后新创建一个/home/newUser
,使用usermod
将用户newUser
的登录目录修改成/home/newUser
,最后使用finger
命令查看是否修改成功。
6、finger 查看用户属性
注意:
Ubuntu
系统中默认没有安装finger
命令,用户可以通过以下命令来安装finger
,然后就可以使用finger
。
sudo apt-get install finger
具体使用方法如下:
命令格式:
finger [命令参数] 参数
常见命令参数
- -l:多行显示;
- -s:单行显示。这个选项只显示登入名称、真实姓名、终端机名称、闲置时间、登入时间、办公室号码及电话号码。如果所查询的使用者是远端服务器的使用者,这个选项无效。
案例演示:
使用
finger
命令查看用户信息。例如,查看系统中已经存在的用户
newUser
信息。
![]()
7、groupmod 修改用户组信息
Linux用户组信息修改命令
Linux
中使用groupmod
命令来修改用户组信息。命令格式:
groupmod [命令参数] 参数
常见命令参数:
- -g<群组识别码>:设置欲使用的群组识别码;
- -n<新群组名称>:设置欲使用的群组名称。
groupmod
必须以root
权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo
命令来提升权限为root
权限。案例演示:
使用
groupmod
命令修改已有用户组名称。
![]()
首先通过
tail
命令查看一个已有用户组信息,可以看到该用户组名为oldUser
,并且组ID为1004,通过groupmod
命令将其名由oldUser
修改成renameOldUser
,最后使用再查看是否修改成功。
VIM基本用法
1、打开文件和保存退出
vi
是Unix
操作系统中最常用的全屏编辑器,Linux中常用的是vi
的加强版vim
,vim
同vi
完全兼容。在Linux系统中,vi
和vim
是完全等价的两条命令。
vi/vim
编辑器可以执行输入、删除、查找、替换、块操作等众多文件操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑器程序没有的工程。vi/vim
编辑器以命令行的方式处理文件,尽管不如图形化处理方式直观,但它具有操作速度快、功能全面等优点。另外,vi/vim
不是一个排版程序,它不像Word
或WPS
那样可以对字体、格式、段落等其他属性进行设置,它只是一个文本编辑器程序。启动
vi/vim
编辑器
vi/vim
的基本格式如下:
vi [option] [filename...]
或
vim [option] [filename...]
其中,
[option]
是选项,[filename]
是需要编辑的一个或多个文件名。案例演示1:
启动
vi/vim
编辑器,同时打开文件testFile
,可以使用如下命令:
vi testFile
或
vim testFile
[请在右侧“命令行”里直接体验]
因为当前目录下没有
testFile
文件,所以此时打开的文件是空,并且在底部一行显示的是打开的文件名以及当前被打开的文件状态,因为是新建的文件,所以显示的是"testFile" [New File]
标识。退出
vi/vim
编辑器。案例演示2:
退出
vi/vim
编辑器,同时保存新创建的文件testFile
,具体操作如下所示:
1 >输入:wq命令后回车即可保存当前文件并退出vi/vim编辑器;
[请在右侧“命令行”里直接体验]
按下回车键后,我们将退出了当前
vi/vim
编辑器,如果不想保存testFile
文件而是只想退出vi/vim
编辑器,则我们输入:q
命令后回车即可。
2、工作模式切换与插入模式
vi/vim
编辑器有三种工作模式,每种工作模式都有不同的作用,以下是这三种工作模式的详细介绍:
- 命令模式: \查看当前文件内容,此时不能对文件内容进行写入操作,从该模式可以切换为插入模式和底线命令模式。
- 插入模式: \可以对文件内容进行编辑操作,从该模式可以切换为命令模式。
- 底线命令模式: \不可以对文件内容进行编辑,在此模式下可以执行一些
vi/vim
的命令,例如: 退出命令、保存内容命令等等。从该模式可以切换为命令模式。
注意: 启动vi/vim后,首先进入的是命令模式。
命令模式与插入模式相互切换
首先启动
vi/vim
编辑器后,首先进入的工作模式是命令模式,在当前模式下,我们只能查看文件内容,不能对文件内容进行写入操作。如果想对文件进行写入操作,那么我们只有进入插入模式下。
- 命令模式->插入模式方法
从命令模式到插入模式的切换方法有多种,我们介绍如下3中常用方法:
输入命令 说明 i, I i 为『从目前光标所在处输入』,I 为『在目前所在行的第一个非空格符处开始输入』。 a, A a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。 o, O 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行。
- 插入模式->命令模式方法
由插入模式切换到命令模式比较简单,我们只需要点击ESC
键即可返回到命令模式。案例演示1:
使用
vi/vim
编辑器打开文件testFile
,并且将工作模式切换到插入模式,输入Hello vi/vim
字符串,最后保存文件并退出,可以使用如下命令:
vi testFile
或
vim testFile
打卡
testFile
文件命令;
首先进入的是命令模式;
按下字母
i
后进入插入模式;
输入
Hello vi/vim
字符后,按下ESC
键后返回命令模式,最后输入:wq
保存退出文件;
[请在右侧“命令行”里直接体验]
命令模式与底线命令模式相互切换
vi/vim
底线命令模式下如何执行写复杂的命令,例如我们常用的保存退出命令(wq
)等。
- 命令模式->底线命令模式方法
从命令模式到底线命令模式的切换比较简单,我们只需要输入:
字符即可,注意:是英文输入法下的冒号。- 底线命令模式->命令模式方法
由底线命令模式切换到命令模式比较简单,我们只需要点击ESC
键即可返回到命令模式。
3、命令模式
vi/vim
编辑器与其它编辑器最大的不同之处是不能使用鼠标进行操作(可以在配置文件中设置鼠标属性,默认是禁止使用鼠标),我们可以在命令模式下移动光标位置,常见移动命令如下所示:
命令 说明 h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移动一个字符 k 或 向上箭头键(↑) 光标向上移动一个字符 l 或 向右箭头键(→) 光标向右移动一个字符 [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 [Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 [Ctrl] + [d] 屏幕『向下』移动半页 [Ctrl] + [u] 屏幕『向上』移动半页 案例演示1:
使用
vi/vim
编辑器打开文件oldFile
,移动当前光标到第一行的第二字符处,可以使用如下步骤:打卡
oldFile
文件命令;
首先进入的是命令模式;
移动光标到第一行的第5个字符处(按5次→);
最后输入
:q
退出文件;
[请在右侧“命令行”里直接体验]
命令模式删除操作
我们不光可以在插入模式下可以对文件内容进行删除操作,我们可以直接在命令模式下对文件进行删除操作,常见删除命令如下所示:
命令 说明 x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) nx n 为数字,连续向后删除 n 个字符。例如,我要连续删除 5 个字符 ,则可以使用 5x
dd 删除光标所在的那一整行 ndd n 为数字。删除光标所在的向下 n 行,例如 10dd
则是删除 10 行d1G 删除光标所在到第一行的所有数据 dG 删除光标所在到最后一行的所有数据 案例演示1:
使用
vi/vim
编辑器打开文件oldFile
,删除当前文件的第二行所有内容,最后保存文件并退出,可以使用如下步骤:打卡
oldFile
文件命令;
首先进入的是命令模式;
移动光标到文件第二行;
输入
dd
字符后删除当前行内容,最后输入:wq
保存退出文件;
[请在右侧“命令行”里直接体验]
命令模式复制粘贴操作
常见复制命令如下所示:
命令 说明 yy 复制光标所在的那一行 nyy n 为数字。复制光标所在的向下 n 行,例如 10yy
则是复制 10 行y1G 复制光标所在行到第一行的所有数据 yG 复制光标所在行到最后一行的所有数据 y0 复制光标所在的那个字符到该行行首的所有数据 y$ 复制光标所在的那个字符到该行行尾的所有数据 常见粘贴命令为
p, P
,p
为将已复制的数据在光标下一行贴上,P
则为贴在游标上一行!案例演示1:
使用
vi/vim
编辑器打开文件oldFile
,将第一行内容复制,然后粘贴到文件的末尾,最后保存文件并退出,可以使用如下步骤:打卡
oldFile
文件命令;
首先进入的是命令模式;
复制第一行内容(
yy
),移动光标到最后一行,粘贴(p
)内容到当前行的下一行,最后输入:wq
保存退出文件;
####4、底线命令模式
在
vi/vim
底线命令模式下,我们可以执行一些特殊的命令,同时可以完成特殊的操作,例如:执行linux系统中的命令、对文件的内容进行查找或替换操作等。搜索替换
vi/vim
编辑器在底线命令模式下可以对文件内容进行查找和替换操作,常见查找和替换命令如下所示:
命令 说明 /word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可。 ?word 向光标之上寻找一个字符串名称为 word 的字符串。 n 这个 n 是英文字母。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。 N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 [:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 。 :1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2。 :1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代。 案例演示1:
使用
vi/vim
编辑器打开文件oldFile
,将所有line
单词替换为words
单词,并保存退出,可以使用如下步骤:打卡
oldFile
文件命令;
首先进入的是命令模式;
首先输入
:
切换当前模式为底线命令模式,然后输入1,$s/line/words/g
后回车;
[请在右侧“命令行”里直接体验]
底线命令模式下执行特殊命令
常见在底线命令模式执行的命令如下所示:
命令 说明 :w 将编辑的数据写入硬盘档案中 :w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! :q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 :w [filename] 将编辑的数据储存成另一个档案(类似另存新档) :n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。 :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果! :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号 :set nonu 与 set nu 相反,为取消行号! 案例演示1:
使用
vi/vim
编辑器打开文件oldFile
,显示当前文件行号,将当前文件的第1-3行内容另存为oldFileCpy
文件,使用cat
命令查看新生成文件内容,可以使用如下步骤:打卡
oldFile
文件命令;
输入
:set nu
后回车,显示行号;
输入
:1,3 w oldFileCpy
后回车
最后在
vi
中使用cat
命令查看新生成的文件oldFileCpy
内容;
按下回车键后返回当前
vi
编辑器,最后输入q
退出文件;