回答
你的具体问题是,你需要空格左括号后,如(引用正确使用所有参数以及)
lsr() { ls -rt "[email protected]"; }
但你可能还需要考虑的一个因为这种别名是在命令开始替代:
alias lsr='ls -rt'
这一点,毕竟,有多少系统给你非常方便“LON摹LS”的东西,如:
alias ll='ls -al'
你只需要确保这是出现在一些需要这就是所谓的特定情况下,比如在.bashrc
在交互shell,或者在源文件脚本本身的开始(并确保别名使用shopt -s expand_aliases
进行扩展)。这是两种可能性,但毫无疑问是其他。
我只是在想它,并发现你说的正是我在想什么:D干杯 –
正确诊断OP的问题,好的提示别名,但最后一段令人困惑:运行在_noninteractive_ shell中的脚本不能读取'。 bashrc';即使他们这样做了,除非您事先运行'shopt -s expand_aliases',否则别名不会在脚本内部扩展。没有_sourced_的脚本在正好是shell_的_child进程中运行,它不同于_subshell_(当前shell环境的克隆)。 – mklement0
@ mklement0,调整了最后一段,使其更像是“要注意的东西”,而不是“这正是如何去做”。考虑到bash使用大量配置文件类型文件的复杂性,任何全面的信息可能会减少答案的大小,因为它与答案本身是相切的(并且问题已被封闭为简单拼写错误),可能不需要:-) – paxdiablo
后{
lsr() { ls -rt $1;}
添加空格莫非后的第一个 “{” 丢失的空间?
# bash --version
GNU bash, version 4.3.42(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
#
# touch a
# touch b
# touch c
# ls -rt
a b c
# ls -t
c b a
#
# lsr() {ls -rt;}
bash: syntax error near unexpected token `{ls'
# lsr() { ls -rt;}
# lsr
a b c
正如已指出的,的{
必须跟着空白函数定义工作。
shellcheck.net是语法检查shell代码一个伟大的网站,这本来是可以赶上的问题:
lsr() {ls -rt $1;}
^-- SC1054: You need a space after the '{'.
^-- SC2086: Double quote to prevent globbing and word splitting.
正如你所看到的,它不仅发现了这个问题,而且还提供了有用的建议要双引号$1
,以便使参数能够与带有嵌入空格和全局字符的文件名一起工作。
至于为什么需要{
后的空白:
{
是所谓外壳关键字的实例,而不是所谓的shell字符| & ; () < > space tab
。
元字符单独的词在分析过程中,关键字做不。
在手边的情况下,在该{ls
是{
不识别为壳关键字,因为它不被识别为一个单独的字由于立即被随后ls
。
因此,Bash看到单个词{ls
,这在这个位置是出乎意料的,并恰当地报告了syntax error near unexpected token '{ls'
。
注意,右}
不不需要前面的空白(即使你可能需要添加它视觉对称),因为它是由元字符;
之前,它被定义公认的“自己的东西“,并因此隐含地导致}
被识别为它自己的单词。
在一个相关的说明:自闭合}
是在同一行作为ls
命令时,ls
命令必须与控制操作员;
终止 - 否则,}
将被解释为另一参数到ls
。
- 1. 这个js数组函数为什么不起作用?
- 2. 为什么这个模板函数调用不起作用?
- 3. 为什么在Meteorjs中这个提交函数不起作用?
- 4. 为什么这个jQuery函数不起作用?改变颜色
- 5. 为什么这个函数重载不起作用?
- 6. 为什么pygame中的这个函数不起作用
- 7. 为什么这个dataTable sortBy函数不起作用?
- 8. 这个R函数为什么不起作用?
- 9. 这个Scheme的平方和函数为什么不起作用?
- 10. jQuery:为什么这个小函数不起作用?
- 11. 为什么这个.slideToggle函数在jQuery中不起作用?
- 12. 为什么这个Javascript函数不起作用?
- 13. 为什么这个jquery函数在IE6/7中不起作用?
- 14. 这个jquery为什么不起作用?
- 15. 这个DMAX为什么不起作用?
- 16. 为什么这个jQuery不起作用?
- 17. 为什么这个SQL不起作用?
- 18. 为什么这个keyListener不起作用?
- 19. 这个包为什么不起作用?
- 20. 为什么这个JavaScript不起作用?
- 21. 为什么这个rowspan不起作用?
- 22. 为什么“这个”不起作用?
- 23. 为什么这个re.search不起作用
- 24. 这个XSS为什么不起作用?
- 25. 为什么这个.htaccess不起作用?
- 26. 这个JSON为什么不起作用?
- 27. 为什么这个String.equals()不起作用?
- 28. 为什么click()函数不起作用?
- 29. 为什么VLOOKUP函数不起作用
- 30. 为什么getElementById函数不起作用?
一旦我修复了语法问题,在这里可以正常工作。 –
我试图按照我先前创建的快捷方式的语法:'mkd(){mkdir $ 1; cd $ 1;}' – kilojoules
你缺少括号后的空格。你可能也想考虑一个别名。 –