Linux笔记:命令进阶使用相关功能
Posted Naisu Xu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux笔记:命令进阶使用相关功能相关的知识,希望对你有一定的参考价值。
目的
使用linux时用户可以通过一个又一个的命令来完成各种操作,除了基础的各个命令外linux还提供了各种便利的功能来协调使用这些命令。这些功能让用户在使用linux时可以更加得心应手,也为shell脚本编写提供了巨大的可能性。这篇文章将对相关的内容做个简单的记录。
通配符
通配符可以用来代替匹配某些字符内容,常用的一些通配符示例如下:
表达式 | 描述 | 表达式 | 描述 |
---|---|---|---|
* | 单个或多个任意字符 | ? | 单个任意字符 |
[145] | 匹配 1 4 5 | [abD] | 匹配 a b D |
[4-8] | 匹配 4 5 6 7 8 | [a-z] | 匹配 a~z,即所有小写字母 |
[C-F] | 匹配 C D E F | [2-7,c-e] | 匹配 2 ~ 7 和 c ~ e |
[!345] | 不匹配3 4 5 | [^345] | 同[!345] |
[[:alpha:]] | 单个任意字母 | [[:digit:]] | 单个任意数字 |
[[:upper:]] | 单个任意大写字母 | [[:lower:]] | 单个任意小写字母 |
[[:alnum:]] | 单个任意字母或数字 | [[:punct:]] | 单个标点符号 |
转义符
转义符在各种编程语言中都很常见,一般是将有特殊功能的符号变成普通字符或是反一反。在linux命令操作中主要可以使用下面几个转义符:
符号 | 说明 |
---|---|
反斜杠 \\ | 将其后面的符号变为普通字符,比如变量符号、通配符等 |
单引号 ’ ’ | 其内部所有内容都变为单纯的字符串 |
双引号 " " | 将其内部所有内容变为单纯的字符串,$和反引号不进行转义 |
反引号 ` ` | 命令替换,替换为其中命令的结果,也可用 $( ) 代替 |
pi@raspberrypi:~ $ echo $HOME
/home/pi
pi@raspberrypi:~ $ echo \\$HOME
$HOME
pi@raspberrypi:~ $ echo '$HOME'
$HOME
pi@raspberrypi:~ $ echo date
date
pi@raspberrypi:~ $ echo `date`
Fri 03 Sep 2021 10:30:29 AM CST
流程控制
shell中通常一行只能使用一条命令,我们可以使用一些符号让多条命令一起执行,下面是一些基础的符号:
符号 | 示例 | 说明 |
---|---|---|
; | 命令1 ; 命令2 | 命令1和命令2按顺序执行 |
&& | 命令1 && 命令2 | 当命令1执行正确,命令2才会执行 |
|| | 命令1 || 命令2 | 当命令1执行不正确,命令2才会执行 |
() | (命令1 ; 命令2) | 括号内的内容会作为一整块执行,注意其中使用cd命令的话只会对这一块有效 |
pi@raspberrypi:~ $ (cd Desktop/; ls)
2.txt 3.txt 4.txt 5.txt
pi@raspberrypi:~ $ cd Desktop/; ls
2.txt 3.txt 4.txt 5.txt
pi@raspberrypi:~/Desktop $ cd Desktop/ || cd ~
bash: cd: Desktop/: No such file or directory
pi@raspberrypi:~ $ cd Desktop/ && pwd
/home/pi/Desktop
pi@raspberrypi:~/Desktop $ cd ~ || pwd ; ls
Bookshelf Desktop Documents Downloads Music Pictures Public Share Templates Videos
pi@raspberrypi:~ $ cd ~ || (pwd ; ls)
pi@raspberrypi:~ $ cd ~ || pwd ; ls
Bookshelf Desktop Documents Downloads Music Pictures Public Share Templates Videos
pi@raspberrypi:~ $
管道符
linux中管道符 |
是非常好用的一个功能,它的功能很简单 —— 把前一个命令要输出的信息当作后一个命令的标准输入 。
管道符最常用的场景就是结合 grep 命令使用:
重定向
通常操作命令时输出的内容会直接显示在shell中,我们可以使用重定向的方式将其输出到其它地方。重定向不光有输出的重定向,也有输入的重定向。linux中一切皆文件,这些输入输出的内容也被视为文件,对于这些文件还涉及到一个文件描述符(File Descriptor)的概念。这一节涉及到的文件描述符如下:
文件描述符 | 名称 | 类型 | 默认操作 |
---|---|---|---|
0 | stdin | 标准输入文件 | 从键盘输入 |
1 | stdout | 标准输出文件 | 输出到屏幕 |
2 | stderr | 标准错误文件 | 输出到屏幕 |
了解文件描述符后就可以介绍重定向了,基础的重定向内容如下:
表达式 | 描述 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止,分界符是自己定义的字符串 |
命令 > 文件 | 将标准输出覆盖到文件中,等价于 命令 1> 文件 |
命令 >> 文件 | 将标准输出追加到文件中,等价于 命令 1>> 文件 |
命令 2> 文件 | 将错误信息覆盖到文件中 |
命令 2>> 文件 | 将错误信息追加到文件中 |
命令 &> 文件 | 将标准输出和错误信息覆盖到文件中 |
命令 &>> 文件 | 将标准输出和错误信息追加到文件中 |
上面只是些最基本的重定向,事实上重定向经常组合使用,比如下面的例子:
表达式 | 描述 |
---|---|
命令 < 文件A > 文件B | 将文件A作为命令的标准输入并将标准输出到文件B |
命令 > 文件A 2>> 文件B | 将标准输出覆盖到文件A中,将错误信息追加到文件B中 |
命令 > 文件 2>&1 | 这个表达式相当于 命令 1> 文件 2>&1 先将标准输出覆盖到文件中,再将错误信息也修改为标准输出,这样它也会写入到文件中 最终的结果就是标准输出和错误信息一起覆盖到文件中 |
命令 >> 文件 2>&1 | 将标准输出和错误信息一起覆追加到文件中 |
环境变量
在shell中可以像各种编程语言一样定义变量,然后在一般操作中使用这些变量:
pi@raspberrypi:~ $ NAISU=/home/pi/Desktop
pi@raspberrypi:~ $ cd $NAISU
pi@raspberrypi:~/Desktop $ pwd
/home/pi/Desktop
一个变量可以有多个值,各个值之间使用:(冒号)分隔:
pi@raspberrypi:~/Desktop $ NAISU=aaa
pi@raspberrypi:~/Desktop $ echo $NAISU
aaa
pi@raspberrypi:~/Desktop $ NAISU=$NAISU:bb
pi@raspberrypi:~/Desktop $ echo $NAISU
aaa:bb
上面的定义的这些变量只有当前用户可以用,需要输出到全局才可以给其他用户用:
pi@raspberrypi:~/Desktop $ export NAISU
如果不需要这个变量了可以把它取消掉:
pi@raspberrypi:~/Desktop $ unset NAISU
前面定义的变量在系统重启后就消失了,想要重启后还能继续用的话只要在系统启动或是用户登陆时会执行的脚本中添加相关的命令即可。通常可用的脚本文件有一下一些(可能有也可能没有,依顺序执行,对于同一个变量后面的会覆盖前面的):
/etc/profile
/etc/bashrc
~/.bash_profile
~/.profile
~/.bashrc
上面这些文件中通常默认已经有一些内容了,这些内容就是系统默认的环境变量。可以使用 env
命令查看当前用户可用的环境变量。常用的一些环境变量如下:
变量名 | 描述 | 变量名 | 描述 |
---|---|---|---|
HOME | 用户的主目录 | SHELL | 用户在使用的Shell解释器名称 |
PATH | 解释器搜索用户执行命令的路径 | EDITOR | 用户默认的文本解释器 |
RANDOM | 生成一个随机数字 | LANG | 系统语言、语系名称 |
总结
这篇文章中介绍的各个命令使用相关的功能单个来看都非常简单,但是组合起来使用就拥有了丰富的可能性。很多时候仅仅使用命令与上面各个功能组合就可以实现大部分需求了。
以上是关于Linux笔记:命令进阶使用相关功能的主要内容,如果未能解决你的问题,请参考以下文章
linux进阶之路vim命令常见操作(附vim键盘图,建议收藏)