Linux文件管理和输入输出重定向

news/2025/6/19 17:25:50

文件管理

Bash执行命令

passwd

passwd

 普通用户修改密码

passwd robinkool

 root用户管理账户密码

passwd -d robinkool

 root用户删除普通用户密码

file

file /bin/file

cat

cat option 文件
cat -A /etc/hosts
#-A选项等于-VET

cat /etc/hosts /etc/fstab

 一次性查看多个文件

head

head option 文件
head /etc/profile#只查看前四行
head -n 4 /etc/profile

head -n-3 /etc/profile

查看所有内容除了最后三行

head -n3 /etc/hosts /etc/fstab

 查看多个文件前三行

tail

tail /etc/profile #默认查看尾十行

tail -n +4 /etc/profile

 查看从第四行到最后所有内容

head -n 15 /etc/profile | tail -n 5tail -n +11 /etc/profile | head -n 5

截取文件11-15行 /etc/profile的两种方法 

less

less /etc/profile
q=quit
上下方向键逐行查看
左右键左右翻页
pageup和pagedown上下翻页

wc

wc -l 输出行数
wc -c 输出字节数
wc -m 输出字符串数
wc -L 显示最长行的长度
wc -w 显示单词计数

echo

echo -n 不要追加换行
echo -e 启用反斜杠转义解释
echo -E 抑制对反斜杠转义的解释

bashrc配置文件--持久化保存

seq -s + 10 #-s用法分隔符
grep username /etc/passwd
#如果显示nologin则为不能登录

手动创建用户

#添加账户
vim /etc/passwd
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash#添加组
vim /etc/group
zhangsan:x:1002:#添加密码
vim /etc/shadow
#最后一行添加 明文为redhat
$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::#准备家目录
cp -r /etc/skel/ /home/zhangsan
#修改张三家目录所属有zhangsan用户和组
chown zhangsan:zhangsan /home/zhangsan
ll -d /home/zhangsan#测试
ssh zhangsan@localhost

/usr 系统安装的软件、共享的库

/usr/bin 用户命令

/usr/sbin 系统管理命令

/usr/local 本地自定义软件

/etc 系统配置文件

/var 系统可变数据如数据库、缓存目录、日志

/home 主目录(家目录)普通用户存储个人数据和配置文件的位置,每个用户都有自己的位置,/home/robinkool

/root 管理员root的主目录

/tmp 供临时文件使用的全局可写空间

/dev 设备文件,供系统访问硬件

mkdir

mkdir dir00
mkdir dir01 dir02
mkdir -p dir00/dir01/dir02/dir03/dor04
隔两层创建不存在的目录使用-p

cp

cp /etc/hosts .
复制到当前位置cp /etc/hosts ./hosts-1
复制到当前位置并且重命名为hosts-1cp /etc/passwd /etc/host.conf .
复制多个文件到当前位置cp -r /etc/yum .
复制目录用-r 复制etc下的yum目录到当前位置cp -r复制目录当目标位置有相同名称目录时,将源目录放到相同目录下,而不是覆盖。

mv

mv hosts-1 /lab
移动单个文件mv passwd hosts /home/robinkool/lab
移动多个文件,目标位置只能是目录mv host.conf host.conf-new
重命名mv lab /home/root
移动目录

rm

rm hosts
删除文件cp /etc/pki/ca-trust/extracted/java/cacerts .
rm cacerts
强制删除具有写入保护的文件rm -f cacerts
强制删除文件 不会询问rm -r /home/root/lab
递归删除rm -rf
强制递归删除

软连接和硬链接

soft link 类似于Windows中的快捷方式,可以通过将占用空间较大源文件创建软连接到原位置,然后将源文件移动到其余位置来节省磁盘空间。
在软件包的源码编译安装中,将软件的服务创建软连接到/usr/bin目录下可以在全局启动服务。
ln -s 原位置 连接名称

rm mytmp
删除软连接时,连接名称后面不能跟/分隔符
硬链接为普通文件,与源文件的inode号相同,可以通过多个文件名访问同一个数据块,任何一个文件发生改变,其余的也跟着改变。
ln hosts-1 hosts-2
ln默认创建硬连接

Linux的输入和输出重定向

输出重定向到文件

独立输出

find /etc -name 'passwd'

 查找etc目录下文件名是passwd的所有文件

find /etc -name 'passwd' 1>passwd.list
cat passwd.list
1>passwd.list可以省略1写为 >passwd.list
1和>之间不能有空格

 将找到的名覆盖写入passwd.list中

find /etc -name 'passwd' >> passwd.list

 将找到的文件名追加到passwd.list中

find /etc -name 'passwd' 2>passwd.err

这里是因为用的root用户没有权限不足的问题,当使用cat passwd.err时显示为空,如果切换为普通用户就会看到错误信息

find /etc -name 'passwd' 2>/dev/null
设备文件/dev/null永远为空

 将错误信息扔掉

这里看不到错误是因为错误信息被定向到空,但是是因为root用户输入的命令,所以没有权限不足的错误信息。

正确信息(标准输出)

  • 位置:直接显示在终端(标准输出,文件描述符 1

  • 内容find 命令找到的匹配文件路径(如 /etc/passwd

错误信息(标准错误)

  • 位置:被重定向丢弃(2>/dev/null 表示丢弃所有错误)

  • 内容:权限不足、目录不存在等错误(如 find: /etc/ssh: Permission denied

find /etc -name 'passwd' > passwd.all 2>&1

 将错误信息和正确信息覆盖写入到相同文件

find /etc -name 'passwd' >> passwd.all 2>&1

 将错误信息和正确信息追加写入到相同文件

输出重定向到程序

管道符

管道符(|)实现,将上一个命令的输出作为标准输入传递给下一个命令

ip a | grep 'ens160$' | awk '{print $2}'
hostname -I 也可以取ip

 获取ens33网卡ip地址

管道符后的命令必须能够接受标准输入,才可以配合管道符使用。但是ls不接受管道传递的标准输入。

echo /etc/passwd | ls -l

ls不接受所以只执行了ls -l

echo /etc/passwd | xargs ls -l

tee

> passwd.list
cat passwd.list
将空覆盖写入passwd.list 清空文件内容

find /etc -name 'passwd' 2>/dev/null | tee passwd.list
cat passwd.list

tee命令覆盖保存到文件 

find /etc -name 'passwd' 2>/dev/null | tee -a passwd.list
cat passwd.list

tee命令追加保存到文件 

标准输入重定向给程序

cat /etc/hosts
cat < /etc/hosts

cat << EOF
> hello
> world 
>EOF

shell读取到EOF时,代表标准输入完成 

 判断一个命令是否接受标准输入:最简单的方式就是将文件内容作为标准输入重定向给程序。


https://dhexx.cn/news/show-5537643.html

相关文章

Linux线程互斥与竞态条件解析

Linux线程互斥及相关概念解析 1. 临界资源&#xff08;Critical Resource&#xff09; 定义&#xff1a;被多个线程共享的资源&#xff08;如变量、文件、内存区域等&#xff09;&#xff0c;需通过互斥访问确保数据一致性。特点&#xff1a; 共享性&#xff1a;多个线程可能…

[Java 基础]Object 类

java.lang.Object 是 Java 所有类的直接或间接父类&#xff0c;Java 中每个类都默认继承 Object 类&#xff08;即使你没写 extends Object&#xff09;。 Object 中的常用方法&#xff1a; 方法名功能简介toString()返回对象的字符串表示equals(Object)判断两个对象是否“逻…

el-select下拉框 添加 el-checkbox 多选框

效果 vue <el-select v-model"value" multiple style"width: 100%" popper-class"select-popover-class" placeholder"请选择试验项目"><el-option v-for"item in options" :key"item.value" :value&qu…

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…

智能体革命:企业如何构建自主决策的AI代理?

OpenAI智能代理构建实用指南详解 随着大型语言模型&#xff08;LLM&#xff09;在推理、多模态理解和工具调用能力上的进步&#xff0c;智能代理&#xff08;Agents&#xff09;成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同&#xff0c;智能代理能够自主执行工…

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…

分布式系统常见的四种数据一致性模型

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录 引言强一致性关键技术权衡使用案例 顺序一致性关…