相关疑难解决方法(0)

bash中的别名不起作用

alias bp="cat $@ > $@.BACK"
Run Code Online (Sandbox Code Playgroud)

我的第二个想法是:

alias bp="cp $@{,.BACK}"
Run Code Online (Sandbox Code Playgroud)

所以我想要一个备份文件的命令.它不会引发任何错误,但它根本不起作用.

linux bash

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

具有参数的命令的"别名"

我知道有些命令可以通过shell进行别名,例如

alias mv="cp"
Run Code Online (Sandbox Code Playgroud)

但我想做一些类似但有争议的事情(是的,我已经看到了另一个问题,但我的问题略有不同).类似的东西:

sshkill() {
  service sshd restart 
}
alias sshkill="killall sshd"
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用.

我希望阻止用户直接杀死sshd(至少是偶然)并使其重新启动(这适用于多次发生这种情况的服务器).那么,有没有办法阻止执行命令而不是执行别名killall sshdservice sshd restart

bash alias

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

git clone 和 cd 进去

如果我想在一行中创建一个目录并将目录更改为所有目录,我可以执行以下操作:

mkdir dir_name && cd $_

我怎样才能做同样的事情git clone

命令 ,git clone repo_url && cd $_显然不起作用,因为没有这样的目录repo_url. 但是有可能在一行中完成吗?

linux git bash

2
推荐指数
3
解决办法
1902
查看次数

从 bash 脚本创建的全局 bash 脚本别名

我正在提供一些服务,并且我有一个 setup.sh 文件,必须第一次(或更新时)执行该文件。该脚本应该创建某种别名,可以从该终端或新终端访问该别名(也在系统重新启动后)。该别名应指向另一个可执行 sh 文件。

setup.sh 文件:

#!/bin/bash

alias customservice='./customservice.sh "$@"'
Run Code Online (Sandbox Code Playgroud)

如您所见,此 customservice.sh 脚本已准备好接受多个参数。使用这个自定义服务别名,我想像这样调用这个脚本:

customservice //显示帮助
customservice启动
customservice停止
customservice exec bash
...

我的 customservice.sh 文件:

if [ $# -eq 1 ] && [ $1 = "start" ]; then
   //do something
elif [ $# -eq 1 ] && [ $1 = "stop" ]; then
   //do something
elif [ $# > 1 ] && [ $1 = "exec" ]; then
   //do stuff with ${@:2}
else
   echo "help"
fi
Run Code Online (Sandbox Code Playgroud)

也许 customscript Kill 命令也不错。它应该完全删除这个别名。 …

linux bash shell alias

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

如果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
查看次数

如何用args创建shell别名?

我经常使用命令:

ack searchexpre -l --print0 | xargs -0 -n 1 sed -i -e sedexpression
Run Code Online (Sandbox Code Playgroud)

我想创建一个别名,如:

searchandreplace searchexpre  sedexpression
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

bash shell zsh sh

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

创建带有参数的别名的最短方法是什么?

我有一个命令

\n
lsof -i :3000\n
Run Code Online (Sandbox Code Playgroud)\n

当我运行它时,我得到了这个

\n
\xe2\x9a\xa1\xef\xb8\x8flsof -i :3000                                                                                                             \nCOMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME                                                              \nnode    6803 bheng   13u  IPv6 0xa757c4ba1a0bf589      0t0  TCP *:hbci (LISTEN)                                                   \n
Run Code Online (Sandbox Code Playgroud)\n

我想创建此命令的别名,该别名采用参数作为我的端口号。

\n

我不想为此创建一个函数或任何东西。

\n
\n

我试过了

\n

alias checkport='lsof -i :$1'

\n

我想像这样使用它

\n
checkport 3000\n
Run Code Online (Sandbox Code Playgroud)\n
\n

结果

\n
\xe2\x9a\xa1\xef\xb8\x8fcheckport 3000                                                                                                            \nlsof: unacceptable port specification in: -i :                                                                                    \nlsof 4.89                                                                                                                         \n latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/                                                                 \n latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ                                                                   \n latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man                                                         \n usage: [-?abhlnNoOPRtUvV] [+|-c …
Run Code Online (Sandbox Code Playgroud)

unix linux bash alias

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

从别名命令中获取第一个参数并将其插入到文件扩展名中

如何创建带有参数的别名并将其插入到文件扩展名中以创建它?我厌倦了这个,但这不起作用:

alias create-bash-file=' echo  "#!/bin/bash" > "$1.sh" '
Run Code Online (Sandbox Code Playgroud)

因为 $1 是第一个参数,.sh 是文件扩展名,我想创建一个别名来创建包含“#!/bin/bash”的 bash 文件,但文件名我想将其作为参数,例如,我将写入 create-bash-file filename 这应该生成名为 filename.sh 的 bash 文件

bash shell aliases positional-parameter

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

用参数创建别名

我想要一个产生以下结果的别名:

$cd /home/ok

[clear screen]
/home/ok
total 452K
-rwx--x--x 1 user gigl  16K Oct  1 14:08 ok0
drwx------ 5 user gigl    0 Oct  1 14:02 ok1
drwx------ 5 user gigl    0 Oct  1 13:59 ok2
drwx------ 9 user gigl    0 Oct  1 14:01 ok3
-rw------- 1 user gigl   32 Sep 30 14:36 ok4
Run Code Online (Sandbox Code Playgroud)

我做了一个类似的剧本

$cat ~/.cd.sh
#!/bin/bash
cd $1 && clear && pwd && ls -lh --color=auto
Run Code Online (Sandbox Code Playgroud)

但它不会改变当前的目录.这可能是因为在脚本中它会改变目录但是当它回到bash时我回到了目录中我执行了脚本.

任何的想法 ?

谢谢,从答案中我得到了类似的工作:

alias ls="clear && pwd && ls -lh --color=auto"
cd() …
Run Code Online (Sandbox Code Playgroud)

bash

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

标签 统计

bash ×9

linux ×5

alias ×4

shell ×4

aliases ×1

git ×1

positional-parameter ×1

sh ×1

unix ×1

zsh ×1