我有一个用来查找东西的函数,但不幸的是,每当我向它传递一个控制字符($intVal或其他testing :)时,它就会窒息。我想知道修复是什么?
我可以理解在 grep中使用$or%或:etc 而不转义会导致此问题,但是由于我是通过引用传入的,因此我不确定如何转义它...
无论如何,这是代码。
function ffind()
{
if [ $1 ] ; then
find -type f | grep -ir '$1' * | grep -v '.svn'
else
echo "'$1' is not a valid resource"
fi
}
Run Code Online (Sandbox Code Playgroud)
例子):
$ ffind $intVal
'' is not a valid resource
$ ffind "testing :"
bash: [: testing: unary operator expected
'testing :' is not a valid resource
Run Code Online (Sandbox Code Playgroud) 我遇到了以下问题。
我在.bashrc(和.bash_profile)中定义了一个别名:
alias echo2="echo"
Run Code Online (Sandbox Code Playgroud)
这很有效:
$ echo2 "test"
test
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在重定向后使用它,则它不起作用:
ls | awk '{print "echo2 "$1}' | bash
bash: line 1: echo2: command not found
bash: line 2: echo2: command not found
...
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?我怎样才能让它工作?
我在 Ubuntu 服务器上有一个具有正确 PS1 变量的帐户,我想让同一台服务器上的其他帐户之一具有相同的 PS1 变量,以便我对这个新帐户的提示(当我 ssh 进入机器时)是与原始帐户相同。
有没有办法可以在帐户之间传递这个 PS1 变量,以便提示相同?
我曾尝试将其打印出来,复制输出,然后将其重新分配给新帐户上的 PS1,但它不起作用。
这是我输入时打印的内容echo $PS1:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Run Code Online (Sandbox Code Playgroud)
我想将该提示(如上所示)分配给我的新帐户。
我有个问题。
最近我已经安装了nodejs(如果你不知道它是什么,它并不重要,可以是其他任何东西)从源到 /opt/node:
$ ls -la /opt
...
lrwxrwxrwx 1 root root 11 2012-07-25 13:48 node -> node-0.6.3/
drwxr-xr-x 6 root root 4096 2012-07-25 13:48 node-0.6.3
...
Run Code Online (Sandbox Code Playgroud)
所以,二进制文件在/opt/node/bin:
$ ls -la /opt/node/bin
...
lrwxrwxrwx 1 root root 38 2012-06-20 11:44 npm -> ../lib/node_modules/npm/bin/npm-cli.js
...
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,npm在那里。为了更容易从命令行使用它,我$PATH在.bashrc脚本中修复了它:
HOME=$HOME:...:/opt/node/bin
对 root 也是如此.bashrc:
# which npm
/opt/node/bin/npm
Run Code Online (Sandbox Code Playgroud)
但是如果我用 sudo 运行 npm,npm则找不到:
$ sudo which npm
$ sudo npm -g install …Run Code Online (Sandbox Code Playgroud) 我在用户的 .bashrc 文件中定义了一个函数,它在我的命令提示符下显示我当前的 git 分支名称:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
PS1="\\[$(tput setaf 7)\\]\\w \$(parse_git_branch)> \\[$(tput sgr0)\\]"
Run Code Online (Sandbox Code Playgroud)
当我 sudo 到 su 时,看起来我的 PS1 被结转了,并且在每个命令之后我都会收到错误bash: parse_git_branch: command not found。
我可以更改什么,以便当我对另一个用户 sudo 时,使用其 PS1 而不是我用户的 PS1?
编辑:这似乎只发生在我使用源 Python virtualenv 之后。如果我在获取 virtualenv 之前 sudo su ,则不会发生此错误。
我正在尝试在本地向全局$PATH变量添加一个目录。我将以下内容添加到我的.bashrc.
export PATH=$PATH:$VRS/bin
Run Code Online (Sandbox Code Playgroud)
但PATH似乎每次我打开一个外壳时都会一遍又一遍地连接到自身(即PATH不断增长)。有任何想法吗?
我想将别名直接回显到我的.bashrc文件中。这是我正在使用的:
echo alias cdear='cd | clear' >> .bashrc
Run Code Online (Sandbox Code Playgroud)
但是, in.bashrc中的新行不包含引号。
我还希望在 .bashrc 的末尾加上最后一行的换行符。
如何更改我的命令以便:
我为用户名创建了别名,它工作正常
alias yb="ssh name@hostname"
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我也想为密码创建别名,任何人都可以帮助我如何做到这一点?
所以我在 Windows 上的 Unbuntu 上使用 Bash 来学习 Linux,所以我尝试编辑 .bashrc 文件作为一种学习方式。为此,我进入了 C: 驱动器中的根文件夹,并在 VS Code 中打开了 .bashrc。我在文件末尾添加了一行。
当我尝试运行 ubuntu 时,我遇到了这个错误(即使它仍然有效),即使我尝试撤消之前的操作,错误仍然存在。怎么了?
bash permissions bashrc windows-10 windows-subsystem-for-linux
我想添加一个别名(为了方便起见),它允许我编辑我的 bashrc,如果进行了更改,请提供它,但如果没有进行任何更改,请不要提供(以防我改变主意)。
我最初尝试过,alias vb='vi ~/.bashrc && source ~/.bashrc'但后来我意识到即使只是退出 vi:q或者:q!可能仍然返回成功返回值,这就是它仍然来源的原因。
是否有某种方法可以创建别名,以便在不更改文件的情况下退出 vi 不会产生 .bashrc 来源,但如果某些内容发生了变化,它确实如此?
bashrc ×10
bash ×6
linux ×5
alias ×3
sudo ×2
bash-alias ×1
permissions ×1
pipe ×1
python ×1
shell ×1
shell-script ×1
ubuntu ×1
vim ×1
windows-10 ×1