Bash允许使用: cat <(echo "$FILECONTENT")
Bash还允许使用: while read i; do echo $i; done </etc/passwd
结合前两个可以使用: echo $FILECONTENT | while read i; do echo $i; done
最后一个问题是它创建了子shell,而在while循环结束后,变量i不再被访问.
我的问题是:
如何实现这样的目标:while read i; do echo $i; done <(echo "$FILECONTENT")或者换句话说:我怎样才能确定i循环中存活?
请注意我知道封闭while语句{}但这并不能解决问题(想象一下你想在函数中使用while循环并返回i变量)
我注意到我$HOME/.local在我的机器上,似乎这个目录主要包含与python相关的东西,这里是它的完整列表(它有点长).
我想问一下这个目录创建了哪个动作?我想它是pip install --user -r requirements.txt(下面是我已经弄明白的命令),但我想知道是否还有其他工具存储数据?我想如果是pip这样easy_install可以做到这一点或不做?您是否知道使用此目录的任何其他工具,或者它是pip专属的?
以下命令显示从该目录导入了一些python模块,最后一个的输出在这里(它有点长):
marek@ubuntu:~$ python -c 'import mock; print mock.__file__'
/home/marek/.local/lib/python2.7/site-packages/mock.pyc
marek@ubuntu:~$ echo $PYTHONPATH
marek@ubuntu:~$ tree .local/ | grep mock
? ??? mock-1.0.1.egg-info
? ??? mock.py
? ??? mock.pyc
? ? ??? mock.py
? ? ??? mock.pyc
marek@ubuntu:~$ pip show -f mock
---
Name: mock
Version: 1.0.1
Location: /home/marek/.local/lib/python2.7/site-packages
Requires:
Files:
Cannot locate installed-files.txt
marek@ubuntu:~$ python -c 'import sys, pprint; pprint.pprint(sys.path)'
['', …Run Code Online (Sandbox Code Playgroud) 我需要找到子串中最长的重复字符串.假设我有字符串"bannana"
维基百科说:
在计算机科学中,最长的重复子串问题是找到至少发生两次的字符串的最长子串的问题.在带有字符串"ATCGATCGA $"的图中,最长的重复子串是"ATCGA"
所以我假设对于字符串"bannana",有两个同样长的子串(如果不正确我请):"an"和"na".
维基百科还说,为此目的使用后缀树.在这里更具体的是引用如何做到(这似乎比维基百科上的定义更明白):
构建一个后缀树,然后找到至少有2个后代的最高节点.
我发现了几种后缀树的实现.以下代码取自此处:
use strict;
use warnings;
use Data::Dumper;
sub classify {
my ($f, $h) = (shift, {});
for (@_) { push @{$h->{$f->($_)}}, $_ }
return $h;
}
sub suffixes {
my $str = shift;
map { substr $str, $_ } 0 .. length($str) - 1;
}
sub suffix_tree {
return +{} if @_ == 0;
return +{ …Run Code Online (Sandbox Code Playgroud) 我知道cmake是构建生成器.这意味着它可以根据CMakeLists.txt的指令生成适当的构建(makefile,Visual Studio项目等).但我不明白我认为有两个相关的事情:
为什么cmake-gui中有两个按钮"Configure"和"Generate"?在我读过的命令行教程(例如这个)中,通常的过程是用一个cmake命令完成的.
什么是cmake世界的缓存?AFAIK是按下"配置"按钮时的状态,但未按下"生成"按钮.但为什么这有用呢?按"配置"后弹出的所有变量是什么意思?为什么我应该编辑它们?是不是唯一允许通过CMakeLists.txt完成的配置?
谢谢
是否可以从 PDF 文件中提取有关特定字体/字体大小/字体颜色等的文本?我更喜欢 Perl、python 或 *nix 命令行实用程序。我的目标是从 PDF 文件中提取所有标题,这样我就可以在单个 PDF 中获得一个很好的文章索引。
如何将图形保存到文件中并将其打印显示?我试过了:
#!/usr/bin/gnuplot -p
date=system("date +%F_%T | sed 's/:/-/g'")
set term png
set output date.".png"
set term x11
set out
plot sin(x)
Run Code Online (Sandbox Code Playgroud)
PS:有可能保存在gnuplot窗口中显示的图形吗?我注意到有复制到剪贴板按钮但没有保存.
标签完成对我有用:
In [84]: a="string"
In [85]: b = ["str", "ing"]
Run Code Online (Sandbox Code Playgroud)
字符串的标签完成在这里工作:
In [86]: a.
a.capitalize a.decode a.expandtabs a.index a.isdigit a.istitle a.ljust a.partition a.rindex a.rsplit a.splitlines a.swapcase a.upper
a.center a.encode a.find a.isalnum a.islower a.isupper a.lower a.replace a.rjust a.rstrip a.startswith a.title a.zfill
a.count a.endswith a.format a.isalpha a.isspace a.join a.lstrip a.rfind a.rpartition a.split a.strip a.translate
Run Code Online (Sandbox Code Playgroud)
列表的标签完成在这里工作:
In [86]: b.
b.append b.count b.extend b.index b.insert b.pop b.remove b.reverse b.sort
Run Code Online (Sandbox Code Playgroud)
字符串的标签完成在这里不起作用:
In [87]: b[0].
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方法:
In [88]: c = b[0]
In [89]: c.
c.capitalize c.decode …Run Code Online (Sandbox Code Playgroud) shExpMatch()和之间有什么区别dnsDomainIs()
定义说:
// dnsDomainIs()
// Evaluates hostnames and returns true if hostnames match. Used mainly to match and exception individual host names.
// Example:
if (dnsDomainIs(host, ".google.com")) return "DIRECT";
// shExpMatch()
// Attempts to match hostname or URL to a specified shell expression and returns true if matched.
// Example:
if (shExpMatch(url, "*vpn.domain.com*") ||
shExpMatch(url, "*abcdomain.com/folder/*"))
return "DIRECT";
Run Code Online (Sandbox Code Playgroud)
如果我理解正确的话
shExpMatch() - 可以使用一些通配符
dnsDomainIs() - 可以使用确切的名称
是shExpMatch()优越的dnsDomainIs()
我使用以下行(希望这是最好的做法,如果不能纠正我)来处理命令行选项:
#!/usr/bin/bash
read -r -d '' HELP <<EOF
OPTIONS:
-c Enable color output
-d Enable debug output
-v Enable verbose output
-n Only download files (mutually exclusive with -r)
-r Only remove files (mutually exclusive with -n)
-h Display this help
EOF
# DECLARE VARIABLES WITH DEFAULT VALUES
color=0
debug=0
verbose=0
download=0
remove=0
OPTIND=1 # Reset in case getopts has been used previously in the shell
invalid_options=(); # Array for invalid options
while getopts ":cdvnrh" opt; do
echo "Actual opt: …Run Code Online (Sandbox Code Playgroud) 我有两个一个衬垫:
在第一.我预计sh -c "..."在5秒后杀死命令但它一直存在直到超时退出(持续10秒)
timeout -k 5s 10s sh -c 'sleep 20s && echo "Long running command which is visible under: ps -elf | grep sleep during whole life (10s) time of timeout command"'
Run Code Online (Sandbox Code Playgroud)
第二.我预计超时将以返回代码124退出(因为sh -c "..."命令仍在运行),而命令sh -c "..."将继续运行(因为没有设置超时的kill选项)
timeout 10s sh -c 'sleep 20s && echo "Long running command which is visible under: ps -elf | grep sleep during whole life (10s) time of timeout command"'
Run Code Online (Sandbox Code Playgroud)
似乎传递给超时的参数运行准确的时间作为超时命令本身(它没有被提前杀死也没有超时),那么kill选项的目的是什么呢?