符号与变量

管道符、重定向、环境变量

1、重定向

输出重定向
命令 【符号】 文件

符号 作用
> 将标准输出重定向到一个文件中(清空原有文件的数据)
>> 将标准输出重定向到一个文件中(追加到原有内容的后面)
2> 将错误输出重定向到一个文件中(清空原有文件的数据)
2>> 将错误输出重定向到一个文件中(追加到原有内容的后面)
&>> 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
#标准输出写入
[root@localhost ~]# ls -l a.txt
-rw-r--r--. 1 root root 314 Apr 10 20:52 a.txt
[root@localhost ~]# ls -l a.txt > c
[root@localhost ~]# cat c
-rw-r--r--. 1 root root 314 Apr 10 20:52 a.txt

#错误输出写入
[root@localhost ~]# ls -l b > c
ls: cannot access 'b': No such file or directory
[root@localhost ~]# ls -l b 2> c
[root@localhost ~]# cat c
ls: cannot access 'b': No such file or directory

输入重定向

符号 作用
< 将文件作为命令的标准输入
<<界定符 从标准输入中读入,直到遇见分界符才停止
[root@localhost ~]# wc -l anaconda-ks.cfg 
45 anaconda-ks.cfg
[root@localhost ~]# wc -l < anaconda-ks.cfg 
45

#持续写入操作
[root@localhost ~]# cat >> fruit < apple
> banana
> cherry
> EOF
[root@localhost ~]# cat fruit
apple
banana
cherry

Tip:“ wc -l < anaconda-ks.cfg ”。anaconda-ks.cfg主动给这个命令,只是给了里面的内容,没有名字,因此只显示行数

2、管道符

管道命令符的作用也可以用一句话概括为“把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入”。格式为“ 命令 | 命令 ”。管道符可以重复使用多次

[root@localhost ~]# grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
[root@localhost ~]# grep bash /etc/passwd | cut -d : -f 1
root
linuxprobe
[root@localhost ~]# grep bash /etc/passwd | wc -l
2

[root@localhost ~]# echo redhat8 | passwd --stdin linuxprobe
Changing password for user linuxprobe.
passwd: all authentication tokens updated successfully.

将前面命令处理之后的内容传给后面的命令做二次处理

3、通配符

通配符就是通用的匹配信息的符号

参数 含义
* 任意字符
? 单个任意字符
[a-z] 单个小写字母
[A-Z] 单个大写字母
[a-Z] 单个字母
[0-9] 单个数字
[[:alpha:]] 任意字母
[[:upper:]] 任意大写字母
[[:lower:]] 任意小写字母
[[:digit:]] 所有数字
[[:alnum:]] 任意字母加数字
[[:punct:]] 标点符号
[root@localhost ~]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 Apr 12 19:41 /dev/sda
brw-rw----. 1 root disk 8, 1 Apr 12 19:41 /dev/sda1
brw-rw----. 1 root disk 8, 2 Apr 12 19:41 /dev/sda2

[root@localhost ~]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 Apr 12 19:41 /dev/sda1
brw-rw----. 1 root disk 8, 2 Apr 12 19:41 /dev/sda2

[root@localhost ~]# ls -l /dev/sd[a-z][0-9]
brw-rw----. 1 root disk 8, 1 Apr 12 19:41 /dev/sda1
brw-rw----. 1 root disk 8, 2 Apr 12 19:41 /dev/sda2

[root@localhost ~]# ls -l /dev/sd[[:alpha:]][1,3,5]
brw-rw----. 1 root disk 8, 1 Apr 12 19:41 /dev/sda1

[root@localhost ~]# ls -l /dev/sda{1,3,5}
ls: cannot access '/dev/sda3': No such file or directory
ls: cannot access '/dev/sda5': No such file or directory
brw-rw----. 1 root disk 8, 1 Apr 12 19:41 /dev/sda1

Tip:{ }如果未匹配到会报错误

4、转义符

将逻辑操作符转变为普通字符

反斜杠(\):使反斜杠后面的一个变量变为单纯的字符。

单引号(’ '):转义其中所有的变量为单纯的字符串。

双引号(" "):保留其中的变量属性,不进行转义处理。

反引号(` `):把其中的命令执行后返回结果。

[root@localhost ~]# PRICE=5
[root@localhost ~]# echo Price is $PRICE
Price is 5
[root@localhost ~]# echo Price is $$PRICE
Price is 8106PRICE
[root@localhost ~]# echo Price is \$$PRICE
Price is $5

$$ 意思是当前进程的PID值

[root@localhost ~]# echo '$$$$$$$$$$'
$$$$$$$$$$
[root@localhost ~]# echo A B C
A B C
[root@localhost ~]# echo "A B C"
A B C
[root@localhost ~]# echo `uname -a`
Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

5、重要的环境变量

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

命令执行的方式

  • 命令路径方式(优先级最高)
[root@localhost ~]# /usr/bin/ls
anaconda-ks.cfg  Desktop    fruit		  Pictures   Videos
a.txt		 Documents  initial-setup-ks.cfg  Public
c		 Downloads  Music		  Templates
  • 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 net='nmcli connection up ens160'
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 ~]# nmcli connection up ens160 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@localhost ~]# alias net="nmcli connection up ens160"
[root@localhost ~]# net
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
  • 内部命令
  • 外部命令(99.9%)命令保存在$PATH变量的目录下
#更改Bash标识
[root@localhost ~]# PS1=@
@
@

Tip:定义变量后只能自己用,如果想让其他用户使用,可以使用“ export ”提升为全局变量

[root@localhost ~]# mkdir -p /a/b/c/d/e
[root@localhost ~]# WORKDIR="/a/b/c/d/e"
[root@localhost ~]# cd $WORKDIR
[root@localhost e]# 
[root@localhost e]# cd ~
[root@localhost ~]# su linuxprobe
[linuxprobe@localhost root]$ cd $WORKDIR
[linuxprobe@localhost ~]$ 
[linuxprobe@localhost ~]$ exit
exit
[root@localhost ~]# export WORKDIR
[root@localhost ~]# su linuxprobe
[linuxprobe@localhost root]$ cd $WORKDIR
[linuxprobe@localhost e]$ 

你可能感兴趣的:(Linux,linux)