跑步时
top -n1 | head
Run Code Online (Sandbox Code Playgroud)
终端的光标消失。跑步top -n1
能把它带回来。
在 Ubuntu 16.04 和 CentOS 7.5中gnome-terminal
和tilix
中测试。
运行top -n1 | tail
没有这个问题,所以我认为,top
输出结束时的某些内容让光标重新出现,而在打印时不会执行head
。
是什么原因造成的,我怎样才能更优雅地找回光标?
我有一个多用户设置 (Ubuntu)(同时登录不同 TTY 的用户)。
当我从一个帐户使用 连接到 NordVPN 时nordvpn connect
,所有用户现在都通过该 VPN 连接到互联网。
如何以某种方式分离用户的网络,这意味着当我连接到 VPN 时,只有当前用户受到影响,并且该用户的所有连接都应该使用 VPN?
nordvpn
只是一个包装器openvpn
,可以使用 直接连接openvpn
,因此纯粹的openvpn
解决方案也会有所帮助。sudo
. 我有下面的代码来替换多个文件中的一些字符串,但是 for 循环正在检查第一个文件而不是执行 perl 脚本。下面是我的代码
if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ]
then
for file in $(./zebu.work.post_opt/ZEBU_CTO_FT_MOD*);
do
perl -i -p -e 's/input/inout/g' $file;
perl -i -p -e 's/output/inout/g' $file;
perl -i -p -e 's/wire.*\n/tran\(i0,\ o\);/g' $file;
perl -i -p -e 's/assign.*\n//g' $file;
done
fi
Run Code Online (Sandbox Code Playgroud) 新手在这里...只是尝试使用将名称中包含 2 个点的文件名更改为单个点
rename 's/.././' filename
Run Code Online (Sandbox Code Playgroud)
该文件已消失,但我不认为它已被删除,因为内存中仍有相同数量的空间。这个文件会被发送到哪里?
我正在尝试获取文件的最后一行,然后将其删除:
阅读该行:
sed -n '$p' file
# or
tail -n 1 file
Run Code Online (Sandbox Code Playgroud)
删除该行:
sed -i '$d' file
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是有没有办法只用一个命令来做到这一点?
这在某种程度上是我上一个问题的后续:将多个命令粘贴到终端停止在用户输入
将以下内容粘贴到终端按预期工作:
(
echo test1
# some comment
echo test2
)
Run Code Online (Sandbox Code Playgroud)
但是按向上箭头重复该命令会给出以下明显错误的命令:
( echo test1 echo test2; )
Run Code Online (Sandbox Code Playgroud)
粘贴不带注释的相同内容并按向上箭头会给出预期的命令:
(echo test1; echo test2)
Run Code Online (Sandbox Code Playgroud)
一个简单的解决方法是;
在每行之前添加注释。
但为什么会这样呢?这是一个错误吗?
我使用 bash。gnome-terminal 和 tilix 中的行为相同。
将一些连续的命令粘贴到终端停止使用用户输入的命令,例如:
read VAR
echo $VAR
Run Code Online (Sandbox Code Playgroud)
或者
select VAR in 1 2 3; do break; done
echo $VAR
Run Code Online (Sandbox Code Playgroud)
echo $VAR
没有被粘贴/执行。
将所有命令放在一行上虽然有效:
read VAR; echo $VAR
Run Code Online (Sandbox Code Playgroud)
但是当有更多命令跟随时,这不是首选。
为什么会出现这种情况以及如何解决?
我的用例是在服务文档中有一些重复的命令。
我当然可以编写一个脚本,但这不是我打算做的,并且在仅具有读取访问权限的系统上可能无法实现。
a=Y
b=Y
c=Y
if condition like $a=='y' then execute all this statements******
cat *.tar.gz | tar -xzvf - -i
echo "5"
tar -xvf *.tar.gz
echo "9"
rm -rf *.tar.gz
elif($b=='y') condition ***
cp $source $destination
cp $source/conf/* $destination/conf
else (**** )
some commands
Run Code Online (Sandbox Code Playgroud) 我有一个数组,其中每个元素都可能包含另一个变量。数组分配来自文件,如下所示:
FILE_CLEANUP_DIR_ARR=($(cat cleanup.list | sed '/^[[:blank:]]*$/d' | sed '/^[#]/d'))
Run Code Online (Sandbox Code Playgroud)
如何使用扩展变量恢复数组。
TARGET_DIR=/SOMEROOTDIR
FILE_CLEANUP_DIR_ARR[0]
从字面上看具有价值$TARGET_DIR/SOMESUBDIR0
FILE_CLEANUP_DIR_ARR[1]
从字面上看具有价值$TARGET_DIR/SOMESUBDIR1
如何将此 FILE_CLEANUP_DIR_ARR 恢复为扩展变量,如下所示。
FILE_CLEANUP_DIR_ARR[0] = /SOMEROOTDIR/SOMESUBDIR0
FILE_CLEANUP_DIR_ARR[1] = /SOMEROOTDIR/SOMESUBDIR1
示例代码。不工作。
i=0
for CDIR in "${FILE_CLEANUP_DIR_ARR[@]}";
do
FILE_CLEANUP_DIR_ARR[i]="$CDIR"
((i++))
done
Run Code Online (Sandbox Code Playgroud)