小编DUK*_*UKE的帖子

解释这个 bash 脚本:echo "${1##*.}"

考虑以下 bash 脚本:

#!/bin/bash
echo "${1##*.}" 
Run Code Online (Sandbox Code Playgroud)

如果文件名作为第一个命令行参数提供,此脚本将打印文件的扩展名,如下所示:

$ ./script.sh ./file.pdf
Run Code Online (Sandbox Code Playgroud)

在上述情况下pdf是打印的。

请解释表达式如何${1##*.}能够提取文件的扩展名。

(我了解 $0、$1、$2、$# 在 bash 中的作用,并且在某种程度上也了解正则表达式)

bash

22
推荐指数
3
解决办法
3万
查看次数

setuid 和八进制 4000 的文件权限

当我们设置setuid为文件时,我们在终端中执行以下操作:

chmod u+s filename
Run Code Online (Sandbox Code Playgroud)

这工作正常。但是八进制数 4000 总是与 setuid 相关联(在书籍等中)。

我了解(在一定程度上)文件权限、umask、setuid 的概念以及使用八进制数和chmod. 但是我仍然无法弄清楚八进制数4000和setuid之间的关系。请解释。

setuid chmod

7
推荐指数
1
解决办法
1万
查看次数

反斜杠的含义

为什么以下命令打印Smith但不打印\Smith

echo \Smith
Run Code Online (Sandbox Code Playgroud)

bash escape-characters

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

bash ×2

chmod ×1

escape-characters ×1

setuid ×1