Questions tagged «quoting»

字符串通常用引号分隔,这引起了处理包含引号的字符串的问题。

2
如何正确摆脱bash中的感叹号?
今天,我在尝试对Twitter的密码生成器进行编码时被捕。 import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9)) 90个字符。由于有很多可用空间,因此我决定提高标准并使之也可执行。 echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 139个字符。不错,除了在惊叹号上明显的b子声。 badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg bash: !/usr/bin/python\nimport: event not found 讨厌的感叹号。“让我们逃脱吧,”我想!我毕竟有一个备用角色。 echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 明显... badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print …

4
用`mv`将换行符添加到文件名中
这是一个严重的问题。我测试了一些awk脚本,并且我需要名称中带有换行符的文件。 是否可以使用来在文件名中添加换行符mv? 我现在可以用touch: touch "foo bar" 通过触摸,我为每个副本和粘贴添加了换行符。但是我不能fooReturnbar在shell中写。 如何重命名文件以在文件名中包含换行符? 编辑2015/06/28; 下午07:08 要添加换行符,zsh我可以使用Alt+Return


3
重命名名称中带有引号'的文件
我有点问题。一位客户委托我从一台真正的旧服务器上迁移网站。不知道他们是怎么到达那里的,但是有一些文件'名。有什么办法可以重命名文件吗?mv似乎并不能解决问题。 ls 显示为 90843_O\\'ConnorPaul_GeneralManager.jpg 当我尝试 mv 90843_O\\'ConnorPaul_GeneralManager.jpg 90843_O_ConnorPaul_GeneralManager.jpg 它>在新行中不执行任何操作,就好像在等待更多输入。 如果我尝试 mv 90843_O\'ConnorPaul_GeneralManager.jpg 90843_O_ConnorPaul_GeneralManager.jpg 我得到错误 mv:无法统计'90843_O \'ConnorPaul_GeneralManager.jpg':没有此类文件或目录 此外,有没有简单的方法来改变\',以_在某个文件夹中的所有文件?
11 rename  quoting 

2
带有引号的ssh命令
我有一个奇怪的错误,就是我找不到任何东西。我想使用以下命令更改用户注释。 $ sudo usermod -c "New Comment" user 这将在登录到服务器时起作用,但我想在20多个服务器上实现自动化。通常,我能够使用列表并遍历服务器并运行命令,但在这种情况下会出现错误。 $ for i in `cat servlist` ; do echo $i ; ssh $i sudo usermod -c "New Comment" user ; done serv1 Usage: usermod [options] LOGIN Options: lists usermod options serv2 Usage: usermod [options] LOGIN Options: lists usermod options . . …
11 shell  ssh  quoting 

2
将带有引号和双引号的参数传递给bash脚本
目前,我有: #!/bin/bash screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015' echo eval 'stuff '"'"$@"'"'\015' 但是当我将脚本称为: # script.sh asd "asd" 'asd' 我的论点传递为:asd asd asd 然后我得到输出: eval stuff 'asd asd asd'\015 我除外:asd“ asd”'asd' 如何更改脚本以将所有引号与所有引号一起传递?
11 bash  shell  quoting 

2
如何使用包含'和'的命令创建别名
几篇文章之前,有人问如何以百分比显示内存。有人回复: free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }' 我想知道是否可以将此命令转换为〜/ .bashrc中的别名。但是别名的语法是: alias aliasname='command' 我怎样才能做到这一点?该命令包含'和"。我尝试了不同的方法,但是没有用。这有可能吗?我想念什么吗?
10 bash  quoting  alias 

4
为什么cut用bash而不是zsh失败?
我用制表符分隔的字段创建一个文件。 echo foo$'\t'bar$'\t'baz$'\n'foo$'\t'bar$'\t'baz > input 我的以下脚本名为 zsh.sh #!/usr/bin/env zsh while read line; do <<<$line cut -f 2 done < "$1" 我测试一下。 $ ./zsh.sh input bar bar 这很好。但是,当我将第一行更改为调用时bash,它将失败。 $ ./bash.sh input foo bar baz foo bar baz 为什么这会失败bash并起作用zsh? 其他疑难解答 在shebang中使用直接路径而不是env产生相同的行为。 用管道echo代替而不使用here-string <<<$line也会产生相同的行为。即echo $line | cut -f 2。 使用awk的,而不是cut 作品的两个壳。即<<<$line awk '{print …

1
用全局模式定义的变量替换Bash
以下示例说明了该问题。为什么FILENAME在使用替换时回显并被视为图案时打印正确? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

6
删除名称中带有空格的文件
我正在尝试删除名称中带有空格的所有文件。我正在使用以下命令。但这给我一个错误 命令: ls | egrep '. ' | xargs rm 在这里,如果我仅使用ls | egrep '. '命令,它将为我提供所有文件名,文件名中带有空格。但是,当我尝试将输出传递给rm时,所有空格(前导或尾随)都会被删除。因此我的命令未正确执行。 关于如何删除名称中至少有一个空格的文件的任何指针?
10 shell  quoting  rm  xargs 

4
正则表达式使用\\与\
为什么 grep e\\.g\\. <<< "this is an e.g. wow" 和 grep e\.g\. <<< "this is an e.g. wow" 做同样的事情? 如果添加第三个斜杠,则结果也相同。但是,一旦我添加了第四个斜杠,它将不再起作用。这与旧的考试题有关。它询问带有两个反斜杠的那个是否可以输出带有“ eg”的行,我本来以为这行不行,但是我尝试确定并且确实如此。有什么解释?

2
创建字符串时将执行字符串中的Bash命令,而不是稍后使用时
我对shell脚本比较陌生,但是几乎完成了一个使用lftp程序的脚本。我遇到问题的脚本部分是当我创建一长串命令(以分隔;)时。 for var in something do ... commands_to_run+="echo Result is `tail -n 1 $somefile`;" done 我注意到的是,tail包裹在反引号中的程序在for循环迭代时正在运行,但是稍后在脚本中调用命令字符串时却不在运行。 不幸的是,$ somefile的内容目前还无法检查。如何在需要时(而不是在创建字符串时)执行命令?

2
包含括号的文件名错误
当我试图从更改文件名old.file(1).gz来new.file.gz,它说语法错误,我使用Ubuntu 12.04。 mv old.file(1).gz new.file.gz bash: syntax error near unexpected token `('
10 bash  shell  quoting 


1
sudo -u用户名-s“ cmd arg”返回找不到命令
我曾经执行命令: sudo -u elasticsearch -s "ulimit -Hn" 并且它返回了ulimit -Hn的值,这是用户elasticsearch看到的,直到我在Ubuntu 11.10上尝试了它。在那里返回: /bin/bash: ulimit -Hn: command not found 我尝试了一些不同的命令,当我使用参数时,我总是得到“找不到命令”: $ sudo -u elasticsearch -s "ls all.sh" /bin/bash: ls all.sh: command not found 关于如何执行需要参数通过的命令的任何想法sudo?
10 sudo  quoting 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.