Linux 认识与学习Bash——3

在Linux bash中,数据流重定向是指将命令的输出从默认的标准输出(通常是终端)重定向到其他位置,如文件或另一个命令的输入。这是通过使用特定的符号来实现的。例如,>用于将输出重定向到文件,而<用于将文件内容作为命令的输入。

数据流重定向:

  • : 将标准输出重定向到文件。

  • < : 将文件内容作为标准输入。
  • : 将标准输出追加到文件末尾。

cal > hello #将hello这个文件清空,然后再把命令产生的内容写入文件

cal >>hello #再hello这个文件内容后面追加输出的内容。

cal 2>hello #只能重定向错误的结果,即2>前面的命令是错误的

&> #不管是正确的还是错误的都重定向过来

  • cal 2>>hosts 1>&2 #将正确的命令输出像错误的命令输出一样导入到hosts 文件中。
  • aaaaa >>hosts 2>&1 #将错误的命令输出像正确的命令输出一样导入到hosts 文件中。

当然可以!这里有一些Linux命令的具体示例,以及命令执行的判断依据:

  1. 命令执行的判断依据:

    • &&: 如果前一个命令执行成功(返回值为0),则执行下一个命令。

      bash 复制代码
      mkdir new_directory && cd new_directory
    • ||: 如果前一个命令执行失败(返回值非0),则执行下一个命令。

      bash 复制代码
      cd non_existent_directory || echo "Directory does not exist."
  2. 管道命令 (|):

    • ls命令的输出作为grep命令的输入,搜索包含"txt"的文件名。

      ls -l | grep "txt"
      
  3. 选取命令:

    • 使用cut命令按列切分文本,选取第一列。

      bash 复制代码
      cut -d':' -f1 /etc/passwd
    • 使用grep搜索特定文本,并输出匹配行。

      bash 复制代码
      grep "root" /etc/passwd
  4. 排序命令:

    • 使用sort对文件内容进行排序。

      sort names.txt
      
    • 使用wc统计文件的行数。

      wc -l document.txt
      
    • 使用uniq过滤重复行。

      sort names.txt | uniq
      
  5. 双向重定向 (tee):

    • 使用tee命令将ls的输出同时写入文件和显示在标准输出。

      bash 复制代码
      ls -l | tee file_list.txt
  6. 字符转换命令:

    • 使用tr命令替换或删除字符。

      bash 复制代码
      echo "hello world" | tr 'a-z' 'A-Z'
    • 使用join将两个文件中的行连接在一起。

      bash 复制代码
      join file1.txt file2.txt
    • 使用paste水平合并文件。

      bash 复制代码
      paste file1.txt file2.txt
    • 使用expand将制表符转换为空格。

      bash 复制代码
      expand -t 4 file.txt
  7. 切割命令 (split):

    • 使用split将大文件分割成小文件。

      bash 复制代码
      split -b 10k bigfile.txt
  8. 参数代换 (xargs):

    • 使用xargs将输入转换为命令行参数。

      bash 复制代码
      echo "file1.txt file2.txt" | xargs cat
  9. 关于减号 - 的用途:

    • -在命令中用作标准输入或输出的占位符。

      bash 复制代码
      cat - > newfile.txt

希望这些示例能帮助您更好地理解和使用Linux命令。如果您有任何疑问或需要进一步的帮助,请随时告诉我!🐧

示例:

bash 复制代码
# 数据流重定向示例: 将ls命令的输出重定向到文件list.txt
ls > list.txt

# 管道命令示例: 使用grep搜索含有"root"的行
cat /etc/passwd | grep "root"

# 选取命令示例: 使用cut命令选取第一列
cut -d':' -f1 /etc/passwd

# 排序命令示例: 对文件内容进行排序
sort list.txt

# 双向重定向示例: 使用tee同时输出到文件和屏幕
echo "Hello" | tee output.txt

# 字符转换命令示例: 使用tr将小写字母转换为大写
echo "hello" | tr 'a-z' 'A-Z'

# 切割命令示例: 将文件分割成每个大小为10K的多个文件
split -b 10K largefile.txt smallfile

# 参数代换示例: 使用xargs删除找到的文件
find . -name "*.bak" -type f | xargs rm -f

# 减号用途示例: 使用减号表示标准输入
tar -cvf - directory | gzip > directory.tar.gz

输出重定向

重定向正确的结果

$? 返回的是上一条命令执行后的返回值,执行成功返回的是0,图中这条命令执行失败,返回的是127

一行执行多个命令用分号 ;隔开

命令1 ;命令2 #先执行命令1后执行命令2 ,命令之间没有其它影响

命令1 && 命令2 # ,如果命令1为真,命令2必须执行。如果命令1为假,命令2不执行

命令1 | 命令2 # 命令1的结果,变成命令2 执行的参数

这里是您提供的Linux命令的具体示例的解释:

  1. last | cut -d ' ' -f1 :这个命令组合使用last命令列出最近的登录会话,然后通过管道传递给cut命令。cut命令使用空格作为分隔符(-d ' '),并且只选择每行的第一个字段(-f1),通常是用户名。

  2. last | cut -d 'Jul' -f1:这个命令组合同样开始于last命令,但在这里cut使用Jul作为分隔符。这可能用于分割包含月份Jul的行,但请注意,如果Jul不是一个常见的分隔符,这个命令可能不会按预期工作。

  3. grep aaa file:这个命令使用grep在指定的文件中搜索包含字符串aaa的所有行,并将它们输出到标准输出。

  4. grep -i tom file --color:这个命令使用grep在文件中搜索不区分大小写的字符串tom-i选项表示忽略大小写),并且使用--color选项高亮显示匹配的文本。

这些命令示例展示了Linux命令行工具的强大功能,可以用于各种文本处理任务。

相关推荐
一坨阿亮1 分钟前
Linux 使用中的问题
linux·运维
dsywws1 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零2 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程3 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬4 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077004 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp4 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
乡村农夫4 小时前
cuda 环境搭建
linux
tingting01195 小时前
Linux 普通用户禁用sudo su - 命令
linux·运维·服务器
WZF-Sang5 小时前
Linux—进程学习-01
linux·服务器·数据库·学习·操作系统·vim·进程