根据《Learning the Unix Operating System》整理的一些工作中会常用的命令,大概分下面3个方面
文件目录操作
任务管理
网络服务
文件系统
登录时的目录:home directory根目录:/
标准一级子目录:bin, etc, users, tmp, usr 等等
bin:系统程序
users:不是每个Unix系统都有这个目录,可能是u,或者是home
shell支持Tab键自动完成,比如输入文件、目录前1、2个字符按Tab,shell会试图自动填充完整文件、目录名。
文件夹(目录)操作命令
显示当前目录的路径
pwd (print working directory)
进入文件夹/切换工作目录
cd pathname
返回到登陆时的home目录
cd
(symbolic link, FIFOs, socket 在unix上都有pathname)
查看目录
ls
ls的命令格式
ls options 路径(文件、目录)
查看目录,包括隐藏文件
ls -a
单个点. 表示当前目录
两个点.. 表示上级目录
以一个点.开始的文件 表示这是隐藏文件(或子目录)
查看目录下的,文件和子目录的详细信息
ls -l
d rwx r-x r-x
第1列 d表示这是目录,-表示这是文件
第2-9列 每3个字符一组,分别对应1、当前用户;2、当前群组;3、所有其他用户,这3类用户的存取权限,r表示‘读’权限,w表示‘写’权限,x表示‘执行’权限,对目录而言:r表示是在ls命令中可显示,w是更新目录内文件权限,x是‘存取’权限
第10列(数字) 链接到这个文件(目录)的文件(目录)数量。
第11列(名称) 文件的所有者(创建者)
第12列(名称) 群组名,持有文件的群组名
第13列(数字) 文件(目录)大小,单位字节bytes。注:目录大小只是目录文件本身的大小,不包括目录内文件。
第14列(日期时间) 上次修改时间,对目录而言是目录的内容更改时间(目录内文件的增删改)
最后1列(名称) 文件(目录)名
查看目录下的,只看文件、子目录名
ls -F
查看目录下的,文件及其子目录下的文件
ls -R
创建目录
mkdir
命令语法
mkdir dirnames
创建2个新目录
mkdir spy boston.dine
用空格分隔多个要创建的目录名。
文件操作命令
文件名的通配符* 表示任何文件、目录名,也可以ae*,表示ae开头的任何文件名
? 表示单个字符的通配,h?p 匹配 hop,hip,不会匹配help
[] 表示几个可选字符匹配单个字符,比如[Cc]hapter,匹配Chapter,chapter,还可以用-指定可选字符范围比如chap[1-3]匹配chap1,chap2,chap3
权限
修改文件(目录)存取权限chmod
命令格式:
chmod permissions files
2种修改权限的方法:
一种是相对修改,在现有权限的基础上增加或减少权限
另一种是绝对修改,更改权限到指定的权限
当前目录不允许任何人可write
chmod a-w .
修改当前目录的权限 用一个点.表示当前目录
这是相对修改权限,第1个参数a表示所有用户类型,减号-表示减少权限,w表示‘write’权限。
当前用户可以write指定文件
chmod u+w filename
这是相对修改权限,第1个参数u表示当前用户user,加号+表示增加权限。
当前用户和当前群组的用户都能read和write当前目录下的所有文件(和目录)
chmod ug=rw *
这是绝对修改权限,u表示当前用户,g表示当前群组用户,=表示绝对修改权限,r是‘read’权限,w是‘write’权限,* 是文件名通配符
当前用户和当前群组的用户都能read和write指定文件(列表)例子是对afile、bfile、cfile这3个文件
chmod ug=rw afile bfile cfile
chmod go-rwx dirname
指定目录只对自己可以存取
chmod go-rwx dirname
g是group users,o是others users,减号-是去掉权限,r是read权限,w是write权限,x是execute权限
指定目录只对自己可以存取(第2种实现)
chmod go= dirname
指定group和others的绝对权限为空
自己具有全部权限,group和others可以查看文件、目录内容
chmod u=rwx,go=rx dirname
注意:group和others没有write权限的话,就不能rename、remove和add文件
查看自己所属群组
groups
更改文件、目录所属的群组
chgrp csstudnt csc303
csstudnt 是新的群组名, csc303 是目录(文件)名
022 表示 rw-r--r-- 权限,自己可以读写,其他人只能读
002 表示 rw-rw-r-- 权限,自己和群组可以读写,其他人只能读
删除文件
rm filename(s)如果文件名中有特殊字符,前后加双引号”“,(在MacOSX上,如果文件名出现@符号,在最后一个双引号”后再加一个@)
删除指定目录及其下所有文件
rm -r dirname
删除所有扩展名为.old的文件,和一个chap10的文件。
rm *.old chap10
删除目录(目录必须为空,不为空不能用该命令删除)
rmdir dirnames
编辑文件
文本编辑器(shell),很多时候要编辑一些配置文件,需要用到。vi
emacs
pico
复制文件
复制文件Copy文件
cp
语法
cp old new
copy一个文件到当前目录,并重新命名 (如果copy to目录不存在,就会以目的名称创建相应的文件或目录)
cp /etc/passwd password
copy多个文件到指定目录(如果copy to目录存在,就会复制文件目录到指定目录下)
cp ../john/ch1 ../john/ch2 ../john/ch3 work
copy多个文件(用通配符)
cp -i ../john/ch[1-3] work
-i 当发现有同名文件,提示是否覆盖
copy文件到当前目录(用一个点.表示当前目录)
$ cp ../john/ch[1-3] .
copy整个目录(包括其下所有子目录和文件)
cp -R john/work asha/work
-R 嵌套执行复制的意思
中止copy过程
CTRL-Z
MacOSX 的有些文件会有2个分支forks,一个是资源,一个是数据,这种文件要拷贝copy最好用CpMac命令。
CpMac
重命名文件
mv old new移动文件
mv old new查找
find . -type f -name "chap*" -print
.表示查找当前目录
-type f 表示只查找文件类型
-name "chap*" 查找以chap开始的文件
find . -type f -mtime -2 -print
-mtime -2 最近2天创建和有修改的文件
查找全部包含指定名称的文件(整个文件系统)
locate alpha
搜索文件(按正则表达式)
grep “pattern” files
搜索当前目录下所有包含Unix的文件
grep "Unix" *
输入输出重定向
< 比如mail bigboss@corp.xyz < to_do 把要从键盘输入的邮件内容,通过<重定向到to_do这个文件去> 把执行输出结果重定向到文件
| pipe operator,把一个程序的标准输出对接到另一个程序的标准输入。
>> append redirection operator
把一个文件最加另一个文件中(最尾部),然后生成一个新文件
cat file1 file2 > newfile
把一个文件最加另一个文件的尾部
cat file2 >> file1
列出当前目录内容,标准输出重定向到grep,作为grep的查找范围。grep查找包含“Aug”的文件列表
ls -l | grep "Aug"
查找以carol开始,Aug结束,中间有0个或多个字符的文件,.是正则表达式的通配符,*是正则表达式中出现的量词
ls -l | grep "carol.*Aug"
按条件搜索,对查询结果排序。
ls -l | grep "Aug" | sort +4n
+x 排序时忽略first x fields (ls -l返回列表的列,列与列之间用空格分隔)+4,就时忽略ls结果列表的前面4列,从第5列开始应用排序规则,也就是文件大小。
-n 按数字排序(比如10在2后),忽略空格和tab
登录配置
修改登录密码passwd ?
登录配置: 登录后的环境配置
.profile
.login
进程管理(任务管理)
运行一个后台任务sort bigfile > bigfile.sort &
在命令最后加一个&
查看当前任务列表
ps
查看当前terminal列表
tty
停止cancel一个进程
kill pid(s)
查看命令帮助
man
退出按q
脚本开发
shell script
bash dev
perl
网络
远程登录
telnetssh
rsh
rlogin
远程登录到某主机
telnet biolab.medu.edu
登出远程主机
exit
远程连接最好用ssh,确保安全性。
2台主机拷贝copy文件,从远程主机giraffe的当前目录下复制2个文件到本机当前目录下
scp giraffe:report.may giraffe:report.june .
从远程主机的相对当前目录的路径下的所有文件,复制到本机的当前目录下
scp "giraffe:food/lunch/*" .
如果带有通配符,要加双引号。
cygwin windows下的类unix软件开发工具
FTP
ftpncftp
ftp hostname
会提示用户和密码
常用ftp命令
登出 quit
查看目录文件 dir
进入目录 cd
上传文件 put filename
上传多个文件 mput filenames
下载文件 get filename
下载多个文件 mget filenames
邮件
控制台shell发送邮件mailx