Shell基本操作(2)

文件显示与编辑

连接并显示文件内容 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结尾的单词

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../
Shell基本操作(2)_第1张图片
读的权重为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表示对目录递归地进行修改。这一命令只能用超级用户权限执行,哪怕你是该文件的所有者且拥有全部权限,也不能作为普通用户修改文件的属主和属组。

你可能感兴趣的:(#,Linux,ssh,服务器)