Linux基础指令

1、基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
ls			//查询
man 指令 //查询指令用法
mkdir 文件/夹名 //创建文件/夹
rm -rf 文件/夹名 //删除文件/夹

mv move [移动 改名]
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
把目标文件[SRC]移动到目标位置[DEST]改名,或者把源文件移动到目标目录

1.移动
#mv a.txt /tmp //把文件a.txt移动到/tmp 目录下

2.改名
#mv a.txt aa.txt //把文件a.txt移动到当前目录下并改名为aa.txt
#mv /tmp/a.txt aaa.txt //把/tmp目录下的a.txt文件移动到当前目录下并改名为aaa.txt

在linux系统中 如果文件前面不加路径 默认为当前路径下的文件

3.对多个文件移动
#mv file1.txt file2.txt file3.txt /tmp //把当前目录下的file{1..5}.txt 文件移动到/tmp目录下

mv命令默认最后一个参数为目标位置 其余的为源文件

4.对多个文件和目录文件进行移动
#mv /tmp/file1.txt /tmp/file2.txt /tmp/dir1 /root
#把/tmp目录下的file1.txt file2.txt dir1 移动到/root目录下
#移动目录时 如果目录里面有文件 目录下的文件也会一起移动

rm remove 删除
Remove (unlink) the FILE(s).
删除(解除)文件

常用的rm命令参数:
-f force ignore nonexistent files and arguments, never prompt 忽略不存在的文件和参数,不提示

rm -f filename 删除文件且不询问

-r or -R recursive remove directories and their contents recursively 递归地删除目录及其内容

rm -rf dirname 删除目录且不询问

常用命令
rm -rf ./* 删除当前目录下的所有文件
注:删除时谨慎使用* 不要把根目录全删了

cp copy 复制
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
把源文件[src]复制到目标位置dest,或者将多个源文件复制到目标位置

常用的cp命令参数:
-f force 与rm命令参数中的-f一致 强制删除 不询问
-r recursive 递归

复制单个文件
cp a.txt /tmp // 将当前目录下的a.txt文件复制到目录 /tmp 下


复制多个文件
cp file1.txt file2.txt file3.txt /tmp
#将多个文件复制到/tmp目录下 cp与mv命令相似 默认把最后一个参数作为目标位置 其余为源文件

复制目录
cp -r dir1 /tmp //复制目录dir1 到 /tmp下

cp -rf dir1 /tmp

cp -rf dir1/* /tmp // 复制目录dir1下的所有文件和目录到/tmp下

文本编辑

1
2
3
4
5
vi 
vim 文件名 //创建或打开文件并输入内容
---输入:或/即可进入命令模式 //一般只使用:
i //按下i键进入编辑模式 =全称INSERT
wq //保存并退出

2、用户与用户组

用户

1
2
3
useradd 用户名		            //创建用户
usermod 参数 ?/组名 用户名 //修改用户
userdel 用户名 //删除用户

用户组

1
2
3
groupadd 组名		              //创建用户组
groupmod //修改用户组
groupdel 组名 //删除用户组

user+group大部分通用参数

1
2
3
4
5
6
7
8
9
-c			                     --修改备注			通用
-d --修改主目录 通用
-e --修改日期 通用
-g --修改gid 通用
-u --修改uid 通用
-l --修改用户名 通用
-L --临时锁定用户 user
-U --解锁用户 user
-s --修改shell 通用

gpasswd

1
2
3
4
5
6
7
8
9
10
11
gpasswd 			//管理用户组
(下面是参数)
-a --add USER 将 USER 添加到 GROUP
-d --delete USER 从 GROUP 中删除 USER
-h --help 显示此帮助消息并退出
-Q --root CHROOT_DIR chroot 进入的目录
-r --delete-password 删除 GROUP 的密码
-R --restrict 限制对 GROUP 成员的访问
-M --members 用户,... 设置GROUP成员列表
-A --administrators 管理员,...
设置 GROUP 的管理员列表

3、权限

1
2
ll /root			                      //查询root目录下文件的权限
ll -d /root //查询root目录的权限

4、挂载

1
2
3
4
mount			                          //挂载
umount //卸载
yum clean all //清除缓存
yum repolist //查看缓存

开机自动挂载

1
2
3
4
5
6
7
8
vi /etc/fstab
进去后在下面补充
mount /dev/cdrom /opt //挂载命令-可有可无
/dev/cdrom /opt iso9660 defaults 0 0 //空格至少一个-必须要有
/dev/cdrom挂载文件地址 /opt挂载目录 iso9660挂载源文件类型
不需要了可在那一行前加上#(#为注释的意思)
挂载文件地址可用挂载文件的UUID代替
lsnlk -f list block 查看文件UUID

5、yum源配置

yum源地址在/etc/yum.repos.d/ 当中的.repo文件内

先进入文件夹(cd /etc/yum.repos.d)

1
2
3
4
5
[文件名]
name=文件名
baseurl=file:///opt //本地协议为file:// 网络协议为http://
gpgcheck=0
enabled=1

6、安装软件和启动

1
2
3
4
5
6
7
8
yum history                      //查看安装和卸载的历史
yum history info 排序号 //查看具体信息
yum install 应用名 //安装应用
yum list |grep 应用名 //查看应用是否安装
yum remove/erase 应用名 //卸载应用-有残留
yum history undo 排序号 -y //卸载应用-无残留 搭配历史使用
systemctl start 应用名 //启动应用
systemctl status 应用名 //查看应用是否运行---ps -ef |grep 应用名 也是同理

7、查找与替换

sed 尽量用`

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

(该解释来源csdn用户bobuddy)

正则表达式
内容太多,转跳到里面看吧

正则表达式

8、本地修改IP地址

网卡配置文件地址vi /etc/sysconfig/network-scripts/ifcfg-ens33

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
配置文件如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none //static也可以
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=不动
NAME=ens33
UUID=不可动
DEVICE=ens33
ONBO0T=yes
IPADDR=修改的IP地址
NETMASK=255.255.255.0
GATEWAY=网关
DNS1=114.114.114.114

----------------------

重启网络服务systemctl restart network //restart-重启 start-开启 stop-停止

9、Linux权限管理-ACL权限

本章来源

1
2
3
作者:honehou
链接:https://www.jianshu.com/p/ff6c3b0ac0ad
来源:简书

设定和查看ACL权限

1
2
3
4
5
为用户设定ACL权限
[root@localhost ~]# setfacl -m u:用户名:权限(rwx) 文件名
======================================================
为用户组设定ACL权限
[root@localhost ~]# setfacl -m g:组名:权限(rwx) 文件名

查看ACL权限

1
2
查看文件或目录的ACL权限
[root@localhost ~]# getfacl 文件名

补充参数

1
2
3
4
5
6
-m:设定ACL权限;
-x:删除指定的ACL权限;
-b:删除所有的ACL权限;
-d:设定默认ACL权限;
-k:删除默认ACL权限;
-R:递归设定ACL权限;

最大权限与删除

最大有效权限mask

mask是用来指定最大有效权限的(使用命令getfacl 文件名显示的结果中倒数第二排会出现mask这个词)。如果给用户赋予了acl权限,是需要和mask的权限“相与”才能得到用户的真正权限。相与是计算机中的术语,皆真方为真,有假便为假。例如mask权限为rwx,某用户的acl权限为r-x,则实际有效权限为r-x。
※最大权限也会影响到组权限(例:某文件所有者为tony,chmod赋予的普通权限为7,而acl赋予tony的权限为5,则acl权限会高于chmod权限)

修改最大有效权限mask

1
2
修改mask的命令 
setfacl -m m:权限 文件

删除acl权限的命令

1
2
3
4
5
6
7
8
删除指定用户的acl权限
setfacl -x u:用户名 文件
=============================
删除指定用户组的acl权限
setfacl -x g:组名 文件
=============================
删除文件所有的acl权限
setfacl -b 文件

递归ACL权限

父目录在设定ACL权限时,所有的已建立好的子文件和子目录也会拥有相同的ACL权限。
※递归权限仅能赋予目录,赋予文件会报错
※新建立的文件没有相应的权限

1
2
设定递归权限
setfacl -m u:用户名:权限 -R 目录名

默认ACL权限

如果父目录设定默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
※默认权限也只能赋予目录,但赋予文件不会报错
※旧的子文件不会赋予响应的权限

1
2
设定默认权限
setfacl -m d(default的缩写):用户名:权限 目录名

权限溢出

由于rwx对文件和目录的作用不同,当给目录赋予权限时,递归所得到子文件权限可能超出预想,这便是权限溢出。
※尽量少用acl权限

10、sed语法选项

太多了懒得复制
详细参考

sed语法选项