小编Qiu*_*fan的帖子

如何在 Linux 中列出所有命名空间中的所有网络链接

据我所知,在 Linux shell 环境中,我可以使用 列出任何特定命名空间中的网络链接ip,例如:

ip netns exec <namespace> ip link show

我的问题是:

如果我有多个 net 命名空间,如何用一个简单的命令列出所有命名空间中的所有链接?或者我必须编写一个脚本才能这样做?

linux ip networking containers linux-namespaces

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

在bash中退出管道

对于以下bash语句:

tail -Fn0 /tmp/report | while [ 1 ]; do echo "pre"; exit; echo "past"; done
Run Code Online (Sandbox Code Playgroud)

我得到了"pre",但没有退出bash提示符,然后如果我在/ tmp/report中输入内容,我可以退出这个脚本并进入bash提示符.

我认为这是合理的.'exit'使'while'语句退出,但'tail'仍然活着.如果输入的内容/tmp/report,'tail'将输出到管道,那么'tail'将检测管道是否关闭,然后'tail'退出.

  1. 我对吗?如果没有,有人会提供正确的解释吗?
  2. 是否可以在'while'语句中添加任何内容以立即退出整个管道语句?我知道我可以把尾巴的pid保存到一个临时文件中,然后在'while'中读取这个文件,然后杀掉尾巴.有更简单的方法吗?
  3. 让我扩大我的问题.如果在脚本文件中使用此尾部|是否可以同时执行以下项目?一个.如果输入了Ctrl-C或发出主shell进程的信号,主shell生成的主shell和各种子shell和后台进程将退出b.我可以从尾部退出|仅在触发器情况下,并保留其他子进程继续运行c.最好不要使用临时文件或管道文件.

bash shell pipe quit

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

如何使用 shell 验证 IPv6 地址格式?

在我的 shell 中,我需要检查字符串是否是有效的 IPv6 地址。

我找到了两种方法,对我来说它们都不够理想。

一个是http://twobit.us/2011/07/validating-ip-addresses/,而我想知道对于如此常见的要求是否必须如此复杂。

另一种是在shell脚本中扩展ipv6地址,这很简单,但对于Linux的主要发行版,sipcalc并不是一个常见的默认实用程序。

所以我的问题是,是否有一种简单的方法或实用程序可以使用 shell 验证 IPv6 地址?

提前致谢。

validation bash shell ipv6

6
推荐指数
1
解决办法
3909
查看次数

在Bash中,命令失败后如何不创建重定向输出文件

通常,我们可以将命令输出重定向到文件,如下所示:

cat a.txt >> output.txt
Run Code Online (Sandbox Code Playgroud)

正如我尝试的那样,如果cat失败了,output.txt仍然会创建,这不是我期望的。我知道我可以这样测试:

if [ "$?" -ne "0"]; then
    rm output.txt
fi
Run Code Online (Sandbox Code Playgroud)

但是,如果在执行output.txt之前已经存在此类问题,则可能会导致一些开销问题cat。所以我还需要存储output.txt状态before cat,如果在cat执行之前已经有这样的output.txt ,我不应该output.txt错误地rm ...但是在竞争条件下仍然可能存在问题,如果还有其他进程在此之前创建此output.txt怎么办我cat很紧密吗?

那么,有什么简单的方法可以使如果命令失败,重定向output.txt将被删除,甚至没有创建?

linux bash shell redirect io-redirection

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

为什么.vimrc中的函数会被自动调用?

据我所知,我们可以在.vimrc中定义函数,如下所示:

function Fun()
    do something here
endfunction
Run Code Online (Sandbox Code Playgroud)

然后我们可以这样称呼它:call Fun().

对于我的一个系统,我的.vimrc中只有函数定义,但是一旦进入vim,该函数总是被激活.为什么?

下面是我的vim的版本:

# vi --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Feb 17 2012 10:24:10)
Included patches: 1-411
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
Small version without GUI.  Features included (+) or not (-):
-arabic -autocmd -balloon_eval -browse +builtin_terms -byte_offset -cindent 
-clientserver -clipboard -cmdline_compl +cmdline_hist -cmdline_info -comments 
-cryptv -cscope -cursorshape -dialog -diff -digraphs -dnd -ebcdic -emacs_tags 
-eval -ex_extra -extra_search -farsi -file_in_path -find_in_path -float 
-folding -footer …
Run Code Online (Sandbox Code Playgroud)

vim function

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

如何忽略VIM键映射命令系列中的错误?

我正在编辑线移动的关键映射,如下所示:

vnoremap <silent> <C-j> :m '>+1<CR>gv
vnoremap <silent> <C-k> :m '<-2<CR>gv
Run Code Online (Sandbox Code Playgroud)

它们应该上下移动行块,并且在大多数情况下工作正常,除了文件的顶部和底部.

当我选择线1 2并输入ctrl-k时,确定它不能向上移动,而预期的行为是线1 2仍然在视觉模式中高亮显示.

当前的外观是,线1 2不再突出显示.我知道那是因为":m'< - 1"失败了,那么gv就不会被执行了.

所以我的问题是如何忽略这个错误以确保gv执行呢?或其他一些解决方案?

请注意,我知道解决方案linemovement.vim.它在两个独立的命令和一些函数中运行它们.虽然我认为这应该是一个轻量级的代码.

vim keymapping

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