Linux基础汇总===》文件管理 上传与下载 字符处理

什么是Shell

  • 链接Linux的桥梁
  • 是一个应用程序
  • 是一个解释器
  • 最常用的bash和sh

路径

  • 绝对路径:从根路径开始
  • 相对路径:从当前目录开始
  • 特殊路径:
   .  : 当前目录
   .. : 上级目录
   ~  : 家目录
   -  : 上一步目录

注:系统根指的是 /

查看当前系统的版本

cat /etc/redhat-release
# CentOS Linux release 7.9.2009 (Core)

查看当前系统内核

uname -a
# Linux localhost.localdomain 3.10.0-1160.15.2.el7.x86_64 #1 SMP Wed Feb 3 15:06:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

查看本地指定的DNS域名和IP

cat /etc/hosts
# 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

- 优先级高于/etc/resolv.conf

查看系统指定的DNS服务器

cat /etc/resolv.conf 
# Generated by NetworkManager
# nameserver 114.114.114.114

查看系统设置环境变量的目录

echo $PATH					以:进行分隔
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/nginx/sbin:/root/bin:/usr/local/nginx/sbin

添加环境变量
/etc/profile   		所用用户的环境变量
/root/.bash_profile  		 当前用户的环境变量

cd

cd /opt				切换到opt目录下
cd					cd后面不跟任何路径,默认切换到当前用户的家目录下面

tree

tree				显示当前目录的目录结构

bash解析器中的快捷键

Ctrl + C : 终止当前命令的操作
ctrl + d : 退出,相当于exit
ctrl + z : 杀死当前进程
ctrl + l : 清屏
ctrl + a : 跳转到行首
ctrl + e : 跳转到行尾
ctrl + r : 搜索历史
esc  + .  : 上一条命令最后一个参数
!$ : 也是获取上一条命令最后一个参数

wget

wget -o /etc/yum.repos.d/Centos-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo		
# 将Centos-7的源下载到/etc/yum.repos.d/目录下
wget -o 链接地址				不指定路径默认为当前路径下

history
查看系统执行的命令历史。

  • 家目录下.bash_histroy文件是保存执行命令历史的文件。
history							查看系统执行的命令历史
cat .bash_history 				查看执行命令历史文文件的内容

history -c						清空历史命令

修改主机名

方式一:
hostnamectl set-hostname svr7			
bash							重新开启一个新的bash进程,相当于在当前的进程下开启了一个子进程
方式二:
echo svr7 > /etc/hostname
bash							重新开启一个新的bash进程,相当于在当前的进程下开启了一个子进程

重启与关机

reboot			立即重启
init 6			立即重启
shutdown -r 10		 		10分钟后重启
shutdown -r 8:30		 	8:30重启

poweroff				立即停止系统,并且关闭电源
shutdown -h 0			立即关机(now)
shutdown -h 10				10分钟后关机

- 取消正在进行的关机或重启
showdown -c

目录文件结构

  • 淡蓝色指的是软连接(快捷方式)
  • 绿色指的是可执行文件
cd /					切换到/ls -l					查看/下的目录

bin ---> usr/bin			存放普通用户可执行的命令
sbin  ---> usr/sbin			存放超级管理员可执行的命令

boot  					系统启动文件

root  					超级管理员的家目录
home   					普通用户的家目录

lib						32位使用的目录
lib64					64位使用的目录

tmp						系统文件目录,一般是第三方软件存放的目录,也是回收站目录

usr						存放系统执行文件的目录,相当于windows中的C盘的windows目录

etc						Linux系统配置的目录

dev						Linux系统的设备目录(/dev/null	黑洞设备,只进不出)

srv						物理设备产生的一些文件

sys						硬件设备的驱动程序信息

proc					虚拟文件系统,反映出来的是内核,进程信息或实时状态(临时信息)
/proc/meminfo: 内存信息     	 /proc/cpuinfo: cpu信息

run						存放一些进程编号的目录

opt 					下载文件的目录

mnt						相当于windows系统的USB

var	
1. 存放系统临时文件的目录
2. 存放系统日志的目录  
3. 系统运行时产生的文件	

lost+found
ext2/ext3的文件系统格式才会产生lost+found目录	孤儿文件
lost+found目录一般情况下时空的,当系统故障或者突然关机的时候,丢失的一些文件,在这里能找回,只有root用户才能打开。

Linux系统常用的配置文件

- /etc							
/etc/sysconfig/network-script/ifcfg-*			网络配置文件
/etc/hostname					系统主机名配置文件
/etc/resolv.conf				dns客户端配置文件
/etc/hosts						本地域名解析配置文件
/etc/fstab						系统挂载目录,开机启动挂载列表
/etc/passwd						系统用户文件

文件管理

  • 文件的各种类型
 drw-------  		d 代表目录
 -rw-------			- 代表普通文件
 lrw-------			l 代表软连接			
 prw-------			p 管道文件
 crw-------			c 设备文件(字符设备)打印机,终端(/dev)
 brw-------			b 存储设备硬盘(/dev/sda1)
 srw-------			s 套接字文件, 进程间通信 
  • 增 删 改 查 移动 权限
- 增 
· 目录
mkdir /dir		 
mkdir -p /dir/a/b/c		 		(-p)递归创建
tree /dir				查看dir下的目录结构
# /dir
# └── a
#     └── b
#         └── c

mkdir -pv /dir/A/B/C			(-v)打印出整个目录的创建过程
# mkdir: created directory ‘/dir/A’
# mkdir: created directory ‘/dir/A/B’
# mkdir: created directory ‘/dir/A/B/C’

-m 设置创建文件夹的权限


· 文件
touch a.txt b.txt c.txt				同时创建多个文件
touch {a..z}.txt					创建a.txt , b.txt , ... z.txt		# {}必须是..
touch {abc,bcd,fgh}.txt				创建abc.txt , bcd.txt , fgh.txt
- 查
· 文件查询(ls)
ls -a /root						查看影藏文件		
ls -l /root						查看root目录下文件和目录属性
ls -i /root						打印文件的索引号
ls -lh /root					显示可读文件大小(kb)
ls -ld /root					查看目录本身的属性
ls -F /root						给文件添加标识符

· 查看一个文件的内容(cat)
cat -n /root/a.txt				显示内容并加上行号

· 查看文件开头(head)
head /etc/passwd				从头开始打印文件,默认打印前10行
head -n 2 /etc/passwd			打印前2行	
head -2 /etc/passwd				同上,打印前2行
head -c 100 /etc/passwd         打印前100字节的内容
head -c -100 /etc/passwd		去掉后100个字节的内容

· 查看文件结尾(tail)
tail /etc/passwd				从尾部开始打印文件,默认打印10行
tail -n 2 /etc/passwd			打印最后2行
tail -2 /etc/passwd				同上,打印最后2行
tail -c 100 /etc/passwd			打印最后100字节的内容
tail -f /opt/a.txt				实时监控文件新增内容(两个终端测试)

· 查看文件夹层级(tree)
tree					显示目录结构
pwd						查看当前目录绝对路径
- 修改(编辑)
vi/vim 编辑器,文本编辑工具(vim相当于vi的升级版)

vi/vim编辑器的编辑流程
1. 打开文件
2. 创建swp文件,用于临时存储文件修改内容
3. 选择输入模式进行修改内容
4. 进入末行模式,使用指令进行操作
5. 退出

· 输入模式
需要指定输入模式的方法
i : 在光标处之前插入内容
a : 在光标前之后插入内容
o : 在光标下一行输入内容
A : 在光标所在的行尾输入内容

· 保存内容
1. 按键盘上的Esc键	
2. 按冒号键进入末行模式	
3. 执行命令,对文本进行操作
4. w 保存当前编辑的内容 	 q 退出编辑器



-  命令模式
光标跳转到行尾
Shift + a 和 Shift + 4($)

光标跳转到行首
0键

删除一行
dd

删除多行
ndd 	 删除n行

复制一行
yy

复制多行
nyy 	 复制n行

粘贴
p(粘贴在光标的下一行)
P(粘贴在光标的上一行)

撤销
u	    每按一次撤销一次

跳转到页尾
G

跳转到页首
gg

跳转到指定行
nG		跳转到n行



-  末行模式(:)
强制退出
q! 							修改内容不保存退出

取消标记颜色
noh

显示行号
set nu
取消显示行号
set nonu

行内替换
s/old/new					替换当前行第一个"old"
s/old/new/g					替换当前行所有的"old"

区域内替换
n,m s/old/new/g				替换n-m行所有的"old"
% s/old/new/g				替换文件内所有的"old"		

文件操作
w /opt/a.txt				另存为其它文件(其他文件必须是新建文件)
r /opt/b.txt				读入其他文件内容

Ctrl + v : 选中多行
	第一步 : 选择多行
	第二步 : 编辑模式进行文件(shift+i)
	第三步 : 按ESC选择的多行数据同时发生变化
	第四步 : 保存

需要复制文本13-20行,并粘贴在1行下面
	第一步 : 把光标移动到第1行
	第二步 :	复制13-20行(:13,20y)
	第三步 : 按p
- 移动
mv a.txt /opt/				将当前路径下的a.txt移动到/opt/目录下
mv a.txt A.txt				重命名a.txt为A.txt(移动到当前文件夹中)
- 删除
rm /opt/a.txt					不加选项需要确认是否要删除
# rm: remove regular file ‘/opt/a.txt’? y	
	
rm -f /opt/A.txt					-f取消确认交互,直接删除。

rm -r /opt							-r递归删除(多层级删除)

-i增加删除前的提示
which rm							查看rm的执行文件
# alias rm='rm -i'			
# 	/usr/bin/rm
/usr/bin/rm b.txt					使用执行文件可以直接删除
/usr/bin/rm -i B.txt				加了-i需要确认后才可以删除
# /usr/bin/rm: remove regular file ‘B.txt’? y

rm的简写
rm c.txt				
# rm: remove regular empty file ‘c’? y
\rm c.txt						 	直接删除c.txt
# \rm 等价于 /usr/bin/rm
- 查
 
find查找
使用find查找包含当前目录本身和影藏文件
格式 : find 搜索路径 选项 选择匹配值 指令(-print) 

- 	find指令
 -print(输出结果,默认)	-ls类似于ls -lhi	(文件属性加上索引和大小)
· 在目录层次结构中搜索文件

- 根据名称查找文件
find / -name "redhat-release"			查询redhat-release文件路径

通配符*:匹配所有(包含空)
find / -name "eth0*"					查询/下以eth0开头的文件
find / -name "*eth0"					查询/下以eth0结尾的文件
find / -name "*eth0*"					查询文件名包含eth0的文件

通配符[]:匹配括号中的任意一个字符
touch abc{1..9}
find /root/ -name "abc[359]"			查询abc开头以3,5,9结尾的任意字符
# /root/abc3
# /root/abc5
# /root/abc9

通配符?:匹配任意一个字符(不包含空)
touch /root/abc /root/abc10
find /root/ -name "abc?"
# /root/abc[1-9]
find /root/ -name "abc*"
# /root/abc[1-10]	  /root/abc

通配符[^]:除了[]内的其他所有且与""相匹配的内容
find /root/ -name "abc[^359]"				
# /root/abc1
# /root/abc2
# /root/abc4
# /root/abc6
# /root/abc7
# /root/abc8

! : 对整个搜索结果取反
find /root/ ! -name 'abc[359]'			匹配/root目录下出了abc3,abc5,abc9以外的所有内容
# /root/
# /root/.bash_logout
# /root/.bash_profile
......

i : 忽略大小写
touch /root/Abc{1..3}
find /root/ -iname "abc*"
/root/abc1
......
/root/abc10
/root/abc
/root/Abc1
/root/Abc2
/root/Abc3

- 根据文件大小查找(不精确查找)
· size  单位: b(默认:字节) c(文件显示的默认单位)  K M G
size n(单位)
+n : 大于n个单位
-n : 小于n个单位
n  : 等于n个单位,但是不精确,且只支持整型
#  查询2k大小的文件等于大于1k且小于等于2k的文件
 
find /root -size +1k			查询root目录下大于1k的文件
find /root -size -1k			查询root目录下小于1k的文件
find /root -size 1k				查询root目录下等于1k的文件
find /root -size -500c      	查询root目录下小于500c的文件

选项 -a(默认使用)-o
find /root/ -size +2k -a size -10k 		    	查询root目录下大于2k且小于10k的文件
find /root/ -size +2k size -10k 		    	-a可以不需要写
find /root/ -size -10k -o size +100k 		   查询root目录下小于10k或者大于100k的文件


- 按照时间查找
按照文件的创建时间,修改时间以及访问时间进行筛选查找

mkdir /test
cd /test
创建三条今天以前创建的数据
date -s "2021-3-26 19:30:10"					将系统时间修改成3-26
# Fri Mar 26 19:30:10 CST 2021
touch 03-26.txt							创建一个文件03-26.txt

date -s "2021-3-25 19:30:10"					将系统时间修改成3-25
# Thu Mar 25 19:30:10 CST 2021
touch 03-25.txt							创建一个文件03-25.txt

date -s "2021-3-24 19:30:10"					将系统时间修改成3-24
# Wed Mar 24 19:30:10 CST 2021
touch 03-24.txt							创建一个文件03-24.txt

ntpdate ntp.aliyun.com							同步互联网时间
touch 03-27.txt							创建一个文件03-27.txt

ls -lh
total 0
# -rw-r--r-- 1 root root 0 Mar 24 19:30 03-24.txt
# -rw-r--r-- 1 root root 0 Mar 25 19:30 03-25.txt
# -rw-r--r-- 1 root root 0 Mar 26 19:30 03-26.txt
# -rw-r--r-- 1 root root 0 Mar 27 19:43 03-27.txt

-mtime  文件和目录内容修改的时间
find ./ -mtime 2				2天前当天修改过的文件和目录
# ./03-25.txt
find ./ -mtime -2				2天以内修改过的文件和目录
# ./03-26.txt
# ./03-27.txt
find ./ -mtime +2				2天以外修改过的文件目录
# ./
# ./03-24.txt

-ctime  文件和目录变更属性时间(修改了位置(mv)、所属组、所有者)
查询文件创建时间-ctime
find ./ -ctime 2				2天前当天变更属性的文件和目录
find ./ -ctime -2				2天以内变更属性的文件和目录
find ./ -ctime +2				2天以外变更属性的文件和目录

-atime   文件和目录访问时间(cat,vim)
find ./ -atime 2				2天前当天被查看的文件和目录
find ./ -atime -2				2天以内被查看的文件和目录
find ./ -atime +2				2天以外被查看的文件和目录

- 按照属性查找(-type)
f  : 普通文件
d  : 目录文件
l  : 快捷方式
b  : 设备文件
s  : 套接字文件
p  : 管道文件

cd /root				
find ./ -type f						查找当前目录下的文件
find ./ -type d						查找当前目录下的目录	

cd /dev 
find ./ -type b						查找当前目录下的设备文件

find / -type s						查找/下的套接字文件

find / -type p					    查找/下的管道文件

find指令
常用的find指令
find ./ -type f -print				(默认)打印当前目录下的文件
find ./ -type f -ls					(ls -lhi)打印当前目录下的结果详情
# 34292038    4 -rw-r--r--   1 root     root           18 Dec 29  2013 ./.bash_logout
# 34292039    4 -rw-r--r--   1 root     root          176 Dec 29  2013 ./.bash_profile
find ./ -name "adc*" -delete			删除结果集

find和xargs命令配合
find [路径] [选项] 参数 | xargs -I {} ...(其他命令做处理)
find ./test -name "a.txt" | xargs -I {} cat {}

上传与下载

- 从互联网上下载
格式:
wget 需要被下载的链接 							# 默认下载到当前目录
--no-check-cretificate 						 取消验证ssl证书(当ssl链接不安全情况下使用)
wget https://repo.huaweicloud.com/python/3.7.1/python-3.7.1.exe				python软件下载到当前目录下
选项: -O 	下载到指定路径
wget -O /opt/python.exe https://repo.huaweicloud.com/python/3.7.1/python-3.7.1.exe			
将python软件下载到opt目录下取名为python.exe


curl 需要被访问的链接
-k 											 取消验证ssl证书(当ssl链接不安全情况下使用)
选项-o 		下载到指定路径
curl -o /opt/python.exe https://repo.huaweicloud.com/python/3.7.1/python-3.7.1.exe	

curl与wget的区别
wget 	下载文件
		-O : 指定保存路径
curl 	访问链接								# 打印源代码链接,并保存成一个文本文件
		-o : 指定文件路径,从而达到下载文件的功能


- 从服务器上上传下载到本地
上传下载到主机和个人电脑
需要安装 : lrzsz
安装命令 : yum -y install lrzsz

上传rz -E
	格式 : rz调出长传窗口,选择需要被上传的文件

下载sz a.txt
	格式 : zs服务器中的文件路径

字符处理命令

- sort
sort 需要排序的对象
vim A.txt
cat A.txt
# c 5
# a 2
# k 6
# s 13
# j 23 
#  
# m 9
sort A.txt
#  
# a 2
# c 5
# j 23 
# k 6
# m 9
# s 13
注: sort命令默认情况下对需要排序的对象第一列进行排序,空排在第一位

选项
-k(n): 指定列进行排序,默认情况下是以空格进行分割
sort -k2 A.txt		指定第二列进行排序,默认情况下是空格后面的第一个数进行排序
#   
# s 13
# a 2
# j 23 
# c 5
# k 6
# m 9
注: -k参数只对第一个字符进行排序,空排在第一位

-n : 按照数值的大小进行排序排序
sort -nk2 A.txt
#   
# a 2
# c 5
# k 6
# m 9
# s 13
# j 23 

-r : 倒序
sort -rnk2 A.txt
# j 23 
# s 13
# m 9
# k 6
# c 5
# a 2
#  

-t : 指定分隔符,后面的排序按照分隔符分隔的列进行排序
sort -t ":" -rnk3 /etc/passwd
# 将/etc/passwd按照第三个":"后面的第一个数值的大小进行倒序


- uniq
对结果集进行去重
格式 : uniq [选项] 需要去重的对象
sort A.txt
# a 2
# a 2
# m 9
# s 13
# s 13
sort A.txt | uniq			去重
# a 2
# m 9
# s 13
sort A.txt | uniq -c		-c显示重复的次数	
#      2 a 2
#      1 m 9
#      2 s 13
sort A.txt | uniq -c -d			-d 显示重复的列
#      2 a 2
#      2 s 13
sort A.txt | uniq -u		  	-u 只显示不重复的列
#      m 9


- cut 切割
选项 : -d 指定切割符
	   -f 指定显示的列	
sort /etc/passwd -t ":" -nk3 | uniq -u | cut -d ":" -f1,7
# /ect/passwd以第三个":"进行排序,只显示不重复的列,以":"进行切割,只显示第一列和第七列
# root:x:0:0:root:/root:/bin/bash				root:/bin/bash


- tr 删除或替换结果集
格式 tr [选项] [操作对象]	
cat /etc/passwd | tr "root" "ROOT"			将打印结果的root改成ROOT
# ROOT:x:0:0:ROOT:/ROOT:/bin/bash

选项
-d 删除结果集中的某个字符
cat /etc/passwd | tr -d "root"					删除root字符	
# :x:0:0::/:/bin/bash


- wc 统计,计算数字
格式  wc [选项] [操作对象]

选项 
-l 统计行数
cat /etc/passwd | wc -l				-l 打印出行号数
# 21
-c 统计字节数
cat /etc/passwd | wc -c				-c 统计字节数				
# 974
echo a b c > s.txt
cat s.txt | wc -w					-w 统计单词数(以空格分隔)
# 3
  • 案例练习
- 查看/etc/passwd文件,以:切割,取出第7段,进行排序,并且出重(-c显示重复次数)
cat /etc/passwd | cut -d ":" -f7 | sort | uniq -c 
#      1 /bin/bash
#      1 /bin/sync
#      1 /sbin/halt
#     16 /sbin/nologin
#      1 /sbin/shutdown

- 查看历史命令的使用次数并且排序
 history | cut -d " " -f6 | sort | uniq -c

管道中的tee技术

  • tee和重定向的区别 : tee会将管道前的输出结果写入文件中,并且会打印在当前终端
ps -ef | grep systemed | tee  a.txt						将管道的输出结果覆盖的形式写入a.txt
# root      14600   7416  0 18:44 pts/0    00:00:00 grep --color=auto systemed

ps -ef | grep systemed | tee  -a a.txt					将管道的输出结果追加的新式写入a.txt
# root      14606   7416  0 18:44 pts/0    00:00:00 grep --color=auto systemed
cat a.txt							
# root      14600   7416  0 18:44 pts/0    00:00:00 grep --color=auto systemed
# root      14606   7416  0 18:44 pts/0    00:00:00 grep --color=auto systemed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值