我正在使用Java语言中的ProcessBuilder类启动与Cygwin捆绑在一起的SSH实用程序。一切都很好。我通过SSH连接到linux服务器,可以运行命令并读取输出。
然而,无论何时返回输出,只有在登录到服务器并运行命令后才会发生,例如directory like ls,返回如下内容:
InputStream: root@myserver:/scripts/common# ls
InputStream: [00m[00mA1-4.yaml[00m [01;32mscip-1.2.0.linux.x86_64.gnu.opt.qso
我以为我终于找到了解决我的问题的办法,因为我不够聪明,不足以删除“清理旧内核”所不需要的内核/标题,这多亏了byobu。它对内核非常有用(谢天谢地,因为这是它的名字),但是对于头包来说,它工作得不太好。它似乎只删除了通用包,根本不触及基本包。
示例:
# dpkg -l | grep linux-header
ii linux-headers-4.4.0-101 4.4.0-101.124 all Header files related to Linux kernel version 4.4.0
我看到了下面的shell脚本。我想我知道它在做什么,但我仍然不明白使用这么多重定向和文件描述符的目的是什么?例如,exec 3>&1、do something 2>&1 1>&3和exec 3>&-。
#-Open file descriptor (fd)
exec 3>&1
#-Create a form and then store data to $VALUES variable
VALUES=$(dialog \
--keep-tite \
--ok-label "Submit" \
我读过几篇文章(man -k不返回结果)和第一次运行mandb (什么都没有更新),然后是mandb -c (7438 manual pages were added.),仍然
$ apropos compilation compilation: nothing appropriate.
但
$ MANWIDTH=120 man objdump | grep -B 5 compilation
DESCRIPTION
objdump displays information about one or more object files. The options control
例如:
$ ls -aF
./ ../ bin/
$ cd tin # with a tee, not bee
bin
$ pwd
/home/user/bin
换句话说,cd猜测我真正的意思是cd bin,并且成功了(嗯?)相应地更改当前目录。我没有在man bash或巴什参考手册中发现这种行为。
我希望Bash生成一个错误,将一些信息写入标准错误,如果没有找到与dir参数匹配的目录(考虑到扩容),则保持当前目录不变。
FYI
$ type cd
cd is a shell builtin
$ ps -p $
PID TTY TIME CMD
46959 pts/8
下面的代码将导致'if‘语句提前退出,而不是在'if’块中执行'echo‘命令。我想知道为什么这只发生在'if‘块,而不是在脚本的主要部分。注意:我理解将':=‘改为’:‘将解决问题--我并不想修复这个问题,我希望了解'if’块的执行环境之间的区别,它首先导致了问题的发生。
#!/bin/bash
if true; then
VAR=${$1:='val'}
echo "This does not run"
fi
VAR=${$1:='val'}
echo