标签: bash

GNU Screen 影响我的终端的显示

我正在使用 urxvt 并运行屏幕。我的问题:

  • 下划线 - 我运行的一些脚本有彩色输出。如果我只是在 urxvt 中运行它们,它们很好,但是在屏幕中时,它们带有下划线并且难以阅读
  • 回滚 - 在屏幕中的窗口和运行命令之间切换时,每个窗口的回滚都搞砸了。它不仅是当前窗口的回滚,而是结合了所有的回滚。所以如果我从 vim 转到另一个窗口并向上滚动,我会看到我的 vim 窗口。
  • 退出 Vim - 当我仅在 urxvt 中退出 vim 时,它会隐藏编辑器,我可以看到在调用 vim 之前运行的提示和命令。在屏幕内部,当我退出 vim 时,会在 vim 编辑器下方提示我。我希望它像不运行 urxvt 时一样隐藏编辑器。

有任何想法吗?

# terminfo and termcap for nice 256 color terminal                                                                                                                                                                  
# allow bold colors - necessary for some reason
attrcolor b ".I" 

# erase background with current bg color 
defbce "on" 

#terminfo rxvt-256color 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
#terminfo screen 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

# Skip the startup message
startup_message off

term xterm

screen  
title VIM …
Run Code Online (Sandbox Code Playgroud)

bash vim urxvt gnu-screen

5
推荐指数
1
解决办法
3389
查看次数

如何从上一个文件继续 scp 传输

我正在使用 scp 传输大文件,但出现此错误:

write failed: Broken pipe lost connection.
Run Code Online (Sandbox Code Playgroud)

现在我需要重新启动 scp 但告诉它从停止的地方继续。我查看了联机帮助页,但无法弄清楚如何执行此操作,并且没有交互模式或方法可以跳过目标中已经存在的文件。

unix bash scp

5
推荐指数
1
解决办法
1291
查看次数

撤消 bash 自动完成

可能的重复:
Bash shell 中的键盘快捷键

有什么办法可以撤销由 bash 完成的自动完成?例如:

$> ls first/second/t
<Presses tab>
$> ls first/second/third
<realizes it should be fourth and not third>
<presses backspace key till initial prompt is reached>
$> ls first/second/
Run Code Online (Sandbox Code Playgroud)

有什么办法可以用一些很酷的组合替换令人讨厌的退格部分,从而取消最近的自动完成?

unix bash command-line

5
推荐指数
1
解决办法
782
查看次数

PS 或 /proc/ 中未列出的进程

我试图弄清楚如何操作一个相当大的 Java 程序“prog”。如果我转到它的 /bin/ 目录并配置它的 setenv.sh 和 prog.sh 以使用本地目录和我当前的用户帐户。然后我尝试通过“./prog.sh start”运行它。以下是 prog.sh 的所有相关部分:

USER=(my current account)
_CMD="/opt/jdk/bin/java -server -Xmx768m -classpath "${CLASSPATH}" -jar "${DIR}/prog.jar""
case "${ACTION}" in
    start)
        nohup su ${USER} -c "exec ${_CMD} >>${_LOGFILE} 2>&1" >/dev/null &
        echo $! >${_PID}
        echo "Prog running. PID="`cat ${_PID}`
        ;;
    stop)
        PID=`cat ${_PID} 2>/dev/null`
        echo "Shutting down prog: ${PID}
        kill -QUIT ${PID} 2>/dev/null
        kill ${PID} 2>/dev/null
        kill -KILL ${PID} 2>/dev/null
        rm -f ${_PID}
        echo "STOPPED `date`" >>${_LOGFILE}
        ;;
Run Code Online (Sandbox Code Playgroud)

当我实际执行 ./prog.sh start 时,它会启动。但是我在进程列表中根本找不到它。我也不能使用 shell 脚本使用的相同命令手动杀死它。但是我可以说它正在运行,因为如果我执行 ./prog.sh …

linux bash process shell-script

5
推荐指数
1
解决办法
1万
查看次数

Bash shell:如何协调可移植配置文件和 GUI 终端启动类型(登录或交互)?

为了“正确”实现我喜欢的 shell 的标准配置bash,以便在多个平台上使用,在处理与他们选择的 shell 启动类型(登录或交互式)不一致的终端时,我遇到了一些困惑)。

Bash 启动文件

从 bash 手册中,我确定了启动文件和它们来源的顺序/案例之间的区别(/etc/profile~/.bash_profile~/.bash_login、 和~/.profile登录 shell,以及~/.bashrc交互式非登录 shell)。该文档建议您将特定于 bash 的登录配置存储~/.bash_profile~/.bashrc. 手册本身甚至建议添加if [ -f ~/.bashrc ]; then source ~/.bashrc; fi~/.bash_profile文件中,以便登录 shell 继承您的交互式 shell 设置。

从我在手册和各种在线论坛/文档中读到的内容来看,将非 bash 特定的登录配置抽象为明智之举,~/.profile因为其他 shell 可以获取此文件。对于除了 bash 之外还可能使用 Bourne shell 的人来说,这可能是一个边缘情况(这在我的情况下不太可能),但这似乎是一个好习惯。

到目前为止,这一切看起来都非常简单和合乎逻辑,尤其是在各种 shell 启动类型之间的区别很明显的环境中:在命令行是主要界面的系统或终端上,登录 shell 是您的主要会话 shell ,交互式 shell 是在该会话中启动的后续 shell,而您的非交互式 shell 是运行脚本的 shell。

真正令人困惑的是,当您的 shell 从已通过系统身份验证的 GUI 环境中的终端启动时,登录 shell 的构成是什么? …

terminal bash shell gui bashrc

5
推荐指数
1
解决办法
1292
查看次数

如何更改我的提示以包含框画 Unicode 字符?

我怎样才能得到一个$PS1包含方框图的字符?

我正在运行 bash,如果它有所作为。

bash command-line ps1

5
推荐指数
1
解决办法
4351
查看次数

用于对目录中的每个子目录执行操作的 Bash 脚本

假设我有一个目录结构,如

Dir1/
  SubDir1/
  SubDir2/
  SubDir3/
Run Code Online (Sandbox Code Playgroud)

我希望能够将“Dir1”传递给 bash 脚本,然后对它的所有子目录(SubDir1、SubDir2、SubDir3)执行操作。

谢谢你的帮助!

script bash

5
推荐指数
1
解决办法
2万
查看次数

删除所有早于 X 天的文件

所以我有一个 cron 设置,每小时将一个文件夹备份到一个 tarball 中。我想在我使用的 shell 脚本中添加大约三天后自动删除文件的功能,这样我就没有大量的文件。

我该怎么办?谢谢。

bash shell cron rm

5
推荐指数
1
解决办法
3042
查看次数

我是否正确使用 sed 来执行此条件替换?有没有更好的办法?

我有一个大约 3200 行长的以空格分隔的文件。每行包含 7 个以上的字段。

我想要做的是编辑文件,sed以便在字段 5 中包含某个变量的每一行都将其字段 1 更改为 X。

我在想的是做这样的事情:

for variable in `cat word.list.file`  
do  
sed 's/line_with_$variable_in_field5/replace_field1_with_X/g' old.file > new.file  
cp new.file old.file  
done
Run Code Online (Sandbox Code Playgroud)

这样对吗?有没有更好的办法?

我需要帮助的是填写sed命令或寻找替代方法来完成同样的事情。

如果能让事情变得更容易,我可以轻松地将空格分隔的文件转换为逗号分隔的文件。

如果需要澄清,请告诉我。

unix bash sed

5
推荐指数
1
解决办法
2439
查看次数

获取最后一个进程的pid的最简单方法?

例如,如何做到这一点:

$ job1 &
$ p1=$LASTPID
$ job2 &
$ p2=$LASTPID
$ wait $p1 $p2
Run Code Online (Sandbox Code Playgroud)

linux bash

5
推荐指数
1
解决办法
7030
查看次数

标签 统计

bash ×10

unix ×3

command-line ×2

linux ×2

shell ×2

bashrc ×1

cron ×1

gnu-screen ×1

gui ×1

process ×1

ps1 ×1

rm ×1

scp ×1

script ×1

sed ×1

shell-script ×1

terminal ×1

urxvt ×1

vim ×1