小编pLu*_*umo的帖子

运行`top -n1 | 时光标消失 头`

跑步时

top -n1 | head
Run Code Online (Sandbox Code Playgroud)

终端的光标消失。跑步top -n1能把它带回来。

在 Ubuntu 16.04 和 CentOS 7.5中gnome-terminaltilix中测试。


运行top -n1 | tail没有这个问题,所以我认为,top输出结束时的某些内容让光标重新出现,而在打印时不会执行head

是什么原因造成的,我怎样才能更优雅地找回光标?

top terminal gnome-terminal cursor

12
推荐指数
2
解决办法
1531
查看次数

如何将 OpenVPN 客户端的连接限制为单个系统用户?

我有一个多用户设置 (Ubuntu)(同时登录不同 TTY 的用户)。

当我从一个帐户使用 连接到 NordVPN 时nordvpn connect,所有用户现在都通过该 VPN 连接到互联网。

如何以某种方式分离用户的网络,这意味着当我连接到 VPN 时,只有当前用户受到影响,并且该用户的所有连接都应该使用 VPN?


  • nordvpn只是一个包装器openvpn,可以使用 直接连接openvpn,因此纯粹的openvpn解决方案也会有所帮助。
  • 用户通过sudo.
  • 我对脚本解决方案没问题。

networking vpn multiuser openvpn

9
推荐指数
1
解决办法
5015
查看次数

for循环在bash中不起作用

我有下面的代码来替换多个文件中的一些字符串,但是 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)

bash for

7
推荐指数
1
解决办法
383
查看次数

错误重命名命令后的文件位置

新手在这里...只是尝试使用将名称中包含 2 个点的文件名更改为单个点

rename 's/.././' filename
Run Code Online (Sandbox Code Playgroud)

该文件已消失,但我不认为它已被删除,因为内存中仍有相同数量的空间。这个文件会被发送到哪里?

regular-expression rename

7
推荐指数
1
解决办法
534
查看次数

如何弹出(读取和删除)文件的一行?

我正在尝试获取文件的最后一行,然后将其删除:

阅读该行:

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)

这是有效的,但是有没有办法只用一个命令来做到这一点?

sed text-processing

6
推荐指数
2
解决办法
1014
查看次数

粘贴到终端,包括评论问题

这在某种程度上是我上一个问题的后续:将多个命令粘贴到终端停止在用户输入


将以下内容粘贴到终端按预期工作:

(
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 中的行为相同。

bash terminal clipboard

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

在用户输入时将多个命令粘贴到终端停止

将一些连续的命令粘贴到终端停止使用用户输入的命令,例如:

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)

但是当有更多命令跟随时,这不是首选。


为什么会出现这种情况以及如何解决?

我的用例是在服务文档中有一些重复的命令。
我当然可以编写一个脚本,但这不是我打算做的,并且在仅具有读取访问权限的系统上可能无法实现。

shell terminal clipboard user-input

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

如果我的条件为真,如何在 bash 脚本中运行多个命令

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)

shell bash shell-script

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

如何扩展包含变量的数组元素?

我有一个数组,其中每个元素都可能包含另一个变量。数组分配来自文件,如下所示:

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)

linux shell bash ksh

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