相关疑难解决方法(0)

创建一个带参数的Bash别名?

我以前使用CShell(),它允许你创建一个带参数的别名.符号是这样的

alias junk="mv \\!* ~/.Trash"
Run Code Online (Sandbox Code Playgroud)

在Bash中,这似乎不起作用.鉴于Bash有许多有用的功能,我会假设这个功能已经实现,但我想知道如何.

bash alias

1164
推荐指数
18
解决办法
48万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

在bash中将参数传递给别名

是否可以执行以下操作:

我想运行以下内容:

mongodb bin/mongod
Run Code Online (Sandbox Code Playgroud)

在我的bash_profile中我有

alias = "./path/to/mongodb/$1"
Run Code Online (Sandbox Code Playgroud)

bash shell .bash-profile

118
推荐指数
5
解决办法
9万
查看次数

停止shell通配符扩展?

有没有办法让编译的命令行程序告诉bash或csh它不希望扩展其参数中的任何通配符?

例如,可能需要一个shell命令,如:

foo *
Run Code Online (Sandbox Code Playgroud)

简单地返回该字符的数字ASCII值.

bash wildcard

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

为什么要创建一个别名来创建函数?

我偶尔会看到这种模式,尤其是在有关Bash提示自定义的问题上。

alias f='_ () { useful code; }; _'
Run Code Online (Sandbox Code Playgroud)

我完全没有理由在此处创建别名。明显的重构

f () { useful code; }
Run Code Online (Sandbox Code Playgroud)

这样就避免了完全声明一个别名,而只是简单地一劳永逸地定义了函数,这看起来更简单,更易理解,不那么脆弱且更高效。(以防万一,每次调用别名时,别名最终都会重新声明该函数。)

例如,使Bash别名带有参数?有几个答案可以证明这种技术。使用ftp路径运行lftp的bash脚本是一个有关此函数内部实际功能的问题,其中包含类似这样的代码,尽管我轻描淡写,OP也不解释为什么。

这是否仅仅是一种反模式,还是有实际的理由这样做?在什么情况下该设计有意义?

这与别名后面没有空格有关,也与代码混淆无关(除了这种神秘的技术之外,我发现的示例通常是完全可读的)。

bash shell alias sh

20
推荐指数
3
解决办法
436
查看次数

函数而不是C shell登录脚本中的别名

我在主题中看到,如果要使用参数,可以在shell登录脚本中添加函数而不是别名.但是,我将以下代码放在带有别名的部分的.cshrc文件中:

function gf()
{
    grep -n $1 `find .` | grep -v "can't open"
}
Run Code Online (Sandbox Code Playgroud)

但是当我输入source .cshrc时,我收到错误消息:Badly placed()的.C shell的语法与Bash shell的语法不同吗?如果是这样,那么正确的语法是什么?

shell alias login

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

如何将参数传递给别名

我在.bashrc中添加了一个别名

alias sr ='sudo /etc/rc.d/[parameter?] restart'

sr network - > sudo /etc/rc.d/network restart

sr sshd - > sudo /etc/rc.d/sshd restart

可以实现,谢谢!

bash alias

8
推荐指数
2
解决办法
6891
查看次数

你最重要的控制台别名是什么?

如果您的.bash_alias/.bashrc/etc只能包含一行,您会选择保留哪一个别名?

bash console alias

6
推荐指数
2
解决办法
3343
查看次数

git别名:使用参数提交并按下单个命令

我试图说服我的同事离开svn并切换到git.我看到的一个问题是:它必须分别执行git commit和git push是复杂且容易出错的.所以我在想一个git ci别名,它提交更改并将其推送到服务器.我知道,怎么做,但是:

问题是,我想给git commit提供像-m""这样的参数.所以

git ci -m "Cool change"
Run Code Online (Sandbox Code Playgroud)

应该执行

git commit -m "Cool change" && git push
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

git push commit

6
推荐指数
1
解决办法
2977
查看次数

Bash:在斜杠后面插入一个空白字符时回显参数

我正在尝试使用bash中的命令行参数构造路径.我在.bashrc中添加了以下行:

alias hi="echo '/path/to/$1'"
Run Code Online (Sandbox Code Playgroud)

但是,这会产生:

~$ hi foo
/path/to/ foo
Run Code Online (Sandbox Code Playgroud)

想知道斜线后面的空白是从哪里出来的?

谢谢

汉纳斯

bash

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

如果bash别名不能接受参数,为什么这些别名有效呢?

作为一个天真的菜鸟,我创建了几个用于接受参数的bash别名,它们完全按照预期工作.然而,我试图制作更多这样的别名,但这些不会按预期工作.

这个问题导致我在这里,我了解到bash别名不接受参数.相反,您必须创建一个函数.例如,请看这里这里.

因此,假设"bash别名不接受论证"共识是正确的,为什么所有这些都有效?

alias pacss='pacman -Ss '
alias pacs='sudo pacman -S '
alias yausnc='yaourt -S --noconfirm '
Run Code Online (Sandbox Code Playgroud)

当我说这些"工作"时,我的意思是,例如,输入'pacs package'会提示我输入密码,提示确认,然后检索和安装包.

那么,为什么这些别名有效呢?他们接受的术语在技术上不是"论据"吗?这是Arch(或Manjaro,我正在使用)的特质吗?时空连续体中的一个洞?

任何澄清应予以赞赏.

编辑:谢谢你的答案解释这些不是要求争论.我不太明白我的第一个例子与以下尝试的别名有何不同,后者不起作用:

alias lping='ping 192.168.1.'
Run Code Online (Sandbox Code Playgroud)

这会失败,因为ping执行时没有附加数字I类型.我的意图是能够输入例如lping 123并让bash执行"ping 192.168.1.123",而是说"未知主机192.168.1".

linux bash shell alias

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

Ubuntu 如何创建执行命令的快捷方式

当我工作时,我经常这样做:

cd ~/dev/lab/prod/
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,但我希望能够运行:

prod
Run Code Online (Sandbox Code Playgroud)

具有相同的效果(更改为 ~/dev/lab/prod 文件夹)。

shell ubuntu command-line

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

标签 统计

bash ×9

alias ×6

shell ×6

linux ×2

.bash-profile ×1

command-line ×1

commit ×1

console ×1

git ×1

login ×1

push ×1

quotes ×1

sh ×1

ubuntu ×1

unix ×1

wildcard ×1