Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

3
用sed模拟尾巴
我有一个小系统,数字仅限于二进制文件(bash,cp,cat,sed,...)。我没有tail命令,我想知道是否可以使用sed cat foo.txt | tail -n 10 我知道我可以用sed打印1-10行cat foo.txt | sed -n '1,10p',但是我将如何打印最后10行?
8 bash  sed 

4
将CSV转换为HTML表
我有一个Medical.csv文件,其行格式如下, field: 'participation.type', displayName: 'program_type', type: 'String',path:'participation' field: 'participation.program', displayName: 'program_name', type: 'String',path:'participation' 我想编写一个bash脚本,以将其动态转换为HTML表field,displayName并type作为标题。 将Csv2HtmlConverter.sh(通过在回答灵感转换CSV HTML表格使用到)是 echo "<table>" ; while read INPUT ; do echo "<tr><td>${INPUT//,/</td><td>}</td></tr>" ; done < Medical.csv ; echo "</table>" 对于上面的脚本的结果如下这是罚款,在一定程度上,但我想补充<th>field</th>,<th>displayName</th>动态。 <table> <tr><td>field: 'participation.type'</td><td> displayName: 'program_type'</td><td> type: 'String'</td><td>path:'participation'</td></tr> <tr><td>field: 'participation.program'</td><td> displayName: 'program_name'</td><td> type: 'String'</td><td>path:'participation'</td></tr> </table>

2
从期望日志中删除不可打印的字符?
如何从文件中删除以下字符序列?^[[64;8H,^[[?25h,^[[1;64r等或有希望避免增加他们摆在首位? 背景: 我正在为某些任务使用期望脚本的集合。 我正在收集的输出文件通常包含上述字符类型(如emacs / vi / cat -v中所示)。我已经尝试了许多类似以下的tr命令,但它只使[64; 8H等可见。 tr -dc '[:print:]\n' < input 编辑: 有问题的行从上面得到的结果 [1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
8 bash  expect  tr 

2
全新安装后重新安装应用程序?
我在使用Debian,我想重新分区驱动器并重新安装。全新安装后,是否有一种简单的方法来还原当前所有已安装的软件包? 我正在考虑通过制作备份应用列表来做到这一点: #generate list of installed packages dpkg -l | awk '{ print $2 }' ORS="\n" | tail -n +6 > reinstallList.txt 然后执行全新安装后,我应该可以执行以下操作: #install from backup at reinstallList.txt sudo apt-get install $(< reinstallList.txt) 有更好的方法吗?
8 bash  debian  apt  backup  dpkg 

2
重击和参数传递
我有以下简化的bash脚本 #!/bin/bash files=("$@") if [ "X$files" = "X" ]; then files=$HOME/print/*.pdf; fi for file in "${files[@]}"; do ls "$file"; done 如果我将参数(文件名)作为参数传递,则此脚本将打印正确的文件名。另一方面,如果我不传递参数,它将打印 /home/user/print/*.pdf: No such file or directory 为什么在这种情况下不能扩展文件名,我该如何解决?请注意,我使用files=("$@")and "${files[@]}"构造,因为我读到它比通常的“ files = $ *”更可取。


5
Bash:从URL确定图像尺寸的最快方法
我试图找出一种确定图像尺寸的快速方法。 我知道我可以获取图像,然后使用imagemagick确定图像的高度和宽度。我担心这可能不是最快的方法。 当我只需要很小的功能子集时,我还担心必须安装imagemagick。我在资源(CPU,RAM,存储)非常有限的嵌入式系统上。 有任何想法吗?

6
Bash:如何获取出现在变量内容中的第一个数字
如何获得第一个变量 我有一个变量: STR="My horse weighs 3000 kg but the car weighs more" STR="Maruska found 000011 mushrooms but only 001 was not with meat" STR="Yesterday I almost won the lottery 0000020 CZK but in the end it was only 05 CZK" 我需要获取数字: 3000 11 20
8 bash 

3
bash $ {VAR // search / replace}和奇怪的正则表达式行为
我正在尝试使用$ {VAR // search / replace}参数扩展对变量进行搜索和替换。我有一个相当漫长而邪恶的PS1,我想算出扩展后的大小。为此,我必须删除一堆我塞进其中的转义序列。但是,在尝试删除所有ANSI CSI SGR序列时,我遇到了语法问题。 鉴于我的PS1: PS1=\[\033]0;[\h] \w\007\]\[\033[1m\]\[\033[37m\](\[\033[m\]\[\033[35m\]\u@\[\033[m \]\[\033[32m\]\h\[\033[1m\]\[\033[37m\]\[\033[1m\])\[\033[m\]-\[\033[1m\](\[\033[m \]\t\[\033[37m\]\[\033[1m\])\[\033[m\]-\[\033[1m\](\[\033[m\]\[\033[36m\]\w\[\033[1m \]\[\033[37m\])\[\033[35m\]${git_branch}\[\033[m\]\n$ (是的,我知道病了...) 我正在尝试做: # readability search='\\\[\\033\[[0-9]*m\\\]' # do the magic sane="${PS1//$search/}" 但是这些似乎有点贪婪[0-9](几乎就像[0-9]被当作​​一个.替代): echo "${PS1//$search/}" \[\033]0;[\h] \w\007\]\n$ 如果我删除*,然后更改[0-9]为[0-9][0-9](这是更说明性的),那么我将接近预期的结果: $ search='\\\[\\033\[[0-9][0-9]m\\\]' $ echo "${PS1//$search/}" \[\033]0;[\h] \w\007\]\[\033[1m\](\[\033[m\]\u@\[\033[m\]\h\[\033[1m \]\[\033[1m\])\[\033[m\]-\[\033[1m\](\[\033[m\]\t\[\033[1m\])\[\033[m\]-\[\033[1m \](\[\033[m\]\w\[\033[1m\])$(git_branch)\[\033[m\]\n$ 为什么*(零个或多个)做疯狂的事情?我在这里想念什么吗?如果我通过sed传递相同的正则表达式,则会得到预期的结果: echo $PS1 | sed "s/$search//g" \[\033]0;[\h] \w\007\](\u@\h)-(\t)-(\w)$(git_branch)\n$

3
在几个命令上获得意外的彩色输出
我刚刚将此添加到我的.bashrc彩色输出less: # Colorize less man pages. export LESS_TERMCAP_md=$'\e[01;34m' export LESS_TERMCAP_us=$'\e[01;33m' export LESS_TERMCAP_so=$'\e[01;44;37m' export LESS_TERMCAP_mb=$'\e[01;31m' export LESS_TERMCAP_mr=$'\e[01;35m' export LESS_TERMCAP_me=$'\e[00m' export LESS_TERMCAP_ue=$'\e[00m' export LESS_TERMCAP_se=$'\e[00m' ...突然之间,某些命令(似乎与显示环境变量有关)产生了与这些新设置匹配的颜色输出。我逃避错了吗?还是这是故意行为?我尝试了其他几种转义形式,但不适用于less。 例如,这是env命令的屏幕截图。 php -i 也具有彩色输出,但仅在环境变量部分上。
8 bash  colors  xterm 

2
如何更改subshel​​l的提示
我正在尝试创建一个简单的脚本,该脚本除其他外将创建一个子外壳: #!/bin/sh # setup "${@:-$SHELL}" # teardown 问题是:我需要更改默认提示,因此例如: $#默认的shell $ ./myscript (myscript)的$#子shell (myscript)的$退出 $ 我尝试更改PROMPT和PS1,但这些都不起作用。我怎样才能做到这一点? PS .:如果可能,我需要一个既适用于Bash又适用于ZSH的解决方案。
8 bash  zsh  prompt 

4
如果没有sudo,为什么我们不能以其他用户身份执行命令列表?
在其他论坛中已经以不同的方式提出了这个问题。但是还没有一个很好的解释,为什么不能用bash进行以下操作。 #!/bin/bash command1 SWITCH_USER_TO rag command2 command3 通常,建议的方法是 #!/bin/bash command1 sudo -u rag command2 sudo -u rag command3 但是为什么不能在bash执行bash脚本期间的某个时候更改为其他用户,并以其他用户身份执行其余命令?
8 bash  sudo  su 

3
优化`while`循环
我创建了一个迷你脚本,只需按一下按钮即可重新启动Raspberry Pi。该脚本仅使用wireingPi(gpio命令)将引脚0(Raspberry Pi标准编号顺序中的引脚17)设置为输入,然后读取该值直至为1(即按下或按住按钮时)。 这是我的脚本: gpio mode 0 in while (true) do if [ `gpio read 0` -eq 1 ] then echo password | sudo -S reboot break fi done & 该脚本工作正常,一切正常。 但是,对于那些不熟悉Pi的人来说,它具有非常有限的硬件资源(包括512 MB的内存),可以像我正在使用的那样轻松地被循环使用。 我要在这里实现的目标是找到另一种方法让bash找出值何时从更改为0,1而不必为此专门指定一个无条件循环。这可行吗?请分享您的想法。


1
使用终端的自动完成路径功能输入到Shell脚本
我想编写一个脚本,该脚本是:(1)获取一个路径,使用户能够使用制表符自动完成,然后(2)从用户获取文件名,然后(3)在该路径下创建一个扩展名为的文件。文本文件。 我的问题是:我该怎么办1.?我如何告诉bash要求输入“自动完成”路径,最好是部分路径(例如〜/ x /)已默认填充? 注意:路径几乎总是包含空格。

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.