Linux常用命令
Linux自带命令
pwd
显示当前路径。
mkdir
新建目录。
mkdir [options] 目录名;
[options]主要参数
-m, --mode=模式:设定权限,与chmod类似。
-p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误。
-v, --verbose:每次创建新目录都显示信息。
--version:显示版本信息后离开
touch
新建文件。
touch [选项]... 文件...
命令参数:
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
vi
vi编辑器是所有Unix及Linux系统下标准的编辑器。
内容太多,大家移步http://www.cnblogs.com/mahang/archive/2011/09/01/2161672.html
cat
cat主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
find
用于在文件树种查找文件,并作出相应的处理。
find pathname -options [-print -exec -ok ...]
参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用 -depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
参见:http://www.cnblogs.com/peida/archive/2012/11/13/2767374.html
dig *
dig 命令主要用来做域名解析,类似windows下面的nslookup。
用法:
dig @dnsserver name querytype
dnsserver 指定DNS解析的服务器地址,默认使用/etc/resolv.conf配置的DNS服务器进行解析;
name 需要进行解析的域名;
querytype 定义需要查询的记录类型,默认查询A记录;
可以指定用那个dns进行解析,带上 @x.x.x.x (x.x.x.x 表示指定的DNS) 比如:
Dig命令可以用来追踪解析的完整的过程,带上参数:+trace
可以通过参数short 查看简单的解析记录:
nslookup*
这个是windows下的域名解析:
指定DNS服务器:nslookup Domain DNS
ipconfig
一般来说,我们用ipconfig来看配置的IP,其实,ipconfig还可以用来清空本地的DNS缓存,命令: ipconfig /flushdns ,用在客户域名切换之后本地清DNS缓存:
mtr
类似ping traceroute,测试网络的连通性。
比较常用的参数:
-n 不对IP进行解析,建议使用,可以提高测试速度;
-i 发包间隔时间,默认为1秒钟;
-c 指定发包的个数,和-r参数配合使用;
-s 指定发包的包大小,默认好像64bit;
-r 生成报告的形式。
curl*
curl一般用来测试某条URL的请求情况,默认是不支持断点续传。
测试URL:http://dnf.uuu9.com/70c/images/forum/201205/21/1534008f4fo8l754lo844i.gif
比较常见的参数有:
-0 (这是数字的0)默认的话,curl发的是HTTP/1.1的请求,通过 -0 指令,可以指定使用HTTP/1.0的发送请求;
-o (小写字母o) 默认情况下,curl会把整个内容显示在终端(也就是屏幕)上,可以通过-o将内容保存在某个文件下,比较常见的是指定到/dev/null ,类似一个垃圾箱;
-O (大写的O)会根据请求的文件名在本地保存;
-I 只输出响应头部;
-x 可以指定使用代理的模式,指定通过哪个IP进行请求;eg -x 127.0.0.1:80,需要指定端口信息,否则会报错;如果设定了-x,则curl请求会是代理模式,如果没有-x,则是正常的用户请求,两者存在一定的区别。
带有-x参数:
未带-x参数:
-e 用来设定Referer;
-A 用来设定UA头部;
-H 可以用来设定请求的头部;
--compressed 默认情况下,curl发送的是非压缩的请求,有时候需要测试压缩的请求,此时可以使用- -compressed参数 来发送压缩的请求;
-r 在发送请求的时候,可以用来指定发送range请求;
-u 通过-u 指定用户名和密码,可以用来下载ftp上的内容;
(这条测试命令可以在2012-7-30号前运行成功:curl -O -u '9aola:*Uo3$Ka2' ftp://ftp.wslog.chinanetcenter.com/www.9aoya.com/2012-07-17-0000-2330_www.9aoya.com.cn.log.gz)
wget*
wget是一个从网络上自动下载文件的自由工具,常见的用法:
默认的话,wget会根据URL中的文件名保存,多次下载会在后续保存的文件名中记录数字,类似a.jpg a.jpg.1 a.jpg.2
命令参数介绍:
-o fileName将响应输出信息保存在指定的文件中,有同名文件时,会覆盖掉;
-a fileName将响应输出信息追加到指定文件的末尾,指定文件不存在的话,会新建文件;
-O fileName将下载的文件根据指定的文件名保存;
-c 支持断点续传;
-t num 指定断点续传重试的次数,默认20次;
-S 显示响应头部;
--referer=url 指定请求来源,类似curl的-e选项;
--header= header-line 可以用来设定请求头部,类似URL的-H;
-e http-proxy 类似curl的-x参数,指定到具体的服务器请求内容;
当然,使用wget也可以下载ftp的资源,类似下面的命令:
wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
pollurl
类似curl及wget功能,请求某条URL并将响应头部信息存储在pollUrl.tmp文件下;运维比较常用的命令,了解即可。
Usage: pollurl [-DRavsrVHe][-p port][-h remote host][-u unit][-o timeout value][-T temp file][-P post data]url|mgr:*
Options:
[--append_header|--header]="head1:value1\r\nhead2:value2 or file name\r\n"
[--http_version|--http]="1.0|1.1" http version in request, default is 1.0
-D Display received message on the screen
-s append header:Cdn-Src-Ip: localhost
-R Redirect to the new url
-a Compute the time as a task
-v --verbose Display the verbose messages
-r Fetch sub urls
-o the max timeout value
-V --version Display software version
-H --help Help!
-T temp file the pathname in which you get the message from the server saves
-m --method GET|HEAD|QUERY|POST|PURGE default method is GET,use -m POST=data can post data to the server
-e Exclude the urls not in this domain,if you use this,you must also use -r option
-h host Retrieve URL from cache on hostname. Default is localhost.
-p port Port number of cache. Default is 80. if the target url starts with https,the default port is 443
-u m|s The test result displayed in unit (ms) or (s).
-P use POST method to send datas.use -P data can post data to the server
url|mgr:* the target url to be fetched or the message send to the squid server
tcpflow*
tcpflow用来抓包的工具,常见用法如下(配合grep命令):
tcpflow [-chpsv] [-b max_bytes] [-d debug_level] [-f max_fds] [-i iface] [-r file] [expression]
常见参数:
-c 输出到终端;默认情况tcpflow会把抓包的数据保存到文件中,生成很多相关的文件。
-i 指定抓包使用的接口(通过ifconfig –a 可以显示所有接口),如果没有指定,系统一般会使用lo端口;
-p 不使用promiscuous模式;
-r file 从file文件中读取数据内容;
案例:
tcpflow -cp |grep --color images/forum/201205/21/1534008f4fo8l754lo844i.gif -6
tcpdump
tcpdump是另外一个用来抓包的工具,获取的包大多没有解码,大部分以十六进制形式直接打印输出,常见用法:
tcpdump -nv host 120.036.156.162 |more
参考文档:http://network.51cto.com/art/200512/15473.htm
wget http://dnf.uuu9.com/70c/images/forum/201205/21/1534008f4fo8l754lo844i.gif --referer=http://www.baidu.com/ -e http-proxy=59.57.15.219
md5sum
计算文件的md5值。
md5sum 91rbtest.sh
433bf18f45c0e232323eb90ac8aa07b5 91rbtest.sh
foreach*
foreach一般用来多次执行某个命令。
-c 指定循环的次数;
-s 指定分隔符,默认是’\t’;
-w 指定指定命令的进程数;
-m 指定最大进程数为没有限制,一般很少用;
案例:
grep*
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
一般来说grep和正则表达式配合使用用来对特定信息进行过滤,以便进行准确的分析。
常用参数:
-E 使用扩展正则表达式,功能同egrep;
-F 不使用正则表达式,功能同fgrep;
-P 使用perl的正则表达式规则;
-i 忽略大小写;
-o 仅打印匹配的部分;
-n 显示行号;
-l 显示匹配的文件名称,一般用户搜寻哪个文件匹配到了关键字;
-A 显示匹配行的后的行数;
-B 显示匹配行前的行数;
-v 显示不匹配的内容;
关于正则表达式的对比,可以参考:
http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html
sort
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
常见参数:
-f 忽略大小写;
-n sort默认会按照字符排序,所以可能出现10比2小的情况,改变这种情况可以用-n;
-r 默认的排序方式是升序,-r可以改变为降序;
-o 将排序后的内容存入指定的文件,默认为输出到标准输出;
-k 指定使用哪一列数据进行排序,默认是第一列;
关于sort的使用,参见:
http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html
uniq
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。
选项与参数:
-c 在行首显示该行在输入文件中出现的次数
-d 显示重复出现的行的一个副本,不显示没有重复的行
-f 比较时跳过前n列
-i 比较行时忽略字符大小写
-s n 忽略每行的前n个字符
-u 仅显示没有重复出现的行
-w n 对每行第n个字符以后的内容不做比较
参见:
http://www.cnblogs.com/nerxious/archive/2013/01/09/2853534.html
crontab
计划任务列表,可以设置Linux循环运行的例行性计划任务。
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
参见:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
man
man是linux系统下的帮助系统,对某个命令不熟悉的时候,可以man一下,输出相关的帮助信息。
history
查看命令行历史记录,显示机器上记录到的操作记录,记录的历史命令行数通过环境变量$HISTSIZE设置,然后可以通过“!nums”这个命令执行某个历史命令。
Linux常见快捷键
ctrl+a 移动到命令行首
ctrl+e 移动到命令行尾
ctrl+u 从当前光标所在位置删除到命令行首
ctrl+w 从当前光标所在位置删除到前一个空格位置
cd - 快速返回之前的目录,相当于浏览器的后退功能
!! 执行上一次命令
!vars 执行最近一次以vars开头的命令
!nums 执行历史操作记录当中的第几个命令