Chapter 2 命令行基础(1)
来源:互联网 发布:棋牌游戏透视软件 编辑:程序博客网 时间:2024/05/17 01:12
()的作用
如果有两个命令,我们可以像第一种用分号隔开执行:
$ cd ~; ls
也可以用一个括号将其包起来:
$ (cd ~; ls)
除了括号之外,两种命令形式完全一样,有时其效果也完全一样。但是两者的意义大不相同。第一种命令形式只是在一个逻辑行并列给出多个命令,其效果同一次输入一个命令基本上没有区别。而且都是在当前shell下执行,而第二种形式则把多个命令看做一个组合命令,在一个子shell里执行,所有的命令的输出合并成为一个输出流,着在管道操作中差别尤为明显。
wc命令
http://www.cnblogs.com/peida/archive/2012/12/18/2822758.html
后台进程:
shell命令前台解释并执行命令的过程中用户不能做其他操作。如果希望命令转到后台去执行,在命令之后加一个 &,如下:
$find /-name echo -print 2>/dev/null &
之后shell会给出类似如下的输出:
[1] 13784
[1] 是作业号
13784是进程号(可以通过进程管理的命令操作)
后台执行的命令有可能随时出现在shell中,所以如果使用vim可能会受到干扰。
cat -v 命令行中回显用户的输入命令
文件描述符(简化的文件指针)
内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。[1]
习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。尽管这种习惯并非Unix内核的特性,但是因为一些 shell 和很 多应用程序都使用这种习惯,因此,如果内核不遵循这种习惯的话,很多应用程序将不能使用。(0~9都可用但是,尽量避开5,因为shell在exec创建进程的时候,会覆盖掉原有的描述符为5的文件)
shell的输入输出重定向:
(感觉内容有点杂,我就先总结几个常用的)
> 将命令行返回的结果输出到文件(如果没有该文件,就以文件名创建该文件;如果有这个文件,就覆盖掉原有内容)
如下:
ls >fname
会在当前目录下创建一个fname的文件,然后将ls的内容添加进去
>>
与上一个不同的是,如果文件存在,是将新的内容添加到后面,而不是覆盖
<
按照标准输入流输入文件(个人怎么觉得不太常用,书上给的例子是统计长度...)
wc -l <fname
管道 ‘|’
用管道连接两个命令的时候,Shell将会把两个进程连接起来,利用管道的单向通信特征,把一个进程对标准输出传递到另一个进程的标准输入。Shell将协调两个进程的同步,使两个进程能够并发的运行,这样就可以省略村中中间处理结果的临时文件,实际上,管道是一种特殊的I/O重定向。
可以多个组合
$command1 | command2 | command3 |….
用例:
$ps -ef | grep cron
理解:
进行如下两步操作,但是省去创建fname的过程
$ps -ef>fname
$grep cron < fname
tee命令:
通过标准输入输出接受并显示数据,同时把数据存储到给定的文件中
用例:
$ps -ef | grep cron | tee fname1
我们就将结果返回到console,同时也创建了一个fname1来存返回的结果。
- Chapter 2 命令行基础(1)
- Android基础 【Chapter-2】
- Chapter2 命令行基础(2)
- C和指针(Chapter 1 & Chapter 2)
- linux入门(基础命令行2)
- Oaecle 命令行基础操作篇(2)
- Oaecle 命令行基础操作篇(1)
- 【Java编程基础】Chapter 1:认识Java
- chapter one Algorithm based(算法基础)
- Chapter 2(2): Write Pong(1)
- Chapter 1(2):Getting Started
- ccna 1 Chapter 2
- Chapter 1-2学习
- chapter 1~2
- postgreSQL命令行操作基础-1
- Chapter 05 绘图基础
- Chapter 3 基础语法
- LINUX命令行基础(上)
- matlab-高数 三重积分(六限皆数)
- Android 5.0以后获取Running App/Process
- SYSGEN记录4
- 【干货1】CTF 各类资源大整合
- Eclipse – java.lang.OutOfMemoryError: Java heap space解决方案
- Chapter 2 命令行基础(1)
- APP开发实战71-服务不被杀死
- Visual Studio中检测内存泄漏的方法
- kthread schedule
- matlab-高数 无穷级数求和
- JAVA中 重写与重载需要注意的地方
- leetcode-java-338. Counting Bits
- 《JAVA与模式》之单例模式
- Linked List Cycle