所以我有这个命令行工作。 find . -type f |xargs ls -lS |head -20 事情是我只想输出为文件大小和名称。 我试过了: find . -type f -printf '%s %p\n' |xargs ls -lS |head -20 但是这给了我一堆'不能访问[inode],没有这样的文件或目录'的错误。 我的目标是打印目录中最大的20个文件,而不是使用ls。
我使用/ bin / bash(OS X标准GNU bash,版本3.2.57(1) – 版本(x86_64-apple-darwin15)中的printf版权所有(C)2007 Free Software Foundation,Inc. #!/bin/bash latest_version=\ $((curl -s http://java.com/en/download/installed8.jsp 2>/dev/null || wget -q -O – http://java.com/en/download/installed8.jsp) | grep 'latest8' |sed -E "s/.*= //" |tr -d "';") echo $latest_version printf "%s \n" $latest_version 我想得到一个string“1.8.0_102”(截至2016/7/24) 由此可见 #echo 1.8.0_101 #printf 8.0_101 我想使string红色,脚本将在OS X和Linux中运行,所以我不想使用回声。 为什么我不能通过printf获取1.8.0_101? 还有更多这是什么问题在下面? printf "Get the latest Java \033[1;31m […]
我有这个代码: str1= "a"; str2= "b"; sprintf(string, "0 %s %s\n", str1, str2); string然后包含: “0 ab” 而不是(我想要的): “0 ab “ 我该如何解决这个问题? 注意:我把varstring的引用放在“里面”,这样你就可以理解这个情况了。 编辑: 解决的问题我加了1的大小,它的工作。 我不完全明白为什么,但解决了
上面的代码不会给出任何警告或错误,但父级不会打印使用pipe道传递的string。 任何想法? pid_t pid; int fd[2]; int num_bytes_read; char buffer[80]; pipe (fd); pid=fork(); if (pid == 0) {/*Son*/ fclose(stdout); close(fd[0]); dup(fd[1]); printf ("write in pipe\n"); fflush(stdout); } else { /*Parent*/ close (fd[1]); num_bytes_read = read (fd[0], buffer, sizeof (buffer)); printf ("The received string is: %s\n", buffer); } return (0);
我们有以下代码行: printf("%d\n", toc->runlist.next); printf("%d\n", toc->runlist.next); 这些是定义: typedef struct thread_overview_control{ int id[NR_UTHREADS]; list_t runlist; int active_counter; int main_thread; int need_resched; } thread_overview_control; thread_overview_control* toc; 我想要做的是实现用户线程。 出于某种原因,上面的代码在我们的testing运行崩溃时的输出是: 12345678 //some address 0 //NOW IT'S NULL?!?!?! 这怎么发生? 我们所做的只是读取一个variables。 而奇怪的是,没有printf的,就没有崩溃。 这是怎么回事?
我正在尝试编写一个Python脚本来testing我编写的一些代码的输出与预期的输出。 但是,我很难将输出redirect到一个文件。 我写了以下内容: extern printf LINUX equ 80H ; interupt number for entering Linux kernel EXIT equ 1 ; Linux system call 1 ie exit () section .data intfmt: db "%ld", 10, 0 segment .text global main main: push rax push rsi push rdi mov rsi, 10 mov rdi, intfmt xor rax, rax call printf […]
这里是进程a和b ,两者都是multithreading的。 叉b和b立即执行一个新的程序; a dup和freopen的stderr到日志文件( a是事实上的apache的httpd2.22) b从binheritance打开的stderr。 (我正在适应apache httpd, b是我的程序),并且b使用fprintf(stderr….)进行日志logging 所以a , b共享同一个文件进行日志logging a , b没有locking机制来写日志 我发现一些日志消息是交织的,有一点日志消息丢失了。 两个作家能够隐藏相同的文件吗? 更重要的问题是:如果我们只在一个multithreading进程中使用fprintf , fprintf是线程安全的,即一个fprintf调用不会干预另一个线程中的另一个fprintf调用? 很多文章都这样说,但是这不是一件容易的事情,所以我在这里寻求帮助。 答:用于复制fd的代码如下所示: …… rv = apr_file_dup2(stderr_log, s_main->error_log, stderr_p);//dup the stderr to the logfile apr_file_close(s_main->error_log);//here ,2 fd point to the same file description,so close one of 然后 B:Apache自己用这种方式进行日志logging: …… if (rv != APR_SUCCESS) { ap_log_error(APLOG_MARK, […]
这是我的小程序: #include <unistd.h> #include <stdio.h> int main() { printf("1"); fork(); printf("2"); fork(); return 0; } 这个代码的输出是12121212 ,我问: 为什么打印超过122 ?
我试图使用statvfs来查找文件系统上的可用空间。 代码如下: const char* Connection::getDiskInfo() { struct statvfs vfs; int nRet = statvfs( "/u0", &vfs ); if( nRet ) return NULL; char* pOut = (char*)malloc( 256 ); memset( pOut, 0, 256 ); sprintf( pOut, "<disk letter='%s' total='%lu' free='%lu' totalfree='%lu'/>", "/", ( vfs.f_bsize * vfs.f_blocks ) / ( 1024 * 1024 ), ( vfs.f_bsize * vfs.f_bavail […]
我正在尝试在shell中使用printf格式化string,我将从文件中获取inputstring,其中包含特殊字符(如%,',"",,\user, \tan等)。 如何转义inputstring中的特殊字符? 例如 #!/bin/bash # string=''; function GET_LINES() { string+="The path to K:\Users\ca, this is good"; string+="\n"; string+="The second line"; string+="\t"; string+="123" string+="\n"; string+="It also has to be 100% nice than %99"; printf "$string"; } GET_LINES; 我期待这将打印在我想要的格式 The path to K:\Users\ca, this is good The second line 123 It also has to be 100% […]