Linux基础
昨日内容
# 复制文件
cp /elijah.txt /tmp
cp -r /boot/test /tmp # 参数 -r 递归复制,可以复制文件夹
cp -a /elijah.txt /tmp # 参数 -a 可以保留文件的某些属性,如创建时间
-p
储备:linux 中默认不能复制删除文件夹
家目录~ 也是根目录下的 root 文件夹
# 移动文件
mv /a.txt /tmp
mv 也可以移动文件夹
# 移动文件命令和复制文件命令:也可以给文件或者文件夹改名
mv /a.txt /b.txt
mv /test1 /test2
cp /a.txt /test/b.txt
# 删除文件
rm /a.txt
rm -r /root/test # 参数 -r 递归删除,可以删除文件夹
rm -f /a.txt # 参数 -f 删除文件时不要提示是否删除
rm -i /a.txt # 参数 -i 删除显示提示
rm -d /root/test # d 表示directory 这个参数也可以用来移除文件夹,与 -r区别就是-d只移除空目录
删除案例 rm -rf /* # 删除根目录下所有文件,不能轻易使用
# 起别名 alias
删除命令极其危险,如果不想让别人执行删除文件,可以给删除命令改名
alias ppp = 'rm'
ppp -rf /root/test
如果忘记别名,可以使用下面方法
\rm -rf root/test
# 查看命令所在的路径
which 命令
which rm
/usr/bin/rm
cd /usr/bin
# 编辑文件
命令: vi / vim # 推荐使用 vim
下载vim命令: yum install vim -y
1、打开文件
vim elijah.txt
2、编辑文件的三种模式
命令模式: 任意模式按 esc 进入
末行模式: 命令模式 输入冒号进入
编辑模式: 命令模式按 a、i、o 进入
3、退出文件
:wq!
:q
4、vim 编辑文件原理 # 编辑的隐藏临时文件
进入编辑之后是会产生一个隐藏的临时文件, .文件名.后缀.swp
编辑的内容都是先写入临时文件最后才覆盖写入原文件中
如果在编辑过程中异常退出,没把临时文件写入删除,临时文件会一直存在,下次进入编辑会报错
如果重新进入:
vim -r /elijah.txt # 保留上次编辑的内容
vim -n /elijah.txt # 不保留上次编辑的内容
cat .elijah.txt.swp # 查看到的只是一连串二进制
5、查看文件信息的命令
ls 查看当前目录下所有文件,如果有文件夹会出现不一样的颜色
ls -l 查看文件的详细信息
ls -l -h 文件大小以KB为单位显示
ls -a 查看所有文件包括隐藏文件(.文件名)
ls -la
ll -a ll 是 ls -l 的缩写
ls -li 可以查看文件的id
ls命令的通配符(用于筛选文件,精准匹配某个文件):(通配符只能识别文件不能识别文件夹)类似正则表达式
# * 表示匹配任意个数的字符 模糊搜索
ls *.txt # 罗列以.txt结尾的文件 (*类似正则表达式量词的作用)
ls *.dct
ls 1* # 罗列以 1 开头的所有文件
ls 1*.odt
# ? 表示只匹配一个字符
ls 1??.txt # 罗列以 1 开头,1 后面有两个任意字符.txt结尾的文件
# [] 表示匹配中括号内任意一个字符
ls [123]23.txt # 罗列以 123 其中一个数字开头,以23.txt结尾的文件
ls [123][234]3.txt # 罗列以 123 其中一个数字开头,以 234 其中一个数字位次,以3.txt结尾的文件
ls [1-9]23.txt
ls [a-z]23.txt
stat 查看某个文件的具体信息包括创建时间,变更时间等
cat 查看文件里面的内容
tee 查看文件里面的内容
cd change directory
ls list
which cd 为空,因为cd是shell内置内置的命令
/bin
/sbin system binary
/usr/bin
/usr/sbin
# 带 usr 目录的一般是与用户关系较大或者是用户下载的命令
6、编辑文件的常用快捷键
命令模式(esc进入)
a、i、o 进入编辑模式
gg 光标跳到首行
G 光标跳到文件尾行
0 光标跳到行首
$ 光标跳到行尾
yy 复制一行
nyy 复制n行
p 向下复制
P 向上复制
dd 删除一行
ndd 除n行
u 撤回上次命令操作
ctrl+r 撤回上次撤回
/搜索内容 回车即可标识要搜索的内容
n 向下移动
N 向下移动
# :noh 可以取消标识
末行模式(冒号 : 进入)
:w 保存编辑
:q 退出不保存
:wq 保存并退出
:wq! 强制保存退出
:set nu 显示内容的行数
:set nonu 取消显示内容行数
:set ic 忽略大小写
:n 跳转到第n行
可视化模式
命令模式下 ctrl+v 进入可视化模式
同时编辑十行内容:
1、进入可视化模式
2、选中十行内容
3、shift+i 进入编辑
4、在选择的字符前加 # 号,
5、不用回车,直接退出就可以
7、正则表达式
特殊符号:
. 匹配除换行符以外的字符
在 Linux 中,正则没有 \d 的命令
^ 匹配开头的字符
$ 匹配末尾的字符
a | b 匹配 a 或者 b
abc | efg 匹配abc 或者 efg
() 分组
[] 匹配字符组内的任意字符
[^] 取反
量词:
* 重复0次或多次前导字符
+ 重复1次或多次前导字符
? 重复0次或1次前导字符
{n} 重复n次前导字符
{n, m} 重复n次或m次前导字符
{n,} 重复n次或更多次
{,n} 重复1次或n次前导字符
8、用正则表达式给1到10行添加一个'#'号
第一种是可视化模式选中文本后编辑
第二种:进入末行模式
匹配1到10行所有字符,在第一列中插入#
:1,10 s/\(.*\)/# \1/g
取消转义:\
今日内容
- 系统目录结构
- 目录文件的具体意义
内容详细
目录结构
结构特点:
1、linux系统中的目录一切从根开始
2、Linux系统中的目录结构拥有层次
3、Linux系统中的目录需要挂载使用(也就是挂载磁盘)
/ 根目录
/bin 存放二进制命令库(其实是个/usr/bin的快捷方式)
/dev device 设备 光驱 硬盘 存放我们操作电脑硬件的接口入口
/mnt 临时的挂载点目录
/opt 一般软件会下载在此 # 但会安装在 /usr/local 目录下
/proc 存放系统运行状态 # 比如window的任务管理器cpu性能(保存当前系统运行的实时状态)
/usr 存放存放用户程序 # 软件安装目录
/etc 存放系统或服务的配置文件,网络配置文件(网关、DNS等地址IP,还有主机名 hostname)
/boot 系统引擎程序+系统内核
/sys 虚拟的目录 内存信息
/root root用户的家目录 皇宫
/sbin 存放只有root用户才能使用的命令
/selinux selinux 及它的配置文件存放位置 # 一般使用linux之前会把它关闭掉(安全局)
/tmp 存放垃圾文件
/home 普通用户的家目录 贫民窟
/var 经常变化的文件,系统日志
储备:
DNS: 域名解析,把我们熟悉的域名地址(www.baidu.com)转为可访问服务器的IP地址(172,22,34,45)
最近的DNS地址: 114,114,114,114
美国谷歌DNS: 8.8.8.8
网卡:硬件设备,网关存在于网卡中
网关:用于一个网络连接另一个网络的软件或者硬件
系统目录结构介绍
1、目录挂载初识
挂载的命令:mount # 注意只能挂载磁盘,而且不能在同一根目录下,否则会造成循环挂载不能使用
mount [磁盘路径] [挂载的路径]
查看本机挂载的命令
[root@localhost dev]# df -h
卸载挂载的磁盘
[root@localhost dev]# umount /mnt/
2、目录结构发展
第一块磁盘:/
第二块磁盘:存储数据(数据盘)
3、关闭selinux
临时关闭
[root@localhost ~]# setenforce 0
永久关闭
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
目录结构知识详述
1、网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-ens32
/etc/sysconfig/network-scripts/ifcfg-ens33
2、重载网卡信息
修改完网卡信息之后要执行以下代码重载一下网卡信息 新改的IP才会生效
systemctl restart network
ifdown [网卡名称] && ifup [网卡名称]
关闭网络管理器(因为已经有了network)
systemctl stop NetworkManager
systemctl disable NetworkManager
或
systemctl disable --now NetworkManager
判断SSH服务是否开启
[root@localhost ~]# systemctl status sshd
如果是开启的,状态就是active
解析配置文件
/etc/resolv.conf : 临时dns配置文件
114.114.114.114 中国电信
223.5.5.5/223.6.6.6 中国阿里云
8.8.8.8 谷歌
主机名称文件
临时修改
hostname baidu
永久修改
[root@baidu ~]# vim /etc/hostname # 需要重启生效
[root@baidu ~]# hostnamectl set-hostname oldboy # 立即生效
时区设置
命令:timedatectl
查看 timedatectl 所有的命令: -h
status : 查看当前时间
使用timedatectl命令同步时间
1 使用帮助
[root@localhost ~]# timedatectl -h
2 命令示例
2.1.显示系统的当前时间和日期
timedatectl
# timedatectl status
# 两条命令效果等同
2.2设置日期与时间
timedatectl set-time "YYYY-MM-DD HH:MM:SS"
timedatectl set-time "YYYY-MM-DD"
timedatectl set-time "HH:MM:SS"
2.3.查看所有可用的时区
timedatectl list-timezones
# 亚洲
timedatectl list-timezones | grep -E "Asia/S.*"
2.4.设置时区
timedatectl set-timezone Asia/Shanghai
2.5.设置硬件时间
# 硬件时间默认为UTC
timedatectl set-local-rtc 1
# hwclock --systohc --localtime
# 两条命令效果等同
2.6.启用时间同步
timedatectl set-ntp yes
# yes或no; 1或0也可以
文件搜索(精确搜索) find 命令
find [目录] [参数(-name,-size)] [文件属性]
精确搜索:(输入准确的文件名)
案例: find / -name network
# 按照文件名来搜索
模糊搜索:(输入正则特殊符号 * ?)
案例: find / -name net*
如果在搜索过程中报错,可以用引号把文件名引起来,有时候文件命名会有空格,为了能方便识别,用引号
find / -name 'network*'
find / -name 'ner?????' # 超过字符数不会被搜索
# 忽略大小写
find / -iname 'net*'
# 按照文件大小搜索
有时候忘了文件名可以用得上
单位:1kuai = 512 bit
2kuai = 1024 bit = 1bytes 字节
find /root -size +1 # 大于512字节的文件
find /root -size -1 # 小于512字节的文件
如果要查找兆以上大小的,要先进行换算
200MB = 200 * 1024 KB
1 数据块 = 512 字节(bytes)
1 KB = 1024 字节
1 KB = 2 数据块
# 按照文件所属人搜索
find /root -user root
# 按照文件被更改时间搜索
文件内容被修改,文件属性被修改,文件被访问
find /root -mmin -5 # 五分钟之内被修改过的
find /root -mmin +5 # 五分钟以前被修改过的
# 按文件类型搜索
find /root -type f # 文件
find /root -type d # 目录(文件夹)
find /root -type l # 连接
# 组合条件搜索
find /root -iname 'net*' -a -type f
find /root -iname 'net??' -o -type d
# 通过 id 搜索
find /root -inum 1212121
find / -name elijah.txt : 会被拒绝访问,因为根目录下有些文件访问是需要权限的
/: 表示根目录下
-name: 表示后面的参数是个文件名
elijah.txt: 文件名
find /home -name elijah.txt :会连同路径也会一起显示出来
文件搜索之locate
locate拥有自己的索引库,可以快速根据文件名搜索到要搜索的文件
但是使用 locate 是需要先下载的
1、执行下载命令 : yum install mlocate -y
2、下载完之后首先要执行命令 updatedb 更新locate的索引库才能搜索
find
缺点:会遍历搜索,速度慢
优点:可以搜索最新的文件
locate
缺点:它的搜索库需要一段时间才能更新,不能搜索新创建的文件
优点:查询速度快
可以用命令实时更新locate的索引库,命令:update ,不过需要管理员权限
sudo updatedb
查看文件内容命令 cat 和 more
cat 文件名:
可以直接在命令界面查看文件内容
当文件内容少可以使用 cat,文件内容多则使用 more,分页查看
-b 去除空行显示行号
-n 不去除空行显示行号
more 文件名:
进入查看文件的页面,空格下一页,enter下一行,b 上一页,看完会直接跳出
与使用 man (manual) 查看帮助页面一样的用法
grep 内容 文件名:
标识文件内容中要查询的字符
-n 在查询结果的前面加上行数
-v 取反,查询除了内容中的字符以外的所有内容
^ 匹配以什么字符开头的内容
$ 匹配以什么字符结尾
-i 忽略大小写
案例:
grep -n loufu /root/1.txt # 显示行数
grep -v sad /root/1.txt # 查询除了sad以外的内容
grep '#' /etc/services # 查询有 # 号的内容
grep -v ^'#' /etc/services # 查询除了以 # 号开头的内容以外的内容
右尖号与双右尖号
覆盖重定向: >
追加重定向: >>
echo 'hello world' > /1.txt # 把内容覆盖写进文件中
echo 'hei' >> /1.txt # 追加写进文件中
# > 、>> 还可以把系统命令执行之后得到的返回值写入文件中
ls > /1.txt # 把执行 ls 命令得出的结果写入文件中
ll > /1.txt
grep -n -i 'abc' /xx.txt >> /1.txt
管道符
把一个命令的输出当作另一个命令的输入
例子:
cat /elijah.txt
elijah.txt 文件就是命令的输入
查询出来的结果(内容)就是命令的输出
cat /etc/services | grep update
ll -a /etc | more
硬连接(快捷方式)
可以把深层目录的一些常用的文本创建软链接出来,放在根目录上,方便使用和访问
软链接相当于 window 系统的快捷方式
操作软链接出来的文件就相当于操作源文件
命令: ln # link 的缩写
例子:
ln /ect/sysconfig/network /network_softlink # 创建 network 的软链接到根目录下