输入输出相关命令

文章目录

echo

bash 复制代码
echo - display a line of text 
    Echo the STRING(s) to standard output. 
    -n do not output the trailing newline 
    -e enable interpretation of backslash escapes 
    -E disable interpretation of backslash escapes (default)
bash 复制代码
//输出字符串
linux@Ubuntu:~$ echo hello
hello
linux@Ubuntu:~$ echo 'hello'
hello
linux@Ubuntu:~$ echo "hello"
hello

//输出变量
linux@Ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loca
l/games:/snap/bin:/snap/bin:/home/linux/gcc-
4.6.4/bin/:/opt/Qt/6.2.4/gcc_64/bin:/opt/Qt/Tools/QtCreator/bin/
linux@Ubuntu:~$ echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loca
l/games:/snap/bin:/snap/bin:/home/linux/gcc-
4.6.4/bin/:/opt/Qt/6.2.4/gcc_64/bin:/opt/Qt/Tools/QtCreator/bin/

//输出通配符
linux@Ubuntu:~$ echo $PATH *
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loca
l/games:/snap/bin:/snap/bin:/home/linux/gcc-
4.6.4/bin/:/opt/Qt/6.2.4/gcc_64/bin:/opt/Qt/Tools/QtCreator/bin/ gcc-4.6.4 linux-
3.14-fs4412 linux-3.14-ok-fs4412.tar.gz love.zip main.c Music my_sock_file
opencv-2.4.9 opencv-2.4.9.zip Pictures Public QT6 share snap Templates test
test.c u-boot-2013.01 u-boot-2013.01.tar.bz2 Videos
linux@Ubuntu:~$ echo "$PATH *"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loca
l/games:/snap/bin:/snap/bin:/home/linux/gcc-
4.6.4/bin/:/opt/Qt/6.2.4/gcc_64/bin:/opt/Qt/Tools/QtCreator/bin/ *

//输出转义符
linux@Ubuntu:~$ echo 'hello\n'
hello\n
linux@Ubuntu:~$ echo "hello\n"
hello\n
linux@Ubuntu:~$ echo -e "hello\n"
hello

//输出多个空格
linux@Ubuntu:~$ echo 'helo world'
helo world +0
linux@Ubuntu:~$ echo "helo world"
helo world
场景 变量解析 通配符展开 转义符解析 空格压缩 典型用例
不加引号 × 简单无空格或特殊字符的字符串
单引号 × × × 需严格保留原格式的文本
双引号 × × 需变量替换或部分转义的场景

重定向

  • 0 :标准输入(stdin),默认从键盘读取
  • 1 :标准输出(stdout),默认输出到终端屏幕
  • 2 :标准错误(stderr),默认输出到终端屏幕

输出重定向

重定向符 含义 实例
> file 将file文件重定向为输出源,新建模式 ls /usr > Lsoutput.txt,将ls /usr的执行结果,写到Lsoutput.txt文件中,若有同名文件将被删除
>> file 将file文件重定向为输出源,追加模式 ls /usr >> Lsoutput.txt,将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后
2> file 将file文件重定向为标准错误 ls noexistingfile.txt 2> err.log,使用ls命令,查看一个不存在的文件时,将系统错误提示保存在err.log文件中
&> file 将file文件重定向为标准输出和标准错误 ls filename.txt $> Lsoutput.txt 正确的信息和错误的信息都存储到了 Lsoutput.txt
2>&1 将标准出错重定向到标准输出 ls test > log 2>&1 标准输出和标准出错信息都输出到log文件

输入重定向

重定向符 含义 实例
< file 将file文件重定向为输入源 wc < file1,将file1中的内容作 为输入传给wc命令
<< file 表示从标准输入设备(键盘)中读入,直到遇到 分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串 cat << 9,当遇到输入9时,输 入结束
命令 < 文 件 1 > 文 件 2 将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中 cat < file > log,file作为cat命 令的输出,把cat的输出结果, 输出到log文件中

wc

  • 用于统计文件的行数、单词数、字节数或字符数
  • 选项:
    • -l 统计行数(Lines)
    • -w 统计单词数(Words,以空格/换行符分隔)
    • -c 统计字节数(Bytes)
    • -m 统计字符数(Characters,与编码有关)

管道

  • | :将前一个命令的 stdout 作为下一个命令的 stdin
  • <font style="color:rgb(51,51,51);">cat /etc/passwd | wc -l</font>

命令置换

  • 将命令的输出结果作为另一个命令的参数或变量值
特性 ** command** ** $(command)**
语法结构 使用反引号包裹命令,易与单引号混淆 使用 $() 结构,视觉区分更清晰
嵌套支持 需通过转义符 \ 实现多层嵌套 直接支持多级嵌套,无需转义
兼容性 所有类 Unix 系统均支持 部分旧版本 Shell(如 tcsh )不支持
可读性 复杂场景下易混淆(如引号混合使用) 代码逻辑更直观,便于维护
特殊字符处理 需手动转义空格、 $ 等符号 自动处理特殊字符,减少错误风险
bash 复制代码
result=`echo \`whoami\``
result=$(echo $(whoami))

历史命令

  • histoty 命令用于查看和管理用户在终端中执行过的历史命令记录,默认记录存储于 ~/.bash_history 文件
** 选项** 作用
-c history -c 清空内存中的历史记录
-d N history -d 100 删除编号为 100 的命令
-a history -a 将当前会话新增命令写入 ~/.bash_history(不 覆盖现有内容)
-w history -w 保存当前所有记录到 ~/.bash_history(覆盖原有内容)
-r history -r 重新读取 ~/.bash_history 到内存
-n history 10 显示最近的 10 条命令

通配符

  • 通配符是一种特殊语句,通配符是用来代替字符的
  • 星号(*):匹配任意长度的字符串
    • 用file_*.txt,匹配file_wang.txt、file_Lee.txt、file3_Liu.txt
  • 问号(?):匹配一个长度的字符
    • 用flie_?.txt,匹配file_1.txt、file1_2.txt、file_3.txt
  • 方括号([...]):匹配其中指定的一个字符
    • 用file_[otr].txt,匹配file_o.txt、file_r.txt和file_t.txt
  • 方括号([-]):匹配指定的一个字符范围
    • 用file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt
  • 方括号([^...]):除了其中指定的字符,均可匹配
    • 用file_[^otr].txt,除了file_o.txt、file_r.txt和file_t.txt的其他文件
相关推荐
txzz888816 分钟前
CentOS-Stream-10 搭建FTP服务器之系统用户访问
linux·运维·服务器·centos·ftp服务器·ftp 系统用户访问
ℳ₯㎕ddzོꦿ࿐17 分钟前
零基础教程:在 Linux 上通过 Docker 快速部署 Dify
linux·运维·docker·dify
学海_无涯_苦作舟19 分钟前
RabbitMQ Java Client源码解析——ConnectionFactory和Connection
linux·运维·服务器
是阿威啊20 分钟前
【第三站】本地虚拟机部署hive集群
linux·数据仓库·hive·hadoop·分布式
和光同尘202331 分钟前
一文讲透CentOS下安装部署使用MYSQL
linux·运维·数据库·数据仓库·mysql·centos·database
0.0雨32 分钟前
设置集群的SSH免密登陆
linux·服务器·ssh
胖咕噜的稞达鸭33 分钟前
【Linux系统编程】解密环境变量与进程地址空间
linux·运维·chrome
峰顶听歌的鲸鱼34 分钟前
17.docker:监控及日志
linux·运维·docker·容器·云计算
一颗青果37 分钟前
Linux下的线程
linux·运维·服务器
wdfk_prog38 分钟前
[Linux]学习笔记系列 -- [fs]fs_context
linux·笔记·学习