windows batch cmd命令行之 重定向 和 管道
Windows netstat 查看端口、进程占用
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用
假如我们需要确定谁占用了我们的9050端口
1、Windows平台
在windows命令行窗口下执行:
C:/>netstat -aon|findstr "9050"
TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016
看到了吗,端口被进程号为2016的进程占用,继续执行下面命令:
C:/>tasklist|findstr "2016"
tor.exe 2016 Console 0 16,064 K
很清楚吧,tor占用了你的端口。
查看文件夹目录结构
tree > list.txt
tree /f >list.txt
输入输出重定向
echo -c -c:不换行,linux下则是-n
输入输出重定向:
每执行一个命名,都会有3个与之相关的文件.标准输入文件,标准输出文件,错误输出文件.
因为unix/linux下把任何一个设备都当作文件看待,所有实际上标准输入文件是键盘,
标准输出和错误输出文件是屏幕.
> 输出重定向
< 输入重定向
<< 输入追加
>> 输入追加
文件描述符:
每一个文件可以用文件描述符来描述,系统提供12个,3-9可以任意定义.0-2系统定义如下:
0 标准输入 键盘
1 标准输出 显示器
2 错误输出 显示器
即可以用0-2代表上面的3个文件.
例如:cmd>file //cmd的输出重定向到file文件
cmd>>file //cmd的输出追加到file中,无则创建
cmd 1>file //把运行cmd的shell的标准输出重定向到file中,1代表标准输出
cmd>file 2>&1 //把cmd的输出重定向到file,同时把2(错误输出)重定向到1(标准输出).
2 > 1 则会把1当成文件,所有把错误定向到1必须使用&1.
cmd 2>file //把错误输出定向到file中
cmd>>file 2>&1 //把错误和cmd输出追加到file中,cmd>>file,追加;2>&1,错误定向到
标准输出,标准输入又追加到file中,所以错误和cmd输出都追加到file
cmd 1>>file 2>&1 //可以把此命令等效于上一个命令
cmdfile2 //cmd的输入是file1,结果输出到file2
cmd<<END //cmd使用标准输入,直到遇到END则退出.END可为任意一个字符
理解:cmd使用默认的标准输入,运行,碰到END,则追加,但是标准输入输出
不能追加,于是出错退出.
注:经试验理解不对,据linux shell编程25章的说法,
这是shell定的语法.可以直接理解成END为分隔符.
cmd<&m //把文件描述符m作为cmd的输入
cmd>&m //把文件描述符m作为cmd的输出
cmd<&- //关闭标准输入.
!!!注意:
1. 输入输出定向符前面不要加空格,否则容易出意想不到的问题
2. 0 1 2不能使用>>或<<定向符,例: 2>>&1 出错