UNIX入门命令.docx
《UNIX入门命令.docx》由会员分享,可在线阅读,更多相关《UNIX入门命令.docx(17页珍藏版)》请在冰豆网上搜索。
![UNIX入门命令.docx](https://file1.bdocx.com/fileroot1/2023-1/14/0fedff1f-34c4-40ea-9415-c77bf7a71dc0/0fedff1f-34c4-40ea-9415-c77bf7a71dc01.gif)
UNIX入门命令
常用命令
文件及文件夹,磁盘相关
文件基本操作
touchfilename新建文件
morefilename查看文件(more命令:
一次一屏地显示文本文件的内容,是一种UNIX过滤器;空格键换到下一屏,回车键滚动一行,q键回到提示符下。
)
vifilename编辑文件
rmfilename删除文件
rm-ifilename删除文件不可恢复,加参数i进行确认
cpfile1file2拷贝文件
mvfile1file2移动文件,也启动了重命名的作用
filefilename获得文件的类型
ls–lrtfilename显示文件的属性
lddfilename列出文件的动态链接库
nmfilename列出文件的符号表
目录基本操作
mkdirdirname重建目录
mkdir-pdir/subdir直接创建多级目录
cp-rsource_dirtarget_dir拷贝目录
‘rm’–rfdir删除非空目录
rmdirdirname删除空目录
rm-rdirname删除目录
rm-ridirname删除目录不可恢复,加i予以确认
ls显示文件名
命令格式:
ls[option]file
-l显示详细列表
域1:
文件类型和文件权限
域2:
文件连接数
域3:
文件所有者名字
域4:
文件用户组名字
域5:
文件长度
域6-8:
最近修改日期
域9:
文件名
-a显示所有文件,包含隐藏文件(以.起头的文件名)
-r显示文件及所有子目录
-f显示文件(后跟*)和目录(后跟/)
-d与l选项合用,显示目录名而非其内容
-t含时间
find
命令格式:
finddir-namefilenamecommand
搜索表达式意义定义
namefilename文件名搜索所有匹配的给定的文件,可以接受元字符(如?
*)
find.-namehello-print寻找目前目录及所有的子目录内叫hello的文档.
typefiletype文件类型搜索匹配给定文件类型的文件(d为目录)
#find/export-typed//安装文件类型查找
mtime[+|-]n修改的时间搜索所有修改时间或者大于,或小于给定时间的文件
find.-mtime+7-print找出七天内未被更动的文档
atime[+|-]n访问的时间搜索所有访问时间或者大于,或者小于给定时间的文件
userloginid-groupgroupid用户ID和属组ID搜索所有匹配登陆ID的所有者或属组ID的文件
find/tmp-userb1234567-print在/tmp下属於b1234567的文档
permmode权限搜索所有匹配给定权限的文件(只允许八进制模式)
size[+|-]n[c]搜索所有大小或者大于,小于n的文件,n以512字节每块计算,如果后面有ac,则以字符(字节)计算
find.-size+2000m-print找出大小超过2000bytes的文档
-print基将搜索结果输出到标准输出。
该结果是一个全路径名的文件名列表
find.-nametest\*-print显示当前目录及其子目录文件名前4位为test的文件名
-execcommand{}\;exec选项必须通过\;来终止;这样使得find命令可以应用于指定命令中搜索准则中给出的每个文件
find.-name'*.c'-execrm{}删除所有的.c档
-okcommand{}\;-exec的交互格式.这个选项用于要求来自用户的输入命令.如rm–i
#find/export-nametest.txt-okrm{}\;//交互模式删除y
-ls使用长列表格式打印当前路径.这个表达式最常用于链接一个输出,把它重定向到一个文件中,以便稍后进行检查
#find/-namepfile-print>;find.txt2>;null.txt&
//找到则放入find.txt,否则就放到null.txt程序在后台运行
cat命令
显示文件的内容cat[-u][-s][-v][-t][-e][file...]没有停顿地显示整个文件,一般用于显示小型文本文件,最好是一屏内容,约24行或更少。
允许在文件中使用通配符。
建立小型文本文件cat>filename+存盘退出放弃并退出
连接数据文件
catfile1file2>file3将文件1,2连接起来放在文件3中,若文件3存在,覆盖,否则,生成新文件;
catfile1file2>>file3将文件1,2附加到文件3内容的最后,若文件3不存在则生成文件3。
消掉文本中的^M
#cattest.dat|tr-d'15'>test.out
这样可以将test.dat内^M(15)这个字元去掉,产生test.out
或者
dos2unixaaa.txtbbb.txt,会去掉aaa.txt中的^M,生成bbb.txt文件
ln文档连结
命令格式:
ln[-s]oldnamenewname
同一文档,可拥有一个以上之名称,可将文档做数个连结.
一个符号链是指向系统另一个文件的特殊文件,当访问这种文件时,它里面存放着
一个路径名,该路径名用来引导用户到卡符号链所指的文件或目录
ln-sfile1file2 将名称file2,连结至文档file1.
grep搜索字符串
命令格式:
grepstringfilename
^M以M开头的行,^表示开始的意思
M$以M结尾的行,$表示结束的意思
^[0-9]以数字开始的行,[]内可列举字母
^[124ab]以1,2,4,a,或b开头的行
^b.503句点表示任一字母
*星号表示0个以上的字母(可以没有)
+加号表示1个以上的字母
\.斜线可以去掉特殊意义
;catpasswd|grep^b列出大学部有申请帐号者名单
catpasswd|grep^s列出交换学生申请帐号者名单
catpasswd|grep'^b.503'列出电机系各年级...
grep'^\.'myfile.txt列出所有以句点开头的行
fgrep搜索字符串命令格式:
fgrepstringfile
#grep-iroot/etc/passwd//忽略大小写
#grep-vroot/etc/passwd//显示除了含有root的行
#grep-crootgroup//统计有多少行
#grep-lrootpasswdgrouphosts//查找文件中包含root的文件
diff比较文档或目录之不同内容
命令格式:
diff[-r]name1name2(name1name2可同时为档名,或目录名称.)
#difffile1file2比较文档file1与file2内,各行之不同处.
#diff-rdir1dir2比较目录dir1与dir2内,各文档之不同处.
#diff-itest.txttest2.txt//忽略文章中的大小写
#diff-ctest.txttest2.txt//进行细致的比较生成一个差别表
cmp比较文档相同部分
命令格式:
cmpfile1file2
head
#head-5/export/home/wing/test.txt//显示开始的5行
#headchap*|more//显示所有以chap开头的文件的头部
用来显示一个或多个文件的前n行
默认省略-n参数将显示文件的前10行
tail
#tail-5/export/home/wing/test.txt//显示最后5行
#tail+5/export/home/wing/test.txt//显示第5行开始到结束
#tail-f/var/adm/messages//实时自动浏览syslog入口
wc
#wc/export/home/wing/test.txt//显示文件的行、单词、字节数
#wc-l/export/home/wing/test.txt//显示文件的行数
-l统计行数
-w统计单词数
-c统计字节数
-m统计字符数
打包,压缩相关
打包与压缩
tarcvf/dir/tarname/dir
gzip/dir/tarname
解压缩与解包
gunziptarname(对于Z文件,使用uncompress命令)
tarxvftarname
c-建立新文档v-显示路径t-显示文件列表f-指定设备x-抽取文件i-交互式
compressuncompress文件后缀名为Z。
zip(很少用)
#zipwinziptest1.txttest2.txt//生成winzip.zip文件
#unzipwinzip.zip//解压缩
磁盘管理
format
#df-k//显示当前所有已安装的文件系统上的文件数目和空闲块的数目
#df-a//打印所有文件系统的信息
du–skdir查看文件夹大小(k标识单位为k)
du–sk(du–sk*)
more/etc/vfstab
#iostat-E看硬盘的大小和型号
#prtvtoc/dev/rdsk/c0t0d0s0显示某个磁盘的分区状况
vi进行文本的编辑
vi三种工作模式
输入模式:
接收用户键盘输入的字符;
命令模式:
对文件进行修改,光标的移动;
操作命令模式:
退出、存盘等操作。
输入模式到命令模式,按esc键;反之,按A,a,I,I,S,s,O,o等键。
vi的启动
vi直接启动vi编辑器
vifilename启动vi并从第一行编辑文件
vi+nfilename启动vi并从第n行编辑文件
vi+filename启动vi并从最后一行编辑文件
vi–rfilename启动vi,在系统瘫痪后恢复文件
示例操作:
vifilename键入该命令行回车后,vi编辑程序自动置于命令方式
键入字母i,转为输入模式,输入文本内容
:
w存盘操作(按esc,转成命令方式后)
命令方式下,按x键删除光标处字符;a键,输入内容附加到当前光标后。
vi的退出并保存文件
vi编辑文本时,系统分配一片存储区域,称为编辑缓冲区。
vi的所有工作都在此缓冲区中完成。
只有存盘后,该缓冲区的内容才写道磁盘上,否则全部丢失。
:
w存盘但不退出vi
:
wnewfile编辑内容另存为。
:
q不写盘退出vi程序
:
q!
无条件退出vi程序
:
wq以原文件名写盘并退出vi程序
:
x
:
zz
常用编辑命令
至句尾)至局首(
至段尾}至段首{
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+d:
后翻半页
ctrl+b:
前翻页ctrl+u:
前翻半页
G:
文件尾
数字G:
数字所指定行
/string向下查找字符串%string向上查找字符串
n继续查找N反向继续查找
u取消上次操作
ex命令状态
:
setnumber显示行号
:
setsmd显示显示状态
:
0文件首
:
1,5copy7块拷贝
:
1,5del块删除
:
1,5move7块移动
:
1,$s/string1/string2/g全文件查找string1并替换为string2
字符串替换
:
s/vivian/sky/替换当前行第一个vivian为sky
:
s/vivian/sky/g替换当前行所有vivian为sky
:
n,$s/vivian/sky/替换第n行开始到最后一行中每一行的第一个vivian为sky
:
n,$s/vivian/sky/g替换第n行开始到最后一行中每一行所有vivian为sky
n为数字,若n为.,表示从当前行开始到最后一行
:
%s/vivian/sky/(等同于:
g/vivian/s//sky/)替换每一行的第一个vivian为sky
:
%s/vivian/sky/g(等同于:
g/vivian/s//sky/g)替换每一行中所有vivian为sky
可以使用#作为分隔符,此时中间出现的/不会作为分隔符
:
s#vivian/#sky/#替换当前行第一个vivian/为sky/
ftp
服务启用
系统安装好了,默认情况下除root用户外的其他用户ftp/telnet是可用的,如果需要对ftp/telnet做一些调整,需要修改配置文件,ftp/telnet涉及到的文件有下面一些。
首先,控制能否telnet/ftp的配置文件是/etc/inetd.conf,
ftpstreamtcp6nowaitroot/usr/sbin/in.ftpdin.ftpd
telnetstreamtcp6nowaitroot/usr/sbin/in.telnetdin.telnetd
修改了inetd.conf文件需kill-HUPpid对inetd进程重启(pid用命令查看ps-ef|grepinetd)(在solaris9forx86下,更改/etc/inetd.conf文件后,重启inetd的命令是:
#pkill-HUPinetd
#/etc/init.d/inetsvcstart)
第二,root用户的ftp/telnet,默认情况下root用户是不允许ftp/telnet的,修改/etc/ftpd/ftpusers(对于solaris8是/etc/ftpusers)配置文件,将root用户注释掉,则root用户才可以ftp,如果想让某个用户不能ftp,可以将其加到这个文件中来。
修改/etc/default/login配置文件,找到CONSOLE=/dev/console,将其注释掉,就可以用root用户telnet了。
第三,如果想让某个用户只能ftp,不能telnet。
可以先把/etc/passwd文件中该用户的shell改成/usr/sbin/nologin,然后再在/etc目录下建一个shells文件,里面加入/usr/sbin/nologin。
在UNIX平台上,FTP服务由守护程序ftpd实现.该守护程序由超级服务守护程序inetd创建.当inetd接到ftp服务请求时,它将激活ftpd.为了让inetd替ftpd进行监听,必须确认在/etc/inetd.conf文件中包含有效的ftpd项.为了使ftpd项有效,必须清除该项前的#字符.
inetd从/etc/services文件中寻找需要监听的端口,该文件中定义了FTP的默认端口.inetd只在启动时读取该文件,因此在修改了/etc/services或/etc/inetd.conf文件后,只有通过重新引导系统或各inetd发SIGHUP信号使inetd重新启动后,修改才生效。
对于root用户,/etc/ftpd/ftpusers中需要注释掉root用户
使用方法
命令格式:
ftp[hostname|IPaddress]
ascii将传输模式设为ascii模式.通常用于传送文档文件.
binary将传输模式设为binary模式,通常用于传送可执行文件,压缩文件与影像
ascii与binary区别
cdremote-directory将远程主机上的工作目录改变.
lcd[directory]更改本地主机的工作目录.
ls列出远程主机上的文档.
getremote[local-file]取得远方的文档.
mgetremote-files可使用通用字元一次取得多个文档.
putlocal[remote-file]将本地主机的文档送到远程主机.
mputlocal-files可使用通用字元一次将多个文档放到远程主机上.
help[command]线上辅助指令.
mkdirdirectory-name在远程主机创建一个目录.
prompt更改交谈模式,若为on则在mput与mget时每作一个文档之传输时均会询问.
quit/bye离开ftp
telnet
命令格式:
telnet[hostname|IPaddress]
*注:
如使用root用户登录,其权限请参见11.3.4
ssh
1.solaris9和solaris10默认都是启动ssh进程的。
ps-ef|grepssh
/usr/lib/ssh/sshd
svcs|grepssh
onlineSep_08svc:
/network/ssh:
default
solaris默认禁止root用户直接使用ssh登陆,一般先用非root用户登陆到ssh后,su成为root。
如果想直接用root登陆,则修改如下配置文件:
vi/etc/ssh/sshd_config
找到其中的如下一行,将前边的#符号去掉,并修改no为yes
#PermitRootLoginno
改成:
PermitRootLoginyes
然后重新启动SSH服务:
ps-ef|grepssh
kill-9PID
ssh进程被kill后,一般会自动启动,若未启动,则手动启动:
/usr/lib/ssh/sshd
重新启动完成后,即可直接使用root进行ssh登陆。
IO重新导向
UNIX所有的程式执行时,均需要资料的输入以及输出资料.一般而言,资料是从键盘输入,并将资料输出到屏幕上,这就叫做标准输入及标准输出,而我们可以更改标准出输出入.
A.更改标准输入:
在命令後方加"B.更改标准输出:
在命令後方加">filename",即可将屏幕输出的资料导向到filename。
C.更改标准输出:
在命令後方加">>filename",功能与B相似,但是追加方式。
D.管道:
在两个命令中间加上'|',即可将前方指令的输出当成後方指令的输入。
系统资源查看
vmstat//查看虚拟内存状态
#vmstat
kthrmemorypagediskfaultscpu
rbwswapfreeremfpipofrdesrcdf0s0--insycsussyid
0006350124088010362101023130001162871841199
#vmstat–s
mpstat//系统负载cpu等信息
#mpstat5//每隔5秒刷新一次
CPUminfmjfxcalintrithrcswicswmigrsmtxsrwsysclusrsyswtidl
0322011468181501026301198
#prtconf//查看系统配置信息
#prtconf|grepMemory//查看内存
prtdiag
prtdiag-v
#uname-m
#uname
#uname-a
SunOSwing5.9Generic_112234-03i86pci386i86pc
#eepromselftest-#megs=64//修改系统自检到的内存数
#sysdef//更详细的体系机构
显示cpu使用率最高的进程
#ps–eopid,pcpu,args|sort+1n
该命令输出当前系统进程的pid,CPU占用率及命令描述,并以pcpu来排序
时间日期查看
cal
#cal
#cal200612
#date;uname//组合命令,中间用;隔开
2004年05月19日星期三22时05分23秒CST
SunOS
#datemmddHHMMYYYY.SS,月日时分年.秒//root用户下修改时间(对于不涉及应用的不需要重启服务器,对于涉及应用的需要全盘考虑)
用户登陆信息查看
who
#who
rootconsole10月219:
23(:
0)(本地登陆)
wingpts/210月219:
22(192.168.0.1)(远程登陆)
#who-q//登陆用户统计
rootwing
#users=2
#who-r//运行级别
.run-level310月219:
2030S
$who-Hu
NAMELINETIMEIDLEPIDCOMMENTS
kevenpts/210月1210:
57.389(192.168.0.1)
userpts/310月1210:
160:
52368(192.168.0.1)
PID为用户登陆上来的进程,#kill-9368把此用户踢出
w
$w
下午11点01分运行3:
43,4users,平均负载:
0.00,0.00,0.02
用户名终端号登入时间闲置JCPUPCPU执行命令
rootconsole下午7点21分3:
40101/usr/dt/bin/dtscreen-modeblank
kevenpts/6下午10点11分-csh
wingpts/2下午10点11分5w
colepts/3下午10点11分50-ksh
$wkeven
下午11点10分运行3:
52,4users,平均负载:
0.00,0.00,0.02
用户名终端号登入时间闲置JCPUPCPU执行命令
kevenpts/6下午10点11分9-csh
logins
#logins
root0other1Super-User
last
$last//当前系统的使用历史使用模式
kevenpts/2192.168.0.1MonOct600:
55仍在登录状态
finger
#finger
LoginNameTTYIdleWhenWhere
rootSuper-UserconsoleThu19:
23:
0