linux复习

ops/2025/2/7 16:46:43/

'与"区别

在Linux中,单引号(')和双引号(")用于定义字符串,但它们在处理变量扩展和转义字符时有所不同。以下是具体分析:

1. **变量扩展**:在双引号内,变量可以被扩展,即变量的值会被其对应的值所替代;而在单引号内,变量则保持原样,不会被扩展。例如,如果有一个变量`var="world"`,那么在命令`echo "Hello $var"`中,`$var`会被替换为`world`,输出结果为`Hello world`。而在命令`echo 'Hello $var'`中,`$var`会保持原样,输出结果为`Hello $var`。
2. **转义字符**:在双引号中,反斜杠(\)可以用作转义字符,用于插入特殊的字符或者进行转义;而在单引号中,所有字符都是字面意义上的字符,包括反斜杠本身。
3. **命令执行环境**:在编写脚本或命令时,使用单引号可以避免Shell对其中的内容进行解析,这在创建不会改变的字符串时非常有用。而双引号则允许Shell进行解析,这在需要字符串内部变量或命令替换时更为方便。

总的来说,单引号用于创建原始字符串,其中不会有任何字符被解释或扩展;而双引号则允许变量扩展和转义字符的使用。在实际使用过程中,应根据具体需求选择合适的引号类型。

find 

-name

对文件的basename进行匹配

find /  -name "nginx"匹配只有文件名为nginx的文件find / -name "nginx*"匹配文件名以nginx开头的文件

-path

对文件的dirname+basename进行匹配

find / -path "*/var/*/nginx"文件名为nginx,前面的目录必须有var这个目录

-type

一般需要搜索的文件类型就只有普通文件(f),目录(d),链接文件(l)。

find /usr -type d -name "a*"匹配/usr下所有目录包括其子目录以a开头的目录

shell理解

shell:壳,命令解释器,负责解析用户输入的命令。

命令分两类:

  • 内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是 大部分都差不多
  • 外置命令,在文件系统的某个目录下,有个与命令名称相同的文件

type 命令查看命令是file、alias(外置命令)还是builtin(内置命令)

  • type -a 列出当前命令可以如何执行
  • type -t 仅列出命令按照哪种方式执行
root@ring04h-virtual-machine:~# type -a cd
cd is a shell builtin
root@ring04h-virtual-machine:~# type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
ls is /bin/ls
root@ring04h-virtual-machine:~# 

 builtin(内置命令)

用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。以前学过的cd、alias、umask、exit等命令即是内建命令,凡是用which命令查不到程序文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令,应该执行

root@ring04h-virtual-machine:~# man bash-builtins可看到所有内置命令的使用详细说明

file、alias(外置命令)

引出PATH,外置命令都会去PATH下所有的路径下去找与命令相同的二进制文件,然后执行

那shell如何知道命令的可执行文件在哪个路径下呢?系统为了让用户在命令行快速方便地执行命令,将 可执行文件的路径存储在环境变量PATH中。

在众多环境变量里面有一个环境变量叫做PATH,当用户每次执行外部命令的时候都会去该变量所记录的 路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。

root@ring04h-virtual-machine:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/root/.local/bin:/root/.local/bin


http://www.ppmy.cn/ops/32098.html

相关文章

Spring Cloud Security Oauth2 授权码模式

授权码存取—内存方式 获取Code Bisic认证 WebSecurityConfig 配置 Basic Auth认证 登录 数据库建表 授权码存储方式-数据库 Beanpublic AuthorizationCodeServices authorizationCodeServices() {return new JdbcAuthorizationCodeServices(dataSource);}问题 OAuth2 授…

POETIZE个人博客系统源码 | 最美博客

源码介绍 POETIZE个人博客系统源码 | 最美博客 这是一个 SpringBoot Vue2 Vue3 的产物,支持移动端自适应,配有完备的前台和后台管理功能。 网站分两个模块: 博客系统:具有文章,表白墙,图片墙&#xf…

照片误删怎么办?华为手机删除的照片如何恢复?

我们在使用华为手机时,可能会因为各种原因不小心删除一些照片。如果这些照片对我们来说很重要,那么恢复它们是非常必要且急迫的。那么华为手机删除的照片如何恢复呢?本文将为您介绍3种恢复华为手机中误删照片的方法。 如何恢复华为手机中被删…

Eslint插件使用配置, 规范化开发, 详细配置流程

eslint它规范的是代码偏向语法层面上的风格。本篇文章以一个基本的vue3项目,来说明vscode eslint 配置项目代码规范,为了更好的描述本文,我恢复了vscode的默认设置(即未安装eslint插件,setting中也没有相关配置&#…

通过符号程序搜索提升prompt工程

原文地址:supercharging-prompt-engineering-via-symbolic-program-search 通过自动探索​​大量提示变体来找到更好的提示 2024 年 4 月 22 日 众所周知,LLMs的成功在很大程度上仍然取决于我们用正确的指导和例子来提示他们的能力。随着新一代LLMs变得越…

vue知识

一、初始vue Vue核心 Vue简介 初识 (yuque.com) 1.想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 2.root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法 3.root容器里的代码被称为【Vue模板】 4.Vue实例和容器…

图神经网络综述和学习路径

应用邻域 应用举例 应用层面(节点,连接,子图,全图) 概念区别 图神经网络本质上解决了表示学习的问题 可以把神经网络看作一个黑箱,图中的f函数 困难与挑战 现代的深度学习,如何把图输入到神经…

第15届蓝桥杯-蒟蒻の反思与总结

基本情况 第15届蓝桥杯,参加c大学A组,完整做出的只有两道填空题。 然后后面的题目基本只拿了20%这样的分数,最后两道15分题目空白。 满分100分,估计总分在15-20分这样。 对于二分答案还是没有太熟练,考试的时候没有…