ctrl+a 光标移动到命令行行首
ctrl+e 光标移动到命令行行尾
ctrl+d 删除光标后一位
ctrl+u 删除光标前一位
ctrl+k 删除此处至末尾的所有内容
ctrl+aura左 跳到行首
ctrl+aura右 跳到行尾
数据流和重定向 重定向符是个符号,不是命令
标准正确输出stdout 命令执行后的正确信息会输出到屏幕上 代码1
标准错误输出 stdeer 梦灵执行失败后的错误信息会输出到屏幕上 代码2
标准输出stdin 代码0
重定向操作符
输出重定向操作符号 > (会覆盖写入文件内容,如果文件不存在,则直接创建一个文件) 命令 >文件
追加输入重定符 >> (不会覆盖,在文档后面追加内容) 命令 >> 文件
创建文件
输入正确的
错误的就是输入2>
将错误结果和正确结果全部写入文件的方式 两个实行结果相同
输入重定符操作 < <<输入终止操作符
eof 结束符
EOF是END Of File的缩写,表示自定义终止符。
在linux按ctrl-d就代表EOF。
用法:
<<EOF //开始
....
EOF //结束
echo 命令符 echo【字符串】【$变量】
重命名会被覆盖第一次的输入
tee命令 读取标准输入的数据然后将内容输入到标准输出文件并保存
管道符 |
命令 管道符 tee文件
pwd | tee filename1
vim命令
:help version8 看当前版本信息
:q ! 强制退出不保存 esc 退出编辑模式
:wq 退出并保存
:w filename 将文件另存为filename
:s
:%s/o/O/g 把全部o替换成O 全局替换
vim一般有6种工作模式。
-
普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作。
-
插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑。
-
命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行。
-
可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
-
替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换。
-
EX模式:类似于命令行模式,可以一次运行多个命令
vim的各种工作模式可以通过不同的键进行切换,用户统一使用ESC键返回到普通模式
命令模式输入:
-
i: 在当前光标的前面插入字符 a: 在当前光标的后面追加字符 o: 在当前光标的下一行行首插入字符 I: 在一行的开头添加文本 A: 在一行的结尾处添加文本 O: 在光标当前行的上一行插入文本 s: 删除当前光标处的字符并进入到插入模式 S: 删除光标所在处的行,并进入到插入模式 u: 撤销修改 H: 跳转到当前屏幕输出的第一行 L: 跳转到当前屏幕输出的最后一行 M: 跳转到当前屏幕输出的中间行 $: 跳转行尾 ^: 跳转行尾 w:跳转一个单词 :c 保存 :w f1 在passwd中建立一个f1文件 :wq保存退出 :set nu显示行号 x:删除光标所在位置的内容 :set nonu 不显示行号 :行号 跳转到指定行
命令模式的快捷方式
dd: 删除当前光标处的一整行=D 5dd: 删除从光标开始处的5行代码 dgg: 删除从光标到文本开头 dG: 删除从光标到文本结尾 J: 删除一个分行符,将当前行与下一行合并 dw: 删除一个单词(从光标处到空格) daw: 无论光标在什么位置,删除光标所在的整个单词(包括空白字符) diw: 删除整个单词文本,但是保留空格字符不删除 d2w: 删除从当前光标开始处的2个单词 d$: 删除从光标到一行末尾的整个文本 d0: 删除从光标到一行开头的所有单词 dl: 删除当前光标处的字符=x dh: 删除当前光标左边的字符=X d^:删除光标前的所有文本,但不包括所选光标 gg:跳转文件首部 G:跳到文件尾部行首 y: 复制,p:粘贴 yw: 复制一个单词 y2w: 复制2个单词 y$: 复制从当前光标到行结尾的所有单词 y0: 复制从当前光标到行首的所有单词 yy: 复制一整行 2yy: 复制从当前光标所在行开始的2行 同理3yy就是复制从当前光标所在行开始的3行 p: 将复制的内容粘贴到下一行 cw: 删除从光标处到单词结尾的文本并进入到插入模式 cb: 删除从光标处到单词开头的文本并进入到插入模式 cc: 删除一整行并进入到插入模式 剪切作用 ~: 修改光标下字符的大小写 r: 替换当前光标下的字符 R: 进入到替换模式 xp: 交换光标和下一个字符 whereis命令 whereis 选项 目录 名字 选项: -b 查找二进制文件 -m 查找帮助文件 -s 查找源文件 -u 查找不包括文件 反向查找 -f -S list在设置目录下查找文件
find命令 在指定目录下查找文件和目录
find (绝对)路径 匹配表达式
-name 文件名(* ?)
-type 文件类型(f普通文件、d目录文件、l 链接文件)
-size 文件的大小 +1M代表查找大于1M的文件 -1M代表查找小于1M的文件
c(字节) w(字数) b(块数) K M G
-user 查询文件的所有者
-group 查询文件的所属组
-atime 1 查找在一分钟内访问过的文件
-change 1 查找一分钟内改变过时间的文件
-mtime 1 查找一小时内修改过的文件
-mmin 查找一分钟内修改过的文件
grep命令 用于查找文件里面的字符串或者正则表达式
格式 grep 选项 字符串 文件路径
-v 反向查找 = ^[ ^ 字符 ] ^反义符 ^$ 空白行
-n 查找到字符串所在行号
-r 递归查找此目录中的文件
-l 只打印匹配到的文件名
-c 查找到字符串所在的行数
grep n$ passwd 查询n结尾的字符串行
查询r开头的字符行
grep ^[ ^^$] f1 输出除了空格开头以外的所有行
Whereis 参数 命令名称
-m 只查找说明文件
-b 只查找二进制文件
-s 只查找源代码文件
find 路径 匹配表达式
-name 文件名(*,?)
-type 文件类型 (f普通文件、d目录文件、l链接文件)。
-size 文件大小 +1M -1M c(字节) w(字数)b(块数) K M G
-user 文件的所有者
-group 文件的所属组
-atime n分钟 查找n分钟内被访问的文件
-ctime n 分钟
-mtime n小时
-mmin n分钟
-exec …… {} \;
locate 选项 要查找的内容
grep:用于查找文件里面的字符串或者正则表达式
grep 选项 字符串 文件的路径
-n 查找到字符串所在行
-c 查找到字符串拥有的行数
-l 只打印匹配到文件名
-v 反向查找
-r 递归查找。
grep hello文件名
grep -c hello 文件名
grep ^[h] 文件 匹配以h开头的行
grep ^[gf] 文件
grep ^gf 文件
grep ^[0-9] 文件
grep ^$ 文件
grep ^^$ 文件
grep -v ^$ 文件
grep r 文件 查找文件里有字符r的行
grep hello f*
grep hello *1
cat (concatenate):显示文件内容。
语法格式:cat 选项 文件
-n:由1开始对所有输出的行数编号
-b:由1开始对所有输出的行数编号,空白行不编号
head 可用于查看文件的开头部分的内容,默认显示前十行。
语法格式:head 参数 文件
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。
*tail* 查看文件的最后十行 用法与head相同
*tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。*
*语法格式:tail 参数 文件*
more
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
more 文件名
cut命令用于按列提取文本内容,
语法为:cut [选项] 文件名称
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
- b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
- -c :以字符为单位进行分割。
- -d :自定义分隔符,默认为制表符。
- -f :与-d一起使用,指定显示哪个区域。
- -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
显示passwd文件中第一列的前三行内容
:是分列符 f* 是第几列
Sort 对文本内容进行排序显示
-f | 忽略大小写 |
---|---|
-b | 忽略缩进与空格 |
-n | 依照数值的大小排序 |
-r | 反向排序 |
-u | 去除重复行 |
-t | 指定间隔符 |
-k | 设置字段范围 |
uniq命令
tr 要替换的内容 替换的内容 文件
cat f1 | tr a-z A-Z 把f1文件中的小写字母替换为大写字母
wc 统计文本文件的字数、行数、字节数
wc 选项 文件名称
-w 单词
-c 字节数
-l 行数
tar 选项 包名(压缩文件) 文件名
-c 创建.tar格式的包文件
-x释放.tar格式的包文件
-f用于指定打包文件名
-t 查看包中的文件列表
-v 表示在命令执行时
-C 和-x选项一起使用,表示释放包时指定释放的目标路径
常见的压缩格式 .zip .rar .7z .bz2 .xz .tar .gz .tar.gz .tar.bz2
文件传送格式
scp -r 当前主机文件 目标主机的对应路径
scp -r f1 root@192.168.197.128:/
文件接收格式
scp 目标主机路径的文件 接收到当前主机路径
scp root@192.168.197.129:/root/file1 /
' ' 强引用
" " 弱引用
``反义引用
;分割多条命令
!n 执行历史记录中的第n个命令!
!-n 倒数第n个命令
!ls 执行ls-?的最后一条
alias
别名=‘原命令 选项’
unalias 别名 删除 别名是暂时存在的
rm=’rm -I’
type命令
history 查代码历史记录
-c 清空当前的历史记录
-a 文件名
-r 文件名
-w
-d 数字 删除指定行记录
基本组(私有组)
附加组(公有组)
/etc/passwd是用户账号文件
1.用户名(账号名称) 2. 密码加密符 3.uid(用户身份证明) 超级系统的是0 系统用户是1-999 普通用户的是 >=1000 4.(唯一) 主id 5. 个人资料(用户信息) 6.家目录
7.默认shell(操作系统最外面的一层)
/etc/shadow是密码文件
1.用户账号
2.加密密码 $分隔符,将密码分为三部分 分别是加密方法 、 盐salt(加密以后的密码密文再添加一个字符串) 、密码密文
3.*=账号不能用于登录系统 4.!!=账号密码被锁定 5. 最后一次修改密码天数(1970 1 1) 6.修改密码的最小时间间隔 修改密码的最大时间间隔 7.警告时间(提前提示需要修改密码,默认是7,如果是0就是不提供警告) 8.不活动时间 9.失效时期(过期多少天就不能使用了,空格就是永久可用)
/etc/group 用户组
组名 加密口令 组ID
/etc/gshadow 用户组密码文件
Useradd 选项 < username >
-u uid 基本1001不特定指定的时候
-g gid 或组名 为用户指定所属的基本组,该组在指定时必须已存在 基本组组号
-G 指定附加组 各组在指定时已存在,附加组可以有多个,之间用”,“分隔
-c “注释信息”,设定与用户相关的说明信息
-d 指定某个目录为用户的家目录 /home
-s 指定用户使用的shell
-f 天数——指密码多少天后国企过期
-M 不创建用户家目录
-N 不创建与用户名同名的基本组
-p 密码(指定用户的登陆密码)
用vim创建用户
1.vim /etc/passwd
2.进入编辑模式在最后一行进行添加xiaoliu:x:2070:2070::/home/xiaoliu:/bin/bash
3.[root@localhost ~]# id xiaoliu uid=2070(xiaoliu) gid=2070 groups=2070
Passwd 格式 passwd id
-n 指定密码最短使用权限
-x 指定密码最长使用权限
-w 制定警告时间
-d 删除用户密码。
只能用用户名登录,不能用注释登录,因为注释可以重复,用户名是唯一的
usermod (选项) (参数)
-
-c<备注>: 修改用户帐号的备注文字;
-
-d<登入目录>:修改用户登入时的目录;
-
-e<有效期限>:修改帐号的有效期限;
-
-f<缓冲天数>: 修改在密码过期后多少天即关闭该帐号;
-
-g<群组>: 修改用户所属的群组;
-
-G<群组>; 修改用户所属的附加群组;
-
-l<帐号名称>: 修改用户帐号名称;
-
-L: 锁定用户密码,使密码无效;
-
-s<shell>: 修改用户登入后所使用的shell;
-
-u<uid>: 修改用户ID;
-
-U: 解除密码锁定。
userdel 删除用户
格式 userdel -r 用户名 (邮箱、家目录都删掉)
groupadd 创建一个组
groupadd 选项 组名
-g gid
创建一个xiaohuang的id加入在lihua的组里
[root@localhost date]# useradd xiaohuang -g lihua [root@localhost date]# id xiaohuang uid=2113(xiaohuang) gid=2121(lihua) groups=2121(lihua)
groupmod
-g gid 为用户组指定一个新的gid
-n 给用户组更改一个新名字
[root@localhost home]# groupadd xiaobai [root@localhost home]# groupmod -g 2120 xiaobai [root@localhost home]# vim /etc/group [root@localhost home]# groupmod -n xiaohei xiaobai [root@localhost home]# vim /etc/group //查看组信息
groupdel 组名
如果是被用户引用的基本组,需要先删除用户,才能删除组
修改权限
u所有者 g 所属组
o 其他人 a all所有人
+增加某种权限 -减少某种权限 =赋予某种权限,并取消之前的权限
chmod命令 修改权限
文字设定法
格式 chomd 对象 符号(+、-、=) 权限(r、w、s) 文件名
[root@localhost aa]# touch f1 f2 f3 file1 file2 file3 [root@localhost aa]# ll total 0 -rw-r--r--. 1 root root 0 Nov 7 21:51 f1 -rw-r--r--. 1 root root 0 Nov 7 21:51 f2 -rw-r--r--. 1 root root 0 Nov 7 21:51 f3 -rw-r--r--. 1 root root 0 Nov 7 21:51 file1 -rw-r--r--. 1 root root 0 Nov 7 21:51 file2 -rw-r--r--. 1 root root 0 Nov 7 21:51 file3 [root@localhost aa]# chmod g+x f1 [root@localhost aa]# ll total 0 -rw-r-xr--. 1 root root 0 Nov 7 21:51 f1 -rw-r--r--. 1 root root 0 Nov 7 21:51 f2 -rw-r--r--. 1 root root 0 Nov 7 21:51 f3 -rw-r--r--. 1 root root 0 Nov 7 21:51 file1 -rw-r--r--. 1 root root 0 Nov 7 21:51 file2 -rw-r--r--. 1 root root 0 Nov 7 21:51 file3
w代表修改权限 r代表读取权限 x代表对文件的执行权行(对普通文件没有执行权限)
r-列出目录下内容 w-再目录下创建或者删除文件 x-cd命令,切换目录
[root@localhost aa]# chmod 0 file2 [root@localhost aa]# ll ----------. 1 root root 0 Nov 7 21:51 file2
数字设定法
-没有权限 0
x执行权限 1 ugo
w修改权限 2
r读取权限 4
w+x=3 x+w+r=7 w+r=6
格式 chmod n1n2n3 文件名称 n1:所有者的权限 n2:所属组的权限 n3:其他人的权限
[root@localhost aa]# chmod 345 f3
特殊权限
SUID 为了让一般用户在执行某些程序的时候,在程序运行期间暂时获得该程序文件的所属者的权限
例如在普通用户更改密码
s 本身具有x权限 S 本身不具有x权限
chomd 0777 去掉该文件的suid权限
chomd 4777 增加该文件的suid权限
[root@localhost /]# chmod u+s /usr/bin/passwd
[root@localhost ~]# su - user [user@localhost ~]$ passwd Changing password for user user. Current password: New password: Retype new password: passwd: all authentication tokens updated successfully.
SGID 文件:如果SGID设置在二进制文件上,则不论用户是谁都可以在执行该程序的时候程序的所属组将变成该文件的所属组。
目录:如果SGID设定在a目录上,则在该目录内创建的文件或者目录的所属组会变成a目录的所属组。
chgrp - change group ownership 变更目录的所有组
chomd 0777 去掉该文件的sgid权限
chomd 2777 增加该文件的sgid权限
[root@localhost ~]# mkdir date [root@localhost ~]# ll date total 0 [root@localhost ~]# ll -d date drwxr-xr-x. 2 root root 6 Nov 8 15:42 date [root@localhost ~]# chgrp user date [root@localhost ~]# ll -d date drwxr-xr-x. 2 root user 6 Nov 8 15:42 date
Sticky Bit
SBit 只针对目录有效,在具有SBit权限的目录下,如果该用户在该目录下拥有wx权限,则当用户在该目录下创建文件或者目录的时候,只有文件拥有者和root用户才有权去删除里面的东西。
chomd 0777 去掉该文件的sbit权限
chomd 1777 增加该文件的sbit权限
拓展权限
ACL 网络拓展列表 给指定用户分配指定的权限
查看ACL权限
getfacl 文件名
getfacl
设定acl权限
语法:setfacl 选项 文件名
选项:-m 设定acl权限,如果是给与用户acl权限,则使用u:用户名:权限’格式赋予‘
setfacl -m u:st:rx /project
[root@localhost date]# setfacl -m u:daming:r /date/f1 [root@localhost date]# su - daming [daming@localhost ~]$ cat /date/f1 hello world
如果是给予组ACL权限,则使用'g:组名:权限'格式赋予';
-x 删除指定的ACL权限
-b 删除所有的acl权限 # setfacl -b f1
-d 设定默认acl权限。只对目录生效,指目录中新建立的文件拥有此默认权限
-k 删除默认的acl权限
-R 递归设定ACL权限 指设定的ACL权限会对目录下的所有子文件生效
管理linux的联网
动态配置ip地址:当前主机根据DHCP去获取IP地址
静态配置ip地址:根据动态获取IP地址的网段去更改
net 主机 仅主机
仅主机模式不能上网