第一章、基本文件管理命令

1、创建文件

touch 文件路径 文件名
#touch /file1.txt
touch file{1..20}.txt
创建file1~file20个文件

2、创建文件夹

mkdir 文件夹路径 文件夹名字 -v 显示创建的过程 -p 递归创建
#mkdir -p 文件1/文件2/文件3/文件n 递归创建文件夹
#mkdir -pv 文件1/文件2/文件3/文件n 递归创建显示
#mkdir 文件路径/{文件夹1,文件夹2,文件夹n}创建多个文件 {}:为集合符
#mkdir file //创建file文件夹
#mkdir -v aaa // 显示创建文件夹aaa
#mkdir -pv /aaa/bbb/ccc 显示创建3个文件,即aaa 、aaa/bbb、aaa/bbb/ccc
#mkdir {file1,file2,file3} //创建file1,file2,file3文件夹
#mkdir file{1..20}.txt //批量创建文件夹file1.txt~file20.txt

3、复制

cp 源文件路径 目标文件路径 cp -r 源目录 目标目录(复制文件夹)
#cp /root/file /mnt/text //将root目录下file文件复制到mnt目录下并重命名为text
#cp -r /root/file1/ /mnt/file2/ //将root目录下file1文件夹复制到mnt目录下,改名为file2

4、移动

mv 源文件 目标文件路径
#mv /root/file.txt /mnt/text.txt //将root目录下file.txt文件移动到mnt目录下并改名为text.txt

5、查看文件内容

cat 文件名 查看所选文件全部内容
# cat -n /etc/passwd #包括行号显示
# cat -A /etc/passwd #包括控制字符显示
#head -n 文件名 #查看文件前n行(默认查看前十行)
#tail -n 文件名 #查看文件后n行(默认查看后十行)
#tailf 文件 或者 tail -f 文件 #动态查看文件
#more 文件名 #翻页查看文件内容(当文件有多页时,可分布查看,空格下一页
#grep (关键字) #文件名 查看文件关键字内容
# grep “^root” /etc/passwd #查找以root开头的
#grep “root$” /etc/passwd #查找以root结尾的

7、删除

rm 文件名
rm -rf 文件名
rm -rf /* 删除根下所有文件

6、修改文件内容

重定向:能够输出正确指令的信息 > 文件名(生成的信息写入到文件中(覆盖))
能够输出正确指令的信息 >> 文件名(生成的信息写入到文件中(添加))
图形文件编辑器:gedit 文件名
vi/vim 文件名
vim 文件 进入文件编辑,
按i键进入编辑模式(a、A、o、i都可以进入编辑模式:)
i:当前光标位置进入编辑插入
o:另起一行编辑
a:在当前光标下一位开始编辑
A:在当前行,末尾开始编辑
esc返回命令模式模式,v键进入可视化模式,用来选取
: 末行模式
:wq!强制退出并保存
:wq 退出并保存
:q 退出
:q! 强制退出
: set nu(number) 设置行号
dd 删除光标所在行
ndd 删除当前光标位置向下n行
yy 复制光标所在行
nyy 复制当前光标位置n行
p 粘贴
u 撤销
x 删除当前光标位置数据

8、光标定位

kjhl // 上下左右
0 $ //行首行尾
gg G //页首页尾
ngg // 第n行首
nG //进入第n行
/string(n 查找文件开头 N 从文件结尾查找可以循环的) //查找字符 按n键查找下一个,N查找上一个
查找替换
:% s///g #全局替换
:范围 s/原内容/新内容/g
#:1,5 s/3/6/g 将1-5行中3换成6
另存为
:w+空格+改名及位置(并且保留原文件)
设置环境
:set nu 设置行号
:set list 显示控制字符
:set nonu 取消行号

9.绝对/相对路径

cd . 代表当前路径 ../或者~ 代表上一级
#cd /root/file/file1 //绝对路径:命令 详细路径
#cd file1 //表示在当前路径下,进入到file1目录中

第二章、用户管理

1、用户/组基本概念

用户信息储存的文件 用户基本信息文件

/etc/passwd(冒号分割为7列字段)

root: x: 0: 0: root: /root: /bin/bash
1 2 3 4 5 6 7
用户名:x:uid:gid:描述:HOME:shell
1:用户名,登录系统的名字
2:密码占位符
3:UID,(0:特权用户;1-499:系统用户(500-999系统用户,7-8代之后);1000+为普通用户。
4:GID,组id(对应主组)
5:描述,一般用来描述用户名的
6:家目录,登录系统时,所在目录,管理员家目录/root ,普通用户家目录/home/用户名
7:登录shell,命令解释器

用户密码信息文件

/etc/shadow(8列)

root: $6$t2Z8Z: 18250: 0: 99999: 7: : :
—— —————- ———— —- ————- —— —- —-
1 2 3 4 5 6 7 8 9
1:用户名
2:密码加密值
3:最后一次修改密码时间 1970年1月1日——最后一次修改密码的时间,过了多少天?
4:密码最小时间间隔,修改密码的最小间隔(0代表当天可以改密码,如果是4,必须过4天才能改密码)
5:密码最大时间间隔,密码有效期(14代表密码有效期为14天,99999代表无限期)
6:警告时间(7代表剩余7天提示改密码)
7:不活动时间(例:20,代表用户20天不登录系统,超过20天后,禁用冻结!)
8:失效时间(例:30天,30天后自动注销)
9:保留 未设计

组信息文件

1./etc/group

root: x: 0:
1 2 3 4
1:组名
2:组密码
3:组ID
4:组成员(默认为空)

2、用户/组管理

用户:
创建用户 未指定选项
useradd 用户名
#:useradd feng //创建用户名feng
id 用户名
#id feng //查询feng信息(uid,gid,组)
创建用户 指定选项
#useradd 用户名 -u 数字 //创建用户指定uid
#useradd 用户名 -d 目录 //创建用户指定家目录,放入root中,不具有root权力
#useradd 用户名 -u 数字 -d 目录 //可同时设置uid及家目录
# useradd feng -u 1500 -d /feng //创建用户名feng,并且在组feng里,uid为1500.
删除用户
userdel 用户 //userdel -r feng //删除用户feng
用户密码
#:passwd 用户名 //更改用户密码
#:passwd feng //设置用户名feng的密码
#:在当前用户名中可直接passwd //改当前用户密码
组成员管理
#:usermod -G 组名 用户名 //单个添加用户
#:gpasswd -a 用户名 组名 //单个添加用户
#:gpasswd -M 用户1,用户2 组名 //批量添加用户,并且覆盖
#:gpasswd -d 用户名 组名 //将用户从组中删除
其他选项管理
#usermod -s 登录shell 用户名 //修改用户属性
创建组
groupadd
#groupadd jack //创建用户组jack
#groupadd feng -g 1200 //创建组feng并指定gid为1200(不能同时用户名跟gid都是数字)
删除组
groupdel
加入组
usermod aaa -g bbb //修改将aaa基本组修改为bbb
usermod aaa -G bbb //将aaa用户加入到bbb附加组
gpasswd -d aaa bbb //将aaa用户从bbb附加组中删除
用户组
无论是基本组还是附加组,都必须是用户在组中才能定义(组名唯一性,不能重复)
基本组:随用户创建的组,组名同用户名,一个用户有且仅有一个基本组(可以在/etc/passwd中查看该用户的基本组)
附加组:用户加入到其他组,则这个组就成了该用户的附加组(一个用户可以有0到多个附加组)
groupmod -g 组id(1111) 组名(aaa) //将aaa的组id修改为1111

3、提权(了解)

su - 用户名 // 切换用户
#su - root //切换到超级管理员
sudo 命令 //临时提权
exit 退出当前切换的用户

第三章、用户的权限

1、基本权限UGO

权限的对象
u:用户名
g:组名
o:(other)其他
a:所有(u+g+o)
设置权限
chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
chmod -R 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 目录 //对目录下所有文件进行授权
chmod u-x file //用户对file文件不可执行
chmod g+x file //组对file文件可执行
chmod o=rx file //所有用户均可执行读和执行权限,但不具备写的权限
chmod 对应数字(r=4,w=2,x=1) 文件
#chmod 777 1 //所有用户均可对1进行读写执行
更改属主、属组
chown命令
chown:设置一个文件属于谁,属组
语法:chown 用户名.组名 文件名
#chown feng.feng file //更改主,组
#chown feng file //只更改主
#chown .feng file //只更改组
chgrp命令 -R指令:递归使目录下所有文件和目录统一设置(改权、改属主、改属组)
语法:chgrp 组名 文件
#chgrp feng file //更改文件属组
#chgrp -R feng file1 //更改文件属组
chmod、chown、chgrp -R 文件 //对文件夹内所有文件均可修改权限、属主、属组

2、基本权限ACL

概念:access control list(访问控制列表) 限制用户对文件的访问,为UGO的补充
与UGO的区别
ACL文件权限管理:设置不同用户,不同的基本权限(r、w、x)。对象数量不同。
UGO基本设置权限:只能一个用户,一个组和其他人
用法
setfacl -m u:user01:rwx 文件 设置访问控制 -设置 对象(u、g、o):对象名(u、g、o):权限
#setfacl -m o::rwx 文件 //修改o权限
getfacl 文件 查看权限
查看/删除
getfacl 文件 //查看文件acl权限
setfacl -x 对象(ugo):对象名(ugo) 文件 //删除对象acl权限
setfacl -b 文件 删除所有acl权限
watch -n1 ‘命令’ //可查看操作显示结果
高级用法
mask:
default:继承(默认)

3、特殊权限

特殊位suid、(sgid、stick了解)
高级权限的类型
suid,(sgid)针对文件/程序时,具备临时获得属主的权限
chmod u+s /usr/bin/cat //增加权限suid
文件属性chattr
chattr +i 文件名 //常用语锁定文件,防止被修改
chattr -i 文件名 //删除i权限
lsattr 文件 //查看attr权限
chattr +a 文件 //用于写入到文件内容(常用于日志),不可删除
chattr +c 文件 //压缩文件
进程掩码umask
默认掩码umask为0022
系统默认权限
创建文件默认权限为644 //文件为了保护自己,创建文件时默认权限-0111
创建目录默认权限为755 //创建目录时默认0077-0022,即是755

第四章、进程管理(process status)

1、进程管理 process

目标
了解进程的相关信息
PID ,PPID
当前进程状态
内存分配情况
CPU和已花费的实际时间
用户UID,决定进程的特权
进程名称
静态看进程 ps
ps aux | 输出字段含义
USER:运行进程的用户
PID:进程ID
%CPU:CPU占用率
%MEM:内存占用率
VSZ:占用虚拟内存(virtual size)
RSS:占用实际内存(real size)
TTY:进程运行的终端(进程所在终端的ID号pts/)
STAT:进程状态 man ps (/STATE)
START:进程的启动时间
TIME:进程上占用CPU的总时间
COMMAND:命令和参数
命令参数说明
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况
ps x 不以终端机来区分
进程排序
语法
ps aux —sort %cpu //以升序的方式显示CPU占用
ps aux —sort -%cpu //以降序的方式显示CPU占用
进程的父子关系
ps -ef //查看进程的父系关系
自定义显示字段(了解)
ps axo 要显示的字段 //自定义显示需要显示的字段
动态看进程 top
进程优先级 nice
2、作业管理jobs(了解)
jobs //查看后台进程

管道与重定向

一、输出重定向 (覆盖,追加)

——覆盖
>> ——追加
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
#date 1> date.txt //正确输出—覆盖 ,注意:如果 > 前面什么都不加默认为1,标准正确输出。
#date >> date.txt //正确输出—追加
[root@hostlocal ~]# ls /home/ /aaaaaaaaa > list.txt
ls: cannot access /aaaaaaaaa: No such file or directory
[root@hostlocal ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt //重定向到不同的位置
[root@hostlocal ~]# cat error.txt
ls: cannot access /aaaaaaaaa: No such file or directory
#ls /home/ /aaaaaaaaa >list.txt 2>/dev/null //空设备,将错误的输出丢掉
# ls /home/ /aaaaaaaaa &>/dev/null //空设备,将正确与错误的输出丢掉

通过输入重定向创建文件

(cat > file << EOF )是用来创建文件或者在脚本中使用,并向文件中输入信息输入的任何东西会被写入文件中,EOF命令结束。
语法:cat >> file5 <EOF:开始和结束的标记。
成对使用
结尾的另一个必须顶格写。

实战一
[root@hostlocal ~]# cat >file4 <<EOF

111
222
333
444
EOF
[root@hostlocal ~]# cat file4
111
222
333
444

实战二
[root@hostlocal ~]# vim create_file.sh
#!/bin/bash
cat >file200.txt <111
222
333
yyy
ccc
EOF
[root@hostlocal ~]# chmod +x create_file.sh
[root@hostlocal ~]# ./create_file.sh
[root@hostlocal ~]# cat file200.txt
111
222
333
yyy
ccc

二、管道”|”

用法:command1 | command2 |command3 |…
实战示例1、
[root@hostlocal ~]# rpm -qa | grep ‘httpd’ //查询所有安装的软件包,过滤包含httpd的包
httpd-tools-2.4.6-90.el7.centos.x86_64
httpd-2.4.6-90.el7.centos.x86_64
[root@hostlocal ~]# ps aux | grep ‘sshd’
实战示例2、
将/etc/passwd中的用户按UID大小排序
[root@hostlocal ~]# sort -t”:” -k3 -n /etc/passwd #以: 分隔,将第三列按字数升序
[root@hostlocal ~]# sort -t”:” -k3 -n /etc/passwd -r #以: 分隔,将第三列按字数降序
[root@hostlocal ~]# sort -t”:” -k3 -n /etc/passwd |head #以: 分隔,将第三列按字数升序看前十行
[root@hostlocal ~]# sort -t”:” -k3 -n /etc/passwd |tail #以: 分隔,将第三列按字数升序看后十行
参数详解:
sort 排序,默认升序
-t 指定分隔符
-k 指定列
-n 按数值
-r 降序
head 默认输出前十行
tail 默认输出后十行
实战示例3、
[root@hostlocal ~]# netstat -lntp | awk ‘NR==3 {print $4}’ | awk -F’:’ ‘{print $2}’
22

三、参数传递

xargs:对:ls cp rm 管道不能执行。所以通过xargs。
语法:
cat a.txt | xargs -i cp {} /目录
{}:前面传过来的内容
-i :为了让大括号生效
目录时 -r
解释:前面传过来的东西交给大括号

cat file.txt |xargs ls -l
前面是目录或者目录的路径。 ls - l 后面可以不加大括号,直接执行。
实战示例1、
[root@hostlocal ~]# touch /home/file{1..5}
[root@hostlocal ~]# vim files.txt
/home/file1
/home/file2
/home/file3
/home/file4
/home/file5
注意:复制也可以,但是请看好行后不能有空格。
[root@hostlocal ~]# cat files.txt |ls -l #不加xargs传参,看输出结果
[root@hostlocal ~]# cat files.txt |rm -rvf #不加xargs传参,看输出结果

[root@hostlocal ~]# cat files.txt |xargs ls -l
-rw-r—rwx. 1 root root 12 Nov 7 21:57 /home/file1
-rw-r—r—. 1 root root 0 Nov 7 21:57 /home/file2
-rw-r—r—. 1 root root 0 Nov 7 21:57 /home/file3
-rw-r—r—. 1 root root 0 Nov 7 21:57 /home/file4
-rw-r—r—. 1 root root 0 Nov 7 21:57 /home/file5

[root@hostlocal ~]# cat files.txt |xargs rm -rvf
removed ‘/home/file1’
removed ‘/home/file2’
removed ‘/home/file3’
removed ‘/home/file4’
removed ‘/home/file5’
实战示例2、
[root@hostlocal ~]# touch /home/file{1..5}
[root@hostlocal ~]# cat files.txt | xargs -i cp -rvf {} /tmp/
‘/home/file1’ -> ‘/tmp/file1’
‘/home/file2’ -> ‘/tmp/file2’
‘/home/file3’ -> ‘/tmp/file3’
‘/home/file4’ -> ‘/tmp/file4’
‘/home/file5’ -> ‘/tmp/file5’
[root@hostlocal ~]# cat files.txt |xargs -I {} cp -rvf {} /tmp
加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
加 -I 参数 需要事先指定替换字符

常用命令

[root@hostlocal ~]# du -h /etc/ #查看目录及目录中的文件大小
[root@hostlocal ~]# du -sh /etc/ #查看目录的总大小
[root@hostlocal ~]# ls /etc/ | wc -l #查看目录中有多少个文件