linux 命令

1.查看shell的版本     

  /bin/bash  --version

2.输出重定向

>      >> 

例如:  ls  -l   >output.txt

把ls -l的结果输出到output.txt 文件中。不在屏幕(标准输出)上输出。

上面的例子通过>操作符把标准输出重定向到一个文件。在默认情况下,如果该文件已经存在,它的内容将被覆盖。

你可以用>>操作符将输出内容附加到一个文件的结尾,而不是覆盖文件。

例如:  ls  -l >>output.txt

 

文件描述符0代表一个程序的标准输入,文件描述符1代表标准输出,而文件描述符2代表标准错误输出.

如果想对标准错误输出进行重定向,你需要把想要重定向的文件描述符编号加在>操作符的前面。因为标准错误输出的文件描述符编号是2,所以使用2>操作符。当需要丢弃错误信息并阻止它显示在屏幕上时,这个方法很有用。其他两个标准输出类似。

例如: ls -l  2>output.txt    一般ls -l这条语句不会输出错误,所以output.txt也就没有内容。

 

3.管道

管道的用法很简单,但是非常有用,也经常用

例如:  ls -l |  sort  |  more 

这条命令是把ls 的结果经过sort命令排列再经过more输出显示。其中的 |  就是管道命令。在各种命令中起到数据流传递的作用。它可以结合重定向输出来使用,如: ps | sort >output.txt

 

4.shell通配符

[^a]允许匹配方括号中任何一个单个字符,     { } 允许你将任意的字符串组放在一个集合中。

例如: ls  my{file,dir}  就会列出 myfile,mydir  文件。 如果是目录就会列出目录的内容,它使用shell来检查当前目录下的每个文件

 

5.chmod

用来改变文件的模式,也就是权限。例如 chmod  +x  my.sh  给了my.sh执行的权限。用man chmod 查看更多用法

 

6.切换目录

cd 例如: cd /home/fantasylf/study     打开/home/fantasylf/study目录

cd ~ 回到主目录   

cd ..回到上级目录 

pwd   显示当前目录

 

6.test命令

例如:if  test  -f  output.txt

            then

             echo yes

             fi

如果output.txt文件存在且为普通文件则test语句为真,就会输出yes


test的各项参数如下:

 

文件条件测试

结果

-d file

如果文件是一个目录则结果为真

-e file

如果文件存在则结果为真。要注意

的是,历史上 -e 选项不可移植,

所以通常使用的是 -f 选项

-f file

如果文件是一个普通文件则结果为真

-g file

如果文件的 set-group-id 位被设置则结果为真

-r file

如果文件可读则结果为真

-s file

如果文件的大小不为 0 则结果为真

-u file

如果文件的 set-user-id 位被设置则结果为真

-w file

如果文件可写则结果为真

-x file

如果文件可执行则结果为真

 

7. export命令

export命令将作为它参数的变量导出到子shell中,并使之在子shell中有效。在默认情况下,在一个shell中被创建的变量在这个shell 调用的下级(子)shell中是不可用的。export命令把自己的参数创建为一个环境变量,而这个环境变量可以被当前程序调用的其他脚本和程序看见。从 技术的角度来说,被导出的变量构成从该shell衍生的任何子进程的环境变量。

 

8.find命令

这是个用于搜索文件的命令,它极其有用,但Linux初学者常常觉得它不易使用,这不仅仅是因为它有选项、测试和动作类型的参数,还因为其中一个参数的处理结果可能会影响到后续参数的处理。了确保你具有搜索整个机器的权限,请以root用户身份来执行这个命令:

例如: find /  -name  test  -print

这个命令的含义是:从根目录开始查找名为test的文件,并且输出该文件的完整路径。

如果指定它不查找某个范围。可以这样用: find /  -mount  -name  test  -print   就可以告诉find命令不要搜索挂载的其他文件系统的目录。

find命令的完整语法格式如下所示: find  [ path ]   [ option ]  [ tests ]  [ actions ]

path部分很容易理解:你既可以使用绝对路径,如/bin,也可以使用相对路径,如.。如果需要,你也可以指定多个路径,如find /var /home。

find命令有许多选项可用,表2-12列出了一些主要的选项。

表 2-12

选项

含义

-depth

在查看目录本身之前

先搜索目录的内容

-follow

跟随符号链接

-maxdepths N

最多搜索 N 层目录

-mount( -xdev)

不搜索其他文件系统中的目录

下面是测试部分。可以提供给find命令的测试非常多,每种测试返回的结果有两种可能:true或false。find命令开始工作时,它按照顺序 将定义的每种测试依次应用到它搜索到的每个文件上。如果一个测试返回false,find命令就停止处理它当前找到的这个文件,并继续搜索。如果一个测试 返回true,find命令将继续下一个测试或对当前文件采取行动。表2-13只列出了最常用的测试,请参考find命令的手册页以了解所有可以使用的测 试。

表 2-13

测试

含义

-atime N

文件在 N 天之前被最后访问过

-mtime N

文件在 N 天之前被最后修改过

-name pattern

文件名(不包括路径名)

匹配提供的模式 pattern

为了确保 pattern 被传递给

find 命令而不是由 shell 来处理,

pattern 必须总是用引号括起

-newer otherfile

文件比 otherfile 文件要新

-type c

文件的类型为 c c 是一个特殊类

型。最常见的是 d (目录)和 f

(普通文件 )。 其他可用的类

型请参考手册页

-user username

文件的拥有者是指定的用户 username

你还可以用操作符来组合测试。大多数操作符有两种格式:短格式和长格式,如表2-14所示。

表 2-14

 

操作符,短格式

操作符,

长格式

含义

!

-not

测试取反

-a

-and

两个测试都必须为真

-o

-or

两个测试有一个必须为真

 

 

表2-15只列出了最常见的动作,完整的动作列表请见find命令的手册页。

-exec和-ok命令将命令行上后续的参数作为它们参数的一部分,直到被/;序列终止。实际上,-exec和-ok命令执行的是一个嵌入式命令, 所以嵌入式命令必须以一个转义的分号结束,使得find命令可以决定什么时候它可以继续查找用于它自己的命令行选项。魔术字符串{}是-exec或-ok 命令的一个特殊类型的参数,它将被当前文件的完整路径取代。

表 2-15

动作

含义

-exec command

执行一条命令。这是最常见的

动作之一。请见这个表格之

后的解释以了解参数是如何传

递给这个命令的。 这个动作必

须使用 /; 字符对来结束

-ok command

-exec 类似,但它在执行命令

之前会针对每个要处理的文件,

提示用户进行确认。 这个动作

必须使用 /; 字符对来结束

-print

打印文件名

-ls

对当前文件使用命令 ls–dils

find命令是非常强大的,一两句话是说不清楚。要深入了解就用man 或info解决吧。

 

 

 

9.grep命令

我们将介绍的第二个非常有用的命令是grep,这个不寻常的名字代表的是通用正则表达式解析器(General Regular Expression Parser,简写为grep)。你使用find命令在系统中搜索文件,而使用grep命令在文件中搜索字符串。事实上,一种非常常见的用法是在使用 find命令时,将grep作为传递给-exec的一条命令。

grep命令使用一个选项、一个要匹配的模式和要搜索的文件,它的语法如下所示:

 

grep  [ option ]  PATTERN  [ FILES]

 

如果没有提供文件名,则grep命令将搜索标准输入。

我们首先来查看grep命令的一些主要选项,它们列在了表2-16中,完整的选项列表请见grep命令的手册页。

表 2-16

选项

含义

-c

输出匹配行的数目,而不是

输出匹配的行

-E

启用扩展表达式

-h

取消每个输出行的普通前缀,

即匹配查询模式的文件名

-i

忽略大小写

-l

只列出包含匹配行的文件名,

而不输出真正的匹配行

-v

对匹配模式取反,即搜索

不匹配行而不是匹配行


例如:

 grep  my  word.txt 

它只是在文件words.txt中搜索字符串my,然后输出匹配的行。文件名未输出是因为你只在一个文件中进行搜索。

grep my word.txt  word2.txt

输出匹配的行和对应的文件名。

 

现在是时候介绍正则表达式的基础知识了,它允许你实现更复杂的匹配。正如我们在本章前面提到的那样,正则表达式被广泛应用于Linux和许多其他开源编程语言中。你可以在vi编辑器或Perl脚本中使用它们,而且不论它们出现在哪里,其基本原理都是一样的。

在正则表达式的使用过程中,一些字符是以特定方式处理的。最常使用的特殊字符如表2-17所示。

表 2-17

字符

含义

^

指向一行的开头

$

指向一行的结尾

.

任意单个字符

[]

方括号内包含一个字符范围,其中任

何一个字符都可以被匹配,例如字符

范围 a e ,或在字符范围前面加上 ^

号表示使用反向字符范围,即不匹

配指定范围内的字符

如果想将上述字符用作普通字符,就需要在它们前面加上/字符。例如,如果想使用$字符,你需要将它写为/$。

在方括号中还可以使用一些有用的特殊匹配模式,如表2-18所示。

表 2-18

匹配模式

含义

[:alnum:]

字母与数字字符

[:alpha:]

字母

[:ascii:]

ASCII 字符

[:blank:]

空格或制表符

[:cntrl:]

ASCII 控制字符

[:digit:]

数字

[:graph:]

非控制、非空格字符


(续)

匹配模式

含义

[:lower:]

小写字母

[:print:]

可打印字符

[:punct:]

标点符号字符

[:space:]

空白字符 包括垂直制表符

[:upper:]

大写字母

[:xdigit:]

十六进制数字

另外,如果指定了用于扩展匹配的-E选项,那些用于控制匹配完成的其他字符可能会遵循正则表达式的规则(见表2-19)。对于grep命令来说,我们还需要在这些字符之前加上/字符。

表 2-19

选项

含义

?

匹配是可选的,但最多匹配一次

*

必须匹配 0 次或多次

+

必须匹配 1 次或多次

{n}

必须匹配 n

{n,}

必须匹配 n 次或 n 次以上

{n,m}

匹配次数在 n m 之间,包括 n m

这看上去有点复杂,但如果你实际应用它,将会发现它并不像第一眼看上去那么复杂。掌握正则表达式的最简单方法就是尝试一些实验。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值