【转】常用UNIX命令

转自永远的UNIX

UNIX命令
(一)基本命令
命令格式: 命令 参数
1.ls 显示文件名,等同于dos下dir命令
命令格式:ls [option] file
option:
-l 显示详细列表
域1 :文件类型和文件权限
域2 :文件连接数
域3 :文件所有者名字
域4 :文件用户组名字
域5 :文件长度
域6-8 :最近修改日期
域9 :文件名
-a 显示所有文件,包含隐藏文件(以. 起头的文件名)
-R 显示文件及所有子目录
-F 显示文件(后跟*)和目录(后跟/)
-d 与l选项合用,显示目录名而非其内容

2.cd 目录转换,等同于dos下cd命令
注意目录分隔符为??#65292;与dos相反
命令格式:cd dirname

3.pwd 显示当前路径
4.cat 显示文件内容,等同于dos下type命令
命令格式:cat filename

5.more 以分页方式查看文件内容.
命令格式:more filename

6.rm 删除文件
命令格式: rm [-r] filename (filename 可为档名,或档名缩写符号.)
例子:
rm file1 删除档名为 file1 之文档.
rm file? 删除档名中有五个字元,前四个字元为file 之所有文档.
rm f* 删除档名中,以 f 为字首之所有文档.
rm -r dir1 删除目录 dir1,及其下所有文档及子目录.

7.mkdir 创建目录
命令格式: mkdir [-p] directory-name
Exmaple :
mkdir dir1 建立一新目录 dir1.
mkdir -p dir/subdir 直接创建多级目录

8.rmdir 删除目录
目录必须首先为空
命令格式: rmdir directory

9.cp 文档复制
命令格式: cp [-r] source destination
例子:
cp file1 file2 将文档 file1 复制成 file2
cp file1 dir1 将文档 file1 复制到目录 dir1 下,文件名仍为 file1.
cp /tmp/file1 . 将目录 /tmp 下的文档 file1复制到现行目录下,档名仍为 file1.
cp /tmp/file1 file2 将目录 /tmp 下的文档 file1现行目录下,档名为file2
cp -r dir1 dir2 (recursive copy) 复制整个目录.
若目录 dir2 不存在,则将目录dir1,及其所有文档和子目录,复制到目录 dir2 下,新目录名称为dir1.若目录dir2不存在,则将dir1,及其所有文档和子目录,复制为目录 dir2.

10.mv 文件移动
命令格式: mv source destination
例子:
mv file1 file2 将文档 file1,更改档名为 file2.
mv file1 dir1 将文档 file1,移到目录 dir1 下,档名仍为 file1.
mv dir1 dir2 若目录 dir2 不存在,则将目录 dir1,及其所有档案和子目录,移到目录 dir2 下,新目录名称为 dir1.
若目录 dir2 不存在,则将dir1,及其所有文档和子目录,更改为目录 dir2.

11.du 查看目录所占磁碟容量
命令格式: du [-sk] directory
例子 :
du dir1 显示目录 dir1 的总容量及其次目录的容量
du -sk dir1 显示目录 dir1 的总容量,以k bytes为计量

12.find 文件查找
命令格式: find dir -name filename command
例子:
find . -name hello -print 寻找目前目录及所有的子目录内叫hello的文档.
find . -ctime +7 -print 找出七天内未被更动的文档
find . -size +2000m -print 找出大小超过2000 bytes的文档
find /tmp -user b1234567 -print 在/tmp下属於b1234567的文档
find . -name '*.c' -exec rm {} 删除所有的.c档
find . -name test\* -print 显示当前目录及其子目录文件名前4位为test的文件名

13.vi 编辑器
命令状态:
j,k,h,l:上下左右
0:行首
$: 行尾
i,I :插入命令,i 在当前光标处插入 I 行首插入
a,A:追加命令,a 在当前光标后追加,A 在行末追加
o,O:打开命令,o 在当前行下打开一行,O在当前行上插入一行
r,R :替换命令,r 替换当前光标处字符,R从光标处开始替换数字s: 替换指定数量字符
x: 删除光标处字符
dd: 删除当前行
d0: 删除光标前半行
d$: 删除光标后半行
ctrl+f :后翻页
ctrl+b:前翻页
G : 文件尾
数字G: 数字所指定行
/string 查找字符串
n 继续查找
N 反向继续查找
% 查找对应括号
u 取消上次操作
ex命令状态
:set number 显示行号
:set smd 显示显示状态
:0 文件首
:1,5 copy 7 块拷贝
:1,5 del 块删除
:1,5 move 7 块移动
:1,$s/string1/string2/g 全文件查找string1并替换为string2
:wq! 存盘退出

(二) 增强命令
1. ln 文档连结
命令格式:ln -s oldname newname ( Hard link )
同一文档,可拥有一个以上之名称,可将文档做数个连结.
例子:
ln -s file1 file2   将名称 file2,连结至文档 file1.

2.grep 搜索字符串
命令格式:
grep string filename

寻找字串的方法很多,比如说我想找所有以M开头的行.此时必须引进pattern的观念.以下是一些简单的□例,以及说明:
^M 以M开头的行,^表示开始的意思
M$ 以M结尾的行,$表示结束的意思
^[0-9] 以数字开始的行,[]内可列举字母
^[124ab] 以1,2,4,a,或b开头的行
^b.503 句点表示任一字母
* 星号表示0个以上的字母(可以没有)

  • 加号表示1个以上的字母
    \. 斜线可以去掉特殊意义
    cat passwd | grep ^b 列出大学部有申请帐号者名单
    cat passwd | grep ^s 列出交换学生申请帐号者名单
    cat passwd | grep '^b.503' 列出电机系各年级...
    grep '^\.' myfile.txt 列出所有以句点开头的行

3.fgrep 搜索字符串
命令格式:fgrep string file

4.file 显示文件类型
命令格式:file fileall
文件类型为shell s cript,ELF 32bit,ASCII text,data or tar file

5.diff 比较文档或目录之不同内容
命令格式:diff [-r] name1 name2 ( name1 name2 可同时为档名,或目录名称.)
例子 :
%diff file1 file2
比较文档 file1 与 file2 内,各行之不同处.
%diff -r dir1 dir2
比较目录 dir1 与 dir2 内,各文档之不同处.

6.cmp 比较文档相同部分
命令格式:cmp file1 file2

7.ftp 远程文件传输
命令格式: ftp [hostname|IP address]
在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你 username与密码,如果输入对了就可以开始进行文档传输.
注意:如用户无密码,无法注册
(1) ftp 命令
ascii 将传输模式设为 ascii 模式.通常用於传送文字档.
binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像档等.
cd remote-directory 将远程主机上的工作目录改变.
lcd [ directory ] 更改本地主机的工作目录.
ls [ remote-directory ] [ local-file ] 列出远程主机上的文档.
get remote-file [ local-file ] 取得远方的文档.
mget remote-files 可使用通用字元一次取得多个文档.
put local-file [ remote-file] 将本地主机的文档送到远程主机.
mput local-files 可使用通用字元一次将多个文档放到远程主机上.
help [ command ] 线上辅助指令.
mkdir directory-name 在远程主机创建一个目录.
prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个文档之传输时均会询问.
quit/bye 离开ftp .
(2) 后台执行ftp
1.首先,将过程所用到的指令依顺序放入文档中,如下:
%cat ftp_command
!mkdir test
lcd test
cd test
prompt
binary
mget *.*
bye
2.其次,建一个.netrc档,属性为400,让ftp 自动到此读取Username与Password,方可顺利login 到的主机,如下:
%cat .netrc
machine remote login anonymous password guest
3.最後再执行下面指令即可.
%nohup ftp remote < ftp_command > message &

8.telnet 远程终端访问
命令格式:
telnet [hostname|IP address]

9.IO 重新导向

UNIX所有的程式执行时,均需要资料的输入以及输出资料.一般而言,资料是从键盘输入,并将资料输出到萤幕上,这就叫做标准输入及标准输出,而我们可以更改标准出输出入.
A. 更改标准输入 棗 在命令後方加"< " ,即可从这个文档输入资料.
B. 更改标准输出 棗 在命令後方加"> " ,即可将萤幕输出的资料导向到这个文档上.
C. 更改标准输出 棗 在命令後方加">> ",功能与B.相似,只不过这会将资料加在文档後方.
D. 管道 棗 在两个命令中间加上'|',即可将前方指令的输出当成後方指令
D. 管道 棗 在两个命令中间加上'|',即可将前方指令的输出当成後方指令的输入.
例:
cd /tmp
ls -l > /tmp/ls.out
cat /tmp/ls.out
more /tmp/ls.out
rm /tmp/ls.out
ls | more
ls | wc -l (word count, count line number,算出文档数