目录
管道命令符
管道命令符“|”的作用是将前一个命令的标准输出作为后一个命令的标准输入,格式为“ 命令A |命令B”。
//使用echo为用户改密码
user@user-virtual-machine:~/shell$ echo "root" | passwd --stdin root
输入输出重定向
输出重定向:
符号 | 作用 |
命令 > 文件 | 将标准输出重定向到文件(清空原文件的内容) |
命令 2> 文件 | 将标准错误输出重定向到文件 (清空原文件的内容) |
命令 >> 文件 | 将标准输出重定向到文件(在原文件中追加) |
命令 2>> 文件 | 将标准错误输出重定向到文件(在原文件中追加) |
命令 >> 文件 2>$1 | 将标准输出和标准错误一起重定向到文件(在原文件中追加) |
输出重定向:
符号 | 作用 |
命令 < 文件 | 将文件作为标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇到“分界符”才停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令标准输入,并将标准输出到文件2 |
命令行通配符
通配符 | 作用 |
* | 匹配零个或多个字符 |
? | 匹配任意单个字符 |
[0-9] | 匹配范围内的数字 |
[abc] | 匹配已出的任意字符 |
//匹配所有sda开头的文件
user@user-virtual-machine:~$ ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
//匹配sda后有一个字符的文件
user@user-virtual-machine:~$ ls /dev/sda?
/dev/sda1 /dev/sda2 /dev/sda3
//匹配sda后包含0-9任意一个数字的文件
user@user-virtual-machine:~$ ls /dev/sda[0-9]
/dev/sda1 /dev/sda2 /dev/sda3
//匹配sda后包含1或3或5的文件
user@user-virtual-machine:~$ ls /dev/sda[135]
/dev/sda1 /dev/sda3
特殊字符拓展:
字符 | 作用 |
\(反斜杠) | 转义后面的一个字符 |
''(单引号) | 转义所有的字符 |
""(双引号) | 变量依旧生效 |
``(反引号) | 执行命令语句 |
//定义变量
user@user-virtual-machine:~$ PRICE=5
//使用$取变量
user@user-virtual-machine:~$ echo "Price is $PRICE"
Price is 5
//不能直接输出$
user@user-virtual-machine:~$ echo "Price is $$PRICE"
Price is 2451PRICE
//使用转义字符输出$
user@user-virtual-machine:~$ echo "Price is \$$PRICE"
Price is $5
//使用单引号$不能输出变量,因为''会把所有字符转义
user@user-virtual-machine:~$ echo 'Price is \$$PRICE'
Price is \$$PRICE
//使用反引号将执行命令
user@user-virtual-machine:~$ echo `uname -a`
Linux user-virtual-machine 5.15.0-52-generic #58-Ubuntu SMP Thu Oct 13 08:03:55 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
PATH变量
alias命令用于设置命名的别名,格式为:“alias 别名=命令”。
//为命令“cp -i”起别名
user@user-virtual-machine:~/shell$ alias cp="cp -i"
user@user-virtual-machine:~/shell$ cp tr.txt tr2.txt
cp:是否覆盖'tr2.txt'? n
//取消别名
user@user-virtual-machine:~/shell$ unalias cp
PATH是“解释器的助手”,她负责告诉bash用户要执行的命令可能放在那里,bash会在这些目录中找。
user@user-virtual-machine:~/shell$ $PATH
bash: /home/user/.vscode-server/bin/8fa188b2b301d36553cbc9ce1b0a146ccb93351f/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: 没有那个文件或目录
变量PATH中的每一个目录只用使用冒号分隔“:”
//为PATH变量添加新值
user@user-virtual-machine:~/shell$ PATH=$PATH:/root/bin
一些重要的环境变量
变量名称 | 作用 |
HOME | 用户主目录 |
SHELL | 当前shell是哪个程序 |
HISTSIZE | 历史命令记录条数 |
邮件邮箱文件 | |
LANG | 语系数据 |
RANDOM | 随机数字 |
PS1 | bash提示符 |
HISTFILESIZE | history命令存储数量 |
PATH | 在路径中的目录查找执行文件 |
EDITOR | 默认文本编辑器 |
用户可以使用:“ 变量名=值 ”的方式定义一个新的变量,通过此方法定义的变量只可在当前用户中使用,要想别的用户也能使用此变量可以将变量定义为全局变量。
定义全局变量的方式:“export 变量名=值”;