据我所知,在 Linux shell 环境中,我可以使用 列出任何特定命名空间中的网络链接ip
,例如:
ip netns exec <namespace> ip link show
我的问题是:
如果我有多个 net 命名空间,如何用一个简单的命令列出所有命名空间中的所有链接?或者我必须编写一个脚本才能这样做?
对于以下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'退出.
在我的 shell 中,我需要检查字符串是否是有效的 IPv6 地址。
我找到了两种方法,对我来说它们都不够理想。
一个是http://twobit.us/2011/07/validating-ip-addresses/,而我想知道对于如此常见的要求是否必须如此复杂。
另一种是在shell脚本中扩展ipv6地址,这很简单,但对于Linux的主要发行版,sipcalc并不是一个常见的默认实用程序。
所以我的问题是,是否有一种简单的方法或实用程序可以使用 shell 验证 IPv6 地址?
提前致谢。
通常,我们可以将命令输出重定向到文件,如下所示:
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将被删除,甚至没有创建?
据我所知,我们可以在.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) 我正在编辑线移动的关键映射,如下所示:
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.它在两个独立的命令和一些函数中运行它们.虽然我认为这应该是一个轻量级的代码.
bash ×3
shell ×3
linux ×2
vim ×2
containers ×1
function ×1
ip ×1
ipv6 ×1
keymapping ×1
networking ×1
pipe ×1
quit ×1
redirect ×1
validation ×1