我在linux里用命令出来is a directory是怎么回事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在linux里用命令出来is a directory是怎么回事相关的知识,希望对你有一定的参考价值。
使用的命令应该是针对文件的命令。
在使用过程命令中把参数指定成了目录,所以linux报错说“这是一个目录”。可以理解为linux在提醒,这是一个目录不是文件,这个命令应该是针对文件的。
扩展资料:
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
参考技术A 你使用的命令应该是针对文件的命令,在使用过程你的命令中你把你的参数指定成了目录,所以linux报错说“这是一个目录”。你可以理解为linux在告诉你,这是一个目录不是文件,这个命令应该是针对文件的。本回答被提问者采纳 参考技术B 可能是你之前对这个文件的命名错误了,所以后面打开时就不是你想打开的那个文件就会报这样的错 参考技术C 系统报错信息是你打的是一个目录,而不是一个文件。 参考技术D估计是你命令没输入完整
急急!Linux 命令框里 将文件导入程序的问题
注意这个是Linux的cmd
如果有一个play.c的文件,首先我编译它
>> gcc play.c
编译成功
然后我输入以下命令将一个test.txt的文件导入
>>./a.out < test.txt
我在play.c里用了argv字符串, 部分代码如下:
int main (int argc, char *argv[])
FILE* stream;
if ( (stream = fopen( argv[2] , "r" ) ) == 0 )
printf ("File open failed\n");
exit(1);
.........
return 0;
然后执行出来的结果就是 File open failed
请教达人这为什么打不开啊?
如果我用了指令./a.out < test.txt后,要在程序里读入test.txt里面的东西怎么办??
我不要类似“删掉导入符就可以了”的答案啊。。。
简单的例子:
#include <stdio.h>
#include <stdlib.h>
int main(int argc ,char *argv[])
printf("arguement0=%s\narguement1=%s\narguement2=%s\n",
argv[0],argv[1],argv[2]);
FILE *stream;
if((stream = fopen(argv[2],"r")) == NULL )
perror("cannot open file...\n");
exit(-1);
fclose(stream);
return 0;
然后执行,结果相当奇怪:
[ksl@myhost ~]$ ./a.out < test2.c
arguement0=./a.out
arguement1=(null)
arguement2=SAL_USE_VCLPLUGIN=gtk
cannot open file...
: No such file or directory
再次执行:
[ksl@myhost ~]$ ./a.out > test2.c
cannot open file...
: No such file or directory
我觉得a.out的输出肯定是被定向到test2.c里面去了。。。再次验证:
[ksl@myhost ~]$ cat test2.c
arguement0=./a.out
arguement1=(null)
arguement2=SAL_USE_VCLPLUGIN=gtk
果然...所以这个是和shell的工作有关的...
不过,我们还有办法...利用这一点..刚才查了下
这里有说明http://blog.daviesliu.net/2005/08/31/200811/
,说>和<这两个符号把把stdin和stdout定向到了参数提供的文件...
不过,那不就更省事了,我们还不用打开文件了,直接读取stdin和stdout不就得了 ...
程序修改成这样:
#include <stdio.h>
#include <stdlib.h>
int main(int argc ,char *argv[])
char buf[128];
char *p=NULL;
while((p=fgets(buf,64,stdin))!=NULL) //打印下文件,看有效果没....
printf("%s",p);
return 0;
编译,换个文件再试试,就试试这个test.c吧:
[ksl@myhost ~]$ ./a.out < test.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc ,char *argv[])
char buf[128];
char *p=NULL;
while((p=fgets(buf,64,stdin))!=NULL)
printf("%s",p);
return 0;
so,搞定..... 顺便重温了下重定向...呵呵 参考技术A 把 < 去掉,也就是 ./a.out test.txt
你用 <相当于输入的重定向,把test.txt的内容当成文件名了,当然不存在这样的一个文件追问
去掉 < 的我会用,现在的问题是必须用 < 这个而且应该是没错的,我不知道是不是除了argv以外还有另外的方法?
追答你要先理解是输出的重定向,相当于把你printf出来的东西重定向到某个文件。
以上是关于我在linux里用命令出来is a directory是怎么回事的主要内容,如果未能解决你的问题,请参考以下文章
ANSYS中,我在命令行输入、CLEAR,出现、CLEAR is not a recognized PREP7 command,abbreviantion,
linux 把当前目录的一个子目录里的文件移动到另一个子目录里用啥命令