我个人比较喜欢使用Linux系统。虽然Windows的图形界面确实比Linux好,但是对脚本的支持太差了。一开始不习惯命令行操作,熟悉之后发现鼠标一点点移动是浪费时间的罪魁祸首。..所以对于Linux命令行,本文不介绍某些命令的用法,只是解释一些简单但容易让人迷惑的细节。1、标准输入和命令参数的区别。2、所有后台运行的命令在退出终端后也随之退出。3、单引号和双引号表示字符串的区别。4、有些命令和sudo一起使用会出现commandnotfound。1.标准输入和参数的区别这道题一定是最让人迷惑的。具体什么时候用管道符|不清楚。和文件重定向>、<,以及何时使用变量$。比如我现在有一个自动连接宽带的shell脚本connect.sh,它存在于我的主目录下:$whereconnect.sh/home/fdl/bin/connect.sh如果我想删除这个脚本,又想保存几次如何操作键盘?我试过这种方式:$whereconnect.sh|rm其实这个操作是错误的,正确的方式应该是这样的:$rm$(whereconnect.sh)前者试图将where的结果连接到rm的标准输入,后者尝试将结果作为命令行参数传递。标准输入是编程语言中的scanf或readline等命令;而参数是指程序main函数传入的args字符数组。管道字符和重定向字符使用数据作为程序的标准输入,而$(cmd)读取cmd命令输出的数据作为参数。正如上图所解释的:输入重定向是指当程序要读取数据时,会去files[0]去读取,所以我们只需要将files[0]指向一个文件,那么程序就会从这个文件而不是从键盘读取数据。同理,输出重定向就是将files[1]指向一个文件,那么程序的输出就不会写入显示器,而是写入这个文件。管道符号其实是一样的,把一个进程的输出流和另一个进程的输入流连接成一个“管道”,数据在里面传输:labuladong,公众号:labuladongLinux进程、线程的底层原理,和文件描述符刚才的例子说了rm命令的源码肯定不接受标准输入,而是接受命令行参数,并删除相应的文件。相比之下,cat命令接受标准输入和命令行参数:$catfilename...filetext...$cat
