管道符与重定向系列和环境变量

管道符与重定向系列和环境变量

  • 1、输入输出重定向
    • 1.1、输入重定向中用到的符号及其作用
    • 1.2、输出重定向中用到的符号及其作用
  • 2、命令行的通配符
  • 3、常用系统环境变量
  • 4、管道系列
  • 5、tee:linux命令界的三通

管道系列:|| xargs

重定向符号系列:>1>1>>2>2>><<<&>

1、输入输出重定向

标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令输入。
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

1.1、输入重定向中用到的符号及其作用

符号 作用
命令 < 或 0< 文件 将文件作为命令的标准输入(与固定命令搭配)
命令 << 或 0<< 分界符 从标准输入中读入,直到遇见分界符才停止(与固定命令搭配)
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
1、替换awk.txt文件中abc替换为ABC
   tr的替换是1对1的替换
tr 'abc' 'ABC' < awk.txt
tr 'a-z' 'A-Z' < awk.txt

2cat > t1.txt << EOF
liming
wangming
wolai
EOF

3cat >> t1.txt << EOF
liming
wangming
wolai
EOF

1.2、输出重定向中用到的符号及其作用

符号 作用
命令 > 或 1>文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 >> 或 1>> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1
命令 &>> 文件
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
> wc -l anaconda-ks.cfg 
46 anaconda-ks.cfg

> wc -l < anaconda-ks.cfg 
46

> cat anaconda-ks.cfg | wc -l
46

> grep '/sbin/nologin' /etc/passwd | wc -l
33

> ls -l /etc/ | head -n 2
> ls -l /etc/ | tail -n 2

无询问的修改密码:

> echo root | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.

–stdin:This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.

使用管道符,无交互的发送一封正文为“你好,我是邮件正文”,主体是“This is Subject”给root用户
管道符与重定向系列和环境变量_第1张图片

2、命令行的通配符

* 匹配零个或多个字符,
? 匹配单个字符,
[0-9] 匹配0~9之间的单个数字的字符,
[abc] 匹配a、b、c三个字符中的任意一个字符

> ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 Aug 11 16:38 /dev/sda
brw-rw----. 1 root disk 8, 1 Aug 11 16:38 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 11 16:38 /dev/sda2

> ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 Aug 11 16:38 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 11 16:38 /dev/sda2

定义变量,及单引号,双引号使用:

反斜杠 \ :使反斜杠后面的一个变量变为单纯的字符串。
单引号 '' :转义其中所有的变量为单纯的字符串。
双引号 "" :保留其中的变量属性,不进行转义处理。
反引号 ``:把其中的命令执行后返回结果。

> PRICE=5
> echo "Price is $PRICE"
Price is 5

> echo "Price is $$PRICE" 
Price is 2086PRICE

> echo "Price is \$$PRICE"
Price is $5

$$作用是显示当前程序的进程ID号码

> alias hhh="grep -n network anaconda-ks.cfg"
> alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias hhh='grep -n network anaconda-ks.cfg'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

> which ls
alias ls='ls --color=auto'
	/usr/bin/ls
	
> whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

3、常用系统环境变量

变量名称 作用 变量名称 作用
HOME 用户的主目录(即家目录) PATH 定义解释器搜索用户执行命令的路径
SHELL 用户在使用的Shell解释器名称 LANG 系统语言、语系名称
HISTSIZE 输出的历史命令记录条数 RANDOM 生成一个随机数字
HISTFILESIZE 保存的历史命令记录条数 MAIL 邮件保存路径
PS1 Bash解释器的提示符 EDITOR 用户默认的文本编辑器

4、管道系列

xargs 将执行结果字符串 转换为 命令参数

> seq 5
1
2
3
4
5

> seq 5 | xargs -n2
1 2
3 4
5

> seq 5 | xargs -n3
1 2 3
4 5

> seq 5 | xargs
1 2 3 4 5

这种情况会列出当前目录的文件
find /etc/ -type f -name "*.conf" | ls -l

这种情况:1、find查询到数据时会列出查询到数据的文件;2、如果没有find到数据时会列出当前目录的文件
find /etc/ -type f -name "*.conf" | xargs ls -l


5、tee:linux命令界的三通

1个输入,2个输出;(一个输出到屏幕,一个输出到文件)

覆盖写入
echo {1..10} | tee a.txt
追加写入
echo {1..10} | tee -a a.txt

你可能感兴趣的:(Linux,管道符,重定向和环境变量)