avatar

刘刚刚的blog

采菊东篱下,悠然见南山🦥

  • 首页
  • 大模型应用
  • 常用软件/工具
  • Halo
  • 关于
Home <linux就该这么学>第三章 管道符、重定向与环境变量
文章

<linux就该这么学>第三章 管道符、重定向与环境变量

Posted 2021-01-18 Updated 2024-12- 17
By Administrator
50~64 min read

通过这些内容可以让命令的使用更加的自由、方便


输入、输出重定向

重定向是将文件和命令之间的操作符

  1. 输入重定向

    将文件的内容,导入到命令中

    # 统计文件的行数,输入到文件中
    >>>
    [root@localhost ~]# cat test.txt
    you are  right
    [root@localhost ~]# wc -l < test.txt 
    1

    符号

    作用

    命令 < 文件

    将文件作为命令的标准输入

    命令 << 分界符

    从标准输入中读入,直到遇见分界符才停止

    命令 < 文件1 > 文件2

    将文件1作为命令的标准输入并将标准输出到文件2

  2. 输入重定向

    将命令的输出重定向到文件中

    # 演示使用覆盖和追加输出
    >>>
    [root@localhost ~]# cat a.txt
    1
    [root@localhost ~]# cat test.txt
    you are  right
    [root@localhost ~]# wc -l < test.txt > a.txt
    [root@localhost ~]# cat a.txt
    1
    [root@localhost ~]# wc -l < test.txt > a.txt
    [root@localhost ~]# cat a.txt
    1
    [root@localhost ~]# wc -l < test.txt >> a.txt
    [root@localhost ~]# cat a.txt
    1
    1

    符号

    作用

    命令 > 文件

    将标准输出重定向到一个文件中(清空原有文件的数据)

    命令 2> 文件

    将错误输出重定向到一个文件中(清空原有文件的数据)

    命令 >> 文件

    将标准输出重定向到一个文件中(追加到原有内容的后面)

    命令 2>> 文件

    将错误输出重定向到一个文件中(追加到原有内容的后面)

    命令 &>> 文件

    将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道符

管道符是命令和命令直接的操作符,将前一个命令的输出结果作为下一个命令的标准输入。

命令1 | 命令2 

## 使用管道符修改用户的密码
echo  "linuprobe" | passwd --stdin root

## 使用自定义分节符来接受用户的输入,并发送邮件
mail -s "readme" root@linuxprobe.com << over

tip:

可以使用多个管道符进行命令的拼接

通配符

>>>
[root@localhost ~]# ls -l *.txt
-rw-r--r--. 1 root root  4 Jan 18 01:21 a.txt
-rw-r--r--. 1 root root  0 Jan 17 01:12 b.txt
-rw-r--r--. 1 root root 15 Jan 10 19:35 test.txt
[root@localhost ~]# ls -l [a,b,c].txt
-rw-r--r--. 1 root root 4 Jan 18 01:21 a.txt
-rw-r--r--. 1 root root 0 Jan 17 01:12 b.txt
[root@localhost ~]# ls -l {a,b,c}.txt
ls: cannot access 'c.txt': No such file or directory
-rw-r--r--. 1 root root 4 Jan 18 01:21 a.txt
-rw-r--r--. 1 root root 0 Jan 17 01:12 b.txt

常见通配规则

符号

意思

*

零个或者多个任意字符

?

任意单个字符

[0-9]

0-9中的任意一个数字

[1,3,5]

三个字符中的任意一个字符,也可以写为[135]

{1,3,5}

如果不存在相应字符的内容,命令输出时会报错

常用的转义字符

[root@localhost ~]# PRICE= 5
bash: 5: command not found...
[root@localhost ~]# PRICE=5
[root@localhost ~]# echo 'price is $PRICE'
price is $PRICE
[root@localhost ~]# echo "price is $PRICE"
price is 5
[root@localhost ~]# echo "price is $$PRICE"
price is 2548PRICE
[root@localhost ~]# echo "price is \$$PRICE"
price is $5
[root@localhost ~]# echo  `uname`
Linux

字符

含义

''

单引号,将里面的内容当作字符对待

“”

双引号,如果里面有变量,则会用变量的值替换变量名

\

反斜杆,将其后跟的内容转义为字符

``

反引号,将里面的内容做为命令,执行后输出结果

重要的环境变量

命令的执行方式:

  1. 路径形式直接执行

  2. 别名的形式执行

  3. 内部命令

  4. 外部命令

image-20210118220428939

使用别名alias

通过别名,可以将复杂的命令简化

>>>
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@localhost ~]# alias test=ls
[root@localhost ~]# test
anaconda-ks.cfg  c          Downloads             Pictures   test.txt
a.txt            Desktop    initial-setup-ks.cfg  Public     Videos
b.txt            Documents  Music                 Templates
[root@localhost ~]# unalias test
[root@localhost ~]# test

判断命令是否为外部命令

>>>
[root@localhost ~]# type cd
cd is a shell builtin
[root@localhost ~]# type uname
uname is /usr/bin/uname

环境变量的使用

linux可以为不同的用户提供不同的运行环境,一个变量对于不同的用户值可能不同

变量名称

作用

HOME

用户的主目录(即家目录)

SHELL

用户在使用的Shell解释器名称

HISTSIZE

输出的历史命令记录条数

HISTFILESIZE

保存的历史命令记录条数

MAIL

邮件保存路径

LANG

系统语言、语系名称

RANDOM

生成一个随机数字

PS1

Bash解释器的提示符

PATH

定义解释器搜索用户执行命令的路径

EDITOR

用户默认的文本编辑器

当Bash解释外部命令的时候,会在用户定义的变量PATH中进行查找,PATH由多个路径值组成,每个路径使用冒号间隔。

[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
[root@localhost ~]# PATH=$PATH:/root/c
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin:/root/c

变量的使用

# 定义变量
WORKDIR=/home/workdir

# 使用变量
echo $WORKDIR

# 提高变量的作用域,将其作为全局变量,其他用户也可以使用
export WORKDIR

# 显示当前用户的所有变量
env

# 显示Bash中的所有变量,包括用户的变量
set 

运维
linux就该这么学
License:  CC BY 4.0
Share

Further Reading

Feb 5, 2025

Docker的常用命令

Docker的常用命令 # 镜像列表 docker images ​ # 容器列表 docker ps # 设置镜像源 ​ # 进入容器内部 docker exec -it {容器id} /bin/bash #或者 docker exec -it {容器id} /bin/sh # 查看镜

Dec 27, 2024

centos切换阿里云Yum源

centos默认的yum源是国外的,国内使用的时候速度会比较慢,可以选择切换为阿里yum源。 切换Yum源 # 1.下载aliyun yum源repo文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo

Dec 8, 2021

supervior安装及配置

supervior支持多种安装方式,本文介绍了pip安装的方式。

OLDER

<linux就该这么学>第二章 新手必须掌握的Linux命令

NEWER

<linux就该这么学>第四章 Vim编辑器与Shell命令脚本

Recently Updated

  • 文本切分-语义分割(Semantic Chunking)
  • dify 并发配置优化
  • Typing
  • 大模型返回中json_schema与json_mode的区别
  • Async

Trending Tags

Halo 运维 postgresql 设计模式 linux就该这么学 nas rag odoo python 文本切分

Contents

©2025 刘刚刚的blog. Some rights reserved.

Using the Halo theme Chirpy