shell常用命令[转]
Linux常用shell命令
时间:2010-05-0420:56来源:未知作者:admin点击:241次
Shell基本命令几个基本的shell命令,用ssh管理主机必备。1.ls列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件[root@restoretmpsteph]#lsfile.htmlpublic_htmltest[root@restoretmpsteph]#参数:ls-a列出所有文件,包括隐藏文件[root@restoretmpsteph]#ls-a....bash_logout.bash_profile.bashrcfile
Shell基本命令
几个基本的shell命令,用ssh管理主机必备。
1.ls列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件
[root@restoretmpsteph]#ls
file.htmlpublic_htmltest
[root@restoretmpsteph]#
参数:
ls-a列出所有文件,包括隐藏文件
[root@restoretmpsteph]#ls-a
....bash_logout.bash_profile.bashrcfile.htmlpublic_htmltest
[root@restoretmpsteph]#
ls-l列出所有者size文件权限修改日期
ls-R递归列出所有子目录的内容
2.cd转移目录
cd/home/steph将转移到/home/steph
cd..上移一个目录
cd回到根目录
3.建立新文件和文件夹
touchnew-filename建立新文件
mkdirnew-directory建立新目录
4.删除文件和目录
rmfilename删除名为filename的文件
rmdirfoldername删除名为foldername的目录
5.修改文件夹权限
chmod755foldername将把名为foldername的文件夹的权限修改为755
6.修改用户
chownsteph:stephfile.html把file.html的用户修改为steph:steph
7.复制文件及文件夹
语法:cp[选项]源文件或目录目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各选项含义如下:
-a该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
-d拷贝时保留链接。
-f删除已经存在的目标文件而不提示。
-i和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
-p此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
-r若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。(复制文件夹)
-l不作拷贝,只是链接文件。
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
例子:
Cp-ifile1file2将文档file1复制成file2.i为提示确认。
cpfile1dir1将文档file1复制到目录dir1下,文件名仍为file1.
cp/tmp/file1.将目录/tmp下的文档file1复制到现行目录下,档名仍为file1.
cp/tmp/file1file2将目录/tmp下的文档file1现行目录下,档名为file2
cp-rdir1dir2(recursivecopy)复制整个目录.若目录dir2不存在,则将目录dir1,及其所有文档和子目录,复制到目录dir2下,新目录名称为dir1.若目录dir2不存在,则将dir1,及其所有文档和子目录,复制为目录dir2.
2.压缩和解压缩文件
gzip和gunzip
压缩:
gzipfilename
文件即会被压缩,并被保存为filename.gz
解压缩:
gunzipfilename.gz
filename.gz会被删除,而继之以filename
可以通过命令mangip和mangunzip获得命令的详细说明.
zip和unzip
要使用zip来压缩文件,在shell提示下键入下面的命令:
zip-rfilename.zipfilesdir
在这个例子里,filename.zip代表你创建的文件,filesdir代表你想放置新zip文件的目录。-r选项指定你想递归地(recursively)包括所有包括在filesdir目录中的文件。
要解压缩zip文件的内容,键入以下命令:
unzipfilename.zip
你可以使用zip命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
zip-rfilename.zipfile1file2file3/usr/work/school
上面的命令把file1、file2、file3、以及/usr/work/school目录的内容(假设这个目录存在)压缩起来,然后放入filename.zip文件中。
运行FTPWget实现上传下载
1.用FTP将服务器上的文件上传到其他服务器
[root]$ftp/*启用FTP客户端
ftp>open202.103.1.2/*打开远程服务器IP
Connectedto202.103.1.2.
220ProFTPD1.2.9Serverready.
Name(218.93.205.112:qqroot):user/*输入用户名
331Passwordrequiredfororan.
Password:/*输入密码
230Useroranloggedin.
putidcspy.tar.gzidcspy.tar.gz
/*这是关键,put是上传命令,第一个idcspy.tar.gz是本地文件名,第二个是远程文件名。。意思就是把本地的idcspy.tar.gz上传到远程FTP里,并且命名为idcspy.tar.gz这样,SSH就可以自己上传了。你就可以做别的事情了。
2.Wget下载文件
使用方法:
wget的使用形式是:
wget[参数列表]URL
首先来介绍一下wget的主要参数:
·-b:让wget在后台运行,记录文件写在当前目录下"wget-log"文件中;
·-t[nuberoftimes]:尝试次数,当wget无法与服务器建立连接时,尝试连接多少次
。比如"-t
120〃表示尝试120次。当这一项为"0〃的时候,指定尝试无穷多次直到连接成功为止,这个
设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续
下载没有传完的文件;
·-c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中
途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使
用这一项需要远程服务器也支持断点续传,一般来讲,基于UNIX/Linux的Web/FTP服务器
都支持断点续传;
·-T[numberofseconds]:超时时间,指定多长时间远程服务器没有响应就中断连接
,开始下一次尝试。比如"-T
120〃表示如果120秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比
较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过900,通常
也不少于60,一般设置在120左右比较合适;
·-w[numberofseconds]:在两次尝试之间等待多少秒,比如"-w100〃表示两次尝试
之间等待100秒;
·-Yon/off:通过/不通过代理服务器进行连接;
·-Q[byetes]:限制下载文件的总大小最多不能超过多少,比如"-Q2k"表示不能超过2K
字节,"-Q3m"表示最多不能超过3M字节,如果数字后面什么都不加,就表示是以字节为单
位,比如"-Q200〃表示最多不能超过200字节;
·-nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;
·-x:与"-nd"设置刚好相反,创建完整的目录结构,例如"wget-nd
http://www.gnu.org"将创建在当前目录下创建"www.gnu.org"子目录,然后按照服务器
实际的目录结构一级一级建下去,直到所有的文件都传完为止;
·-nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目
录下;
·http-user=username
·http-passwd=password:如果Web服务器需要指定用户名和口令,用这两项来设定;
·proxy-user=username
·proxy-passwd=password:如果代理服务器需要输入用户名和口令,使用这两个选项
;
·-r:在本机建立服务器端目录结构;
·-l[depth]:下载远程服务器目录结构的深度,例如"-l5〃下载目录深度小于或者等
于5以内的目录结构或者文件;
·-m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设
定其他合适的选项以便于站点镜像;
·-np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们
假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载
这个人的个人主页,如果不设置这个选项,甚至有可能把整个站点给抓下来,这显然是
我们通常不希望的;
ü如何设定wget所使用的代理服务器
wget可以使用用户设置文件".wgetrc"来读取很多设置,我们这里主要利用这个文件来是
设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的".wgetrc"文件就起
作用。例如,"root"用户如果想使用".wgetrc"来设置代理服务器,"/root/.wgert"就起
作用,下面给出一个".wge
trc"文件的内容,读者可以参照这个例子来编写自己的"wgetrc"文件:
http-proxy=111.111.111.111:8080
ftp-proxy=111.111.111.111:8080
这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定
HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。
第二篇:
$wgethelp
GNUWget1.9.1,非交互式的网络文件下载工具。
用法:wget[选项]…[URL]…
长选项必须用的参数在使用短选项时也是必须的。
启动:
-V,version显示Wget的版本并且退出。
-h,help打印此帮助。
-b,-background启动后进入后台操作。
-e,-execute=COMMAND运行'.wgetrc'形式的命令。
日志记录及输入文件:
-o,output-file=文件将日志消息写入到指定文件中。
-a,append-output=文件将日志消息追加到指定文件的末端。
-d,debug打印调试输出。
-q,quiet安静模式(不输出信息)。
-v,verbose详细输出模式(默认)。
-nv,non-verbose关闭详细输出模式,但不进入安静模式。
-i,input-file=文件下载从指定文件中找到的URL。
-F,force-html以HTML方式处理输入文件。
-B,base=URL使用-F-i文件选项时,在相对链接前添加指定的URL。
下载:
-t,tries=次数配置重试次数(0表示无限)。
retry-connrefused即使拒绝连接也重试。
-Ooutput-document=文件将数据写入此文件中。
-nc,no-clobber不更改已经存在的文件,也不使用在文件名后
添加.#(#为数字)的方法写入新的文件。
-c,continue继续接收已下载了一部分的文件。
progress=方式选择下载进度的表示方式。
-N,timestamping除非远程文件较新,否则不再取回。
-S,server-response显示服务器回应消息。
spider不下载任何数据。
-T,timeout=秒数配置读取数据的超时时间(秒数)。
-w,wait=秒数接收不同文件之间等待的秒数。
waitretry=秒数在每次重试之间稍等一段时间(由1秒至指定的秒数不等)。
random-wait接收不同文件之间稍等一段时间(由0秒至2*WAIT秒不等)。
-Y,proxy=on/off打开或关闭代理服务器。
-Q,quota=大小配置接收数据的限额大小。
bind-address=地址使用本机的指定地址(主机名称或IP)进行连接。
limit-rate=速率限制下载的速率。
dns-cache=off禁止查找存于高速缓存中的DNS。
restrict-file-names=OS限制文件名中的字符为指定的OS(操作系统)所允许的字符。
目录:
-ndno-directories不创建目录。
-x,force-directories强制创建目录。
-nH,no-host-directories不创建含有远程主机名称的目录。
-P,directory-prefix=名称保存文件前先创建指定名称的目录。
cut-dirs=数目忽略远程目录中指定数目的目录层。
HTTP选项:
http-user=用户配置http用户名。
http-passwd=密码配置http用户密码。
-C,cache=on/off(不)使用服务器中的高速缓存中的数据(默认是使用的)。
-E,html-extension将所有MIME类型为text/html的文件都加上.html扩展文件名。
ignore-length忽略"Content-Length"文件头字段。
header=字符串在文件头中添加指定字符串。
proxy-user=用户配置代理服务器用户名。
proxy-passwd=密码配置代理服务器用户密码。
referer=URL在HTTP请求中包含"Referer:URL"头。
-s,save-headers将HTTP头存入文件。
-U,user-agent=AGENT标志为AGENT而不是Wget/VERSION。
no-http-keep-alive禁用HTTPkeep-alive(持久性连接)。
cookies=off禁用cookie。
load-cookies=文件会话开始前由指定文件载入cookie。
save-cookies=文件会话结束后将cookie保存至指定文件。
post-data=http://blog.soso.com/qz.q/字符串使用POST方法,发送指定字符串。
post-file=文件使用POST方法,发送指定文件中的内容。
HTTPS(SSL)选项:
sslcertfile=文件可选的客户段端证书。
sslcertkey=密钥文件对此证书可选的"密钥文件"。
egd-file=文件EGDsocket文件名。
sslcadir=目录CA散列表所在的目录。
sslcafile=文件包含CA的文件。
sslcerttype=0/1Client-Cert类型0=PEM(默认)/1=ASN1(DER)
sslcheckcert=0/1根据提供的CA检查服务器的证书
sslprotocol=0-3选择SSL协议;0=自动选择,
1=SSLv22=SSLv33=TLSv1
FTP选项:
-nr,dont-remove-listing不删除".listing"文件。
-g,glob=on/off设置是否展开有通配符的文件名。
passive-ftp使用"被动"传输模式。
retr-symlinks在递归模式中,下载链接所指示的文件(连至目录
则例外)。
递归下载:
-r,recursive递归下载。
-l,level=数字最大递归深度(inf或0表示无限)。
delete-after删除下载后的文件。
-k,convert-links将绝对链接转换为相对链接。
-K,backup-converted转换文件X前先将其备份为X.orig。
-m,mirror等效于-r-N-linf-nr的选项。
-p,page-requisites下载所有显示完整网页所需的文件,例如图像。
strict-comments打开对HTML备注的严格(SGML)处理选项。
递归下载时有关接受/拒绝的选项:
-A,accept=列表接受的文件样式列表,以逗号分隔。
-R,reject=列表排除的文件样式列表,以逗号分隔。
-D,domains=列表接受的域列表,以逗号分隔。
exclude-domains=列表排除的域列表,以逗号分隔。
follow-ftp跟随HTML文件中的FTP链接。
follow-tags=列表要跟随的HTML标记,以逗号分隔。
-G,ignore-tags=列表要忽略的HTML标记,以逗号分隔。
-H,span-hosts递归时可进入其它主机。
-L,relative只跟随相对链接。
-I,include-directories=列表要下载的目录列表。
-X,exclude-directories=列表要排除的目录列表。
-np,no-parent不搜索上层目录。
一个讲解的不错的Wget说明
wget是一个命令行工具,用于批量下载文件,支持HTTP和FTP。究竟比其他的工具好在哪里?看看内容吧
wget基本上所有的Linux版本都自己带了,但是有多少人在用呢?呵呵,如果你没有用过,不妨试试。Windows下面的用户可以使用GNUwin32的项目,wget,基本功能完全一致。好吧,我们来以几个简单的例子看看wget的威力。
如果我们想下载ftp里面某个目录里面的所有文件,我们也可以不用ftp这个笨蛋,呵呵,可以享受cuteftp等图形化工具的拖一个目录的轻松了。如
wget-rftp://10.8.8.8/movie/
呵呵,等吧!下完了,发觉有些不对劲,怎么出来个10.8.8.8的目录,进去看看,又是一个movie,哦,wget将目录结构和网站标题都给记录下来了,不要??没有问题!比如说还是这个例子
wget-r-ndftp://10.8.8.8/movie/
结果什么目录都没有了,faint!怎么会这样?呵呵,你如果想要这样就让它这样吧,否则使用
wget-r-nHftp://10.8.8.8/movie/
恩?movie也不要?OK,那就这样
wget-r-nHcut-dirs=1ftp://10.8.8.8/movie/
这有什么用啊?cuteftp比他好用多了,而且,你这断了线能连吗?呵呵,不好意思,可以连
wget-c-r-nHcut-dirs=1ftp://10.8.8.8/movie/
但是cuteftp能做下面的事情吗?比如,现在很多网站使用Apache建站,并不提供ftp服务,但是Apache有一个indexing功能,可以提供一个类似于ftp的界面,好多文件我想下啊,怎么办?由于是HTTP协议,CuteFTP无能为力了,倒是flashget等有什么getall这种功能,不知道他们对于目录处理怎么样。但是wget一点问题都没有,不信?我们拿CTAN为例(例子并不恰当,CTAN有FTP服务),我们下载这里面所有的宏包,呵呵
wget-r-khttp://www.ctan.org/tex-archive/macros/latex/
-k表示将连接转换为本地连接。但是现在同样有上面的问题啊,那就把你需要的加上吧,另外也许你根本不需要向下走那么多层,比如,我们就要到第二层,那么
wget-r-l2-khttp://www.ctan.org/tex-archive/macros/latex/
现在新的问题是,由于网页有一个排序功能,很讨厌,因为下载的时候把网页重复了好多次,那么我们可使用-A和-R开关控制下载类型,并且可以使用通配符,呵呵,现在随心所欲了吧
wget-r-R".htm\?*"-khttp://www.ctan.org/tex-archive/macros/latex/
这次没有那种网页了吧?-R的意义在于拒绝下载匹配类型的文件,-A表示仅仅接受的文件类型,如-A"*.gif"将仅下载gif图片,如果有多个允许或者不允许,可以使用,分开。
那么,我们现在在使用代理服务器,怎么办呢?呵呵,很高兴你选择了wget,你可以使用它的配置文件,环境变量来利用代理。这里推荐使用环境变量,如在bash里面我们可以把天天用的proxy加到.bash_profile里面,这是Linux标准写法(很多软件都用的,什么apt-get,yum等等)
exporthttp_proxy=http://10.20.30.40:8080
然后,proxy就默认打开了,如果需要暂时关闭,可以使用
wgetproxy=off-r-khttp://www.ctan.org/tex-archive/macros/latex/
当然,写一个.wgetrc文件也可以,该文件可以从/usr/local/etc里面找到,里面有很详细的注释,我就不多说了。
下载网页的时候比较麻烦的事情是,有的网页被同时指向了很多遍,那么为了避免多次下载,我们使用
wget-nc-r-khttp://www.ctan.org/tex-archive/macros/latex/
可以避免这件事情。为了不被有的连接指向非http://www.ctan.org/tex-archive/macros/latex/内层目录,我们还应该加上
wget-nc-np-r-khttp://www.ctan.org/tex-archive/macros/latex/
避免下载非该目录里面的文件,这也避免了到不同的host上面去。当然,如果你希望有这个功能,在多个host之间跳来跳去的下载,可以使用
wget-nc-np-H-r-khttp://www.ctan.org/tex-archive/macros/latex/
使得可以在多个host之间span,同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由<a>这种东西作出来的,你就得使用follow-tags和ignore-tags了。
嘿,我有个文件里面都是连接,怎么办?要是不是html你只需要
wget-iyour.file
如果是,那也不繁
wget-F-iyour.file
Vi指令大全--编辑文件
进入vi的命令
vifilename:打开或新建文件,并将光标置于第一行首
vi+nfilename:打开文件,并将光标置于第n行首
vi+filename:打开文件,并将光标置于最后一行首
vi+/patternfilename:打开文件,并将光标置于第一个与pattern匹配的串处
vi-rfilename:在上次正用vi编辑时发生系统崩溃,恢复filename
vifilename….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:在转到别的文件时若没保存当前文件则显示NOwrite信息
nomagic:允许在搜索模式中,使用前面不带"\"的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2con3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2mn3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2d:将n1行到n2行之间的内容删除
:w:保存当前文件
:efilename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2w!command:将文件中n1行至n2行的内容作为command的输入并执行之,
若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行
寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中