WordPress:UNIX Shell Skills
如果你最近从一个托管的写博客的solution,如Blogger或者TypePad中进入了WordPress,你可能对于管理网络空间和博客的任务不太熟悉。WordPress是以PHP为基础的; 许多托管服务使用服务器运行Linux 和Apache; 许多网络服务器不仅向它们的顾客提供以网络为基础的 控制界面 还提供 shell权限 或者命令行界面。许多WordPress用户对于使用shell 来管理文件系统,可能不熟悉。这篇文章介绍了更加常用的UNIX命令并且示范了一个常规的管理任务是如何运行的,如一个小型的WordPress升级,就是在shell上执行的。
The bash shell[ ]
你的网络主机提供的shell很可能是bash,bash指的是"Bourne Again Shell",是以编写了original 现代 Unix shell的Stephen Bourne 命名的。bash是由免费软件基金会来命名的。有许多不同的Unix shells。下面简单描述的命令行几乎对于所有的Unix shells都是适用的。
ssh, 安全 shell[ ]
安全 Shell (ssh)是用于远程管理你的站点的一套完整的工具。包含有SFTP (安全文件传输协议)用来向你的主机上传文件。使用ssh的主要好处是,通过与一个远程的服务器接触来增加安全性。与其它的服务器访问工具一起,你的登录密码可能通过一个纯文本在因特网上传输,可能会被截取。
在Windows下,使用 ssh , 使用 PuTTY 或者Cygwin, 为Widows使用一个类似UNIX的环境。The FileZilla ftp client 通过ssh-2也支持sftp 。
要在一个运行OS X的Mac上使用ssh , 使用Mac OS X 支持的,以终端为基础的SSH程序或者下载Fugu。
在 Linux 或者以 UNIX为基础的操作系统上, 你可以从终端上使用以文本为基础的SSH和SFTP clients,如Konsole, Gnome Terminal 或者xterm。 图画式的 FTP clients 如KBear and gFTP 也支持sftp。
你的主机公司会提供用户名你和主机的详细信息,使用这些信息是必要的。这些信息可能与你在控制面板上使用的信息有所不同。要使用这些信息,在Terminal prompt 输入
ssh username@host
or
sftp username@host
术语[ ]
在开始处理一些UNIX commands之前,让我们来阅读一些术语。
- 目录? 文件夹?
;目录与文件夹指的是同一样的内容。目录可以包含有子目录。
- 点(句点或者句号)指的是当前的目录;两个点指的是当前目录的上级目录。
- 曲线字符(~)指的是你的主页目录。
- 用户名后面的曲线字符(如在~username)指的是用户的主页目录。
- 句点标记和曲线符号都可以看作为目录名称。例如, ../config.php指的是当前目录的上一次目录上的文件 config.php。目录 ./functions.php 指的是当前目录中的 functions.php。而且 ~/public_html or ~/htdocs (通常)是你的主要网页目录的名称,这个名称很可能是你的主页目录的一个子目录的名称。显示在你的网络服务器的地址框中域 URI 指的是主要的网页目录,而不是站点所有者的主页目录。
- 前斜线(/)
:前斜线的功能与前斜线在网站URI上的功能相同:it shows the item after to be in a subdirectory or the directory before it.斜线本身代表根目录,在文件系统的顶上方。
- 目录名字符规则和空格
:文件或者目录名称可以包含任何标准的字符,但是一个前斜线&mdash除外;空格也除外。然而,当输入shell 命令行的时候,你用空格将命令行,参数,和文件分开。如果你的文件或者目录名中有一个空格,你需要在空格的前面使用一个前斜线。或者在文件或目录名称的周围加上一个引号。一个称为我的图片的目录,会以
"我的图片"
或者
我的\ 图片
输入。
*和? 符号: * 和? 符号称为通配符 可以用在任何处理文件的命令行中。* 指的是许多字符。?指的是一个字符。注意Linux 文件名是区分大小写的— 规范的形式是小写形式。所有的命令行都是小写的。
命令选项:命令通常接受选项或者参数, 这些选项和字符以一个连字号开始,挨次给出。如果你想为一个命令设置选项b, r and f,输入
command -brf
,其它的详细信息,例如文件名,在选项的后面。
Shell 命令[ ]
下面简要介绍一些有用的UNIX shell命令。
ls[ ]
这个命令显示了一个目录的内容的列表。为更改前,命令显示了当前目录的内容;你可以特别规定列出另一个目录的内容。一些有用的选项是:
- ls -l
:如果列表很长,你可以在网页上显示列表。输入
ls -l |less
,执行这一步
- (注意: 竖线 |也成为一个 UNIX pipe). pipe bar 指的是来自ls -l的输出,提交到了一个程序 less, 这个程序显示了任何收到的输入内容。你可以点击空白处,来访问下一个网页,或者点击箭头,向上或者向下翻看。
- ls -la
- 包含隐藏文件 (例如,以一个圆点开始的文件,像目录列表中的 .htaccess)。
- ls -l g*
:指定任何其它的目录或者文件组列在选项的后面,在一个例子中,会列出所有以g开始的文件,然而ls public_html会列出public_html的内容。
cd[ ]
cd命令更改了当前的目录。要从当前的目录切换到一个子目录中,将子目录的名称放到命令行的后面。要变成一个子目录wp-content,你需要输入
cd wp-wp-content
要进入当前目录的上级目录,请输入:
cd ..
要从当前目录切换到你的主目录中,输入
cd
mkdir[ ]
mkdir命令创建了一个在当前目录内部创建了一个新的目录。要在当前的目录中,创建一个名为audio目录,请输入
mkdir audio
要移除一个空目录,请输入rmdir directoryname例如;
rmdir audio
rm[ ]
rm命令删除('移除')一个文件。要一次地删除整个目录以及目录中所包含的内容,输入rm -rf directoryname。要删除当前目录中的所有内容,使用
rm -rf *
要谨慎—一旦某个内容以这样的方式删除掉了,这个内容就永远都不会返回了。
离开当前命令行外壳[ ]
exit命令结束了你的shell部分。
mv[ ]
mv命令将文件从一个位置移到了另一个位置;同时还会重新命名文件。输入
mv file new-location
如果 new-location 参数是当前文件系统中的一个 (有效的) 目录,文件就会被移动到这个目录;如果目录不是有效地目录 (而且目录名不与当前的文件名相冲突的话), 文件 就会被重新命名为 new-location。你也可以使用一个命令,移动和重新命名一个文件:
mv file ~/path/to/new-file-name
cp[ ]
cp命令复制文件或者目录。要复制一个目录和目录的全部内容,请使用
cp -rf source-file destination
ln[ ]
ln命令创建链接。与我们的目标相关的链接是"符号链接" 或者 symlinks —文件系统中 "指向" 其它文件或者目录的文件。当你访问一个 symlink的时候,你真正是在使用原始文件。如果你想要将你的WordPress目录的位置,如从/wordpress/ 改到/blog/中,你可以创建一个如下的symlinks:
ln -s wordpress blog
然后通过文件或者目录真正的名称来访问— wordpress —或者通过链接名— blog。在WordPress管理面板的选项面板中,设置"博客地址(URI)"区,来显示symlink取代目录名。
tar and unzip[ ]
tar 和 unzip 命令是用来压缩和解压"归档"文件的。存档指的是已经被"压缩的"文件或者文件加 — 例如,文件按大小得到了压缩— 通常是用来发行或者作为备份用的。解压 命令是用来将文件以.zip结束; the tar 命令是用来将文件以.tgz 或者 .tar.gz结束.
解压文件:如果文件是一个.tar.gz归档,请输入
tar -zxvf file.tar.gz
如果文件是压缩归档,你可能要创建一个临时的目录,你将文件的内容解压到这个目录中(否则,文件就会解压到当前的目录中)。
chmod和文件权限[ ]
chmod更改了一个特定的文件的权限。UNIX 文件权限规定了谁可以对文件进行什么样的处理。ls -l 命令告诉了你一个文件或者目录拥有什么权限:
-rw-r--r-- 1 domain60 vweb 840 二月 21 06:38 wp-config-sample.php -rw-r--r-- 1 domain60 vweb 826 六月 29 20:31 wp-config.php drwxr-xr-x 4 domain60 vweb 4096 六月 29 20:30 wp-content -rw-r--r-- 1 domain60 vweb 762 三月 29 16:05 wp-feed.php drwxr-xr-x 3 domain60 vweb 4096 六月 29 18:46 wp-images drwxr-xr-x 2 domain60 vweb 4096 六月 29 18:46 wp-includes
权限显示在第一个栏中的字母串中。那个栏中的第一个字母暗示了字母串是文件,链接还是目录。d表示目录,l表示链接,一个破折号表示一个文件。
权限是用下面九个字母公告的,这九个字母作为三组显示。第一组的三个字母,涉及所有者,第二组他所属于的那个组(不可能设计到你,一个网络主机用户),第三组涉及到其他所有的人。注意拥有根权限(管理员)的人能够访问系统上的所有文件。
字母r, w 和 x代表着阅读,写和执行;如果文件是一个目录,可执行的指的是可移动的,意思是你可以用cd命令,移动到那个目录上。当权限列表上出现一个破折号的时候,这个权限不存在。
你用chmod命令更改权限。事实上,你可能不需要更改权限;一些主机在网络目录上的任何文件上,自动地设置某个权限。你的主机可能会通知你,你的服务器上需要设置什么权限。
chmod命令可以用来以两种方式设置权限:用字母或者用数字来设置权限。如果你使用字母,你可以输入
chmod o+w 文件名
这赋予每个人使用系统的特权。第一个字母可以使u(用户),g(小组)或者o(其它的),或者一个组合;the + (grant) 也可以是 be - (withhold), 第三个字母也可以是 r 或者 x (阅读或者执行)。
如果你使用数字,文件的所有权限都可以一次设置好。如:
chmod 755 wp-images
设置了wp-images目录的权限为755,然后第一个数字("百位数")是为用户设置的,第二位数("十位数")是为小组设置的,第三位数("个位数")是为其他所有的人设置的。
更多关于数字权限设置的内容:在任何区域中添加4,赋予了阅读权限;添加2赋予了编写的权限,而添加1赋予了执行的权限;每个组合都有一个独特的数字。上述例子中的目录,将权限设置为755,对于网络上可以使用的目录,这个权限非常常见,用户拥有所有的特权,而其他人只有阅读和执行的权限;上述例子中的文件的权限设置为644,用户可以阅读和编写文件,而其他人只能够阅读文件。
6 4 4 420400400 -rw-r--r-- 1 domain60 vweb 840 Feb 21 06:38 wp-config-sample.php 7 5 5 421401401 drwxr-xr-x 2 domain60 vweb 4096 Jun 29 18:46 wp-includes
wget[ ]
如果你在wget命令后,加上一个网络地址(URI),这个命令就会下载一个文件。要下载最新发行的WordPress版本,请输入
wget http://wordpress.org/latest.tar.gz
从Shell中升级WordPress[ ]
让我们来使用,用命令行升级WordPress的例子。首先,在你的网络服务器的文件系统上确立你的WordPress的位置。这个例子中假如WordPress位于~/public_html/blog。
- 为你的shell帐户的主页目录下载当前的WordPress版本并且将这个版本解压:
wget http://wordpress.org/latest.tar.gz tar -zxvf latest.tar.gz
WordPress存档文件会被解压到一个新的目录,目录名为/wordpress. - 用下面的命令输入新的目录:
cd wordpress
- 移除 wp-config-sample.php:
rm wp-config-sample.php
(取而代之,我们会看到当前的wp-config.php) - 将整个/wp-content 目录,从新的目录中移除 (我们会用WordPress博客中的目录来代替这个目录):
rm -rf wp-content
- 将博客的wp-config.php 和.htaccess 文件复制到新的目录中:
cp ~/public_html/blog/wp-config.php . cp ~/public_html/blog/.htaccess .
注意: 不要忘了两个命令后面的点号! - 将wp-content目录复制到新的目录(包含了我们所有的主题和插件):
cp -rf ~/public_html/blog/wp-content/ .
再一次地注意,命令结尾的点号。 - 移除你的WordPress博客目录中的所有内容:
rm -rf ~/public_html/blog/*
- 最后,将新目录的所有内容复制到你的主要博客目录中:
cp -rf * ~/public_html/blog
SFTP Shell 命令[ ]
SFTP代表安全文件传输协议,是加密的FTP形式,如FTP,你可以使用在这篇文章的顶端所提到的一个shell为基础的client或者一个图形client。如果你的主机支持SSH,主机就同样支持SFTP。
与Shell一样的命令[ ]
Shell类型支持的命令,类似于用在bash中的命令。这些包括 cd, ls, mkdir, rm 和 rmdir。也支持 ln, 不同的是,你不需要使用-s 选项来创建symlinks; 在sftp中, ln 命令使得symlinks 是默认的。所有这些命令对于你的主机系统上的文件都起作用。
put and mput[ ]
这两个命令转移到你的主机(例如上传)一个单独的文件(put)或者任何与你支持的模式相匹配的文件(mput);以上所描述的通配符* 和?可以用在这儿。
get and mget[ ]
这两个命令从你的主机转移到你的本地电脑上(例如下载)一个单一的文件(get)或者任何匹配支持的模式的文件(mget)。与mput一样,可以使用* 和 ?。
cd, mkdir, ls[ ]
这些命令与命令的bash shell命令是相同的:更改当前的目录,创建一个新的目录,列出当前目录的内容。在你自己的电脑的SFTP内部执行同样的操作,在命令的前面添加一个l:lcd, lmkdir, lls。