我在Ubuntu 12.04.1 LTS的bash shell中运行这个命令。 我试图一举删除[和]字符,也就是说,不必再次inputsed。 我知道方括号在正则expression式中有特殊含义,所以我通过预先加一个反斜杠来逃避它们。 我期待的结果只是string123但方括号仍然存在,我很想知道为什么! ~$ echo '[123]' | sed 's/[\[\]]//' [123]
我有一个文件,我试图通过使用尾巴-f阅读。 我想知道是否有办法让terminal输出一个实际的换行符而不是\ n字符。
如果我有一个进程PID X,我怎么能找出它运行在什么目录? 我可以看到ps aux | grep X ps aux | grep X它被调用的完整命令行。 但在这种情况下,它是./script.sh ,我想看看它正在运行的script.sh 。
对于Debian(Raspbian)来说,这是一个非常新的东西,而且我为这几天挣扎着。 我有一个启动脚本,我想在启动时执行。 我已经执行了下面的命令,使脚本可执行并将其默认参数添加到启动顺序中。 sudo chmod 755 /etc/init.d/testsam sudo update-rc.d testsam defaults 当试图testing脚本时,我执行以下操作: sudo /etc/init.d/testsam start 但是当这样做,我得到一个错误:无法执行/etc/init.d/testsam:没有这样的文件或目录。 我把脚本最小化到了最基本的地步,但还是没有一个真正理由的线索。 我希望有人能指出我正确的解决scheme? 这是目前的脚本。 #! /bin/bash # /etc/init.d/testsam case "$1" in start) #echo "starting script" ;; stop) #echo "stopping script" ;; *) #echo "Usage: /etc/init.d/testsam {start|stop}" exit 1 ;; esac exit 0 感谢您的帮助
在.bashrc设置variables时,我应该使用这个吗? export VAR=value 或者这会足够吗? VAR=value 究竟有什么区别(如果有的话)?
我需要每天在这台服务器上备份数据和configuration文件。 我需要保持: 每日备份一周 每周备份一个月 每月备份一年 之后的年度备份 所有这些都是通过每天从cron运行的shell脚本完成的。 这是在运行10年后备份文件的样子: blog-20050103.tar.bz2 blog-20060102.tar.bz2 blog-20070101.tar.bz2 blog-20080107.tar.bz2 blog-20090105.tar.bz2 blog-20100104.tar.bz2 blog-20110103.tar.bz2 blog-20120102.tar.bz2 blog-20130107.tar.bz2 blog-20130902.tar.bz2 blog-20131007.tar.bz2 blog-20131104.tar.bz2 blog-20131202.tar.bz2 blog-20140106.tar.bz2 blog-20140203.tar.bz2 blog-20140303.tar.bz2 blog-20140407.tar.bz2 blog-20140505.tar.bz2 blog-20140602.tar.bz2 blog-20140707.tar.bz2 blog-20140728.tar.bz2 blog-20140804.tar.bz2 blog-20140811.tar.bz2 blog-20140816.tar.bz2 blog-20140817.tar.bz2 blog-20140818.tar.bz2 blog-20140819.tar.bz2 blog-20140820.tar.bz2 blog-20140821.tar.bz2 blog-20140822.tar.bz2
在一个通用的,现代的Unix环境(比如GNU / Linux,GNU / Solaris或者Mac OS X)中,是否有一种很好的方法来确定哪个安装点和文件系统types是一个特定的绝对文件path? 我想我可以执行mount命令并手动parsing输出和string – 将其与我的文件path比较,但在此之前,我想知道是否有一个更优雅的方式。 我正在开发一个使用扩展属性的BASH脚本,并且希望使其能够为各种文件系统和主机环境做正确的事情(在很小的程度上它是可能的)。
最近有一个关于多个系统pipe理员以root身份工作的问题 ,并引用了sudo bash -l 。 我在google和SE上search了这个,但是我不明白sudo bash -l和sudo -i的区别。 从bash和sudo的手册页看来,区别可能在于sudo bash -l运行root用户的〜/ .bash_profile,〜/ .bash_login和〜/ .profile以及〜/ .bash_logout,而是从testing我自己看起来像运行正常用户的.bashrc而不是根。 我可能误解了〜expression式在手册页中引用的用户。 澄清差异和使用情况,将不胜感激。
说我有一个命令foo它采用文件名参数: foo myfile.txt 。 烦人的是, foo不会从标准input中读取。 而不是一个实际的文件,我想通过它的另一个命令的结果(实际上, pv ,这将捕获文件和输出一个进度计作为副作用)。 有没有办法做到这一点? 我的伎俩似乎没有任何东西可以做到。 (在这种情况下, foo是一个PHP脚本,我相信这个脚本是按顺序处理的)。 我正在使用Ubuntu和Bash 编辑对不起,有点不清楚的问题描述,但这是我想要的答案: pv longfile.txt | foo /dev/stdin 非常明显,现在我明白了。
当我打开terminal(在Mac OS X 10.5.8),然后input一个长的命令行: …当文字环绕时文本不会进入下一行: 此外,有时当我键入一个命令,然后退格(或向上箭头或^ U): 整条线路不会被删除,我不能退后一步: 这是一个已知的bash错误(在Mac OS X上)? 有没有修复? 更新: Juliano是正确的,问题是由我的PS1variables中错误地定界控制台代码序列造成的。 更改: export PS1='\[\033[1;34m\]\$\]\033[0m\] ' …在我的.bashrc中: export PS1='\[\033[1;34m\]\$\[\033[0m\] ' …解决问题。