10个顶尖Drush命令——续
原文连接,
我最近发表了《10个顶尖Drush命令》一文。在对这篇博客的评论、邮件以及Twitter中,很多用户介绍了自己心目中的顶尖命令和心得。在如此高质量的反馈的督促之下,我决定写一个续篇来补充这一列表。这里将列出这些反馈中的10个顶尖命令(其中有一部分是我列表中所述命令的变体)。
pm-update —pipe( up —pipe)
pm-update 用来升级代码并运行数据库更新。但是事情总是存在例外,我们应该知道的是,对某些模块的升级,不经过检查,而仅仅使用pm-update进行升级是存在风险的。
所以在真正执行更新之前,如何能够提前获知更新列表?加入pipe参数,就会获得一个漂亮的列表了。
根据上面获得的列表,就可以去drupal.org页面,逐个查看每个其中列出的需要升级的模块,在实际更新之前,可以阅读其中的发行说明。
下面举例说明运行该命令之后获取到的结果:
- drupal 7.23 7.26 SECURITY-UPDATE-available
- backup_migrate 7.x-2.4 7.x-2.8 Update-available
- backupmigratedropbox 7.x-1.0-alpha1+4-dev 7.x-1.0-alpha1 Update-available
- context 7.x-3.0-beta6 7.x-3.2 SECURITY-UPDATE-available
- ctools 7.x-1.2 7.x-1.4 SECURITY-UPDATE-available
- geshifilter 7.x-1.1 7.x-1.2 Update-available
- google_authorship 7.x-2.0-beta1 7.x-2.0 Update-available
- hierarchical_select 7.x-3.0-alpha5 7.x-3.0-alpha6 Update-available
- inline 7.x-1.x-dev 7.x-1.x-dev Update-available
- libraries 7.x-2.1 7.x-2.2 Update-available
- markdown 7.x-1.1 7.x-1.2 Update-available
- metatag 7.x-1.0-beta4 7.x-1.0-beta9 Update-available
- mollom 7.x-2.77.x-2.9 Update-available
- views 7.x-3.57.x-3.7 SECURITY-UPDATE-available
- xmlsitemap 7.x-2.0-rc2 7.x-2.0 Update-available
多谢James Oackley提供这一经验。
watchdog-show —tail(ws —tail)
使用watchdog-show会从watchdog返回一个消息列表。通过tail选项,可以更进一步的以实时的方式查看日志。
这个命令在除错过程中是非常有用的。可以在代码中加入一个watchdog调用,然后用watchdog-show —tail命令,来查看页面载入过程中出现的消息。
如果觉得消息太多,可以在模块中把消息独立出来。
首先,给你的watchdog一个独立的类型:
watchdog(‘myuniquetype’, print_r($variable, true));
接下来在这一命令中,使用—type参数可以利用‘my_unique_type’这一名称来隔离输出消息:
watchdog-show —tail —type=myuniquetype
watchdog‐show ‐‐tail 这一条来自一个匿名访客。
drush archive-dump (ard)
drush archive-dump 能够把代码、数据库以及files目录里面的文件备份到一个文件中。
使用destination选项来指定备份文件的保存位置。 例如:
drush ard —destination=/var/www/site/backups/example.tar
感谢Agnar Ødegård和Jean‐Francois Bohemier推荐了这一命令。
dush sql-dump > dumpname.sql
drush sql-dump会对数据库做一次导出,这一操作和运行mysql-dump的结果类似。
也可以用result选项来把结果保存到指定路径:
drush sql-dump > dumpname.sql —result=/var/www/site/backups/example.sql
启用gzip选项可以压缩输出文件(在系统路径中能找得到gzip命令)。
drush sql-dump > dumpname.sql —gzip —result=/var/www/site/backups/example.sql
如果不想每次都输入result参数,可以编辑drushrc.php文件:
$options[‘result-file’] = ‘~/Desktop/@DATABASE/@DATE.sql’;
再次感谢Agnar Ødegård提出的drush sql‐dump > dumpname.sql,Mike Raichelson提示的—result‐file选项,以及Capi Etheriel对gzip选项和drushrc.php的讲述。
drush sql-cli (sqlc)
drush sql-cli会利用保存在settings.php中的凭据打开sql命令行界面。
也可以用这个命令来从导出数据中恢复数据库:
drush sql‐cli < dumpname.sql
再再次感谢Agnar Ødegård推荐了这一命令。
drush sql-sync
drush sql‐sync能将本地数据库同远程的生产环境数据库进行同步。
感谢Mike Keran推荐了这一命令,这里也推荐他的文章《安全的sql-sync》。
drush fn-hook (fnh)
drush fn-hook用于查询都有哪些模块实现了指定的钩子。
例如,查找实现了hook_form_alter的模块:
drush fn-hook form_alter
这一命令将返回一个模块列表:
[0] : Cancel
[1] : block_class
[2] : context
[3] : inline
[4] : metatag
[5] : mollom
[6] : token
可以选择其中一个来查看该模块的hook_form_alter实现。选择 [1] block_class 之后,会看到下面的返回:
//file:/home/blair/befused/www/sites/all/modules/contrib/block_class/block_class.module
/**
*Implementshook_form_alter().
*
*Alterblockeditformtoaddconfigurationfield.
*/
function block_class_form_alter(&$form, &$form_state, $form_id)
{
if (user_access('administer block classes') && ($form_id == 'block_admin_con
// Load statically cached block object used to display the form.
$block = block_load($form['module']['#value'], $form['delta']['#value']);
$form['settings']['css_class'] = array(
'#type' => 'textfield',
'#title' => t('CSS class(es)'),
'#default_value' => isset($block->css_class) ? $block->css_class : '',
'#description' => t('Customize the styling of this block by adding CSS c
'#maxlength' => 255,
);
$form['#submit'][] = 'block_class_form_submit';
}
感谢Mike Keran推荐这一命令,并讲了这一命令的用途:用于确认一个模块是否因为实现了某个钩子而影响了其他代码的工作。
drush user-login (uli)
drush user-login会显示一个一次性的登录界面,用这一功能可以实现快速登录到某个站点的能力。
感谢Raph推荐了这一命令。
drush pm-updatecode(upc)
我曾经在我的《10个顶尖Drush命令》一文中提到过drush pm-update命令,这一命令会把模块以及核心进行升级,并执行数据库更新工作。有的用户希望把代码和数据库升级分离开来,这一目的可以使用drush pm-updatecode来达成。运行该命令后,用户可以在数据库更新之前检查变更情况。如果代码处于版本控制中,可以用git diff之类的命令来检查代码变更。
感谢kiwimind推荐了这一命令。
drush | grep 命令或drush —filter=命令
大多数人是没有过目不忘的能力的,所以记不住每个drush命令是很正常的。如果不带任何参数,只是运行drush命令,会得到一个包含所有可用drush命令的列表。这个列表很长,不过如果你对正在尝试搜索的命令有点印象,就可以使用管道和grep命令来缩减这个列表的规模(管道是你能够把一个命令的输出作为另外一个命令的输入)。
例如,如果你在搜索一个包含user字样的命令:
drush | grep user
执行后会返回一个所有包含 ‘user’ 这一单词的命令的列表。这个过滤也对介绍内容生效,所以如果一个命令中没有’user’字样,但是他的描述内容中有,也会被显示出来。
也可以使用 —filter 选项代替grep。这个命令只针对命令名称生效,这一点和grep不同,所以可以根据过滤需要来选择不同的方式。
drush —filter=user
下面的help命令是等效的。
drush help | grep user drush help —filter=user
感谢Michael Prasuhn推荐了grep和filter的内容。
drushcommands.com
Pere推荐了Peter Brady的超级Drush资源Drush Commands,这一站点除了包含核心模块之外,还包含了很多第三方资源。
致谢
感谢所有对此列表有所贡献的人。