我正在尝试创建一个脚本来检测目录是否存在,如果不存在,则创建它.
我怎样才能做到这一点?
我做了一些挖掘并发现了一条线索:
test -d directory
Run Code Online (Sandbox Code Playgroud)
...将返回true
或false
取决于目录是否存在.
但是我该怎么把这个绑在一起mkdir
呢?
我想知道如何从cmd提示符打开时从python脚本中输入变量?我知道使用c会做类似的事情:
int main( int argc, char **argv ) {
int input1 = argv[ 0 ]
int input2 = argv[ 1 ]
.....
}
Run Code Online (Sandbox Code Playgroud)
如何在python中实现同样的结果?
假设我想对目录中的所有文件调用某个命令,并设置一个监视来对在该目录中创建的所有文件调用该命令。如果我做:
while( ( sdi = readdir( d )) != NULL ) { ... }
closedir( d );
/* Files created here will be missed */
inotify_add_watch( ... );
Run Code Online (Sandbox Code Playgroud)
那么某些文件可能会丢失。如果我inotify_add_watch()
在 之前调用readdir()
,文件可能会被执行两次(这将需要相当多的基础设施来防止执行两次,而且似乎边缘情况很难处理)。是否有一种简单的方法可以避免记录循环期间处理的所有文件的名称readdir
并将它们与结构中返回的名称进行比较inotify_event
?我可以最大限度地减少必要的比较量:
while( ( sdi = readdir( d )) != NULL ) { ... }
inotify_add_watch( ... );
while( ( sdi = readdir( d )) != NULL ) { /* record name */ ... }
closedir( d );
Run Code Online (Sandbox Code Playgroud)
通常第二个readdir()
循环不会执行任何操作,但这感觉像是一个糟糕的黑客。
受这个问题的启发,任何人都可以解释以下行为吗?
$ echo "-uus" | grep -wo '[0]*' && echo matched -uus matched $ echo "-uus" | grep -o '[0]*' && echo matched matched $ grep --version | sed 1q grep (GNU grep) 2.5.1
特别是,为什么第二个grep成功,但没有产生输出?为什么第一个命令有两行输出?我可以理解输出的第二行,但我不明白第一行.
通常,您实际上并未在vim中编辑文件.如果您运行vim foo
,编辑,编写和退出,vim取消链接foo
并创建一个新文件和一个名为的新链接foo
.但是,如果文件有多个链接,则vim
实际修改该文件.例如:
$ ls -i foo
19428852 foo
$ vi foo
$ ls -i foo
19428857 foo
$ ln foo bar
$ vi bar
$ ls -i bar
19428857 bar
Run Code Online (Sandbox Code Playgroud)
我一直在寻找一种实际编辑文件的方法,似乎有两种选择.使用ed
或使用vim
但确保在编辑之前至少有两个指向该文件的链接.我想问题是学术性的,因为如果只有一个链接,vim创建一个新文件并不重要,如果在编辑过程中创建了链接,vim似乎做了正确的事情,但我很好奇:
是否可以让vim始终编辑文件,而不是创建一个新文件?
假设如下:
class A{ virtual void f() = 0; };
class B{ virtual void f() = 0; };
Run Code Online (Sandbox Code Playgroud)
我能以某种方式做到以下几点吗?
class C : public A, public B
{
virtual void A::f(){ printf("f() from A"); }
virtual void B::f(){ printf("f() from B"); }
};
Run Code Online (Sandbox Code Playgroud)
所以现在我能做到???
A* pa = new C();
pa->f(); // prints f() from A;
B* pb = (B*)pa;
pb->f(); // prints f() from B;
Run Code Online (Sandbox Code Playgroud)
谢谢!!!
如何使VIM始终在命令模式下自动完成文件名?当我键入例如":cd/ww [Tab]"时它工作正常,但如果我想打开一个文件并输入":o/ww [Tab]",它会插入"^ I"字符而不是完成.
假设一行文字如下:
$x = ( frobnicate( foo( bar( $x, $y )[ 1 ]))[ 1 ]);
光标位于'frobnicate'的'f'上,我想要抓住包含对frobnicate的调用的文本.(也就是说,一切都是第三个右括号.我当然可以这样做:
y3f)
或者以交互方式进行
vf);;y
但这些都不具吸引力.(我不想手动计算'3',也不要重复发现直到我到达终点.)有没有一种简单的方法来完成从'f'到匹配的关闭paren的移动?我在想像v_i'内部词'运动命令.
integer, parameter :: m = -2147483648
Run Code Online (Sandbox Code Playgroud)
导致编译器错误:“整数太大了”,但是
integer, parameter :: m = -2147483647 - 1
Run Code Online (Sandbox Code Playgroud)
似乎工作并产生正确的结果。我认为这是因为编译器在否定它之前检查 2147483648 并溢出整数类型。虽然减 1 hack 似乎可以进行所需的初始化,但是否有“最佳实践”方法可供使用?
我想在系统关闭电子邮件ID时发送电子邮件.我有CentOS 6.4.以下是我的脚本.
cat /ect/init.d/sendshtmail
#!/bin/bash
EMAIL="example@example.com"
SHUTDOWNSUBJECT="["`hostname`"] - System Shutdown"
SHUTDOWNBODY="This is an automated message to notify you that "`hostname`" is shutting down.
LOCKFILE=/var/lock/subsys/SystemEmail
echo "${SHUTDOWNBODY}" | mutt -s "${SHUTDOWNSUBJECT}" ${EMAIL}
Run Code Online (Sandbox Code Playgroud)
它有适当的许可.手动运行时,它运行良好.我刚将它符号链接到/etc/rc0.d/文件夹.通过发出以下命令.
ln -s /etc/init.d/sendshtmail /etc/rc0.d/K00sendshtmail
Run Code Online (Sandbox Code Playgroud)
但是脚本在关机期间没有发送任何电子邮件.提前致谢.