Linux16--文件管理之:上传下载、输出与重定向、字符处理、日期时间
1 上传下载
### 上传
lrzsz软件进行上传下载 rz
rz # 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器
# 如果文件已经存,则上传失败,可以用-E选项解决
rz -E # 如果目标文件名已经存在,则重命名传入文件。新文件名将添加一个点和一个数字(0..999)
### 下载
# 1 wget 是用来下载文件的
wget -O 本地路径 远程包链接地址 # 将远程包下载到本地
-O :指定下载文件的路径
# ps:如果wget下载提示无法建立SSL连接,则加上选项--no-check-certificate 不验证证书
wget --no-check-certificate -O 本地路径 远程包链接地址
# wget 需要安装:
yum install wget
rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
# 2 curl 是用来访问链接的 # 访问下载链接,其实也就是下载文件
curl -o 本地路径 访问链接地址
-o : 指定保存文件的路径
# ps: 如果遇到下载提示无法建立SSL链接,使用-k选项或者--insecure
curl -k -o 123.png https://www.xxx.com/img/hello.png
# 3 lrzsz软件进行上传下载 sz
# 注:
1.系统默认没有该命令,需要下载: yum install lrzsz -y
2.通过图形化的形式进行上传与下载 前提:必须于有xshell
rz :上传
sz : 下载
# 缺点:
lrzsz 一次只能进行单个文件的传输
进行大文件传输时,容易掉线
空文件也传输不了
# eg:将服务器上选定的文件下载/发送到本机
sz bak.tar.gz
2 输出与重定向
### 输入输出
输出即把相关对象通过输出设备(显示器等)显示出来
输出又分正确输出和错误输出
一般情况下标准输出设备为显示器,标准输入设备为键盘
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准正确输出
显示器 /dev/stderr 2 标准错误输出
## 输入
read 选项 参数 变量 # 将屏幕输入的字符 赋值给变量
-p # 后面跟提示信息 即在输入前打印提示信息
-n # 后跟一个数字 即定义输入文本的长度
-s # 安静模式 即在输入字符时不再屏幕上显示,eg: login时输入密码
-t # 后面跟秒数 即定义输入字符的等待时间
# eg: read -n 2 -p "请随便输入两个字符: " any
## 输出
echo 选项 字符串
-n # 表示不换行输出
-e # 表示输出转义字符
### 重定向
# 1 输出重定向 > 代表覆盖 >> 代表追加
正常输出是把内容输出到显示器上
而输出重定向是把内容输出到文件中
# 1.1 标准输出重定向 描述符 1 可以省略
命令 >文件 # 覆盖写入
命令 >>文件 # 追加写入
# 1.2 标准错误输出重定向 描述符 2 不可以省略
命令 2>文件
命令 2>>文件
# 注:错误输出重定向 描述符2 与 >、>>之间 不要加空格
# 1.3 标准输出与错误输出 同时重定向
# 都保存到同一个文件
命令 &>文件 # 覆盖 常用 ***
命令 >文件 2>&1
命令 &>>文件 # 追加 常用 ***
命令 >>文件 2>&1
# 分别保存到不同文件
命令 >文件1 2>文件2 # 覆盖
命令 >>文件1 2>>文件2 # 追加
# eg: 只执行命令,不显示执行结果
ls &>/dev/null # 正确输出或错误输出结果都不要 (null可以理解为黑洞或垃圾站)
# tee 命令
date | tee date.txt # 命令执行会输出至屏幕,同时也会保存一份至date.txt文件中
# 2 输入重定向
< 文件 # 从文件输入获取
<< EOF # 从屏幕输入获取 EOF可以换其他任意字符,但是不见名知意
> 111
> 222
> EOF
# eg:
1.从/etc/passwd 过滤出 root
grep 'root' < /etc/passwd
root:x:0:0:root:/root:/bin/bash
2.从/etc/passwd 写入到 a.txt
cat >a.txt < /etc/passwd
3.dd命令 读取、转换并输出数据
dd if=/dev/zero of=/file1.txt bs=1M count=20
if : infile缩写 表示指定源文件
of : outfile缩写 表示指定目的文件
bs : 同时设置读入/输出的块大小 为bytes个字节
count : 仅拷贝块大小的次数
dd </dev/zero >/file2.txt bs=1M count=20
4. mysql如何恢复备份 # 了解即可,不用关注
mysql -uroot -p123 < bbs.sql
3 字符处理
sort 排序
用于将文件内容加以排序
# 格式
sort [选项] 文件 # 默认是以每行的字符串字母比较 升序
# 选项
-n # 依照数值的大小排序 默认升序
-r # 以相反的顺序来排序
-k # 以某列进行排序
-t # 指定分割符,默认是以空格为分隔符
# eg:
准备文件,写入一段无序的内容
cat >> file.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF
# 以数字列 升序排列
sort -t ":" -n -k 2 file.txt
d:1
c:2
b:3
a:4
e:5
f:11
uniq 去重
用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
# 格式
uniq [选项] 文件
| uniq [选项] # 支持管道
# 选项
-c # 在每列旁边显示该行重复出现的次数
-d # 仅显示重复出现的行列
-u # 仅显示出一次的行列
# eg:
cat >> file.txt <<EOF
hello
123
hello
123
func
EOF
sort file.txt | uniq
123
func
hello
sort file.txt | uniq -c
2 123
1 func
2 hello
sort file.txt | uniq -d
123
hello
cut 修剪
用来显示行中的指定部分,删除文件中指定字段
# 格式
cut [选项] 文件
| cut [选项] # 支持管道
# 选项
-d # 指定字段的分隔符,默认的字段分隔符为"TAB"
-f # 显示指定字段的内容
# eg:
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
head -1 /etc/passwd | cut -d : -f 1-3 # 1到3段
root:x:0
head -1 /etc/passwd | cut -d : -f 1,3,4,6
root:0:0:/root
tr 替换/删除
用于替换或删除字符
# 格式
tr [选项] 原字符 [新字符]
| tr [选项] 原字符 [新字符] # 支持管道
# 选项
-d # 删除字符
# eg:
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
head -1 /etc/passwd | tr "root" "ROOT"
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
head -1 /etc/passwd | tr -d "root"
:x:0:0::/:/bin/bash
wc 统计
用于统计,计算数字
# 格式
wc [选项] 文件
| wc [选项] # 支持管道
# 选项
-c # 统计文件的Bytes数
-l # 统计文件的行数
-w # 统计文件中单词的个数,默认以空白字符做为分隔符
# eg:
# 统计文件的大小(bytes数)
cat file.txt
hello
123
hello
123
func
ll file.txt
-rw-r--r--. 1 root root 25 8月 12 20:09 file.txt
wc -c file.txt
25 file.txt
wc -l file.txt
5 file.txt
wc -w file.txt
5 file.txt
4 日期时间
# 1 格式
date [选项] [格式化参数]
# 2 选项
-d # 根据你的描述显示日期
-s # 修改日期
# 3 格式化参数
%T # 显示时间,24小时制 hh:mm:ss
%F # 显示日期 %Y-%m-%d
%Y # 年 实际
%y # 年的最后两个数字 1999则是99
%m # 月 01~12
%d # 日 01~31
%H # 小时,24小时制 00~23
%M # 分钟 00~59
%S # 秒 00~59
%j # 一年的第几天(001~366)
%w # 一个星期的第几天(0代表星期天)
%W # 一年的第几个星期(00~53,星期一为第一天)
%s # 从1970年1月1日00:00:00到目前经历的秒数
# 4 案例 常用
1.显示当前日期和时间
date "+%F %T"
2023-06-29 00:06:29
date "+%Y_%m_%d_%H_%M_%S"
2023_06_29_00_06_29
2.根据描述显示日期
date -d "1 month" +%F # 加1月
date -d "+1 month" +%F
2023-07-29
date -d "3 years" +%F # 加3年
date -d "-3 hours" "+%F %T" # 减3小时
2023-06-28 21:12:50
3.修改时间
date -s "20201111 11:11:11"
分类:
Linux运维
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2022-06-26 20--面向对象02:封装、隐藏属性、property装饰器