Articles of unix

write()系统调用什么时候写入所有请求的缓冲区而不仅仅是部分写入?

如果我在write()系统调用中写入例如100字节,我总是把这个write()调用放在一个循环中,检查返回的长度是否是我期望发送的长度,如果不是,它碰撞缓冲区指针并减less写入量的长度。 所以我再一次做到了这一点,但现在有了StackOverflow,我可以问你们,如果有人知道我写的东西什么时候会写出我要求的所有东西,还给我一个部分写入? 附加注释:X-Istence的回复提醒我,我应该注意到文件描述符是阻塞的(即不是非阻塞的)。 我认为他暗示,一个阻塞文件描述符上的write()不会写入所有指定的数据的唯一方法是当write()被一个信号中断时。 这似乎至less让我觉得直觉…

Bash数组和否定的下标,是或否?

GNU bash手册告诉我 如果使用语法分配了任何variables,则会自动创build索引数组 name[subscript]=value 下标被视为必须计算为数字的算术expression式。 如果下标的计算结果为小于零的数字,则将其用作大于数组最大索引的偏移量(因此,下标-1表示数组的最后一个元素)。 所以我想我会试一试,得到以下结果: $ muh=(1 4 'a' 'bleh' 2) $ echo $muh 1 $ echo ${muh[*]} 1 4 a bleh 2 # so far so good so now I'll try a negative … $ echo ${muh[-1]} -bash: muh: bad array subscript # didn't go as planned! 我做错了什么,或者网站错了,或者是与在CentOS下运行的bash不同的gnu bash? 谢谢!

在shell脚本中使用只读variables

是否使用只读variables的shell编程习惯是否可行或者是否有缺陷? 例如,如果我想写一些由多个使用不可变文件path的脚本文件组成的脚本,那么声明这样的path是否有意义: readonly LOGS export LOGS LOGS="/some/path" 另一个问题:将单独和繁琐的过度阅读的shell脚本代码分割成单独的文件是一个好主意吗? 非常感谢您的答复。

如何连续显示其最后几行内容的文件

我试图find一个Unix命令(也许组合)如何连续显示其最后几行内容的文件。 但是在这个显示过程中,当滚动内容到达屏幕顶端的时候,我希望屏幕上方总是显示一些顶行。 那可能吗? (1)假设我有文件“job.sta”,前两行是:job的名称,约翰的工作2013年1月30日,… tab1,tab2,tab3 0,1,2,1,90, 89 2,89,23 … (2)这个文件正在运行,它的内容正在增长,我不知道它会以什么结束。 (3)所以我想在使用tail命令时显示(总​​是)前2行,当更新内容到达Unix shell的屏幕上时。 目前我正在使用PuTTY。 参考: http : //www.unix.com/unix-dummies-questions-answers/172000-head-tail-how-display-middle-lines.html

Matlab – 无需打开GUI即可运行文件,然后退出

我想让Matlab运行一些.m文件,它写入一个文本文件。 我不希望GUI启动,我不希望命令行解释器运行。 我有 matlab -nodisplay -r myfile 但是这仍然运行着翻译。 我应该使用什么选项?

如何删除文件夹中的所有文件,但不要使用NIX标准库删除文件夹?

我正在尝试创build一个删除/ tmp文件夹的内容的程序,我在Linux上使用C / C ++。 system("exec rm -r /tmp") 删除文件夹中的所有内容,但它也删除了我不想要的文件夹。 有什么办法通过某种forms的bash脚本来完成,通过system()调用。 或者有没有一种直接的方式,我可以在C / C ++中做到这一点? 我的问题是类似于这个,但即时通讯不在OS X … 如何删除文件夹中的所有文件,但不是文件夹本身?

如果目录存在,则使用Unix Bash Shell编程

所以我试图进入一个bash shell脚本中的if语句,但我认为我做错了什么,反正这里是我的示例代码。 #!/bin/bash read sd if [ -d "~/tmp/$sd" ]; then echo "That directory exists" else echo "That directory doesn't exists" fi ;; 我是否指向正确的目录? 我想要用户input一些东西,将被放入“SD”,如果该子目录存在,那么它会说,如果不是,那么它会去其他人说,它不存在。

在远程机器上加载数据INFILE

我如何使用本地文件在远程数据库(不同的机器)上执行以下命令? $MYSQL_PATH/mysql -u root -h remote.net files -e " LOAD DATA INFILE '$1' INTO TABLE $TABLE_NAME FIELDS TERMINATED BY ',' (size, @d2, @d3, @d4, @d5, path) 问题似乎是/ /tmp/infile.txt的INFILE不能被远程识别。 什么才是完成上述的正确方法?

删除指定目录中的所有零大小的文件

预先感谢,我想删除指定目录中的所有零大小的文件,你可以告诉我如何在Ubuntu操作系统上执行它的命令。 谢谢'Mukthyar

使用Unixsorting对科学编号进行sorting

我试图用Unixsorting这些数字,但似乎没有工作: 2e-13 1e-91 2e-13 1e-104 3e-19 9e-99 这是我的命令: sort -nr file.txt 什么是正确的方法来做到这一点?