shell中/*和/.*的区别
时间: 2023-10-19 09:06:11 浏览: 144
在shell中,`/*`和`/.*`这两个通配符的区别如下:
- `/*`:匹配根目录下的所有文件和目录,但不包括以`.`开头的隐藏文件或目录。
- `/.*/`:匹配根目录下所有以`.`开头的隐藏文件或目录,但不包括当前目录`.`和上级目录`..`。
需要注意的是,这两个通配符的匹配结果可能会受到当前工作目录的影响。例如,`ls /*`和`ls /.*`在根目录下的结果是一样的,但在其他目录下可能会有不同的结果。
相关问题
在shell中,正则表达式/*和/.*的区别
在shell中,正则表达式`/*`匹配的是任意数量的斜杠字符,而`/.*`匹配的是一个斜杠字符后面跟着任意数量的任意字符。具体解释如下:
- `/*`:表示匹配任意数量的斜杠字符,包括0个斜杠字符。这个表达式中的`*`表示匹配前面的字符0次或多次。因此,`/*`可以匹配空字符串、单个斜杠字符、多个斜杠字符等。
- `/.`:表示匹配一个斜杠字符后面跟着任意数量的任意字符。这个表达式中的`.`表示匹配任意一个字符,`*`表示匹配前面的字符0次或多次。因此,`/.*`可以匹配以斜杠字符开头的任意字符串,包括斜杠字符后面跟着任意数量的任意字符的字符串。
举个例子,假设当前目录下有以下文件和目录:
```
/
/a
/a/b
/c
```
- `/*`匹配的是根目录`/`。
- `/.*`匹配的是根目录`/`和`/a`、`/a/b`、`/c`三个目录。
~/.bashrc和 ~/.bash_profile的区别
~/.bashrc和 ~/.bash_profile都是bash shell的配置文件,它们都会在登录时被执行,但是它们有以下区别:
1. .bashrc:
.bashrc是在交互式的非登录shell中执行的,例如:我们打开一个终端窗口,就是一个非登录shell。在这个shell中,我们可以输入命令操作终端,交互性要求高,因此.bashrc文件通常用于设置别名、环境变量、命令快捷键等个人化设置。此外,.bashrc仅在当前用户的当前终端生效。
2. .bash_profile:
.bash_profile是在登录shell中执行的,例如:我们通过ssh登录到一台远程服务器上。这是一个登录shell环境,我们可以在该终端中进行交互式操作,由于登录时间相对比较长,因此.bash_profile文件通常用于配置进程环境(即PATH和环境变量等),并执行用户希望在每次登录时执行的命令(例如:执行软件环境搭建脚本等)。此外,.bash_profile会在每个新的shell会话中读取一次。
综上所述,两者的主要区别在于作用范围和执行时机的不同,.bashrc主要用于个人化定制交互式shell的环境变量和别名等配置,而.bash_profile则主要用于配置登录进程环境变量和执行用户级别的登录指令。但是请注意,这些都是默认设置,用户也可以根据需要进行更改。
阅读全文