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也可以

image

文件搜索(精确搜索) 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 的软链接到根目录下
	



posted @ 2021-12-13 20:50  elijah_li  阅读(48)  评论(2编辑  收藏  举报
//一下两个链接最好自己保存下来,再上传到自己的博客园的“文件”选项中