我在 ~/.bashrc 中添加了一些行,例如
export JAVA_HOME=/opt/jdk1.6.0_22
Run Code Online (Sandbox Code Playgroud)
我来源:
$ source ~/.bashrc
$ env | grep 'JAVA'
JAVA_HOME=/opt/jdk1.6.0_22
Run Code Online (Sandbox Code Playgroud)
然后我在我家中名为 scripts 的文件夹下创建了一个基本的 bash 脚本:
#!/bin/bash
echo 'start'
echo $(env | grep HOME)
echo $(env | grep LOGNAME)
echo $(env | grep JAVA)
echo 'exiting'
sleep 5
exit
Run Code Online (Sandbox Code Playgroud)
现在,如果我直接启动它,我会得到预期的输出
$ cd ~/scripts
$ bash 'myScript.sh'
start
HOME=/home/foo/.config
LOGNAME=foo
JAVA_HOME=/opt/jdk1.6.0_22
exiting
Run Code Online (Sandbox Code Playgroud)
但是,我需要使用以下命令以不同的方式调用它,不幸的是它不能以相同的方式工作:
$ lxterminal --command "bash /home/foo/scripts/myScript.sh"
start
HOME=/home/foo XDG_CONFIG_HOME=/home/foo/.config
LOGNAME=foo
exiting
Run Code Online (Sandbox Code Playgroud)
似乎 .bashrc 不是以这种方式获得的。我也尝试过 .profile ,但结果相同。使用上述命令调用时,是否有另一个由 lxterminal 提供的文件?
我需要这个命令的原因是因为我想通过添加到开始菜单的链接/启动器启动这些我自己的脚本,并且它们必须在 lxterminal 窗口上执行。
可能的重复:
意外的killall行为
如果killall killall从终端运行命令(我使用 KDE 4 的 Konsole),它说它找不到任何进程。
killall运行,寻找一个被调用的进程killall,应该找到它自己并杀死它,但它没有这样做。为什么?
我的 CentOS 中有一个巨大的文本文件(日志文件),我想删除其中的顶部部分,每天可能有几千行。(或者可能只是分成两部分)
我搜索了这个站点,发现大多数使用 grep、sed 来删除行但输出到另一个文件。不确定是否有可能使用 shell 脚本(bash)来更新文件?代替:
sed current file > new file
cp new file > current file
Run Code Online (Sandbox Code Playgroud)
谢谢!
比方说,我可以以用户 foo 的身份 rsh 到机器 XXX,然后在执行后:
$result=$(rsh -l foo XXX "ls");
echo $result;
Run Code Online (Sandbox Code Playgroud)
发现结果中去掉了换行符,一行一行的看不到结果。那么如果我想让换行符输入返回的结果,我该怎么办?
如果文件具有相同的基本名称,我希望 wget 更喜欢某种文件类型而不是另一种文件类型。
例如:
如果foo.ogg可用,请不要下载foo.mp3
到目前为止,我使用 wget 抓取/自动下载的方式(如果有人感兴趣):
wget -Dfoo.com -I /folder/ -r -l 1 -nc -A.ogg,.mp3 http://www.foo.com/folder/
Run Code Online (Sandbox Code Playgroud)
但这当然让我得到 .mp3 和 .ogg文件。有任何想法吗?
可能的重复:
如何在 linux 中用另一个命令的结果替换一个命令?
我能够解析我的命令输出,所以它只显示我感兴趣的文件名。
我的问题是,我希望能够获取输出并将其用作svn diff.
svn diff /filename_from_output/
Run Code Online (Sandbox Code Playgroud) 我将此文件放在 /etc/init/proxyserver.conf 中,该文件在启动时执行此脚本(Ubuntu 11.10):
description "Run code for ProxyServer"
start on runlevel [23]
script
cd /home/mark/selenium-client
exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111
end script
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我在终端中执行此操作:
ps aux | grep selenium
Run Code Online (Sandbox Code Playgroud)
它返回这个屏幕:
root 783 0.0 2.3 680584 23688 ? Ssl Apr18 4:45 java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111
Run Code Online (Sandbox Code Playgroud)
但是我想以非 root 用户身份运行脚本,我该怎么做?
谢谢!
我想做一些事情,比如作为通配符匹配的一部分,并像正则表达式匹配一样使用它。命令可能看起来像这样
cat foo_* | python magic.py > magic_*
Run Code Online (Sandbox Code Playgroud)
如果我的文件名是
foo_biz
foo_baz
Run Code Online (Sandbox Code Playgroud)
我希望输出在名为
magic_biz
magic_baz
Run Code Online (Sandbox Code Playgroud)
有效地改变文件名foo_*来magic_*。
是否可以在 shell 命令中执行此操作?我正在使用bash,但其他 shell 的答案也很好。
emacs &
Run Code Online (Sandbox Code Playgroud)
分叉但进程附加到外壳
nohup emacs &
Run Code Online (Sandbox Code Playgroud)
类似的东西有效,但似乎制作了某种日志文件
alt+f2 到底在做什么?