Linux常用命令集合

1.常用命令解析

当涉及的范围越来越广时,所接触到的技术也就会越来越多!贴上常用的Linux命令集:

[vb]  view plain copy
  1. 系统信息  
  2. arch 显示机器的处理器架构(1)  
  3. uname -m 显示机器的处理器架构(2)  
  4. uname -r 显示正在使用的内核版本  
  5. dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)  
  6. hdparm -i /dev/hda 罗列一个磁盘的架构特性  
  7. hdparm -tT /dev/sda 在磁盘上执行测试性读取操作  
  8. cat /proc/cpuinfo 显示CPU info的信息  
  9. cat /proc/interrupts 显示中断  
  10. cat /proc/meminfo 校验内存使用  
  11. cat /proc/swaps 显示哪些swap被使用  
  12. cat /proc/version 显示内核的版本  
  13. cat /proc/net/dev 显示网络适配器及统计  
  14. cat /proc/mounts 显示已加载的文件系统  
  15. lspci -tv 罗列 PCI 设备  
  16. lsusb -tv 显示 USB 设备  
  17. date 显示系统日期  
  18. cal 2007 显示2007年的日历表  
  19. date 041217002007.00 设置日期和时间 - 月日时分年.秒  
  20. clock -w 将时间修改保存到 BIOS  
  21.   
  22. 关机 (系统的关机、重启以及登出 )  
  23. shutdown -h now 关闭系统(1)  
  24. init 0 关闭系统(2)  
  25. telinit 0 关闭系统(3)  
  26. shutdown -h hours:minutes & 按预定时间关闭系统  
  27. shutdown -c 取消按预定时间关闭系统  
  28. shutdown -r now 重启(1)  
  29. reboot 重启(2)  
  30. logout 注销  
  31.   
  32. 文件和目录  
  33. cd /home 进入 '/ home' 目录'  
  34. cd .. 返回上一级目录  
  35. cd ../.. 返回上两级目录  
  36. cd 进入个人的主目录  
  37. cd ~user1 进入个人的主目录  
  38. cd - 返回上次所在的目录  
  39. pwd 显示工作路径  
  40. ls 查看目录中的文件  
  41. ls -F 查看目录中的文件  
  42. ls -l 显示文件和目录的详细资料  
  43. ls -a 显示隐藏文件  
  44. ls *[0-9]* 显示包含数字的文件名和目录名  
  45. tree 显示文件和目录由根目录开始的树形结构(1)  
  46. lstree 显示文件和目录由根目录开始的树形结构(2)  
  47. mkdir dir1 创建一个叫做 'dir1' 的目录'  
  48. mkdir dir1 dir2 同时创建两个目录  
  49. mkdir -p /tmp/dir1/dir2 创建一个目录树  
  50. rm -f file1 删除一个叫做 'file1' 的文件'  
  51. rmdir dir1 删除一个叫做 'dir1' 的目录'  
  52. rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容  
  53. rm -rf dir1 dir2 同时删除两个目录及它们的内容  
  54. mv dir1 new_dir 重命名/移动 一个目录  
  55. cp file1 file2 复制一个文件  
  56. cp dir/* . 复制一个目录下的所有文件到当前工作目录  
  57. cp -a /tmp/dir1 . 复制一个目录到当前工作目录  
  58. cp -a dir1 dir2 复制一个目录  
  59. ln -s file1 lnk1 创建一个指向文件或目录的软链接  
  60. ln file1 lnk1 创建一个指向文件或目录的物理链接  
  61. touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)  
  62. file file1 outputs the mime type of the file as text  
  63. iconv -l 列出已知的编码  
  64. iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.  
  65. find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)  
  66.   
  67. 文件搜索  
  68. find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录  
  69. find / -user user1 搜索属于用户 'user1' 的文件和目录  
  70. find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件  
  71. find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件  
  72. find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件  
  73. find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限  
  74. find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备  
  75. locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令  
  76. whereis halt 显示一个二进制文件、源码或man的位置  
  77. which halt 显示一个二进制文件或可执行文件的完整路径  
  78.   
  79. 挂载一个文件系统  
  80. mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在  
  81. umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出  
  82. fuser -km /mnt/hda2 当设备繁忙时强制卸载  
  83. umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用  
  84. mount /dev/fd0 /mnt/floppy 挂载一个软盘  
  85. mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom  
  86. mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom  
  87. mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom  
  88. mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件  
  89. mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统  
  90. mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备  
  91. mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享  
  92.   
  93. 磁盘空间  
  94. df -h 显示已经挂载的分区列表  
  95. ls -lSr |more 以尺寸大小排列文件和目录  
  96. du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'  
  97. du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小  
  98. rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)  
  99. dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)  
  100.   
  101. 用户和群组  
  102. groupadd group_name 创建一个新用户组  
  103. groupdel group_name 删除一个用户组  
  104. groupmod -n new_group_name old_group_name 重命名一个用户组  
  105. useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户  
  106. useradd user1 创建一个新用户  
  107. userdel -r user1 删除一个用户 ( '-r' 排除主目录)  
  108. usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性  
  109. passwd 修改口令  
  110. passwd user1 修改一个用户的口令 (只允许root执行)  
  111. chage -E 2005-12-31 user1 设置用户口令的失效期限  
  112. pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户  
  113. grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组  
  114. newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组  
  115.   
  116. 文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消  
  117. ls -lh 显示权限  
  118. ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示  
  119. chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限  
  120. chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限  
  121. chown user1 file1 改变一个文件的所有人属性  
  122. chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性  
  123. chgrp group1 file1 改变文件的群组  
  124. chown user1:group1 file1 改变一个文件的所有人和群组属性  
  125. find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件  
  126. chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限  
  127. chmod u-s /bin/file1 禁用一个二进制文件的 SUID位  
  128. chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的  
  129. chmod g-s /home/public 禁用一个目录的 SGID 位  
  130. chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件  
  131. chmod o-t /home/public 禁用一个目录的 STIKY 位  
  132.   
  133. 文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消  
  134. chattr +a file1 只允许以追加方式读写文件  
  135. chattr +c file1 允许这个文件能被内核自动压缩/解压  
  136. chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件  
  137. chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接  
  138. chattr +s file1 允许一个文件被安全地删除  
  139. chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘  
  140. chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件  
  141. lsattr 显示特殊的属性  
  142.   
  143. 打包和压缩文件  
  144. bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件  
  145. bzip2 file1 压缩一个叫做 'file1' 的文件  
  146. gunzip file1.gz 解压一个叫做 'file1.gz'的文件  
  147. gzip file1 压缩一个叫做 'file1'的文件  
  148. gzip -9 file1 最大程度压缩  
  149. rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包  
  150. rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'  
  151. rar x file1.rar 解压rar包  
  152. unrar x file1.rar 解压rar包  
  153. tar -cvf archive.tar file1 创建一个非压缩的 tarball  
  154. tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件  
  155. tar -tf archive.tar 显示一个包中的内容  
  156. tar -xvf archive.tar 释放一个包  
  157. tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下  
  158. tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包  
  159. tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包  
  160. tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包  
  161. tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包  
  162. zip file1.zip file1 创建一个zip格式的压缩包  
  163. zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包  
  164. unzip file1.zip 解压一个zip格式压缩包  
  165.   
  166. RPM 包 - (Fedora, Redhat及类似系统)  
  167. rpm -ivh package.rpm 安装一个rpm包  
  168. rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告  
  169. rpm -U package.rpm 更新一个rpm包但不改变其配置文件  
  170. rpm -F package.rpm 更新一个确定已经安装的rpm包  
  171. rpm -e package_name.rpm 删除一个rpm包  
  172. rpm -qa 显示系统中所有已经安装的rpm包  
  173. rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包  
  174. rpm -qi package_name 获取一个已安装包的特殊信息  
  175. rpm -qg "System Environment/Daemons" 显示一个组件的rpm包  
  176. rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表  
  177. rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表  
  178. rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表  
  179. rpm -q package_name --whatprovides 显示一个rpm包所占的体积  
  180. rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l  
  181. rpm -q package_name --changelog 显示一个rpm包的修改历史  
  182. rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供  
  183. rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表  
  184. rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书  
  185. rpm --checksig package.rpm 确认一个rpm包的完整性  
  186. rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性  
  187. rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间  
  188. rpm -Va 检查系统中所有已安装的rpm包- 小心使用  
  189. rpm -Vp package.rpm 确认一个rpm包还未安装  
  190. rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件  
  191. rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包  
  192. rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包  
  193.   
  194. YUM 软件包升级器 - (Fedora, RedHat及类似系统)  
  195. yum install package_name 下载并安装一个rpm包  
  196. yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系  
  197. yum update package_name.rpm 更新当前系统中所有安装的rpm包  
  198. yum update package_name 更新一个rpm包  
  199. yum remove package_name 删除一个rpm包  
  200. yum list 列出当前系统中安装的所有包  
  201. yum search package_name 在rpm仓库中搜寻软件包  
  202. yum clean packages 清理rpm缓存删除下载的包  
  203. yum clean headers 删除所有头文件  
  204. yum clean all 删除所有缓存的包和头文件  
  205.   
  206. DEB 包 (Debian, Ubuntu 以及类似系统)  
  207. dpkg -i package.deb 安装/更新一个 deb 包  
  208. dpkg -r package_name 从系统删除一个 deb 包  
  209. dpkg -l 显示系统中所有已经安装的 deb 包  
  210. dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包  
  211. dpkg -s package_name 获得已经安装在系统中一个特殊包的信息  
  212. dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表  
  213. dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表  
  214. dpkg -S /bin/ping 确认所给的文件由哪个deb包提供  
  215.   
  216. APT 软件工具 (Debian, Ubuntu 以及类似系统)  
  217. apt-get install package_name 安装/更新一个 deb 包  
  218. apt-cdrom install package_name 从光盘安装/更新一个 deb 包  
  219. apt-get update 升级列表中的软件包  
  220. apt-get upgrade 升级所有已安装的软件  
  221. apt-get remove package_name 从系统删除一个deb包  
  222. apt-get check 确认依赖的软件仓库正确  
  223. apt-get clean 从下载的软件包中清理缓存  
  224. apt-cache search searched-package 返回包含所要搜索字符串的软件包名称  
  225.   
  226. 查看文件内容  
  227. cat file1 从第一个字节开始正向查看文件的内容  
  228. tac file1 从最后一行开始反向查看一个文件的内容  
  229. more file1 查看一个长文件的内容  
  230. less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作  
  231. head -2 file1 查看一个文件的前两行  
  232. tail -2 file1 查看一个文件的最后两行  
  233. tail -f /var/log/messages 实时查看被添加到一个文件中的内容  
  234.   
  235. 文本处理  
  236. cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT  
  237. cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中  
  238. cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中  
  239. grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"  
  240. grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇  
  241. grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行  
  242. grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"  
  243. sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"  
  244. sed '/^$/d' example.txt 从example.txt文件中删除所有空白行  
  245. sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行  
  246. echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容  
  247. sed -e '1d' result.txt 从文件example.txt 中排除第一行  
  248. sed -n '/stringa1/p' 查看只包含词汇 "string1"的行  
  249. sed -e 's/ *$//' example.txt 删除每一行最后的空白字符  
  250. sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部  
  251. sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容  
  252. sed -n '5p;5q' example.txt 查看第5行  
  253. sed -e 's/00*/0/g' example.txt 用单个零替换多个零  
  254. cat -n file1 标示文件的行数  
  255. cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行  
  256. echo a b c | awk '{print $1}' 查看一行第一栏  
  257. echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏  
  258. paste file1 file2 合并两个文件或两栏的内容  
  259. paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分  
  260. sort file1 file2 排序两个文件的内容  
  261. sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)  
  262. sort file1 file2 | uniq -u 删除交集,留下其他的行  
  263. sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)  
  264. comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容  
  265. comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容  
  266. comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分  
  267.   
  268. 字符设置和文件格式转换  
  269. dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX  
  270. unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS  
  271. recode ..HTML < page.txt > page.html 将一个文本文件转换成html  
  272. recode -l | more 显示所有允许的转换格式  
  273.   
  274. 文件系统分析  
  275. badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块  
  276. fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性  
  277. fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性  
  278. e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性  
  279. e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性  
  280. fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性  
  281. fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性  
  282. fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性  
  283. dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性  
  284.   
  285. 初始化一个文件系统  
  286. mkfs /dev/hda1 在hda1分区创建一个文件系统  
  287. mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统  
  288. mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统  
  289. mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统  
  290. fdformat -n /dev/fd0 格式化一个软盘  
  291. mkswap /dev/hda3 创建一个swap文件系统  
  292.   
  293. SWAP文件系统  
  294. mkswap /dev/hda3 创建一个swap文件系统  
  295. swapon /dev/hda3 启用一个新的swap文件系统  
  296. swapon /dev/hda2 /dev/hdb3 启用两个swap分区  
  297.   
  298. 备份  
  299. dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份  
  300. dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份  
  301. restore -if /tmp/home0.bak 还原一个交互式备份  
  302. rsync -rogpav --delete /home /tmp 同步两边的目录  
  303. rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync  
  304. rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录  
  305. rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录  
  306. dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作  
  307. dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件  
  308. tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作  
  309. ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容  
  310. ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录  
  311. tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接  
  312. find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录  
  313. find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包  
  314. dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作  
  315. dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容  
  316.   
  317. 光盘  
  318. cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容  
  319. mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件  
  320. mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件  
  321. mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件  
  322. cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件  
  323. gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件  
  324. mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件  
  325. cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中  
  326. cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3)  
  327. cdrecord --scanbus 扫描总线以识别scsi通道  
  328. dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD  
  329.   
  330. 网络 - (以太网和WIFI无线)  
  331. ifconfig eth0 显示一个以太网卡的配置  
  332. ifup eth0 启用一个 'eth0' 网络设备  
  333. ifdown eth0 禁用一个 'eth0' 网络设备  
  334. ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址  
  335. ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing)  
  336. dhclient eth0 以dhcp模式启用 'eth0'  
  337. route -n show routing table  
  338. route add -net 0/0 gw IP_Gateway configura default gateway  
  339. route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16'  
  340. route del 0/0 gw IP_gateway remove static route  
  341. echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing  
  342. hostname show hostname of system  
  343. host www.example.com lookup hostname to resolve name to ip address and viceversa(1)  
  344. nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2)  
  345. ip link show show link status of all interfaces  
  346. mii-tool eth0 show link status of 'eth0'  
  347. ethtool eth0 show statistics of network card 'eth0'  
  348. netstat -tup show all active network connections and their PID  
  349. netstat -tupl show all network services listening on the system and their PID  
  350. tcpdump tcp port 80 show all HTTP traffic  
  351. iwlist scan show wireless networks  
  352. iwconfig eth1 show configuration of a wireless network card  
  353. hostname show hostname  
  354. host www.example.com lookup hostname to resolve name to ip address and viceversa  
  355. nslookup www.example.com lookup hostname to resolve name to ip address and viceversa  
  356. whois www.example.com lookup on Whois database  
  357.   
  358. Microsoft Windows networks (SAMBA)  
  359. nbtscan ip_addr netbios name resolution  
  360. nmblookup -A ip_addr netbios name resolution  
  361. smbclient -L ip_addr/hostname show remote shares of a windows host  
  362. smbget -Rr smb://ip_addr/share like wget can download files from a host windows via smb  
  363. mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share  

2.常用命令二

su 
su命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要切换为user2,只要用如下命令: 
$su user2 
然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。 
su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ,则系统提示输入根口令,输入之后则可切换为根用户。 
如果登录为根用户,则可以用su命令成为系统上任何用户而不需要口令。

pwd 
pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。

cd 
cd命令不仅显示当前状态,还改变当前状态,它的用发跟dos下的cd命令基本一致。 
cd ..可进入上一层目录 
cd -可进入上一个进入的目录 
cd ~可进入用户的home目录

ls 
ls命令跟dos下的dir命令一样,用于显示当前目录的内容。 
如果想取得详细的信息,可用ls -l命令, 这样就可以显示目录内容的详细信息。 
如果目录下的文件太多,用一屏显示不了,可以用ls -l |more分屏显示 。

find 
find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文件的用户)、文件长度或文件类型进行搜索。 
find命令的基本结构如下: 
$find 
其中指定从哪个目录开始搜索。指定搜索条件。表示找到文件怎么处理。一般来说,要用-print动作,显示 整个文件路径和名称。如果没有这个动作,则find命令进行所要搜索而不显示结果,等于白费劲。 
例如,要搜索系统上所有名称为ye的文件,可用如下命令: 
$find / -name ye -print 
这样就可以显示出系统上所有名称为ye的文件。

tar 
tar最初用于建立磁带备份系统,目前广泛用于建立文件发布档案。可用如下方法建立tar档案: 
$tar cvf 
例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令: 
$tar cvf ye.tar *.* 
要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令: 
$tar tvf ye.tar 
要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可用如下命令: 
$tar xvf ye.tar

gzip 
gzip命令用于压缩文件。 例如,如果要将ye.txt文件压缩,可用如下命令: 
$gzip ye.txt 
这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。 
解压缩文件可用gzip -d命令实现: 
$gzip -d ye.txt.gz 
这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件,效果跟用gzip -d命令一样。 
旧版的tar命令不压缩档案,可用gzip压缩。例如: 
$tar cvf ye.tar *.txt 
$gzip ye.tar 
则可建立压缩档案ye.tar.gz。 
新版的tar可以直接访问和建立gzip压缩的tar档案,只要在tar命令中加上z 选项就可以了。例如: 
$tar czvf ye.tar *.txt 
生成压缩档案ye.tar.gz, 
$tar tzvf ye.tar *.txt 
显示压缩档案ye.tar.gz的内容,而 
$tar xzvf ye.tar *.txt 
取出压缩档案ye.tar.gz的内容。

mkdir 
这个命令很简单,跟dos的md命令用法几乎一样,用于建立目录。

cp 
cp命令用于复制文件或目录。 
cp命令可以一次复制多个文件,例如: 
$cp *.txt *.doc *.bak /home 
将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。 
如果要复制整个目录及其所有子目录,可以用cp -R命令。

rm 
rm命令用于删除文件或目录。 
rm命令会强制删除文件,如果想要在删除时提示确认,可用rm -i命令。 
如果要删除目录,可用rm -r命令。rm -r命令在删除目录时,每删除一个文件或目录都会显示提示,如果目录太大,响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除目录,这样即使用了-i标志也当无效处理。

mv 
mv命令用于移动文件和更名文件。例如: 
$mv ye.txt /home 
将当前目录下的ye.txt文件移动到/home目录下, 
$mv ye.txt ye1.txt 
将ye.txt文件改名为ye1.txt。 
类似于跟cp命令,mv命令也可以一次移动多个文件,在此不再赘叙。

reboot

 

◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; 

◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; 

◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; 

◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; 

◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; 

◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。 

本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。 

login 

1.作用 

login的作用是登录系统,它的使用权限是所有用户。 

2.格式 

login [name][-p ][-h 主机名称]

3.主要参数 

-p:通知login保持现在的环境参数。 

-h:用来向远程登录的之间传输用户名。 

如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 

一般界面是这样的: 

Manddrake Linux release 9.1(Bamboo) for i586 
renrel 2.4.21-0.13mdk on i686 / tty1
localhost login:root
password:

上面代码中,第一行是Linux发行版本号,第二行是内核版本号和登录的虚拟控制台,我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也不移动。 

登录后会看到下面这个界面(以超级用户为例): 

[root@localhost root]#
last login:Tue ,Nov 18 10:00:55 on vc/1

上面显示的是登录星期、月、日、时间和使用的虚拟控制台。 

4.应用技巧 

Linux是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 

例如,用户登录后,按一下“Alt+F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+F1”键,就可以回到第一个虚拟控制台。 一个新安装的Linux系统允许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。 

shutdown 

1.作用 

shutdown命令的作用是关闭计算机,它的使用权限是超级用户。 

2.格式 

shutdown [-h][-i][-k][-m][-t]

3.重要参数 

-t:在改变到其它运行级别之前,告诉init程序多久以后关机。 

-k:并不真正关机,只是送警告信号给每位登录者。 

-h:关机后关闭电源。 

-c:cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 

-F:在重启计算机时强迫fsck。 

-time:设定关机前的时间。 

-m: 将系统改为单用户模式。 

-i:关机时显示系统信息。 

4.命令说明 

shutdown命令可以安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux系统,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。 

halt 

1.作用 

halt命令的作用是关闭系统,它的使用权限是超级用户。 

2.格式 

halt [-n] [-w] [-d] [-f] [-i] [-p]

3.主要参数说明 

-n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。 

-w:并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录。 

-f:没有调用shutdown,而强制关机或重启。 

-i:关机(或重启)前,关掉所有的网络接口。 

-f:强迫关机,不呼叫shutdown这个指令。 

-p: 当关机的时候顺便做关闭电源的动作。 

-d:关闭系统,但不留下纪录。  

4.命令说明 

halt就是调用shutdown -h。halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。若系统的运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代。  

reboot 

1.作用 

reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。 

2.格式 

reboot [-n] [-w] [-d] [-f] [-i]

3.主要参数 

-n: 在重开机前不做将记忆体资料写回硬盘的动作。 

-w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。 

-d: 不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。 

-i: 在重开机之前先把所有与网络相关的装置停止。 

install 

1.作用 

install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。 

2.格式 

(1)install [选项]... 来源 目的地 

(2)install [选项]... 来源... 目录 

(3)install -d [选项]... 目录... 

在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。 

3.主要参数 

--backup[=CONTROL]:为每个已存在的目的地文件进行备份。 

-b:类似 --backup,但不接受任何参数。 

-c:(此选项不作处理)。 

-d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。 

-D:创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用。 

-g,--group=组:自行设定所属组,而不是进程目前的所属组。 

-m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。 

-o,--owner=所有者:自行设定所有者 (只适用于超级用户)。 

-p,--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。 

-s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。 

-S,--suffix=后缀:自行指定备份文件的<后缀>。 

-v,--verbose:处理每个文件/目录时印出名称。 

--help:显示此帮助信息并离开。 

--version:显示版本信息并离开。 

mount 

1.作用 

mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。 

2.格式 

mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir

3.主要参数 

-h:显示辅助信息。 

-v:显示信息,通常和-f用来除错。 

-a:将/etc/fstab中定义的所有文件系统挂上。 

-F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。 

-f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。 

-t vfstype:显示被加载文件系统的类型。 

-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 

4.应用技巧 

在Linux和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备 ,就得先将它加载,当储存设备挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。 在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。 

(1)Linux可以识别的文件系统 

◆ Windows 95/98常用的FAT 32文件系统:vfat ; 

◆ Win NT/2000 的文件系统:ntfs ; 

◆ OS/2用的文件系统:hpfs; 

◆ Linux用的文件系统:ext2、ext3; 

◆ CD-ROM光盘用的文件系统:iso9660。 

虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。 

(2)确定设备的名称 

在Linux中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev/hda1这个IDE设备,hd是Hard Disk(硬盘)的,sd是SCSI Device,fd是Floppy Device(或是Floppy Disk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、hdd。hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。 此外,可以直接检查/var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。 

(3)查找挂接点 

在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录。建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat): 

软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy 
cdrom ===>mount -t iso9660 /dev/hdc /mnt/cdrom 
SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom 
SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr

不过目前大多数较新的Linux发行版本(包括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。 

umount 

1.作用 

umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。 

2.格式 

unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir

3.使用说明 

umount命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD—ROM,这样就不能用CD-ROM面板上的Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸装它。仅当无用户正在使用光盘时,该命令才会成功。该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。 

chsh 

1.作用 

chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。 

2.格式 

chsh [ -s ] [ -list] [ --help ] [ -v ] [ username ]

3.主要参数 

-l:显示系统所有Shell类型。 

-v:显示Shell版本号。 

4.应用技巧 

前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下: 

Changing fihanging shell for cao
Password: 
New shell [/bin/bash]: /bin/tcsh

上面代码中,[ ]内是目前使用的Shell。普通用户只能修改自己的Shell,超级用户可以修改全体用户的Shell。要想查询系统提供哪些Shell,可以使用chsh -l 命令,见图1所示。 


图1 系统可以使用的Shell类型 


从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 

exit 

1.作用 

exit命令的作用是退出系统,它的使用权限是所有用户。 

2.格式 

exit 

3.参数 

exit命令没有参数,运行后退出系统进入登录界面。 

last 

1.作用 

last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。 

2.格式 

1ast[—n][-f file][-t tty] [—h 节点][-I —IP][—1][-y][1D]

3.主要参数 

-n:指定输出记录的条数。 

-f file:指定用文件file作为查询用的log文件。 

-t tty:只显示指定的虚拟控制台上登录情况。 

-h 节点:只显示指定的节点上的登录情况。 

-i IP:只显示指定的IP上登录的情况。 

-1:用IP来显示远端地址。 

-y:显示记录的年、月、日。 

-ID:知道查询的用户名。 

-x:显示系统关闭、用户登录和退出的历史。 

动手练习 

上面介绍了Linux安装和登录命令,下面介绍几个实例,动手练习一下刚才讲过的命令。 

1.一次运行多个命令 

在一个命令行中可以执行多个命令,用分号将各个命令隔开即可,例如: 

#last -x;halt

上面代码表示在显示系统关闭、用户登录和退出的历史后关闭计算机。 

2.利用mount挂装文件系统访问Windows系统 

许多Linux发行版本现在都可以自动加载Vfat分区来访问Windows系统,而Red Hat各个版本都没有自动加载Vfat分区,因此还需要进行手工操作。 

mount可以将Windows分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将Windows的分区和/mnt这个目录联系起来。因此,只要访问这个文件夹就相当于访问该分区了。首先要在/mnt下建立winc文件夹,在命令提示符下输入下面命令: 

#mount -t vfat /dev/hda1 /mnt/winc

即表示将Windows的C分区挂到Liunx的/mnt/winc目录下。这时,在/mnt/winc目录下就可以看到Windows中C盘的内容了。使用类似的方法可以访问Windows系统的D、E盘。在Linux系统显示Windows的分区一般顺序这样的:hda1为C盘、hda5为D盘、hda6为E盘……以此类推。上述方法可以查看Windows系统有一个很大的问题,就是Windows中的所有中文文件名或文件夹名全部显示为问号“?”,而英文却可以正常显示。我们可以通过加入一些参数让它显示中文。还以上面的操作为例,此时输入命令: 

#mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc

现在它就可以正常显示中文了。 

3.使用mount加挂闪盘上的文件系统 

在Linux下使用闪盘非常简单。Linux对USB设备有很好的支持,当插入闪盘后,闪盘被识别为一个SCSI盘,通常输入以下命令: 

# mount /dev/sda1 /usb

就能够加挂闪盘上的文件系统。 

小知识 

Linux命令与Shell 

所谓Shell,就是命令解释程序,它提供了程序设计接口,可以使用程序来编程。学习Shell对于Linux初学者理解Linux系统是非常重要的。Linux系统的Shell作为操作系统的外壳,为用户提供了使用操作系统的接口。Shell是命令语言、命令解释程序及程序设计语言的统称,是用户和Linux内核之间的接口程序。如果把Linux内核想象成一个球体的中心,Shell就是围绕内核的外层。当从Shell或其它程序向Linux传递命令时,内核会做出相应的反应。Shell在Linux系统的作用和MS DOS下的COMMAND.COM和Windows 95/98 的 explorer.exe相似。Shell虽然不是系统核心的一部分,只是系统核心的一个外延,但它能够调用系统内核的大部分功能。因此,可以说Shell是Unux/Linux最重要的实用程序。 

Linux中的Shell有多种类型,其中最常用的是Bourne Shell(sh)、C Shell(csh)和Korn Shell(ksh)。大多数Linux发行版本缺省的Shell是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与Bourne Shell完全向后兼容,并且在Bourne Shell的基础上增加了很多特性。bash放在/bin/bash中,可以提供如命令补全、命令编辑和命令历史表等功能。它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。Linux系统中200多个命令中有40个是bash的内部命令,主要包括exit、less、lp、kill、 cd、pwd、fc、fg等



3.常用VI命令大全

进入vi的命令 
vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename....filename :打开多个文件,依次进行编辑 

移动光标类命令
h :光标左移一个字符 
l :光标右移一个字符 
space:光标右移一个字符 
Backspace:光标左移一个字符 
k或Ctrl+p:光标上移一行 
j或Ctrl+n :光标下移一行 
Enter :光标下移一行 
w或W :光标右移一个字至字首 
b或B :光标左移一个字至字首 
e或E :光标右移一个字至字尾 
) :光标移至句尾 
( :光标移至句首 
}:光标移至段落开头 
{:光标移至段落结尾 
nG:光标移至第n行首 
n+:光标下移n行 
n-:光标上移n行 
n$:光标移至第n行尾 
H :光标移至屏幕顶行 
M :光标移至屏幕中间行 
L :光标移至屏幕最后行 
0:(注意是数字零)光标移至当前行首 
$:光标移至当前行尾 

屏幕翻滚类命令 
Ctrl+u:向文件首翻半屏 
Ctrl+d:向文件尾翻半屏 
Ctrl+f:向文件尾翻一屏 
Ctrl+b;向文件首翻一屏 
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 

插入文本类命令 
i :在光标前 
I :在当前行首 
a:光标后 
A:在当前行尾 
o:在当前行之下新开一行 
O:在当前行之上新开一行 
r:替换当前字符 
R:替换当前字符及其后的字符,直至按ESC键 
s:从当前光标位置处开始,以输入的文本替代指定数目的字符 
S:删除指定数目的行,并以所输入文本代替之 
ncw或nCW:修改指定数目的字 
nCC:修改指定数目的行 

删除命令 
ndw或ndW:删除光标处开始及其后的n-1个字 
do:删至行首 
d$:删至行尾 
ndd:删除当前行及其后n-1行 
x或X:删除一个字符,x删除光标后的,而X删除光标前的 
Ctrl+u:删除输入方式下所输入的文本 

搜索及替换命令 
/pattern:从光标开始处向文件尾搜索pattern 
?pattern:从光标开始处向文件首搜索pattern 
n:在同一方向重复上一次搜索命令 
N:在反方向上重复上一次搜索命令 
:s/p1/p2/g:将当前行中所有p1均用p2替代 
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 
:g/p1/s//p2/g:将文件中所有p1均用p2替换 

选项设置 
all:列出所有选项设置情况 
term:设置终端类型 
ignorance:在搜索中忽略大小写 
list:显示制表位(Ctrl+I)和行尾标志($) 
number:显示行号 
report:显示由面向行的命令修改过的数目 
terse:显示简短的警告信息 
warn:在转到别的文件时若没保存当前文件则显示NO write信息 
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始 
mesg:允许vi显示其他用户用write写到自己终端上的信息 

最后行方式命令 
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 
:n1,n2 d :将n1行到n2行之间的内容删除 
:w :保存当前文件 
:e filename:打开文件filename进行编辑 
:x:保存当前文件并退出 
:q:退出vi 
:q!:不保存文件并退出vi 
:!command:执行shell命令command 
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 
:r!command:将命令command的输出结果放到当前行 

寄存器操作 
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

VI的使用
--------------------------------------------------------------------------------

一、插入文本 
┌──┬────────────┐ 
│命令│描述          │ 
├──┼────────────┤ 
│i  │在当前字符前插入文本  │ 
├──┼────────────┤ 
│I  │在行首插入文本      │ 
├──┼────────────┤ 
│a  │在当前字符后添加文本  │ 
├──┼────────────┤ 
│A  │在行末添加文本     │ 
├──┼────────────┤ 
│o  │在当前行后面插入一空行 │ 
├──┼────────────┤ 
│O  │在当前行前面插入一空行 │ 
├──┼────────────┤ 
│R  │以改写方式输入文本   │ 
└──┴────────────┘ 
二、移动光标 
┌─────┬───────────┐ 
│命令   │描述         │ 
├─────┼───────────┤ 
│j或下箭头 │向下移动一行     │ 
├─────┼───────────┤ 
│k或上箭头 │向上移动一行     │ 
├─────┼───────────┤ 
│h或左箭头 │左移一个字符     │ 
├─────┼───────────┤ 
│l或右箭头 │右移一个字符     │ 
├─────┼───────────┤ 
│w     │右移一个词      │ 
├─────┼───────────┤ 
│W     │右移一个以空格分隔的词│ 
├─────┼───────────┤ 
│b     │左移一个词      │ 
├─────┼───────────┤ 
│B     │左移一个以空格分隔的词│ 
├─────┼───────────┤ 
│0     │移到行首       │ 
│Ctrl-F  │向前翻页       │ 
├─────┼───────────┤ 
│Ctrl-B  │向后翻页       │ 
├─────┼───────────┤ 
│nG    │到第n行        │ 
├─────┼───────────┤ 
│G     │到最后一行      │ 
└─────┴───────────┘ 
三、替换文本 
┌─────┬──────┐ 
│命令   │描述    │ 
├─────┼──────┤ 
│$     │到行尾   │ 
├─────┼──────┤ 
│(     │到句子的开头│ 
├─────┼──────┤ 
│)     │到句子的末尾│ 
├─────┼──────┤ 
│{     │到段落的开头│ 
├─────┼──────┤ 
│}     │到段落的末尾│ 
└─────┴──────┘ 

四、删除文本 
┌───┬───────────┐ 
│命令 │描述          │ 
├───┼───────────┤ 
│r   │替换一个字符      │ 
├───┼───────────┤ 
│c   │修改文本直到按下Esc健 │ 
├───┼───────────┤ 
│cw  │修改下一个词      │ 
├───┼───────────┤ 
│cnw  │修改接下来的n个词   │ 
└───┴───────────┘ 
五、文本编辑 
┌──┬──────────────────────┐ 
│命寺│描述                    │ 
├──┼──────────────────────┤ 
│yy │将一行文本移到缺省缓冲区中          │ 
├──┼──────────────────────┤ 
│yn │将下一个词移到缺省缓冲区中          │ 
├──┼──────────────────────┤ 
│ynw │将后面的n个词移到缺省缓冲区中        │ 
├──┼──────────────────────┤ 
│p  │如果缺省缓冲区中包含一行文本,则在当前   │ 
│  │行后面插入一个空行井将缺省缓冲区中的声   │ 
│  │容粘贴到这一行中;如果缺省缓冲区中包含   │ 
│  │多个词,把这些词粘贴到光标的右边.     │ 
├──┼──────────────────────┤ 
│P  │如果缺省缓冲区中包含一行文本,则正当前    │ 
│   │行前面插入一个空行井将缺省缓冲区中的内    │ 
│  │容粘贴到这一行中;如果缺省缓冲区中包含    │ 
│   │多个词,把这些词粘贴到光标的左边    

  │ 
└──┴──────────────────────┘ 
六、保存退出 
┌───────────┬───────────────┐ 
│命令         │描述             │ 
├───────────┼───────────────┤ 
│zz          │保存并退出          │ 
├───────────┼───────────────┤ 
│:w filename      │写入文件            │ 
├───────────┼───────────────┤ 
│:W          │写入文件           │ 
├───────────┼───────────────┤ 
│:x          │保存(如果当前文件修改过)并退出│ 
├───────────┼───────────────┤ 
│:q!          │不保存文件,直接退出      │ 
├───────────┼───────────────┤ 
│:q          │退出vi            │ 

VI常用技巧

VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。 

一、基本命令介绍 

---- 1.光标命令 

k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。 
nG——跳转命令。n为行数,该命令立即使光标跳到指定行。 
Ctrl+G——光标所在位置的行数和列数报告。 
w、b——使光标向前或向后跳过一个单词。 
---- 2.编辑命令 
i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。 
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。 
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。 
---- 3.查找命令 
---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。 
---- 4.拷贝复制命令 
---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。 

二、常见问题及应用技巧 

---- 1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。 
---- vi file 
---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd 
---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。 
---- 您也可以在指定的行号后读入文件内容,例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。 
---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。 
---- #cat squid.conf.default | grep -v ^$ | grep -v ^# 

---- 2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。 
---- vi file 
---- :w /tmp/1 保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。 
---- vi file 
---- :20,59w /tmp/1 

---- 3.用VI编辑一个文件,但需要删除大段的内容。 
---- 首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。 
---- :23,1045d 假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:a,bd”命令删除。 

---- 4.在整个文件的各行或某几行的行首或行尾加一些字符串。 
---- vi file 
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。 
---- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。 
---- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。 
---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。 
---- 注意: 其中s为substitute,%表示所有行,g表示global。 

---- 5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。 
---- vi file1 file2 
---- yy 在文件1的光标处拷贝所在行 
---- :n 切换到文件2 (n=next) 
---- p 在文件2的光标所在处粘贴所拷贝的行 
---- :n 切换回文件1 

---- 6.替换文件中的路径。 
---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。



你可能感兴趣的:(Linux,Linux)