bash别名中允许使用哪些字符

时间:2014-07-11 05:30:22

标签: linux macos bash

我最近添加了

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

到我的bash_aliases文件。玩弄这个,我注意到虽然允许别名..,但是别名.却没有。 bash别名中允许使用哪些其他标点字符?

4 个答案:

答案 0 :(得分:4)

根据following环境变量,名称只能包含

  

大写字母,数字和' _' (下划线)来自   便携式字符集中定义的字符,不以a开头   数字。实现可以允许其他字符;   申请应容忍这些名称的存在。

但变量与别名名称的确不完全相同。

实际上,-(短划线)应添加到列表中,因为它是debian(apt-get)中的事实标准。另外_~!@#$%^.,[]+/?所有工作和><'"|=()backtick。别&#39;吨。此外,您还需要担心$PATH:等字符。如果它们被正确转义或引用"a b",则空间和换行符可能会起作用。

答案 1 :(得分:4)

Bash别名绝对不能包含以下字符:空格@RestController @RequestMapping("/v4/slm/partners/sites/import") @Api(value = "Site Bulk Upload Service") @Slf4j @Validated public class PartnerSiteLoadController { private PartnerSiteUploadService partnerSiteUploadService; @Autowired public PartnerSiteLoadController(PartnerSiteUploadService partnerSiteUploadService) { this.partnerSiteUploadService = partnerSiteUploadService; } @PostMapping(value = "", headers = ("content-type=multipart/*")) @ApiOperation(value = "Import sites in bulk") public ResponseEntity<BulkUploadResponseDTO> uploadSitesInBulk(@RequestParam("file") MultipartFile excelFile, HttpServletRequest request){ UserPrincipal userPrincipal = (UserPrincipal) request.getAttribute("userPrincipal"); String userId = userPrincipal.getId(); log.info("Received excel file with name {}......",excelFile.getOriginalFilename()); if(!excelFile.isEmpty()){ return ResponseEntity.status(HttpStatus.CREATED).body(partnerSiteUploadService.uploadSitesInBulk(userId,excelFile)); } else{ throw new BadRequestException("Received empty excel file"); } } ,制表符,换行符\t\n/$`=|&;()<,{{ 1}}和>

bash https://www.gnu.org/software/bash/manual/html_node/Aliases.html的GNU手册说:

上面列出的字符'"/$和任何shell元字符或引号字符可能不会出现在别名中。

“外壳元字符”在https://www.gnu.org/software/bash/manual/html_node/Definitions.html中定义为

一个字符,当不加引号时,将单词分开。元字符是`=space或以下字符之一:tabnewline|,{{1 }},&;(

我找不到“引号” https://www.gnu.org/software/bash/manual/html_node/Quoting.html的列表。据我所知,它们是单引号)和双引号<

答案 2 :(得分:2)

https://www.gnu.org/software/bash/manual/html_node/Aliases.html 我不会在linux中命名别名..是当前导演的特殊名称,而...是父目录。可能有一些模糊的过程可能会被别名搞砸..对于cd

答案 3 :(得分:2)

使用函数总是更安全:

function .. { cd '..'; }
function ... { cd '../..'; }
function .... { cd '../../..'; }

或者保守的偏好:

..() { cd '..'; }
...() { cd '../..'; }
....() { cd '../../..'; }