小编gkb*_*986的帖子

开始显示除文件最后一行之外的所有内容:命令替换和标准I/O重定向

我一直试图让head实用程序显示除标准输入的最后一行之外的所有内容.我需要的实际代码是类似的东西cat myfile.txt | head -n $(($(wc -l)-1)).但那没用.我在达尔文/ OS X上做这个,它没有head -n -1那个可以获得类似输出的漂亮语义.

这些变化都不起作用.

cat myfile.txt | head -n $(wc -l | sed -E -e 's/\s//g')
echo "hello" | head -n $(wc -l | sed -E -e 's/\s//g')
Run Code Online (Sandbox Code Playgroud)

我测试了更多的变化,特别是发现这个工作:

cat <<EOF | echo $(($(wc -l)-1))
>Hola
>Raul
>Como Esta
>Bueno?
>EOF
3
Run Code Online (Sandbox Code Playgroud)

这里的东西也比较简单.

echo "hello world" | echo $(($(wc -w)+10))
Run Code Online (Sandbox Code Playgroud)

这个可以理解地给我一个非法的行计数错误.但它至少告诉我head程序在将内容传递给子shell /命令替换之前没有消耗标准输入,这是一种远程可能性,但我还是想排除它.

echo "hello" | head -n $(cat && echo 1)
Run Code Online (Sandbox Code Playgroud)

如何解释的行为head,并 …

unix bash pipe

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

如何仅在vim的当前选项卡中关闭所有窗口

我知道:qa关闭所有缓冲区和窗口并退出vim.很明显,我可以使用:q退出给定选项卡中的单个窗口/拆分.但考虑一下我在当前标签中有三个窗口以及一堆相邻的打开标签的情况.我想关闭当前选项卡中的三个窗口,但不要退出vim或其他相邻选项卡.

我该怎么做?我浏览了vim帮助文件,但似乎没有直接的选择.我想可以使用vimscript获得这样的功能,但我想在得出结论之前确定它是唯一的选择.

如果vim不直接支持它并且某人已经非常出色地为它编写插件,我很想知道它.

vim

13
推荐指数
2
解决办法
2013
查看次数

Python 2.7中的`id`函数,`is`运算符,对象标识和用户定义的方法

Python 2.7中的代码结果让我感到矛盾.该is运营商应该与对象的身份工作,所以是id.但是当我查看用户定义的方法时,他们的结果会有所不同.这是为什么?

py-mach >>class Hello(object):
...  def hello():
...    pass
...
py-mach >>Hello.hello is Hello.hello
False
py-mach >>id(Hello.hello) - id(Hello.hello)
0
Run Code Online (Sandbox Code Playgroud)

我从Python数据模型的描述中发现以下摘录有些用处.但它并没有真正使一切清楚.id如果每次重新构造用户定义的方法对象,为什么函数返回相同的整数?

获取类的属性(可能通过该类的实例),如果该属性是用户定义的函数对象,未绑定的用户定义的方法对象或类方法对象,则可以创建用户定义的方法对象.当属性是用户定义的方法对象时,仅当从中检索它的类与存储在原始方法对象中的类相同或派生类时,才会创建新的方法对象; 否则,原始方法对象按原样使用.

python identity equality python-2.7

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

Bash数组和路径名扩展:奇怪的输出

我在我的主目录的两个文件.phpsh,并.php_history使用他们的名字我想测试路径名的扩展以及它如何影响在bash关联数组.我遇到的结果似乎很奇怪,我无法解释它们.我在这里尝试了很多变化.

 >my_array_filename_var=(".phpsh"=10 ".php_history" =20)
 >echo ${my_array_filename_var[.phpsh]}
 ERROR
 >echo "${my_array_filename_var[.phpsh]}"
 ERROR
 # This one below understandably doesn't work. But I was pulling my hair out.
 >echo "${my_array_filename_var[".phpsh"]}"
 ERROR
 echo "${my_array_filename_var[\".phpsh\"]}"
 ERROR
 >echo "${my_array_filename_var[.phpsh]}"
 ERROR
 >echo "${my_array_filename_var[phpsh]}"
 .phpsh=10
 >echo "${my_array_filename_var[php_history]}"
 .phpsh=10
 >echo "${my_array_filename_var[\.php_history]}"
 ERROR
Run Code Online (Sandbox Code Playgroud)

ERROR令牌代表

bash: .phpsh: syntax error: operand expected (error token is ".phpsh")
Run Code Online (Sandbox Code Playgroud)

是否有一些规则说我的关键数组的键中没有点字符?bash中的路径名扩展如何发挥作用?

arrays bash pathname

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

从函数指针中减去1

我看到,在这条线signal.h/usr/include/sys/我的Mac上.基于它用作函数的返回类型signal,我希望SIG_ERR是一个指向函数的指针,该函数接受整数输入并返回void.但宏扩展SIG_ERR似乎从函数指针类型中减去1,我发现这很奇怪.C如何解析它?

#define SIG_ERR         ((void (*)(int))-1)  
Run Code Online (Sandbox Code Playgroud)

c linux signals

0
推荐指数
1
解决办法
155
查看次数

标签 统计

bash ×2

arrays ×1

c ×1

equality ×1

identity ×1

linux ×1

pathname ×1

pipe ×1

python ×1

python-2.7 ×1

signals ×1

unix ×1

vim ×1