标签: bash

~/.bashrc 不是来自新的 lxterminal 窗口

我在 ~/.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 窗口上执行。

bash environment-variables bashrc

3
推荐指数
1
解决办法
2025
查看次数

循环 bash 命令,直到输出不再包含字符串

如何循环bash命令直到输出不再包含字符串,然后打印循环停止输出的时间?watch命令不可用。

bash

3
推荐指数
1
解决办法
7408
查看次数

为什么“killall killall”不起作用?

可能的重复:
意外的killall行为

如果killall killall从终端运行命令(我使用 KDE 4 的 Konsole),它说它找不到任何进程。 killall运行,寻找一个被调用的进程killall,应该找到它自己并杀死它,但它没有这样做。为什么?

linux terminal bash shell ubuntu

3
推荐指数
2
解决办法
1055
查看次数

如何使用bash从大文本文件中删除行

我的 CentOS 中有一个巨大的文本文件(日志文件),我想删除其中的顶部部分,每天可能有几千行。(或者可能只是分成两部分)

我搜索了这个站点,发现大多数使用 grep、sed 来删除行但输出到另一个文件。不确定是否有可能使用 shell 脚本(bash)来更新文件?代替:

sed current file > new file
cp new file > current file
Run Code Online (Sandbox Code Playgroud)

谢谢!

bash grep awk sed

3
推荐指数
2
解决办法
6854
查看次数

如何在bash命令返回的结果中保持换行

比方说,我可以以用户 foo 的身份 rsh 到机器 XXX,然后在执行后:

$result=$(rsh -l foo XXX "ls");
echo $result;
Run Code Online (Sandbox Code Playgroud)

发现结果中去掉了换行符,一行一行的看不到结果。那么如果我想让换行符输入返回的结果,我该怎么办?

bash

3
推荐指数
1
解决办法
3895
查看次数

wget - if / else 下载条件?

如果文件具有相同的基本名称,我希望 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文件。有任何想法吗?

  • (语法-解释
    :-D:仅从此域
    下载 -I:仅从域的此子文件夹下载
    -r:递归(遵循链接和目录结构)
    -l 1:仅遵循 1 个链接深度
    -nc:无破坏 = 下载仅当文件不存在时
    -A:仅接受/下载所有 *.ogg 和 *.mp3(丢弃必要的 html 文件)
    (-i(可选在 URL 前面):从 URL 读取 URL,但也下载其他像 .png 之类的文件类型,您一开始不想要/之后丢弃它们)

bash download batch wget filetype

3
推荐指数
1
解决办法
3854
查看次数

使用命令行的输出作为命令的参数

可能的重复:
如何在 linux 中用另一个命令的结果替换一个命令?

我能够解析我的命令输出,所以它只显示我感兴趣的文件名。

我的问题是,我希望能够获取输出并将其用作svn diff.

svn diff /filename_from_output/
Run Code Online (Sandbox Code Playgroud)

linux bash command-line

3
推荐指数
1
解决办法
3051
查看次数

如何以非 root 用户身份运行 init 脚本?

我将此文件放在 /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 用户身份运行脚本,我该怎么做?

谢谢!

terminal bash ubuntu

3
推荐指数
1
解决办法
5603
查看次数

*nix 中通配文件名子字符串的最简单方法是什么?

我想做一些事情,比如作为通配符匹配的一部分,并像正则表达式匹配一样使用它。命令可能看起来像这样

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 的答案也很好。

unix bash

3
推荐指数
1
解决办法
150
查看次数

3
推荐指数
1
解决办法
193
查看次数