Articles of printf

使用排除列表查找在bash中查找的目录

现在,在你认为“之前已经完成”的情况下,请继续阅读。 和大多数试图findbash脚本的人一样,你最终将脚本硬编码为一行命令,但最终会在接下来的几个月/几年里编辑这个东西,所以你最终希望你做对了第一次。 我正在编写一个小的备份程序来做备份目录,并且需要find它们,而不是需要排除的directorie列表。 说起来容易做起来难。 让我来设置舞台: #!/bin/bash BasePath="/home/adesso/baldar" declare -a Iggy Iggy=( "/cgi-bin" "/tmp" "/test" "/html" "/icons" ) IggySubdomains=$(printf ",%s" "${Iggy[@]}") IggySubdomains=${IggySubdomains:1} echo $IggySubdomains exit 0 现在在这个结尾你得到/ cgi-bin,/ tmp,/ test,/ html,/图标这certificate了这个概念的作用,但现在需要进一步我需要使用find来searchBasePath并search只有一个级别的所有子目录,并排除列表中的子目录… 如果我手工input它将是: find /var/www/* \( -path '*/cgi-bin' -o -path '*/tmp' -o -path '*/test' -o -path '*/html' -o -path '*/icons' \) -prune -type d 我应该也许想循环到每个子目录,并做同样的事情…我希望你明白我的观点。 所以我试图做的似乎是可能的,但我有一个问题, printf“,%s”不喜欢我使用所有这些发现-path或-o选项。 […]

perl-mechanize遇到限制 – 开始几个debugging尝试

你好亲爱的开发者 首先 – 抱歉作为新手..我是相当新的Perl。 我试图学习一些关于Perl的同时玩代码和片段。 今天我有一个脚本,运行一个机械化的工作..但有点不跑到最后。 Waht的目标是:我想获得一些wesite-sceenshots的缩略图。 以及我运行这个脚本,这是写的做一些网站的截图我也起来和运行mozrepl。 最奇怪的是输出 – 见下面…问题:我应该改变脚本为什么我输出? #!/usr/bin/perl use strict; use warnings; use WWW::Mechanize::Firefox; my $mech = new WWW::Mechanize::Firefox(); open(INPUT, "<urls.txt") or die $!; while (<INPUT>) { chomp; print "$_\n"; $mech->get($_); my $png = $mech->content_as_png(); my $name = "$_"; $name =~s/^www\.//; $name .= ".png"; open(OUTPUT, ">$name"); print OUTPUT $png; sleep (5); […]

在汇编器中打印浮点数

我试图从调用printf函数的汇编程序打印浮点值。 它工作正常的string和整数值,但无法打印浮游物。 这是一个工作代码的例子: global main extern printf section .data message: db "String is: %d %x %s", 10, 0 end_message: db ".. end of string", 0 section .text main: mov eax, 0xff mov edi, message movsxd rsi, eax mov rdx, 0xff mov rcx, end_message xor rax, rax call printf ret string是:255 ff ..string的结尾 所以,参数是通过寄存器传递的: edi包含一个格式化string的地址, rsi和rdx包含相同的数字以十进制和hex格式打印, […]

Bash printf前缀

在Bash中,我可以使用printf来格式化一个string输出,如下所示: – (注意我为string添加了一个后缀W ,这不包括在填充中) $ printf "Blah %11.1fW\n" 123 456 78965 5 56 Blah 123.0W Blah 456.0W Blah 78965.0W Blah 5.0W Blah 56.0W 如果我想在string前缀,我可以这样做: – $ printf "Blah £%11.1f\n" 123 456 78965 5 56 Blah £ 123.0 Blah £ 456.0 Blah £ 78965.0 Blah £ 5.0 Blah £ 56.0 但是请注意,这是如何在前缀之前应用填充的。 如何(如果可能的话)我会使用printf来填充前的值,所以输出如下: – Blah £ 123.0 […]

壳GNU-Screen -X的东西问题

OPTIONS="java -Xms1024M -Xmx1024M -jar craftbukkit.jar" PROCESS=server01 screen -dmS $PROCESS $OPTIONS nogui # Starting the application screen -x $PROCESS -X stuff `printf "stop\r"` # Closing the application screen -x $PROCESS # Attaching to the terminal of the application 应用程序在一开始工作正常,但是我得到的问题stuff 'printf "stop/r"'我刚启动似乎不工作,等待一段时间,然后尝试用上面的命令停止它。 但奇怪的是,如果我做了screen -x $PROCESS并分离( ctrl-A & ctrl-D ),然后使用Stop命令,它确实可以工作。 所以有没有办法来stuff printf没有screen -x $PROCESS ?

如何在多个线程中使用printf()

我正在实现一个使用不同内核的multithreading程序,并且许multithreading被同时执行。 每个线程都进行printf()调用,结果是不可读的。 我怎样才能使printf()primefaces,以便一个线程中的printf()调用不会与另一个线程中的printf()调用冲突?

(x86_64 linux程序集)为什么使用float格式string的printf只能与rsp%0x10 = 0一起工作

我在x86_64 linux汇编程序上写了一个printf调用的问题。 如果我尝试在rsp % 0x10 != 0时打印一个double值,那么printf将会出现段错误。 看看我的代码(nasm语法): [bits 64] global _start extern printf extern pow section .data printf_format db '%lf', 10, 0 section .text _start: mov rbp, rsp sub rsp, MEM_VAL mov rax, 0x4000000000000000 mov qword [rsp], rax movsd xmm0, qword [rsp] mov rdi, printf_format mov rax, 1 call printf mov rax, 60 mov […]

在bash中redirectC程序输出的问题

我编写了一个程序在C中使用printf发送消息到标准输出,我有麻烦redirect到一个文件(从bash运行)的文件。 我试过了: ./program argument >> program.out ./program argument > program.out ./program >> program.out argument ./program > program.out argument 在每种情况下,都会创build文件program.out,但它仍为空。 执行结束后,文件大小为0。 如果我在执行程序时忽略了redirect: ./program argument 然后,使用printf发送到stdout的所有消息都显示在terminal中。 我有其他的C程序,我没有这样redirect输出的问题。 这是否与程序本身有关? 有争论传递? 哪里应该找问题? 关于C程序的一些细节: 它不会从标准input读取任何内容 它使用BSD Internet域套接字 它使用POSIX线程 它使用sigaction为SIGINT信号分配一个特殊的处理函数 它发送大量换行符到标准输出(对于那些你认为我应该冲洗) 一些代码: int main(int argc, char** argv) { printf("Execution started\n"); do { /* lots of printf here */ } while (1); […]

printf在程序出口处刷新

我很想知道程序退出时printf()函数的flush是如何工作的。 我们来看下面的代码: int main(int ac, char **av) { printf("Hi"); return 0; } 在这种情况下, printf()如何设法将其缓冲区刷新到stdout ? 我想这是平台依赖,所以让我们来看看Linux。 它可以使用gcc的__attribute__((dtor))但是标准库将依赖于编译器。 我认为这不是它的工作方式。 任何解释或文件链接表示赞赏。 谢谢。

向printf()添加换行符会改变代码的行为

出于某种原因,将\n添加到printf()改变以下代码的行为。 没有\n的代码会打印(null)而\n的代码会导致Segmentation fault 。 Printf.c #include <stdio.h> int main(int argc, char* argv[]){ printf("%s", argv[1]); } Printf.c – 输出 $ gcc -o Printf Printf.c $ ./Printf (null) Printf_Newline.c #include <stdio.h> int main(int argc, char* argv[]){ printf("%s\n", argv[1]); } Printf_Newline.c – 输出 $ gcc -o Printf_Newline Printf_Newline.c $ ./Printf_Newline Segmentation fault (core dumped) 我很好奇明白这背后的原因。