Linux基础
路径
- 全路径
就是绝对路径,从根目录开始查找文件 - 相对路径
从当前资料路径开始寻找,找到其他资源路径的过程 - 特殊路径
/ 表示磁盘根,~表示/root(root用户的根目录),root文件夹的根目录
常用命令
命令 | 说明 |
---|---|
ls -a | 查看隐藏文件 |
touch | 创建空白文件,创建多个文件:touch a.txt b.txt 创建隐藏目录:touch .a 创建隐藏文件:touch .a.txt |
more | 多屏显示文件内容,显示后,使用空格显示下一屏,回车显示下一行,q退出分屏显示,Ctrl + c退出,more -3 a.txt 显示前3行 |
head | 显示文件钱多少行,默认前10行,如:head -100 【文件】 显示文件前100行 |
tail | 显示文件末尾多少行,模式显示末尾10行,如:tail -100 【文件】 显示文件末尾100行 |
mkdir | 创建目录,如创建多级目录:mkdir /aa/bb -p 加上-p创建多层目录,创建多个目录:mkdir aa bb cc |
rmdir | 删除一个空目录,如果非空目录不能删除 |
cp | 复制,如复制的不是空目录文件,需加 -r |
mv | 移动或重命名,相当于剪切和重命名 |
date | 查看当前时间 |
date -s | 设置系统时期和时间,如:date -s '20200915 10:53:05' |
nmcli c up ens33 | 启动网络,只针对当次使用,永久使用可修改:/etc/sysconfig/network-scripts/ifcfg-ens33 把里面改为ONBOOT=yes |
reboot | 重启,需要root权限才可以 |
shutdown -r | 重启 |
shutdown -h | 关机 |
poweroff | 关机且断电 |
halt | 关机CPU停止工作 |
halt -p | 关机且断电 |
禁止使用rm -rf
删除任何目录文件,-r
表示递归,-f
表示强制删除,不需要确认
vi和vim
- 编辑模式
命令 | 说明 |
---|---|
a | 追加方式进行编辑模式,在光标所在行的末尾 |
i | 插入方式进行编辑模式 |
o | 小写o,光标所在位置之下,新增一空白行 |
O | 大写O,光标所在位置之上,新增一空白行 |
- 命令模式
命令 | 说明 |
---|---|
dd | 删除光标所在行 |
【数字】dd | 按下数字5,再按dd,光标所在行为第一行,往下一共5行都删除 |
gg | 光标跳到文件头 |
yy | 复制光标所在行内容 |
【数字】yy | 按下数字5,再按yy,复制光标所在行为第一行,往下一共5行都复制 |
p | 粘贴复制的内容到光标所在行的下行 |
u | 撤销 |
- 命令行模式
命令 | 说明 |
---|---|
ESC键 | 退回到命令模式 |
:set nu | 显示行号 |
😒/aaa/bbb | 冒号: + s/aaa/bbb 替换光标所在行的aaa替换成bbb,从左往右第一次出现的aaa |
😒/aaa/bbb/g | 冒号: + s/aaa/bbb/g 替换光标所在行的aaa替换成bbb,出现所有的aaa |
:%s/aaa/bbb/g | 替换整个文件的aaa替换成bbb |
echo
echo命令 | 说明 |
---|---|
> | 覆盖方式输出到指定文件,比如:echo "helloworld">a.txt |
>> | 追加方式输出到指定文件,如:echo "helloworld">>a.txt |
2>> | 错误信息追加 |
&>> | 正确 和 错误信息写入同一文件 |
cat
cat命令除了正常查看文件外,还可以重定向输出
[root@localhost ~]# cat >a.txt<<EOF
> 1111111111111
> 2222222222222
> 333333333333
> 44444444444
> EOF
[root@localhost ~]# cat a.txt
1111111111111
2222222222222
333333333333
44444444444
[root@localhost ~]#
两个EOF中间,可以重定向输入多行内容,写完后写个EOF结束。
tac命令,按行倒序显示
[root@localhost ~]# tac a.txt
44444444444
333333333333
2222222222222
1111111111111
[root@localhost ~]#
nl等于cat命令带上了行号
[root@localhost ~]# nl a.txt
1 1111111111111
2 2222222222222
3 333333333333
4 44444444444
[root@localhost ~]#
压缩与解压缩
tar.gz格式
tar
命令相关参数
- -c 创建压缩文件,
tar -c 【压缩后文件名】 【需压缩文件】
- -C 指定压缩文件存放位置,
tar -xf 【压缩文件】 -C 【到指定目录】
- -x 解压,
tar -xf 【压缩文件】
- -t 查看内容
- -z 有gzip属性
- -v 显示所有过程
- -f 使用压缩或解压缩文件的文字,这个是最后一个参数,后面只能接文件名
zip格式
如果压缩文件是zip格式,使用unzip命令解压
unzip
相关参数
- -n 解压缩是不要覆盖原有文件
- -d 指定文件解压后所要存储目录,
unzip 【压缩文件】 -d 【到指定目录】
- -v 执行时显示详细信息
目录结构
# 安装tree插件,可以查看当前路径的目录树
yum install -y tree
# 如下使用:输入tree即可,不要在根目录执行,意义不大,目录树太大
[root@localhost local]# tree
.
├── bin
├── etc
├── games
├── include
├── lib
├── lib64
├── libexec
├── sbin
├── share
│ ├── applications
│ ├── info
│ └── man
│ ├── man1
│ ├── man1x
│ ├── man2
│ ├── man2x
│ ├── man3
│ ├── man3x
│ ├── man4
│ ├── man4x
│ ├── man5
│ ├── man5x
│ ├── man6
│ ├── man6x
│ ├── man7
│ ├── man7x
│ ├── man8
│ ├── man8x
│ ├── man9
│ ├── man9x
│ └── mann
└── src
32 directories, 0 files
[root@localhost local]#
命令 | 说明 |
---|---|
/boot | 启动引导、核心文件、镜像文件等等 |
/dev | 设备信息 |
/lib | 系统或应用所依赖的动态链接库 |
/lib64 | 存放64位的 |
/etc | 存放系统管理配置和子目录 |
/usr | 用户装软件程序 |
/home | 用户自己的目录 |
/opt | 安装软件的目录 |
/proc | 虚拟目录,内存映射用的 |
/root | 管理员目录 |
/sbin | s表示super,存放管理员程序或命令 |
/bin | 系统常用命令 |
/tmp | 临时文件存放,解压缩等 |
/sys | 系统文件存放 |
/media | 媒介,比如光盘、U盘 |
/mnt | 给用户临时挂载的目录 |
/var | 日志数据 |
/run | 系统运行时放的一些临时文件,重启清空 |
etc目录
/etc
目录存放重要的配置文件
文件 | 说明 |
---|---|
/etc/sysconfig/network-scripts/ifcfg-ens33 | 网卡配置文件,虚拟机叫ens【数字】这样的文件,服务器可能叫eth0,或者Dell服务器叫em【数字】 |
/etc/fstab | 开机自动挂载的列表 |
/etc/hostname | 主机名称,CentOS7可以修改:hostnamectl set-hostname 【新名称】 下次连接就变新名称了,如果不是CentOS7的话,编辑文件vim /etc/hostname 在里面直接填写 |
/etc/hosts | 查看本地DNS域名 |
/etc/resolv.conf | DNS服务器的地址 |
/etc/profile | 设置系统环境变量参数,比如:$PATH ,这里的环境变量对系统内所以用户生效。修改完profile文件后,执行source /etc/profile 生效 |
/etc/bashrc | 这个文件设置系统bash shell 相关的内容,对所有用户都起作用。只有运行了bash命令,这个文件就被加载。 |
/etc/shells | 系统装的Shell应用程序 |
/etc/redhat-release | 系统版本号 |
/etc/init.d | 系统管理命名,初始化 |
/etc/yum.repos.d | yum源存放目录 |
/etc/inittab | 运行级别 |
/etc/sudoers | root用户权限,如果普通用户设置到这个文件,就有root权限 |
/etc/shadow | root和其他用户的密码 |
/etc/sysctl.conf | 内核端口转发,内核设置随机端口范围,设置内核参数 |
/etc/passwd | 账号信息文件 |
/etc/group | 设置用户的组和相关信息 |
/etc/sudoers | sudo命令配置文件,权限提升 |
/etc/skel | 添加新用户时候,系统创建家目录,修改权限所有者,会把/etc/skel 下面的所有内容复制到用户家目录 |
ens33文件
查看文件/etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# 网卡获取IP的方式,我这设置的静态的,默认是DHCP自动获取
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
# 虚拟网卡名称
NAME=ens33
# 网卡名称,设备名称
DEVICE=ens33
# 开启是否启动网卡
ONBOOT=yes
# IPv4地址格式
IPADDR=10.10.10.10
# 网关地址,也就是路由地址,我这是虚拟机,设置成了.2
GATEWAY=10.10.10.2
DNS-NAMESERVER=8.8.8.8
# 子网掩码,为了寻址方便,子网划分
NETMASK=255.255.255.0
ZONE=public
DNS1=8.8.8.8
# UUID配置:网卡标识符,我已经删除了
修改为配置后,执行systemctl restart network
可以不用重启就能生效
usr目录
文件 | 说明 |
---|---|
/usr/local | 编译安装软件默认路径,比如安装tomcat、nginx,对应的windows系统的C:\Program Files目录 |
/usr/src | 存放的源码文件目录,开源的软件 |
var目录
文件 | 说明 |
---|---|
/var/log | 顾名思义,记录系统及软件运行信息日志文件的目录,非常重要,有messages/系统及日志、secure/安全日志、dmesg/硬件信息加载日志、cron/定时任务日志、wtmp/登录者信息、lastlog/用户近期登录情况 等 |
文件属性和权限
文件属性 | 说明 |
---|---|
【d】开头 | 目录 |
【-】开头 | 文件 |
【l】开头 | 链接 |
【c】开头 | 设置,如:键盘,鼠标 |
【b】开头 | 存储设备 |
组别:下标从0【表示文件】开始 | 从第2个字符,3个字符为一组,一个3组(9个字符) | 权限 |
---|---|---|
第一组:1 2 3 | 2~4这三个字符 | 属主权限,该文件拥有者 |
第二组:4 5 6 | 5~7这三个字符 | 属组权限,同一用户组所有用户都有该文件权限 |
第三组:7 8 9 | 8~10这三个字符 | 其他用户权限,非以上两组的用户 |
每组里的三个字符,从第一个到第三个,分别表示 读【R】/4、写【W】/2、执行【X】/1,没有权限用【-】/0表示
修改文件属主chown
# 更改文件属主
chown -R 【属主名】 【文件或目录】
# 更加文件属主同时,也修改属组
chown -R 【属主名】: 【属组名】 【文件或目录】
举例:
修改文件权限chmod
# 表示从第一组到第三组设置权限
chmod 【3位数字】 【文件】
举例:5表示4+1,表示设置 读 和 执行的权限
举例:4表示第一组设置读权限,后面00表示设置第二组和第三组没有权限
举例:7=4+2+1,5=4+1,默认就是这个权限,同理这种最高权限,那就是777
修改目录里文件权限
使用-R 递归目录里面的,不然只有目录权限修改,里面文件都没修改到
符号类型修改文件权限
举例:给文件修改x执行权限,给每个组添加了执行权限
符号使用说明:
- u user用户
- g group用户组
- o other其他用户
- a all所有,代表u+g+o
举例:给用户添加读、写、执行权限
去除权限
举例:a表示所有用户,去除第一组第二组第三组的w写权限
分别设置每个组,给最高权限:
索引节点属性
ls -lhi
显示索引节点,显示inode
用户管理
- 单用户多任务
一个用户登录到系统上,执行多个服务任务和进程。 - 多用户多任务
用不同账号,不同用户权限也不同。
不同任务由不同维护人员完成,也可以说是不同的用户。
使用id
命令查看用户信息UID和GID,数值越小,权限优先级越高
id 【用户名】
查看用户id
超级管理员用户uid是0,数值最小,表示最高权限
普通用户uid >= 1000,如果是CentOS6的话,是>=500到65535
虚拟用户uid 1到999这个范围,CentOS6的话是 1到499
用户管理命令
命令 | 说明 |
---|---|
id 命令 | 查询用户信息UID和GID |
su 命令 | 切换不同用户:su root ,工作环境不会切换过来 |
su - 【用户】 命令 | 切换账户后,工作环境也切换过来了,退出画按Ctrl + B |
sudo 命令 | 普通用户提权,如:sudo yum install -y docker-ce ,sudo命令的执行过程是先去看etc/sudoers 文件,用户是否有运行sudo的权限 |
whoami 命令 | 查当前用户是哪个, |
passwd 命令 | 修改密码:sudo passwd 【用户名】 |
last | 显示用户最近登录信息 |
lastlog | 显示用户登录日志,哪些登陆过哪些没登录 |
useradd
命令 | 说明 |
---|---|
-d | 指定用户主目录,-m表示如果不存在就创建,会创建家目录,如:useradd -d /home/【用户】 -m 【用户】 |
-M | 大写M表示创建用户不创建家目录 |
-g | 指定所属用户组,举例:useradd 【用户名】 -g 【用户组名】 |
-G | 指定用户所属用户组 或 附加组 |
-s | 指定用户命令解释器,如:useradd -s /bin/sh -g 【用户组】 【用户】 也可以写useradd 【用户】-s /bin/sh -g 【用户组】 |
-u | 指定UID |
userdel
使用userdel -r 【用户名】
删除用户,直接把用户数据目录都给删除。
安全起见,最好是用userdel 【用户名】
删除,然后修改用户名目录(/home目录下的用户目录)做备份,
删除用户更新的是/etc/shawod
、/etc/group
、/etc/passwd
这三个文件的数据。
字符集
功能 | 命令 | 说明 |
---|---|---|
查看字符集 | echo $LANG $是取变量值 |
查到的是:en_US.UTF-8 语言.字符集 |
临时修改字符集 | export LANG='zh_CH.UTF-8' |
然后打印查看echo $LANG ,如果重新连接后,字符集会失效 |
永久修改字符集 | 修改文件/etc/locale.conf ,方法二:localectl set-locale LANG=en_US.UTF-8 |
修改完后让其生效source /etc/locale.conf |
特殊符号
符号 | 说明 |
---|---|
- |
上一次目录,如:cd - |
' ' |
单引号引起来的是字符常量,如:echo '$LANG' 和echo $LANG 区别: |
" " |
双向号作用是解析命令,如:echo "$LANG" 和echo $LANG 区别: |
\ |
反斜杠用于转义字符,用在一些命令、变量、路径等,输出时候配合""使用,如:echo -e "\n" 打印一个回车换行 |
> |
标准输出重定向,先清空文件内容再写入,覆盖式写入 |
>> |
追加到文件内容末尾 |
< |
标准输入重定向,用来指引命令从哪读取数据 |
<< |
追加输出重定向,和cat 命令配合使用向文件追加多行内容 |
2>&1 |
0【标准输入】,1【标准输出】,2【错误输出】,所以2>&1 表示错误信息和正确信息输入到同一个文件中 |
| |
管道,把前一个命令的结果通过管道传给后面的命令,如:cat 【文件】 | wc -l 统计这个文件行数 |
# |
表示注释 |
$ |
取变量值,一般全大写的单词都是变量 |
& |
一般在脚本中用的多,表示在后台运行 |
; |
用户表示一行命令或语句结束,或者表示分隔符 |
! |
找出最近一次执行的命令并执行,如:!ls 表示最近一次使用ls 命令并执行 |
* |
匹配任意字符,包括空的 |
? |
匹配任意一个字符,有且仅有一个 |
[ ] |
用户匹配一个范围,如:[abcd] ,匹配这4个字符的任意一个字符。如果是[a-z] 表示字符a到z这个范围的任意一个字符,包括可以使用[0-9] 匹配数字,不过中文不太好适配 |
如:[!abcd]
表示取反,不包含这4个字符其中的任意一个,也可以写[!a-d]
或[^a-d]
链接
软连接和源文件Inode节点号不同,硬链接和源文件Inode节点号相同。
创建硬链接不带-s
参数,带-s
参数创建的链接是软连接。
软连接可以针对于文件也可以针对于目录,硬链接只能针对于文件。
软连接可以跨文件系统使用,硬链接不行。
删除软连接不会对源文件产生影响,删除硬链接对源文件以及软连接文件无影响。
删除源文件,对硬链接无影响,软连接会导致文件丢失。
同时删除源文件和硬链接,整个文件才会真正删除。
不管硬链接还是软连接操作文件,通过链接方式修改文件内容,都可以造成源文件内容修改。
软连接
软连接意思好比文件或目录的快捷方式,修改或创建软连接不会对文件本身造成影响
软连接可以针对于文件也可以针对于目录
使用命令:
ln -s 【文件】 【软连接】
硬链接
硬链接修改后,原文件也会发生修改,硬链接只能针对于文件
使用命令
ln 【文件】 【硬链接】