Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。


3
ImageMagick在多个文件上
我convert使用以下命令使用ImageMagick将单个文件从BMP转换为PNG convert CD\ Front.bmp CD\ Front.png 我有很多这样的文件,因此我尝试了: for f in */*.bmp ; do convert $f ${f%bmp}png; done 但是此命令将永远挂起。 我究竟做错了什么?

3
跨壳反斜杠的处理
如何echo和printf在治疗反斜杠zsh,bash和其他贝壳? 在zsh下,我得到以下行为: $ echo "foo\bar\baz" foaaz $ echo "foo\\bar\\baz" foaaz $ echo 'foo\bar\baz' foaaz $ echo 'foo\\bar\\baz' foo\bar\baz 在bash下,情况似乎更加一致: bash$ echo "foo\bar\baz" foo\bar\baz bash$ echo 'foo\bar\baz' foo\bar\baz bash$ 但更具体而言:如何传递包含反斜杠的字符串,例如\\foo\bar\something: echo printf print 并获得完全相同的字符串?(在zsh和中bash)? 这是另一个在zsh中使用函数的实验: function foo { echo -E '$1' } $ foo \\here\is\some\path $1 我怎样才能只打印它\\here\is\some\path? 更新(注意:这已在Stephane的评论中得到回答) 我在zsh 5.0.2中尝试了以下方法: function …
9 bash  shell  zsh  quoting 

3
如何取消在另一个外壳(终端窗口或选项卡)中启动的作业?
如果我开始一个过程并在终端窗口中将其作为背景(例如ping google.com &),则可以使用kill %1(假设它是工作1)将其杀死。 但是,如果我打开另一个终端窗口(或选项卡),则后台进程未在下面列出,jobs并且无法使用直接杀死kill。 是否可以从另一个终端窗口或选项卡中终止此过程? 注意:我使用的是Xfce Terminal Emulator 0.4.3和bash(尽管如果解决方案存在于另一个通用shell中,但bash不存在,我也可以使用它)

3
通过换行符拆分命令输出?
我有一个返回多行的命令。为了进一步处理,我需要处理这些行中的每一行。 我当前的代码通过修改IFS(内部字段分隔符)来工作: ROWS=$(some command returning multiple lines) O=$IFS #save original IFS IFS=$(echo -en "\n\b") # set IFS to linebreak for ROW in ${ROWS[@]} do echo "$ROW" done IFS=$O #restore old IFS 我想知道,是否有更好的方法来访问多行输出中的单行,而无需修改IFS?尤其是我的脚本的可读性由于修改IFS而变差。 更新:我很难获得答案,例如choroba的答案: while IFS= read -r line ; do let var+=line #line 42 done << $(sqlite3 -list -nullvalue NULL …

2
使用交互式SSH在远程主机上运行命令(有条件)
我希望能够在每次登录远程主机时在当前交互式SSH会话中自动在该主机上运行命令。 就像是 ssh user@remotehost [run do.sh] 在哪里do.sh执行几个内务处理任务,然后重新附加到screen会话(当前,我do.sh在登录主机后手动运行)。 我不想添加它,.bashrc因为我是从其他计算机登录到该主机的,并且我不想do.sh在从该计算机登录时运行,所以我需要它是可选的。


2
外壳程序(例如bash)如何扩展通配符模式?
假设一个目录有100个文件,以字母“ a”开头。 如果我grep <some string> a*从终端执行a ,外壳将如何处理呢? 它将扩展正则表达式,按顺序获取每个文件中以a和grep开头的所有文件的列表吗?还是有其他方法? 假设我有一个以“ a”开头的上述文件名数组。如果我编写一个for循环并在shell脚本或ac程序中自己进行迭代,会花费更多/更少的时间吗?
9 bash  shell  wildcards 

3
“ mkdir foo; svn mv * foo”
我经常想对这个习语做一些变形: $ mkdir 2010 $ svn mv * 2010 当然,我会收到一个错误,因为该组也匹配2010: svn: Cannot copy path '2010' into its own child '2010/2010' 有没有办法替换"svn mv * 2010"做正确的事情的另一种单缸纸?

7
如何清理文件扩展名?
我有一个包含.MP3文件的目录,我想将扩展名更改为.mp3。最简单的方法是什么?我认为有些类似的事情: find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \; ...虽然我知道那是不对的。:)替换不正确,我不确定如何在in中同时使用a mv和sed命令。-execfind 我需要一个bash脚本吗?
9 shell  find  rename 

1
sh shell不支持$ @上的参数扩展吗?
我在AU上发布了一个问题的答案,我发现on的参数扩展$@不适用于shshell: <infile xargs -d'\n' sh -c 'echo "${@%%/*}"' _ 但它在中工作正常bash。这是sh外壳程序的预期行为吗,我如何在该处执行扩展? 此外,我知道使用-n1选项xargs我一次只能向命令传递一行,但是我对是否sh可以扩展很感兴趣$@: <infile xargs -d'\n' -n1 sh -c 'echo "${0%%/*}"' infile 包含: A1 /B1/C1 A 2/B2/C2 A3/B3/C3
8 bash  shell  dash 

1
bash进程替换为临时文件
例如,某些程序需要其文件可搜索objdump。 $ objdump -D -b binary -m i8086 <(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p) objdump: Warning: '/proc/self/fd/11' is not an ordinary file 让进程替换使用临时文件会很方便。 我可以在手册页中看到bash可以通过进程替换回退到临时文件,但是我可以明确要求他使用临时文件吗? 喜欢zsh的=()。 $ objdump -D -b binary -m i8086 =(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p) /tmp/zsh1u1Nrw: file format binary Disassembly of section .data: …

7
Bash awk命令带引号
我一直在努力寻找这个问题的答案。我正在编写一个快速脚本,以基于awk的输出运行命令。 ID_minimum=1000 for f in /etc/passwd; do awk -F: -vID=$ID_minimum '$3>=1000 && $1!="nfsnobody" { print "xfs_quota -x -c 'limit bsoft=5g bhard=6g $1' /home "}' $f; done 问题在于,该-c参数使用单引号引起来的命令,我无法弄清楚如何正确地对其进行转义,并且也$1无法扩展为用户名。 本质上,我只是想将其输出: xfs_quota -x -c 'limit bsoft=5g bhard=6g userone' /home xfs_quota -x -c 'limit bsoft=5g bhard=6g usertwo' /home 等等...
8 bash  shell  scripting 

6
检查是否存在多个目录
我要检查多个目录的存在,说dir1,dir2并且dir3,在工作目录。 我有以下 if [ -d "$PWD/dir1" ] && [ -d "$PWD/dir2" ] && [ -d "$PWD/dir3" ]; then echo True else echo False fi 但是我怀疑这样做有更优雅的方法。不要假定目录名称中存在模式。 目的是检查一些目录是否存在以及其他目录是否不存在。 我正在使用Bash,但首选可移植代码。

2
需要如何在POSIX Shell中重复字符的说明
关于堆栈溢出的以下答案, 如何在bash中重复一个字符? 强制采用一种可能的POSIX方式- 重复单个字符,如下所示。在此示例中,我们使用等号100次: printf %100s | tr " " "=" 我的问题是我不了解它是如何工作的,我希望使用简单的解释。请不要像阅读本手册那样发表评论,因为这样做不是很聪明,所以我问这个问题是因为我从未使用过tr,也从未见过这样的printf声明。
8 shell  posix  printf  tr 

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.