linux常用命令总结,超级实用

Linux常用命令总结

--------------------------------------文件操作

------------------------------------

1.cd

切换文件目录

2.pwd

查看当前文件目录

3.ls

ls -al /bin 以长列表的形式列出目录 /bin 下的所有文件,包括隐藏文件 -p 若所列文件是目录文件,则在其后显示斜杠(/)

-t 按时间顺序排列而非按名字

-h 文件大小以M等形式显示

4.mkdir

mkdir -m 777 /tmp/abc 用所有用户可读可写可执行的存取模式

mkdir -p /tmp/a/b/c 建立目录 /tmp/a/b/c ,若不存在目录 /tmp/a 及/tmp/a/b 则建立之

5.rmdir

-p 删除所有已经为空的父目录

rmdir -p /tmp/a/b/c 删除目录 /tmp/a/b/c ,若目录 /tmp/a /b

及/tmp/a 空,则删除

6.cat

7.more

8.head

[语法]: head [-n] [文件 ...]

[说明]: 将文件的头n 行显示输出,缺省值为 10 行,显示多个文件时,在每个文件的前面加上 ==> 文件名 <==

[例子]:

head -9999 file1 file2 显示文件 file1 和 file2 的头 9999 行

9.tail

10.cp

[说明]: 将文件1(文件2 ...)拷贝到目标上,目标不能与文件同名, 若目标是文件名,则拷贝的文件只能有一个,若目标是目录, 则拷贝的文件可以有多个,若目标文件不存在,则建立这个文件,若存在,则覆盖其以前的内容,若目标是目录,则将文件拷贝到这个目录下。

- i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止

- p 不仅拷贝文件内容,还有修改时间,存取模式,存取控制表, 但不拷贝 UID 及 GID

- r 若文件名为目录,则拷贝目录下所有文件及子目录和它们的文件,此时 目标必须为目录

[例子]:

cp file1 file2 将文件 file1 拷贝到文件 file2

cp file1 file2 /tmp 将文件 file1 和文件 file2 拷贝到目录 /tmp 下 cp -r /tmp /mytmp 将目录 /tmp 下所有文件及其子目录拷贝至目录/mytmp

11.mv

[语法]: mv [-f] [-i] 文件1 [文件2...] 目标

[说明]: 将文件移动至目标,若目标是文件名,则相当于文件改名 - i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止

- f 覆盖前不作任何提示

[例子]:

mv file1 file2 将文件 file1 改名为 file2

mv file1 file2 /tmp 将文件 file1 和文件 file2 移动到目录 /tmp 下

12.rm

[语法]: rm [-f] [-i] 文件...

或 rm -r [-f] [-i] 目录名... [文件]

[说明]: 用来删除文件或目录

- f 删除文件时不作提示

- r 递归地删除目录及其所有子目录

- i 删除文件之前先作提示

[例子]:

rm file1 删除文件 file1

rm -i /tmp/* 删除目录 /tmp 下的所有文件

rm -r /mytmp 递归地删除目录 /mytmp

--------------------------------------FTP操作

-------------------------

远程

1.cd切换目录

2.cdpu 主机上层目录

3.ls 查看文件

4.PWD 产看目录

5.bin 以字节来传输

6.get

7.mkdir 远程上建立文件夹

8.delete 删除远程上文件夹

9.mdelete 删除远程上文件

10.rmdir 删除远程上文件夹

本地

1.!ls 查看文件

2.!PWD

3.lcd 切换

4.put

--------------------------------------用户和用户组

--------------------------

1.chmod

[语法]: chmod [-R] 模式 文件...

或 chmod [ugoa] {+|-|=} [rwxst] 文件...

[说明]: 改变文件的存取模式,存取模式可表示为数字或符号串,例如: chmod nnnn file , n为0-7的数字,意义如下:

4000 运行时可改变UID

2000 运行时可改变GID

1000 置粘着位

0400 文件主可读

0200 文件主可写

0100 文件主可执行

0040 同组用户可读

0020 同组用户可写

0010 同组用户可执行

0004 其他用户可读

0002 其他用户可写

0001 其他用户可执行

nnnn 就是上列数字相加得到的,例如 chmod 0777 file 是指将文件 file 存取权限置为所有用户可读可写可执行。

-R 递归地改变所有子目录下所有文件的存取模式

u 文件主

g 同组用户

o 其他用户

a 所有用户

+ 增加后列权限

- 取消后列权限

= 置成后列权限

r 可读

w 可写

x 可执行

s 运行时可置UID

t 运行时可置GID

[例子]:

chmod 0666 file1 file2 将文件 file1 及 file2 置为所有用户可读可写 chmod u+x file 对文件 file 增加文件主可执行权限

chmod o-rwx 对文件file 取消其他用户的所有权限

2.chown

[语法]: chown [-R] 文件主 文件...

[说明]: 文件的UID表示文件的文件主,文件主可用数字表示, 也可用一个有效的用户名表示,此命令改变一个文件的UID,仅当此文件的文件主或超级用户可使用。

-R 递归地改变所有子目录下所有文件的存取模式

[例子]:

chown mary file 将文件 file 的文件主改为 mary

chown 150 file 将文件 file 的UID改为150

3.chgrp

[语法]: chgrp [-R] 文件组 文件...

[说明]: 文件的GID表示文件的文件组,文件组可用数字表示, 也可用一个有效的组名表示,此命令改变一个文件的GID,可参看chown。

-R 递归地改变所有子目录下所有文件的存取模式

[例子]:

chgrp group file 将文件 file 的文件组改为 group

--------------------------------------文件操作

--------------------------

1.cmp

[语法]: cmp [-l] [-s] 文件1 文件2

[说明]: 比较两个文件,若文件1 为 "-" ,则使用标准输入, 两个文件相同则无提示,不同则显示出现第一个不同时的字符数和行号。

-l 显示每个不同处的字节数(10进制)和不同的字节(8进制)

-s 不作任何提示,只返回码

[例子]:

cmp file1 file2 比较文件 file1 和 file2

cmp -l file1 file2 比较文件file1 和 file2 的每处不同

2.diff

[语法]: diff [-be] 文件1 文件2

[说明]: 本命令比较两个文本文件,将不同的行列出来

-b 将一串空格或TAB转换成一个空格或TAB

-e 生成一个编辑角本,作为ex或ed的输入可将文件1转换成文件2

[例子]:

diff file1 file2

diff -b file1 file2

diff -e file1 file2 >edscript

3.wc

[语法]: wc [-lwc] 文件...

[说明]: 统计文件的行、字、字符数,若无指定文件,则统计标准输入 -l 只统计行数

-w 只统计字数

-c 只统计字符数

[例子]:

wc -l file1 file2 统计文件file1和file2 的行数

4.split

[语法]: split [-n] [ 文件 [名字]]

[说明]: split 将指定大文件分解为若干个小文件,每个文件长度为n行(n 缺省时为1000),第一个小文件名为指定的名字后跟aa,直至zz,名字缺省值为x,若未指定大文件名,则使用标准输入

[例子]:

split -500 largefile little

将文件largefile 每500行写入一个文件,第一个文件名为littleaa

5.touch

[语法]: touch [-amc] [mmddhhmm[yy]] 文件...

[说明]: 将指定文件的访问时间和修改时间改变,若指定文件不存在则创建之,若无指定时间,则使用当前时间,返回值是未成功改变时间的文件个数,包括不存在而又未能创建的文件。

-a 只改变访问时间

-m 只改变修改时间

-c 若文件不存在,不创建它且不作提示

mmddhhmm[yy] 两位表示 月日时分[年]

[例子]:

touch file

更新文件file的时间

touch 0701000097 HongKong

将文件HongKong的时间改为97年7月1日0时0分

6.file

[语法]: file [-f 文件名文件] 文件...

[说明]: file 对指定文件进行测试,尽量猜测出文件类型并显示出来

-f 文件名文件 文件名文件是一个包含了文件名的文本文件, -f 选项测试 文件名文件中所列出的文件

[例子]:

file * 显示当前目录下所有文件的类型

--------------------------------------文件压缩解压

--------------------------

tar命令

[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....

参数:

-c :建立一个压缩文件的参数指令(create 的意思);

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile 里面的文件!

特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成

『 tar -zcvPf tfile sfile』才对喔!

-p :使用原文件的原来属性(属性不会依据使用者而变)

-P :可以使用绝对路径来压缩!

-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包!

范例:

范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩

[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~ # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

# 上述指令在执行的时候,会显示一个警告讯息:

# 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

# 就得要加上 z 这个参数了!这很重要的!

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /tmp/etc.tar.gz

# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说, # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入

/usr/local/src/etc

# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件, # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 2005/06/01 新的文件才备份

[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -cvf - /etc | tar -xvf -

# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~ # 这分别代表 standard output, standard input 与管线命令啦!

# 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

gzip, zcat 命令

[root@linux ~]# gzip [-cdt#] 档名

[root@linux ~]# zcat 档名.gz

参数:

-c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;

-d :解压缩的参数;

-t :可以用来检验一个压缩档的一致性~看看文件有无错误;

-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~

范例:

范例一:将 /etc/man.config 複制到 /tmp ,并且以 gzip 压缩

[root@linux ~]# cd /tmp

[root@linux tmp]# cp /etc/man.config .

[root@linux tmp]# gzip man.config

# 此时 man.config 会变成 man.config.gz !

范例二:将范例一的文件内容读出来!

[root@linux tmp]# zcat man.config.gz

# 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩

[root@linux tmp]# gzip -d man.config.gz

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件

[root@linux tmp]# gzip -9 -c man.config > man.config.gz

bzip2, bzcat 命令

[root@linux ~]# bzip2 [-cdz] 档名

[root@linux ~]# bzcat 档名.bz2

参数:

-c :将压缩的过程产生的资料输出到萤幕上!

-d :解压缩的参数

-z :压缩的参数

-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 范例:

范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩

[root@linux tmp]# bzip2 -z man.config

# 此时 man.config 会变成 man.config.bz2 !

范例二:将范例一的文件内容读出来!

[root@linux tmp]# bzcat man.config.bz2

# 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩

[root@linux tmp]# bzip2 -d man.config.bz2

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件

[root@linux tmp]# bzip2 -9 -c man.config > man.config.bz2

--------------------------------------文件查找

--------------------------

find

find / -name httpd.conf

么要找到系统中所有包含有这3个字母的文件是可以实现的,输入: find /etc -name '*srm*'

find / -amin -10 # 查找在系统中最后10分钟访问的文件

find / -atime -2 # 查找在系统中最后48小时访问的文件

find / -empty # 查找在系统中为空的文件或者文件夹

find / -group cat # 查找在系统中属于 groupcat的文件

find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件

find / -mtime -1 #查找在系统中最后24小时里修改过的文件

find / -nouser #查找在系统中属于作废用户的文件

find / -user fred #查找在系统中属于FRED这个用户的文件

grep

查找文件内容

假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:

$ grep magic /usr/src/linux/Documentation/*

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分别显示[number]行,

grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行, grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

明确要求搜索子目录:grep -r

或忽略子目录:grep -d skip

当然,如果预料到有许多输出,您可以通过 管道 将其转到‘less’上阅读 $ grep magic /usr/src/linux/Documentation/* | less

--------------------------------------文件编辑

--------------------------

vi

2、vi的基本操作

a) 进入vi

在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile

不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!

b) 切换至插入模式(Insert mode)编辑文件

在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

c) Insert 的切换

您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

d) 退出vi及保存文件

在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

: w filename (输入 「w filename」将文章以指定的文件名filename保存) : wq (输入「wq」,存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)

3、命令行模式(command mode)功能键

1). 插入模式

按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;

按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2). 从插入模式切换为命令行模式

按「ESC」键。

3). 移动光标

vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

按「ctrl」+「b」:屏幕往"后"移动一页。

按「ctrl」+「f」:屏幕往"前"移动一页。

按「ctrl」+「u」:屏幕往"后"移动半页。

按「ctrl」+「d」:屏幕往"前"移动半页。

按数字「0」:移到文章的开头。

按「G」:移动到文章的最后。

按「$」:移动到光标所在行的"行尾"。

按「^」:移动到光标所在行的"行首"

按「w」:光标跳到下个字的开头

按「e」:光标跳到下个字的字尾

按「b」:光标回到上个字的开头

按「#l」:光标移到该行的第#个位置,如:5l,56l。

4). 删除文字

「x」:每按一次,删除光标所在位置的"后面"一个字符。

「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。 「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。 「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。 「dd」:删除光标所在行。

「#dd」:从光标所在行开始删除#行

5). 复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

6). 替换

「r」:替换光标所在处的字符。

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

7). 回复上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

8). 更改

「cw」:更改光标所在处的字到字尾处

「c#w」:例如,「c3w」表示更改3个字

4、Last line mode下命令简介

在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

5、vi命令列表

1、下表列出命令模式下的一些键的功能:

h

左移光标一个字符

l

右移光标一个字符

k

光标上移一行

j

光标下移一行

^

光标移动至行首

数字"0",光标移至文章的开头

G

光标移至文章的最后

$

光标移动至行尾

Ctrl+f

向前翻屏

Ctrl+b

向后翻屏

Ctrl+d

向前翻半屏

Ctrl+u

向后翻半屏

i

在光标位置前插入字符

a

在光标所在位置的后一个字符开始增加 o

插入新的一行,从行首开始输入

ESC

从输入状态退至命令状态

x

删除光标后面的字符

#x

删除光标后的#个字符

X

(大写X),删除光标前面的字符

#X

删除光标前面的#个字符

dd

删除光标所在的行

#dd

删除从光标所在行数的#行

yw

复制光标所在位置的一个字

#yw

复制光标所在位置的#个字

yy

复制光标所在位置的一行

#yy

复制从光标所在行数的#行

p

粘贴

u

取消操作

cw

更改光标所在位置的一个字

#cw

更改光标所在位置的#个字

2、下表列出行命令模式下的一些指令 w filename

储存正在编辑的文件为filename

wq filename

储存正在编辑的文件为filename,并退出vi q!

放弃所有修改,退出vi

set nu

显示行号

/或?

查找,在/后输入要查找的内容

n

与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

对于第一次用vi,有几点注意要提醒一下:

1、 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。

3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)

相关推荐