Author: yoyoba(stuyou@126.com)
Date: 2011-4-23
一直在用LINUX,但是却没有对LINUX命令系统学习过,正好利用这段还算比较清闲的时间,学习一下LINUX常用的命令,是《LINUX命令速查手册》的读书笔记,这本书是Scott Granneman著,成保栋翻译,人民邮电出版社出版,2009.10第一版,写的浅显易懂,基本是一些常用的实用命令。陆续还会对这些命令的用法进行完善,会持续更新。如果转载请注明出处,谢谢!
一.基础命令
1.通配符
*,匹配0或任意多个字符
?,匹配单个字符
[],可以匹配一组单个字符,或者是匹配用连字符(“-”)指定某一范围内的字符
2.ls,列出文件、文件夹
-R(--recursive),查看子文件夹中的文件列表,递归遍历目录
-1(--format=single-column),单独一列显示内容
-m(--format==commas),用逗号分隔的列表显示内容
-a(--all),显示隐藏的文件和文件夹
-F(--classify),显示文件类型,*表示可执行文件,/表示目录,@表示符号链接文件,|表示管道,=表示套接字
--color,用不同颜色显示内容,dircolors--print-database查看系统为各种文件映射的颜色
-l(--format=long),显示详细信息
-r(--reverse),以相反的顺序显示列表内容(和-l选项显示的以字母顺序相反)
-X(--sort=extension),以文件的扩展名排序
-t(--sort=time),按日期和时间排序
-S(--sort=size),按文件大小排序
-h(--human-readable),用K、M、G显示文件大小
3.pwd,显示当前目录
4.cd,切换目录
cd -,切换到以前的目录
5.touch file,将文件时间修改为当前时间,也可用来创建一个新的空文件
-a(--time=access),只更新访问时间
-m(--time=modify),只更新修改时间
-t [[CC]YY]MMDDhhmm[.ss],修改为任意时间
字符 含义
--------------------------------------------------------
CC 4位年份数字钟的前2位字符
YY 2位数字的年份:
如果是00-68,则假设年份的前2位数字为20
如果是69-99,则假设年份的前2位数字为19
如果什么也没有,则假设为当前年份
MM 月份(01-12)
DD 日期(01-31)
hh 小时(01-23)
mm 分钟(00-59)
ss 秒(00-59)
------------------------------------------------------------
6.mkdir,创建新目录
-p(--parents),创建新目录及其下面的子目录。如mkdir -p ~/a/b/c,会在~下连续创建a/b/c目录
-v(--verbose),显示mkdir的操作步骤
7.cp,复制文件和目录
把文件复制到目录时,只需指明目录名(该目录若不存在,则把目录当做文件),不需要指定目标文件名
复制时可以使用通配符
-v(--verbose),复制时显示执行过程
-i(--interactive),当覆盖已存在的文件时,提供确认
-R(--recursive),复制目录
8.mv,移动或重命名文件
移动文件到指定目录,只需提供目录名/,而不需指定目标文件名
移动子目录,不需使用-R选项
9.rm,删除文件或目录
rm删除时会彻底删除,不是删除到回收站
shred命令删除的文件,几乎不能恢复
-v(--verbose),显示删除过程
-i(--interactive),删除确认
-R(--recursive),递归删除
-f(--force),强制删除
-Rf,删除目录常用选项
文件名中如果有有空格,删除时则用双引号把文件名括起来;删除由“-”开始的文件时,在rm后加"--"
10.su username (switch user),变更到username用户
-l(--login),变更用户时,环境变量也跟随变更
su,变更到root
su -,变更到root,连同环境变量
二.学习命令
1.man
在man page页中,搜索时,输入“/word”,按下Enter或n,跳转到下一个搜索结果,shift+n返回
-f(--whatis),根据命令名称快速查找命令功能
man [1-8],读取命令的特定man page。man page按照其类型分成了不同的区段,分别标记为数字1到8,区段划分如下
数字 描述
--------------------------------------------------------------
1 普通命令,如cd、chmod
2 由内核提供的底层系统调用,如intro、chmod
3 C库函数,如beep
4 特殊文件,如/dev中找到的设备
5 文件格式和约定,如apt.conf、passwd
6 游戏
7 杂项,包括宏包,如ascii、samba、utf-8
8 root用户使用的系统管理命令,如shutdown、mount
----------------------------------------------------------------
2.whereis 命令名,查找命令的可执行文件、源文件和man page路径
会先报告命令的源文件位置,然后报告二进制可执行文件的位置,最后报告man page路径
-b,只搜搜二进制文件
-m,只搜索man page
-s,只搜索源文件
3.whatis 命令名,获取命令的描述
等价于man -f
4.which 命令名,找出将要运行的命令的版本
whereis -b kword,会在两个地方找到kword,那么哪个会先运行?which kword就会得到答案
which 命令名,如果系统中命令存在,且在PATH中,则返回命令所在路径,否则不返回任何信息
三.组合命令
1.分号,连续运行多个命令。将各个需要运行的命令放在shell的一行上,用分号分隔,只有一个命令结束运行(不管成功或者失败),才会运行下一个命令,可以使用sleep n,来引入短暂延迟
2.&&,用&&分隔各命令,则只有当前一条命令执行成功(命令返回的退出状态码为0)时,后一条命令才会被执行。如果有一条命令没有执行成功,则停止
3.||,只有前面的命令运行失败,才运行下一个命令。
4.$(),将一个命令的输出插入到另一个命令。比如,想创建一个以当前日期来命令的文件夹,可以这样,mkdir $(date "+%Y-%m-%d"),这里的date "+%Y-%m-%d"命令是现实当前的日期,插入到了mkdir中。
5.|,管道,将前一个命令的输出作为后一个命令的输入
6.>,输出重定向,ls /home/stuyou > a.txt,如果a.txt文件不存在,则创建它,如果存在,则完全覆盖它。
7.set -o noclobber,打开noclobber选项,防止重定向时对文件的完全覆盖,如果要使用重定向并覆盖文件,应使用|>代替>,set +o noclobber关闭noclobber选项,要一直打开colobber选项,可以在.bashrc中增加一行set -o noclobber
8.>>,将输出追加到文件,如果文件存在,则追加到文件底部,如果文件不存在,则创建
9.<,输入重定向,把标注输入重定向到文件
四.查看文件
1.cat
cat file1 file2,把file1和file2合并输出到标准输出设备
cat file1 file2 > file3,把file1和file2合并后输出到文件file3
-n(--number),显示文件时加上行号
2.tac,反向显示文件,cat从第一行显示到最后一行,tac从最后一行显示到第一行
3.less,分屏查看文件,类似命令有more,pg,most
-N(--LINE=NUMBERS),显示行号
在.bashrc中添加export EDITOR=vim,则在使用less查看时,按下v,less界面消失,弹出VIM编辑器,编辑完毕,退出编辑器,返回到less
less的键盘操作命令
键盘命令 操作
---------------------------------------------------------
PageDown、e、或空格键 前进一页
PageUp或b 后退一页
Return、e、j、或下箭头键 前进一行
y、k或上箭头键 后退一行
G或p 前进到文件的结尾
1G 回到文件的开始
Esc-)或右箭头键 向后滚动
Esc-(或左箭头键 向左滚动
Q 退出less
= 在屏幕底部显示文件信息
/ 在less中搜索
----------------------------------------------------------
less的搜索命令
键盘命令 操作
--------------------------------------------------------------------
/搜索模式 向前搜索使用正则表达式来表示的模式
n 向前重复搜索
N 向后重复搜索
---------------------------------------------------------------------
4.head,查看文件前10行的内容
-n 5(--lines-5),查看前5行内容
-c 100(--bytes=100),查看前100字节内容,-c 100k,查看前100K字节内容,-c 100m,查看前100M内容
5.tail,查看文件后10行内容
-n 5(--lines=5),查看后5行内容
-f(--follow),查看一个文件中不断更新的最后10行内容,例如用于查看日志文件,日志文件一旦更新,就会自动显示最后10行内容,直到CTRL+C来中止tail命令。
五.打印和管理打印任务
1.lpstat,查看打印机如何连接
-p,列出所有可用的打印机
-d,找到默认的打印机
-s,查看打印机是如何连接的
-t,一次性获取打印机的所有信息
2.lpr file,将文件打印到默认的打印机
lpr -P 非默认打印机名
lpr -# 数字(1-100),打印多份
3.lpq,列出打印任务队列
-a,列出所有的打印任务队列,包括非默认打印机
4.lprm,取消默认打印机上的打印任务
lprm job ID,取消编号为ID的打印任务作业
lprm -,取消所有的打印任务
六.拥有者和权限
1.chgrp,改变群组
chgrp family a.sh,把a.sh的群组修改为family,可以是群组名,也可以是裙子ID
-R(--recursive),递归修改目录属于的群组
-v(--verbose),显示命令执行过程
-c(--changes),只显示修改过的内容
2.chown,修改文件和目录的拥有者
chown denise a.sh,把a.sh的拥有者改为denise,可以是用户名,也可以是用户ID
chown owner:group file,同时把file文件的群组改为group,拥有者改为owner
3.chmod,更改文件和目录的权限
常见的文件权限为rwx,其实还有一些特殊权限,包括suid、sgid和sticky bit,
权限字母及其含义
文件属性 缩写 对文件的含义 对目录的含义
---------------------------------------------------------------------------------------------------
可读(readable) r 可以查看 可以使用ls命令列出其内容
可写(wrieable) w 可以编辑 可以删除、重命名或添加文件
可执行(executable) x 可以作为程序来运行 可以读取它的文件和子目录,或运行文件
suid s 任何用户都可以使用拥有者 不可用
的权限来执行文件
sgid s 任何用户都可以使用用户组 在目录中新创建的任何文件都属于拥有
的权限来执行文件 该目录的用户组
sticky bit t 告诉OS经常要执行这个文件 用户不能删除或重命名文件,除非当前用户
所以通常把它保存在交换区 是文件或者目录的拥有者
以便快速访问(只适用于较
早的UNIX系统,LINUX将忽
这个属性略)
----------------------------------------------------------------------------------------------------
chmod [ugo][+-=][rwxst],用字母修改文件和目录的权限
chmod [0-7][0-7][0-7],用数字修改文件和目录的权限
-R(--recursive),递归修改权限
chmod u[+-]s,使用字母设置和清除suid,suid只适用于可执行文件,不能用于目录
chmod 4[0-7][0-7][0-7],使用数字设置suid,在原来数字的左边写上4,表示设置suid
chmod 0[0-7][0-7][0-7],使用数字清除suid,在原来数字的左边写上0,表示清除suid
chmod g[+-]s,使用字母设置和清除sgid,sgid既适用于文件,也适用于目录
chmod 2[0-7][0-7][0-7],使用数字设置sgid,在原来数字的左边写上2,表示设置sgid
chmod 0[0-7][0-7][0-7],使用数字清除sgid,在原来数字的左边写上0,表示清除sgid
chmod [+-]t,使用字母设置和清除sticky bit,LINUX忽略文件的sticky bit权限,LINUX下,sticky bit只对目录有效
chmod 1[0-7][0-7][0-7],使用数字设置sticky bit,在原来数字的左边写上1,表示设置sticky bit
chmod 0[0-7][0-7][0-7],使用数字清除sticky bit,在原来数字的左边写上0,表示清除sticky bit
七.归档和压缩
1.zip
zip myzip.zip file1 file2...,把file1、file2...压缩成myzip.zip
zip myzip.zip mydir,把目录mydir压缩成myzip.zip
-[0-9],设置压缩比,0表示不压缩,9表示最大化压缩,默认为6
-e,压缩时加密,有的LINUX发行版没有提供这个功能
2.unzip,解压zip压缩的文件
-v(--verbose),解压缩时提供运行情况
-l(--list),列出压缩文件包含的文件
-t(--test),测试将要解压的文件
3.gzip
gzip file,会产生一个file.gz的压缩文件,原文件file被删除
-c(--stdout或--to-stdout),压缩时保留原文件,需使用输出重定向,gzip -c file > file.gz
-r(--recursive),遍历压缩子目录
-[0-9],设置压缩比,0表示不压缩,9表示最大化压缩,默认为6
4.gunzip,解压gzip压缩的文件
gunzip file.gz,解压缩file.gz,同时file.gz被删除,若不想被删除,则使用-c选项,并采用输出重定向
-t(--test),测试将要解压的文件
5.bzip2
bzip2 file,会产生一个file.bz2的压缩文件,源文件file被删除,若不想被删除,则使用-c选项,并采用输出重定向
-[0-9],设置压缩比,0表示不压缩,9表示最大化压缩,默认为6
6.bunzip2,解压bzip2压缩的文件
bunzip2 file.bz2,解压缩file.bz2,同时file.bz2被删除,若不想被删除,则使用-c选项,并采用输出重定向
-t(--test),测试将要解压的文件
7.tar,归档文件,tar不能压缩,只能归档,结果生成的归档文件就是tarball
-c(--create),通知tar,正在创建一个tarball
-f(--file),为tarball指定文件名,tar -cf myfile.tar file,把file归档为myfile.tar,tar -cf mydir.tar mydir/,把目录mydir归档为mydir.tar
-z(--gzip),调用gzip,归档后压缩
-v(--verbose),显示归档压缩过程
tar -czvf myfile.tar.gz file,把file归档压缩成myfie.tar.gz
-j(--bzip2),调用bzip2,归档后压缩
tar -cjvf myfile.tar.bz2 file,把file归档压缩成mfie.tar.bz2
-t(--test),测试将要解压的文件
tar -ztvf myfile.tar.gz,测试myfile.tar.gz,-f选项需要放在最后面
-x(--extract),解压文件
tar -xzvf myfile.tar.gz,解压tar.gz文件
tar -xjvf myfile.tar.bz2,解压tar.bz2文件