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命令行工具的强大功能,可以用于各种文本处理任务。

相关推荐
路溪非溪11 分钟前
关于Linux内核中头文件问题相关总结
linux
Lovyk3 小时前
Linux 正则表达式
linux·运维
Fireworkitte3 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9004 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char4 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘126 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
Techie峰7 小时前
常见的 Bash 命令及简单脚本
chrome·bash·excel
华强笔记9 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发9 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建
phoenix098110 小时前
ansible部署lnmp-allinone
linux·运维·ansible