vi/vim
VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器。vim编辑器是从vi发展出来的一个性能更强大的文本编辑器。
vi和vim的区别:vim是vi的升级版,基础功能两者一致,不过在嵌入式开发板中
只有vi没有vim,但是在Ubuntu上我们可以使用vim编辑器,它的功能更加丰富。
这里记录的是vi编辑器基础用法,如果使用vim编辑器需要手动安装vim编辑器。
vim与vi编辑器完全兼容。在终端中执行以下命令安装~/桌面$ sudo apt install vim。
一般模式以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据
vi 常用的两种模式
1.命令行模式:按ESC进入,在这个状态下,可以输入命令常用命令
按键
i:当前光标前
a:当前光标后
o:当前光标行的下一行
I:光标所在行最前
A:光标所在行最后
O:当前光标行的上一行
: + 行号:跳转到某一行
G:跳转到文本末尾
yy: 复制某一行,复制的位置由光标所在位置决定
yx:复制若干行,x代表行数,输入2,就是复制当前行和它下面的两行(总共三行),复制的位置由光标所在位置决定。
p:把刚刚复制的内容进行粘贴,粘贴的位置由光标所在位置决定
:wq 保存文本并退出
:q 正常退出文本
:q! 强制退出文本
:set nu 程序显示行号
:set nonu关闭行号
:dd 删除一行
/要查找的词 n查找下一个,N往上查找
ESC: gg=G 自动整理代码
2.文本输入模式:按i进入
进入文本输入模式,即可编辑代码,注意只能键盘操作, 鼠标不行。
安装 gcc linux编译器:
sudo apt‐get install vim
sudo apt‐get install gcc
时间类
date 显示当前时间
- date (功能描述:显示当前时间)
- date +%Y (功能描述:显示当前年份)
- date +%m (功能描述:显示当前月份)
- date +%d (功能描述:显示当前是哪一天)
- date "+%Y-%m-%d %H:%M:%S" (功能描述:显示年月日时分秒)
date 显示非当前时间
-
date -d '1 days ago' (功能描述:显示前一天时间)
- date -d '-1 days ago' (功能描述:显示明天时间)
设置当前时间:
date -s "2017-06-19 20:52:18"
用户管理命令
adduser 添加新用户
passwd设置或更改用户密码
id 查看用户是否存在
cat /etc/passwd 查看创建了哪些用户
例:zmhzz@zmhzz-virtual-machine:~/桌面$ cat /etc/passwd
su 切换用户
su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)
userdel 删除用户
userdel 用户名 (功能描述:删除用户但保存用户主目录)
userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
usermod修改用户
usermod -l 新用户名 老用户名
usermod -d /home/新用户名 -m新用户名
用户组管理命令
在Linux系统中,每个用户都被分配到一个特定的用户组,这允许系统管理员对组内的所有用户实施统一的管理策略。不同版本的Linux系统可能在用户组的管理细节上有所差异。例如,在Linux系统中,通常一个用户会属于一个与其用户名相同的组,这个组在用户创建时会自动生成。用户组的管理包括添加新组、移除旧组以及修改现有组的操作。这些操作本质上是对系统文件/etc/group进行编辑和更新。
groupadd 新增组:添加一个组
groupdel 删除组:删除一个组
groupmod 修改组:groupmod -n 新组名 老组名 功能:指定工作组的新组名
usermod修改用户主组
在Linux与Unix操作系统中,每位用户都会被分配到一个主要用户组,同时也可以属于多个次要用户组。在创建用户账户的过程中,系统会指定一个主用户组,通常情况下,这个主用户组的名称与用户名一致。当用户新建文件或文件夹时,这些新创建的文件和目录默认会归属于该用户的主用户组。
usermod -g 组名 用户名 功能:指定用户的新主组
可以看到,tangsheng所属的主组为tangseng。
增加一个组xitian,切换tangseng用户主组weixitian。
查看附加组和用户的映射关系
/etc/group文件存储了用户和附加组的映射关系,每一行对应一个用户组,第三个冒号后面是以该组作为附加组的用户列表,列表为空表示没有用户将其作为附加组。
操作:zmhzz@zmhzz-virtual-machine:~/桌面$ cat /etc/group
将用户添加到附加组
usermod -aG 组名 用户名
查看zmhzz组的用户列表,zmhzz组组的用户列表为空。
zmhzz@zmhzz-virtual-machine:~/桌面$ sudo cat /etc/group
将zmhzz作为tangseng的附加组
zmhzz@zmhzz-virtual-machine:~/桌面$ sudo usermod -aG zmhzz tangseng
zmhzz@zmhzz-virtual-machine:~/桌面$ sudo cat /etc/group
将用户从组中移除
deluser 用户名 组名
sudo设置普通用户具有root权限
sudo将对应的命令给到root用户去执行。
修改配置文件
zmhzz@zmhzz-virtual-machine:~$ sudo vim /etc/sudoers
50行:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
这条指令的作用是赋予sudo用户组中的所有用户执行所有命令的权限,也就是说,这些用户相当于拥有了root用户的权限。不过,当这些组成员使用sudo命令来执行操作时,他们仍然需要输入自己的密码。如果在最后的ALL后面添加NOPASSWD:,那么该组成员在使用sudo命令时就无需输入密码了。
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
sudoers文件没有写权限,保存退出要用wq!。
查看sudo组的成员
zmhzz@zmhzz-virtual-machine:~$ sudo cat /etc/group
之前我们并没有做sudo相关的配置,但是用户却可以获得root权限。
将其他用户添加到sudo组中
zmhzz@zmhzz-virtual-machine:~$ sudo usermod -aG sudo ming
重新查看sudo组的成员
文件属性
Linux操作系统是一个经典的多用户环境,其中每个用户都具有不同的权限级别。为了确保系统的安全性,Linux对不同用户访问文件(包括目录)的权限进行了细致的控制。在Linux系统中,我们可以通过执行`ll`或`ls -l`命令来查看文件的详细信息,包括文件的所有者、所属的用户组以及文件的权限设置。
如果没有权限,就会出现减号[ - ]。从左至右用0-9这些数字来表示:
0首位表示类型,在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
- - 文件
- d 目录
- l 链接文档(link file)
- 第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
- 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
- 第7-9位确定其他用户拥有该文件的权限 ---Other
rxw作用文件和目录的不同解释
作用到文件:
- [ r ]代表可读(read): 可以读取,查看
- [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被系统执行
作用到目录:
- [ r ]代表可读(read): 可以读取,ls查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
更改文件属性
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与对应的权限:
- chown (change owner) : 修改所属用户与组。
chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)
- chmod (change mode) : 修改用户的权限。
第一种方式变更权限:
修改文件使其所属组用户具有执行权限
修改文件所属主用户执行权限,并使其他用户具有执行权限
第二种方式变更权限:
chmod [mode=421 ] [文件或目录]
采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限。