linux笔记:命令进阶使用相关功能(代码片段)

NaisuXu NaisuXu     2022-12-29     487

关键词:

目的

使用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)的概念。这一节涉及到的文件描述符如下:

文件描述符名称类型默认操作
0stdin标准输入文件从键盘输入
1stdout标准输出文件输出到屏幕
2stderr标准错误文件输出到屏幕

了解文件描述符后就可以介绍重定向了,基础的重定向内容如下:

表达式描述
命令 < 文件将文件作为命令的标准输入
命令 << 分界符从标准输入中读入,直到遇见分界符才停止,分界符是自己定义的字符串
命令 > 文件将标准输出覆盖到文件中,等价于 命令 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系统语言、语系名称

总结

这篇文章中介绍的各个命令使用相关的功能单个来看都非常简单,但是组合起来使用就拥有了丰富的可能性。很多时候仅仅使用命令与上面各个功能组合就可以实现大部分需求了。

javaee精英进阶课学习笔记《博学谷》(代码片段)

第1章亿可控系统分析与设计DownloadJavaEE精英进阶课提qu码:xb2k学习目标了解物联网应用领域及发展现状能够说出亿可控的核心功能能够画出亿可控的系统架构图能够完成亿可控环境的准备并了解亿可控的功能结构完成设备管... 查看详情

linux笔记-grep-v功能相关说明(代码片段)

背景比如服务器上有一个sh脚本,这个sh脚本会启动一个进程,这个进程名和这个sh脚本名是一样的,只是一个带有.sh一个没有。现在有个需求,查询这个进程或这个脚本是否正常运行,如,进程名是HelloWorl... 查看详情

linux笔记-grep-v功能相关说明(代码片段)

背景比如服务器上有一个sh脚本,这个sh脚本会启动一个进程,这个进程名和这个sh脚本名是一样的,只是一个带有.sh一个没有。现在有个需求,查询这个进程或这个脚本是否正常运行,如,进程名是HelloWorl... 查看详情

linux操作系统笔记基础命令(代码片段)

文章目录linux基础命令cd命令详解ls命令详解pwd命令详解hostname命令详解clear命令详解who、whoami、w命令which命令cal命令详解ldd命令详解scp命令详解ssh命令linux用户权限useradd命令详解usermod命令详解userdel命令详解groupadd命令详解groupdel... 查看详情

linux命令进阶:grep,sed,awk全家桶(文本处理技术详例)(代码片段)

...例解析五、总结一、前言回顾我之前写的一篇《Linux基本命令及编程环境实验》,一度爆文,成为热门文章。众所周知,Linux是一类强大的操作系统,它的功能强大,稳定性高,在大公司企业应用广泛,... 查看详情

linux进阶之路vim命令常见操作(附vim键盘图,建议收藏)(代码片段)

...别鼠标依赖实现复制删除3.1三种方法进入插入模式3.2必备命令移动光标删除字符复制字符替换撤销更改4.vim底行模式命令查找字符保存离开5.vim配置安装方法1.初识vimVim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳... 查看详情

linux使用详解(进阶篇)(代码片段)

...录Linux使用详解(进阶篇)1.Linux目录说明2.操作防火墙3.ulimit命令和history命令4.RPM和Yum的使用5.设置系统字符集6.vi&vim编辑器7.文件同步、复制8.利用SCP命令进行文件传输Linux使用详解(进阶篇)firewall-cmd--get-active-zones1.Linux目录说明bin->... 查看详情

ftp命令(代码片段)

Linux命令大全ftp命令文件传输PHPFTP函数 ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linuxftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linuxftp命令的一些经常使用的命令... 查看详情

linux系列笔记----------理解文件权限(代码片段)

...制模式改变权限3.2.符号模式改变权限前言:记下相关笔记,记录我的学习生活!该文章为原创,转载请注明出处和作者:ht 查看详情

android进阶笔记-7.context详解(代码片段)

Context数量Activity数量+Service数量+1(1为Application)Context的继承关系Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类;ContextWrapper作为Context类的包装类,其内部维护了一个Context类型的成员... 查看详情

linux学习笔记(代码片段)

linux学习笔记1.操作系统的发展史1.2Unix1.2Minix1.3Minix1.4Minix没有火起来的原因2.linux介绍2.1Linux内核版本2.2Linux发行版本2.3Linux目录结构2.4用户目录3.命令行的基本用法3.1命令的使用方式3.2查看帮助文档3.3tab自动补全3.4history游览历史3.5... 查看详情

jupyternotebook进阶使用:nbextensions(代码片段)

...tensions之前,jupyternotebook的界面是这样的:我们在命令行输入以下命令,即可安装并配置nbextensions1.1 安装nbextensionspipinstalljup 查看详情

查看linux系统状态的相关命令使用(代码片段)

...以是Waiting某一时刻1颗CPU只能有一个进程在使用其资源top命令:top回车就可以进入到top界面每3秒刷新一次默认按cpu百分比排序,可以按M键按照内存使用率大小排序按数字1,可以显示所有CPU使用率详情top-bn1静态显示所有进程的情... 查看详情

linux命令学习—sar命令学习(代码片段)

文章目录一、命令使用介绍二、系统各个维度的性能分析1、CPU相关指标1.1、-P或者-u输出CPU使用情况的统计信息1.2、-q输出CPU队列的相关统计信息2、磁盘相关指标(建议用iostat)2.1、-b输出磁盘基本信息2.2、-d输出磁盘更详细的信息2... 查看详情

ftp命令(代码片段)

ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linuxftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linuxftp命令的一些经常使用的命令,相信掌握了这些使用Linux进行ftp操作将会... 查看详情

tar命令基本进阶使用指北(代码片段)

tar命令基本、进阶使用指北摘要打包与压缩是我们在计算机系统日常使用中必备的一个工具,就如我们在使用Windows系统,也需要类似WinRAR的压缩软件来将许多数据、文件打包成一个文件,并压缩其占用空间。我们在Linux下也需要... 查看详情

文件系统的相关指令(代码片段)

...套的方式ls-h可以来看文件的方式【1】file、mkdir、rmdir、ln命令(1)文件和目录相关的命令pwdlscdtouchcpmvrmcatheadtail已经在C语言基础补习课程中讲过(2)file命令1)在Linux文件系统中,文件扩展名不总是被使用或被一致地使用。如果... 查看详情

linux命令汇总|vim|shell|进阶2022版(代码片段)

Linux大全一、Linux上下五千年1.1历史长河1.2下载安装1.3目录介绍1.4网络配置1.4.1三种网络模式1.4.2ifconfig1.4.3ping1.4.4修改IP地址1.4.5主机名称1.4.6远程登录1.5系统管理1.5.1Linux中的进程和服务1.5.2systemctl1.5.3systemctl设置后台服务的自启配... 查看详情