文件显示与编辑
连接并显示文件内容 cat
cat[options] file...
options
-n加上行号
-s将连续两行以上的空白行替换为一行如果file不止一个文件,则会将它们连接起来
如果想一次只看一页,可以使用more
或者less
命令
过滤文件内容grep
grep
命令可以查找拥有与给定正则表达式相匹配的内容的文件,如果发现匹配成功的文件,grep
命令默认会把含有匹配字符串的那一行显示出来。如果没有指定文件,则grep
命令会从标准输入设备(键盘)读取数据
grep[options][想要匹配的正则表达式][文件或目录...]
options
-A [n]除了显示匹配的那一行之外,还显示该行之后的n行(after)
-B [n]除了显示匹配的那一行之外,还显示该行之前的n行(before)
-C [n]除了显示匹配的那一行之外,还显示该行之前和之后的n行(contest)
-c 计算总匹配的行数
-r 查找目录而非文件时,必须加上这一参数,否则会报错
-e 使用正则表达式进行匹配,默认也是这样
-E 使用拓展的正则表达式进行匹配
-i 忽略字符大小写的差别
-l 列出含有匹配成功内容的文件名
-n 在显示匹配的行之前,标示出该行的行号
-v 显示不包含匹配表达式的所有行,相当于反向选择
为了避免shell的保留关键字对正则表达式的影响,建议将正则表达式用单引号括起来,但不要用双引号括起来。
tips: 正则表达式
表达式 | 含义 |
---|---|
^word | 搜索以word开头的行 |
word$ | 搜索以word结尾的行 |
. | 匹配任意一个字符 |
\c | 转义\后面的特殊字符c,在正则表达式中有特殊含义的字符必须要先转义才能使用 |
c* | 表示*前面的字符c可以重复0次到多次 |
[list] | 匹配一系列字符中的一个 |
[n1-n2] | 匹配一个字符范围,如[0-9]、[a-z]中的一个字符 |
[^list] | 匹配一系列字符以外的字符 |
\<word | 匹配以word开头的单词 |
word\> | 匹配以word结尾的单词 |
vim
Linux系统中都有vim文本编辑器,其功能十分丰富,可以作为程序开发工具使用,虽然比较难以掌握。一般我们只要掌握其最基本的用法就够了。vim分为三种模式:
- 命令模式(Commandmode)
- 输入模式(Insertmode)
- 底线命令模式(Lastlinemode)
当我们用vim[file]打开一个文件时,就进入了命令模式,在这一模式下我们可以输入命令,比如摁下i(代表insert) 可以切换至输入模式,摁下命令)。可切换至底线命令模式(可以输入更多在输入模式当中,我们可以上下左右移动光标,用键盘在光标处进行输入等,基本上跟我们习惯的输入方式一样。如想退出,或者执行其他指令,要先摁键退出输入模式到命令模式,再摁键切换至底线命令模式。在底线命令模式中,最常用的命令是q
(退出)和wq
(保存并退出)。
用户账户的相关操作
新建用户
sudo user add[options] username
options
-m创建用户的主目录
-d指定用户的主目录(如果不使用默认的话)
-g指定用户登录组的GID或组名
-p指定默认密码
-s指定用户登录的shell
这一命令需要超级用户权限执行。Linux中,命令前加sudo表明用超级用户权限执行该命令,但要保证当前用户拥有超级用户权限。如果没有的话,可以用su命令切换至root用户操作。
切换用户
su
[username]
修改密码
passwd
passwd [options] #修改自己的密码,需要知道自己的现有密码
sudo passwd [options] username #修改别人的密码,需要超级用户权限
通过options可以锁定密码(-l)、解锁密码(-u)、使账号无密码(无法登录,-d)、强迫用户下次登录时修改密码(-f)等等,小型开发不常用。当我们为刚才新建的用户指定一个密码后,再切换用户就可以输入密码登录了。
修改用户属性
usermod
sudo usermod [options] username
查看该系统下所有用户
cat /etc/passwd
eesast:x:1001:1001::/home/eesast:/bin/bash
赋予用户超级权限
eesast用户此时还没有权限使用sudo命令,我们可以切换回root通过修改。/etc/sudoers
文件来设置用户权限。注意,该文件如果修改错误会产生严重的影响,因此不要直接用文本编辑器修改,而是用visudo工具进行修改。
sudo visudo
删除用户 userdel
sudo userdel [options] username
options
-r同时删除用户主目录
查看用户组
cat /etc/group
每行用户组信息都以":"作为分隔符,划分为4个字段,每个字段所表示的含义如下:组名:用户组密码(一般没有密码):GID :组内用户列表(如果某用户的主组是该组,该用户不会在这里显示)
用户组操作
- 新建用户组:groupadd
- 修改用户组:groupmod
- 删除用户组:groupdel
- 切换用户组:newgrp
- 查看用户所属的组:groups username
如果想将某个用户添加到某个组,可以使用usermod -aG groupname username
; 想将某个用户从指定的组中删除,可以使用gpasswd -d username groupname
用户权限
当输入lls -l
是会看到类似这样的记录
drwxr-xr-x 3 root root 4096 May 18 2022../
读的权重为4,写的权重为2,执行的权重为1
- 第一个是文件类型常见的有d(目录)、-(文件)、l(链接)
- r、w、x分别代表读、写和执行的权限,如果没有此项权限则会出现减号。
- 3表示有三个硬链接指向该文件对应的节点
- 第一个root表示文件主人
- 第二个root表示文件的组别
- 4096是文件大小
- 修改日期
修改文件权限
chmod
chmod [–R][u/g/o/a] [+/-/=] [r/w/x] [file]
其中u(user)代表改变属主的权限,g(group)代表改变属组的权限,o(owner)代表改变其他用户的权限,a(all)代表改变所有用户的权限。+代表增加权限,-代表删除已有权限,=代表设定权限。r/w/x代表读、写、执行。如果加上-R,则表明要递归修改权限,如果文件参数是一个目录,就会将该目录下的所有文件都修改。
赋予执行权限
chmod a+x 1.txt
为属主赋予读、写、执行权限,删除属组和其他用户的执行权限
chmod u=rwx,g-x,o-x 1.txt
修改文件属主和属组
chown
sudo chown [–R] [owner] [file]
sudo chown [-R] [owner]:[group] [file]
-R表示对目录递归地进行修改。这一命令只能用超级用户权限执行,哪怕你是该文件的所有者且拥有全部权限,也不能作为普通用户修改文件的属主和属组。