Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1333642
  • 博文数量: 124
  • 博客积分: 5772
  • 博客等级: 大校
  • 技术积分: 1647
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-27 10:39
文章分类

全部博文(124)

文章存档

2020年(1)

2019年(1)

2018年(5)

2017年(2)

2016年(17)

2015年(3)

2014年(7)

2013年(11)

2012年(13)

2011年(30)

2010年(34)

分类: LINUX

2011-05-04 09:55:05

Author:          yoyoba(stuyou@126.com)
Date:            2011-4-23
一直在用LINUX,但是却没有对LINUX命令系统学习过,正好利用这段还算比较清闲的时间,学习一下LINUX常用的命令,是《LINUX命令速查手册》的读书笔记,这本书是Scott Granneman著,成保栋翻译,人民邮电出版社出版,2009.10第一版,写的浅显易懂,基本是一些常用的实用命令。陆续还会对这些命令的用法进行完善,会持续更新。如果转载请注明出处,谢谢!
八.查找资料
1.locate,知道文件的名称或者文件名称的一部分,但不记得放在系统的哪个位置,使用locate搜索它。locate搜索的是已经建立好的文件名数据库,该数据库每天自动更新
-i,搜索时,不区分文件名的大小写
-n 3,搜索时,只显示前3个搜索结果
2.updatedb,手动更新文件名数据库,要使用root权限
time updatedb,更新完数据库后,会显示花费的时间,运行updatedb可能会花费很多时间
3.grep,在文件内容中搜索
grep pain file,在file文件中搜索pain这个词 搜索精确的匹配结果,使用单引号;要把shell变量结合到搜索内容中,使用双引号;搜索的关键字只包含数字和字母,可以不用任何引号
-R(--recursive),递归搜索子目录
-i(--ignore-case),搜索时不区分大小写
-w(--word-regexp),搜索时精确匹配整个词,grep -w pain *,搜索的结果精确匹配pain
-n(--line-number),显示搜索匹配项所在文件的行号
-B(--befor-context=#),输出匹配内容之前的若干行,grep -B 3 pain a.txt,输出pain之前3行的内容
-A(--after-context=#),输出匹配内容之后的若干行,grep -A 3 pain a.txt,输出pain之后3行的内容
-C(--context=#),输出匹配内容之前和之后的若干行,grep -C 3 pain a.txt,输出pain之前和之后3行的内容
-v(--invert-match),显示没有包含搜索内容的行
-l(--files-with-match),列出包含搜索内容的文件名
九.find命令
1.find命令的基本用途是根据文件(或文件夹)名或文件名的一部分查找文件(或文件夹)
2.-name,指定查找文件的文件名,find . -name Shaggs,在当前目录下查找Shaags的文件或者目录,如果使用通配符,则需要用双引号引起来,find . -name "*Shaags*"
3.-print,通知find在终端界面上列出它的搜索结果,默认该选项是打开的
4.如果搜索使用的是相对路径,搜索结果也使用相对路径;搜索使用绝对路径,则搜索结果也使用绝对路径
5.-user,根据拥有者搜索文件find . -user stuyou,在当前目录下搜索拥有者为stuyou的文件
6.!,选项取反,find . ! -user stuyou,在当前目录下搜索拥有者不是stuyou的文件
7.-group,搜索特定用户组的文件,find . -group stuyou,当前目录下搜索用户组为stuyou的文件,find . ! -group stuyou,当前目录下搜索用户组不是stuyou的文件
8.-size,根据文件大小搜索,find . -size 10M,当前目录下搜索大小恰好为10M的文件,find . -size +10M,搜索大于10M的文件,find . -size -10M,搜索小于10M的文件
根据文件大小搜索文件
后缀 含义
--------------------------------------
b 512字节块(默认值)
c 字节(Byte)
k 千字节(Kilobyte KB)
M 兆字节(Megabyte MB)
G 吉字节(Gigabyte GB)
---------------------------------------
9.-type,根据文件类型搜索文件
find命令可以使用的文件类型
文件类型字符 含义
-------------------------------------------------
f 普通文件
d 目录
l 符号(软)链接
b 块文件
c 字符文件
p FIFO(First In First Out)文件
s 套接字文件
--------------------------------------------------
10.-a(-and),当表达式均为true时显示结果,find . -name "Shaggs*",搜索的结果可能会出现Shaggs命名的文件夹,如果想只搜索以Shaggs命名的文件,可以这样find . -name "Shaggs*" -a -type f
11.-o(-or),表达式中只有一个为true时显示结果,find . -size +10M -o -size 10M,当前目录下搜索大于或等于10M的文件,find . \( -size +10M -o -size 10M \) ! -name "25*",当前目录下搜索大于等于10M的文件,但是排除文件名以25开头的文件,为了确保OR语句运行正常,需要用括号把他括起来,对语句进行组合,不过需要使用反斜杠(\),对括号进行转义
12.!,表达式取反 13.-exec,对搜索到的文件执行命令,在-exec选项后跟上要为找到的每个文件执行的命令,用"{}"代表找到的每个文件,用"\;"作为命令的结束标志。find . -name " *MP3" -exec rename ‘s/MP3/mp3/g' {} \;,该命令表示在当前目录下寻找文件扩展名为大写MP3的文件,找到后修改为小写的mp3。rename后面是关于文件名如何变化的指令,其格式为:s/old/new/g(s表示substitute,g表示global),find . -name "* *mp3" -exec rename ’s/\ /_/g' {} /;,该命令表示把mp3文件的文件名中的空格替换为“_”,其中空格用“\”进行转义
14.-fprint,将搜索结果打印到文件,find . -name "*mp3" -fprint a.txt,把搜索结果保存在a.txt
十.shell
1.history,查看命令行历史,每当在shell中输入命令时,会保存在/home中一个名为.bash_history的文件里,保存最新的500条命令行历史记录
2.!!,再次运行最近运行过的命令
3.![#],使用数字再次运行以前运行过的命令,当运行history时,它自动在每条命令前加一个数字,如果想运行前面的某条命令,可以使用这个数字来运行
4.![string],使用字符串再次运行以前运行过的命令,该字符串是以前运行过的命令名
5.alias,显示所有命令的别名,命令别名一般放在主目录下的.bashrc或.bash_aliases文件中
alias [alias name],查找特定的alias别名
alias [alias name]='[command]',创建别名,如alias lsd='ls -d */',把该命令添加到.bashrc或.bash_aliases中,可以创新永久别名,然后使用命令..bash_aliases来重新加载.bash_alias,这样别名就生效了
6.unalias,删除别名
十一.监视系统资源
1.ps aux,查看当前系统进程,该命令的三个选项都没有连字符(-),a表示所有用户,u表示以面向用户的格式显示,或显示拥有每个进程的用户,x表示没有控制tty或终端屏幕的进程,“显示每个进程”的另一种方法
STAT(进程当前状态)的含义
SATA字母 含义
-------------------------------------------------------------------------------
R 运行(runing)
S 休眠(sleeping)
T 停止(stopped)
Z 僵尸(zombie)
D 不可终端的休眠进程(一般与I/O相关)
W paging,LINUX2.6内核已经没有了
X 死进程
L 页面锁定到内存(实时且与客户有关的I/O)
< 高优先级,对其他用户不利
N 低优先级,对其他用户有利
s session leader进程,一般启动时要设置SID,这种进程脱离控制终端
l 多线程
+ 在前端进程组内的进程
-------------------------------------------------------------------------------
注:僵尸进程表示该进程已经中止,但其父进程无法正常终止它
2.ps axuf,查看进程树
3.ps U [username],查看特定用户拥有的进程,username可以是用户名,也可以是用户ID,查看/etc/passwd可以看到用户名和用户ID的对应关系
4.kill,中止进程
kill命令关联的常用信号
信号编号 信号单词 含义
------------------------------------------------------------------------
-1 -HUP(挂起) 控制进程已经死,关闭进程
-15(默认) -TERM 正常中止进程,清除将要失控的进程和文件
-9 -KILL 停止任何正在进行的处理,马上关闭
------------------------------------------------------------------------
5.top,查看正在运行的进程的动态更新列表,如果想在top命令中关闭程序,只需按k键,输入进程ID,输入kill信号编号
6.lsof,列出打开的文件
-u,列出某个用户打开的文件
lsof [file],列出正在使用file文件的用户
lsof -c [program],列出特定程序的进程,列出与program进程相关的其他程序、文件
7.free,显示系统的RAM信息,默认以-b(byte)字节选项显示
-k,以千字节显示
-m,以兆字节显示
8.df,显示文件系统的磁盘使用情况(disk free),默认以KB字节显示
-h(--human-readable),容易理解的方式显示
9.du,显示目录使用的文件空间(disk usage)
-h(--human-readable),容易理解的方式显示
-s,只显示目录使用的总空间
十二.为Debian安装软件包
1.dpkg
-i(--install),安装软件包,dpkg -i skyepe.deb
-r(--remove),删除软件包,dpke -r skyepe,注意删除时指定的是包名,而不是安装时的deb文件名
2.apt
apt-get install [package],安装软件包及其依赖程序,dpkg不会安装依赖程序
apt-get update,从apt服务器下载当前可用的软件包列表,在/etc/apt/sources.list设置apt服务器
apt-get remove [package],卸载指定的软件包名,注意是软件包名而不是文件名,会保留相关配置文件
apt-get --purge remove [package],完全删除,包括配置文件
apt-get upgrade,升级软件包及其依赖,软件包会下载到/var/cache/apt/archives,全部下载完了再安装
apt-get search dvdcss,在apt软件仓库中搜索dvdcss,搜索时对dvdcss进行模糊匹配,对安装和未安装的都进行搜索
apt-get clean,在使用apt下载和安装软件包后,.deb文件仍然保留在/var/cache/apt/archives/目录,删除这些文件,可以使用该命令
十三.网络连接
1.ifconfig(interface configuration),查看和设置网络接口状态
ifconfig,查看已启用的网络连接
ifconfig -a,查看全部的接口,包括未启用的
ifconfig eth0 10.10.66.200,配置eth0的IP为10.10.66.200
ifconfig eth0 broadcast 10.10.66.1,配置eth0的广播地址为10.10.66.1
ifconfig eth0 netmask 255.255.255.0,配置eth0的掩码为255.255.255.0
ifconfig hw ether 04:64:03:00:12:51,配置MAC地址为04:64:03:00:12:51,其中hw后接网络接口类型,ether表示以太网
ifconfig eth0 promisc,开启网卡混杂模式
ifconfig eth0 -promisc,关闭网卡混杂模式
ifconfig eth0 down,或ifdown eth0,关闭网络连接
ifconfig eth0 up,或ifup eth0,启动网络连接
2.ping,执行ping命令时,会一直发送ping命令,直到CTRL+C停止
ping  -c 3 ,发送3条ping命令后停止
3.traceroute,跟踪数据包在两台主机之间经过的路由,如traceroute ,默认最大跳数是30
traceroute -m 40 ,设置路由最大跳数为40
4.host,执行DNS查询,如host 或host 65.214.39.112
5.iwconfig,查看无线网络接口状态
iwconfig ath0 mode ad-hoc,配置无线网口ath0的拓扑结构为ad-hoc
6.dhclient,使用DHCP获得新的网络地址,如dhclient eth0
dhclient -r eth0,释放DHCP分配的网络地址
7.route,显示和修改IP路由表
route add -net default gw 10.10.66.1 dev eth0,add表示新增一个路由,删除路由使用del,-net选项告诉内核正在添加的目标是一个网络,本例是default目标,gw表示网关为10.10.66.1,dev eth0指定要使用的设备
十四.使用网络
1.ssh,安全登录到另一台计算机,假设把笔记本电脑(计算机名为pound,IP为192.168.0.15)登录到台式机(计算机名为eliot,IP地址为192.168.0.25),你在笔记本上的用户名为ezra,在台式机上的用户名为tom
ssh tom@192.168.0.25,从笔记本登录到台式机,连接后输入密码即可。如果是第一次连接到台式机eliot,显示的信息会略有不同,ssh会要求验证计算机身份,输入yes后回车,就会要求输入密码,然后就可正常登录,以后登录时只输入密码即可,只有第一次登录时才会看到这些信息,这是因为ssh此时会将涉及的RSA密钥指纹保存到笔记本pound上的~/.ssh/known_hosts目录下,查看这个文件,会发现其中新增了一行。依赖于在/etc/ssh/ssh_config文件中是否开启了HashKnownHosts选项,如果该选项设置为no,在新增的行中可以看到IP地址等信息,如果选项设置为yes,就看不到原来的那些信息,所有的信息包括机器的IP、域名等都经过了散列处理,更加安全。如果台式机eliot上的LINUX操作系统重装了,那么在笔记本pound上使用ssh登录eliot时就会有问题,因为这时笔记本pound中保存的eliot密钥和eliot上新操作系统的密钥不同,所以会禁止登录。解决办法可以删除pound的konwn_hosts相对应的eliot的那一行,然后重新连接,或者重新编辑pound上的/etc/ssh/ssh_config文件,把HashKnownHosts设置为no
2.sftp,在计算机之间安全传输文件,如果能通过ssh访问某台计算机,那么也一定能够通过sftp访问它,从笔记本电脑(计算机名为pound,IP为192.168.0.15)连接到台式机(计算机名为eliot,IP地址为192.168.0.25),执行如下命令,sftp tom@192.168.0.25,输入密码后即可正常登录了。常用的sftp命令
常见的sftp命令
命令 含义
-----------------------------------------------------
cd 切换目录
exit 关闭与远程SSH服务器的连接
get 将指定的文件复制到本机
help 获取与命令相关的帮助
lcd 将目录切换到本机
lls 列出本机上的文件
ls 列出远程SSH服务器上当前工作目录中的文件
put 将指定的文件复制到远程SSH服务器
rm 将指定的文件从远程SSH服务器删除
----------------------------------------------------
3.scp,在主机之间安全复制文件,语法格式:scp user@host1:file1 user@host2:file2
4.rsync,安全传输和备份文件,只复制备份文件中改动过的内容。从coleridge计算机上运行,将documents目录的所有内容传输到wordsworth计算机的一个备份驱动器上,则执行如下命令rsyc -v --progress --stats -r -t -p -l -z -e ssh --delete /home/sam/documents/ will@wordsworth:/media/backup/documents,rsync先构建一个它必须考虑的所有的文件列表,接着删除任何在目录位置(wordsworth)已经存在,但在源位置(coleridge)已经不存在的文件,删除完文件以后,rsync就开始复制所有发生过变化的文件,或者如果是同一个文件,但文件的部分内容有变化,rsync只会复制这个文件中发生变化的部分。在指定源目录时,想复制的是coleridge上documents目录中的内容,但不包括目录本身,所以源目录应该使用documents/,而不是documents,在/home/sam/documents/中,documents后面的斜线是告诉rsync,想把那个目录的内容复制到wordsworth上的documents目录中,如果只有documents,则复制的就是目录及其内容,结果在目的计算机上就形成了这样的目录结构/media/backup/documents/documents
-n(--dry-run),预演一下rsync的备份过程,并不真的复制或删除文件,一般在提交rsync命令以前,可以使用该选项,确保rsync命令正确无误,防止误删文件
-v(--verbose),连同--progress,rsync随时报告它正在操作的细节
--status,在rsync命令末尾显示传输文件的数量、大小及其他信息
-r(--recursive),递归处理子目录
-t(--time),rsync在传输文件时保留文件的修改时间,记得一定要加上该选项
-p(--perms),rsync更新目标文件的权限设置,让他们与源文件尽可能保持一致
-l(--link),如果源目录中包含软连接,则在目标目录中重建软连接
-z(--compress),使用gzip压缩文件传输
-e(--rsh=ssh),告诉rsync用ssh对它传输的数据进行加密,文件传输不但容易,而且也安全
--delete,源文件已经删除的文件,目标文件中也删除,谨慎使用,使用前先用-n选项预演一下
5.wget,非交互式地下载文件
-r(--recursive),沿着链接,深入到各个子目录中搜索文件,递归方式进行下载,可以保证wget遍历每个子目录
-A(--accept),指定下载某种类型的文件
-R(--reject),指定不下载某种类型的文件
-c(--continue),接续下载上次没有下载完的文件
-i(--input-file),从文件(而不是STDIN,标准输入设备)中查找要下载的URL


阅读(3118) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~