面试官:说说Webpack中Loader和Plugin的区别?编写Loader,Plugin的思路?


一、面试区别
前面两节我们有提到Loader与Plugin对应的官说概念,先来回顾下
loader 是说W思路文件加载器,能够加载资源文件,别编并对这些文件进行一些处理,面试诸如编译、官说压缩等,说W思路最终一起打包到指定的别编文件中 plugin 赋予了 webpack 各种灵活的功能,例如打包优化、面试资源管理、官说环境变量注入等,说W思路目的别编是解决 loader 无法实现的其他事从整个运行时机上来看,如下图所示:

可以看到,面试两者在运行时机上的官说区别:
loader 运行在打包文件之前 plugins 在整个编译周期都起作用在Webpack 运行的生命周期中会广播出许多事件,Plugin 可以监听这些事件,说W思路在合适的时机通过Webpack提供的 API改变输出结果
对于loader,实质是一个转换器,将A文件进行编译形成B文件,操作的是文件,比如将A.scss或A.less转变为B.css,站群服务器单纯的文件转换过程
二、编写loader
在编写 loader 前,我们首先需要了解 loader 的本质
其本质为函数,函数中的 this 作为上下文会被 webpack 填充,因此我们不能将 loader设为一个箭头函数
函数接受一个参数,为 webpack 传递给 loader 的文件源内容
函数中 this 是由 webpack 提供的对象,能够获取当前 loader 所需要的各种信息
函数中有异步操作或同步操作,异步操作通过 this.callback返回,返回值要求为 string 或者 Buffer
代码如下所示:
// 导出一个函数,source为webpack传递给loader的文件源内容 module.exports = function(source) { const content = doSomeThing2JsString(source); // 如果 loader 配置了 options 对象,那么this.query将指向 options const options = this.query; // 可以用作解析其他模块路径的上下文 console.log(this.context); /* * this.callback 参数: * error:Error | null,当 loader 出错时向外抛出一个 error * content:String | Buffer,经过 loader 编译后需要导出的内容 * sourceMap:为方便调试生成的编译后内容的 source map * ast:本次编译生成的 AST 静态语法树,之后执行的 loader 可以直接使用这个 AST,进而省去重复生成 AST 的过程 */ this.callback(null, content); // 异步 return content; // 同步 }一般在编写loader的过程中,保持功能单一,避免做多种功能
如less文件转换成 css文件也不是服务器租用一步到位,而是 less-loader、css-loader、style-loader几个 loader的链式调用才能完成转换
三、编写plugin
由于webpack基于发布订阅模式,在运行的生命周期中会广播出许多事件,插件通过监听这些事件,就可以在特定的阶段执行自己的插件任务
在之前也了解过,webpack编译会创建两个核心对象:
compiler:包含了 webpack 环境的所有的配置信息,包括 options,loader 和 plugin,和 webpack 整个生命周期相关的钩子 compilation:作为 plugin 内置事件回调函数的参数,包含了当前的模块资源、编译生成资源、变化的文件以及被跟踪依赖的状态信息。当检测到一个文件变化,一次新的 Compilation 将被创建如果自己要实现plugin,也需要遵循一定的规范:
插件必须是一个函数或者是高防服务器一个包含 apply 方法的对象,这样才能访问compiler实例 传给每个插件的 compiler 和 compilation 对象都是同一个引用,因此不建议修改 异步的事件需要在插件处理完任务时调用回调函数通知 Webpack 进入下一个流程,不然会卡住实现plugin的模板如下:
class MyPlugin { // Webpack 会调用 MyPlugin 实例的 apply 方法给插件实例传入 compiler 对象 apply (compiler) { // 找到合适的事件钩子,实现自己的插件功能 compiler.hooks.emit.tap(MyPlugin, compilation => { // compilation: 当前打包构建流程的上下文 console.log(compilation); // do something... }) } }在 emit 事件发生时,代表源文件的转换和组装已经完成,可以读取到最终将输出的资源、代码块、模块及其依赖,并且可以修改输出资源的内容
参考文献
https://webpack.docschina.org/api/loaders/
https://webpack.docschina.org/api/compiler-hooks/
https://segmentfault.com/a/1190000039877943
https://vue3js.cn/interview
本文地址:http://www.bzve.cn/news/373f65898968.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
相关文章
清华同方N768教程(一键开启科技新时代,解锁清华同方N768的神秘功能)
该问题也会出现在Ubuntu其他的版本中,实际上在商家上线的系统模版中或多或少都有一些类似的细节错误,值得我们在使用中注意并修正。当然这一类的问题实际上并不算大,只是解决起来可能需要一些搜索工作。apt-get update返回NO_PUBKEY错误的解决方法错误代码:复制代码代码如下:复制代码代码如下:复制代码代码如下:Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.w8njroYZkC --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5gpg: requesting key 437D05B5 from hkp server keyserver.ubuntu.comgpg: key 437D05B5: public key Ubuntu Archive Automatic Signing Key importedgpg: Total number processed: 1gpg: imported: 1接下来再apt-get update应该就不会出现类似的错误了。
下载最新libdrm 2.4.9 (打了patch,不需要在xorg设置DRI了)编译:驱动还原:sudo apt-get install libdrm2 --reinstallsudo apt-get install xserver-xorg-video-intel --reinstallP.S./etc/X11/xorg.conf的section Device里,最好有一项Driver intel,但不一定需要的。(假如3d用不了,就把Driver intel加到那个section)假如glxgears提示DRI问题,就在xorg.conf的最后,加入:Section DRIMode 0666EndSection为了防止Ubuntu更新时,更换了驱动,強烈建议在synaptic锁定xserver-xorg-video-intel和libdrm2的版本!
Nexus 是Maven仓库管理器,我们可以在本地架设一个Maven私有仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。1、本经验是基于:系统环境:ubuntu12.04nexus版本:nexus-2.10.0-02maven版本:apache-maven-3.2.1jdk版本:jdk1.7.0_402、把下载下来的压缩包解压到一个文件夹中3、解压缩后 进入 nexus-2.10.0-02-bundle/nexus-2.10.0-02/bin/jsw/conf4、修改wrapper.conf文件 修改 wrapper.java.command=jdk所在目录/bin/java (一定要带java,网上很多教程都没带java)5、然后进入 cd nexus-2.10.0-02-bundle/nexus-2.10.0-02/bin 目录 执行 ./nuxus start 就可以启动nuxus啦nexus的操作:nexus { console | start | stop | restart | status | dump }6、在地址栏里面输入:http://localhost:8081/nexus注意:步骤4很重要,假如显示没有权限,请添加权限!请配置好环境变量,jdk,maven都需要配置好!谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。
Ghost全盘教程(用Ghost打造独一无二的网站)
很多朋友都知道Ubuntu是一个非常不错的Linux发行版,要在官网下载到Ubuntu也非常简单。但下载好ISO之后大家要怎么来安装呢?当然,早年前我们都是通过记录DVD光盘的方式来进行安装,现在随着光驱逐步被市场所淘汰,Ubuntu同Windows一样与时俱进,同样也可以通过制作Ubuntu安装U盘的方式来进行安装。下面我们就来介绍下如何在Windows、Mac甚至Linux平台下,如何制作Ubuntu安装U盘的几种方式。Ubuntu版本的选择首先大家需要知道Ubuntu有LTS版本和“技术前沿版”,这两种版本都可以作为日常的桌面终端进行使用,但通常我们会认为LTS版本更加稳定, 而且可以获得至发行之日起为期5年的技术支持。而LTS版本之间发行的所谓“技术前沿版”仅有9个月的支持周期,到期之后用户就必需升级到新的版本下。再有就是32位和64位版本选择的问题。我个人比较建议大家都选择目前较主流的64位版本进行安装,当然,假如你的电脑太老旧或不能支持的话,还是安装32位吧!之前有一个比较流行的说法是内存小于3GB时就不要选择64位版本进行安装,其实这种说法可以忽略不计,64位可以更加充分的利用CPU支持,哪怕你的内存小于3GB。制作Ubuntu安装U盘一旦Ubuntu的ISO下载安装,我们就需要将其写入到U盘当中。其实无法你在哪种操作系统中制作Ubuntu安装U盘的方式都大相径庭,下面我们就分别进行介绍。1.Windows中制作Ubuntu安装U盘Universal USB Installer是一个Windows下制作Linux安装U盘非常流行和常用的一个工具,该工具是绿色版本不需要安装,支持当前主流的Linux发行版,当然也支持Ubuntu。打开Universal USB Installer,之后我们只需按上图所示选择好下载到Ubuntu镜像,再指定好我们当前U盘的盘符即可。为了保证操作过程中不出问题,建议大家勾选对U盘进行格式化。2.Mac中制作Ubuntu安装U盘在Mac下制作Ubuntu安装U盘对很多普通用户来说就比较棘手了,因为我们必需用到Mac的终端命令。当然好处就是不用下载那些杂七杂八又不常用的工具来占用空间了。打开终端,使用如下命令:先浏览到下载文件夹:复制代码代码如下:cd ~/Downloads然后执行如下命令:复制代码代码如下:hdiutil convert -format UDRW -o ubuntu.iso ubuntu-xxxxxx.iso最后一部分是你下载好的Ubuntu镜像的文件名,请执行前按你的情况替换好。该命令可以将ISO镜像转换成Mac更容易地实现。再执行,删除Mac版为镜像文件添加的.dmg扩展名:复制代码代码如下:mv ubuntu.iso.dmg ubuntu.iso下一步列出当前驱动器:复制代码代码如下:diskutil list然后插入U盘重新执行以上命令:复制代码代码如下:diskutil list找出之前没有的驱动器挂载点后执行:复制代码代码如下:diskutil unmountDisk /dev/diskN其中N是上条命令中找出的U盘挂载点号。执行如下命令开始写入Ubuntu镜像文件到U盘:复制代码代码如下:sudo dd if=./ubuntu.iso of=/dev/rdiskN bs=1m写入完成后,我们执行如下命令弹出U盘就制作完成了:复制代码代码如下:diskutil eject /dev/diskN3.Linux中制作Ubuntu安装U盘Linux下制作Ubuntu安装U盘的方式与Mac类似,都是通过终端命令来完成:先浏览到下载文件夹:复制代码代码如下:cd ~/Downloads然后使用如下命令开始写入:复制代码代码如下:sudo dd if=./ubuntu-iso-name.iso of=/dev/sdX其中X为U盘的挂载点,当然ubuntu-iso-name表示的是下载好Ubuntu镜像的名称,需要你自己改好。制作完成后使用如下命令推出U盘即可:复制代码代码如下:sudo eject /dev/sdX以上我们介绍了3种制作Ubuntu安装U盘的方式,相信大家按步骤来都可以制作完成,希望大家喜欢该文。
Ubuntu15.04正式版已经发布很久了,小编也是一个热爱Ubuntu的人,今天小编为一些愿意学习Ubuntu的小白介绍一些简单的知识,希望对你们有所帮助,今天开始介绍一下Ubuntu15.04如何设置分辨率。1、当我们启动Ubuntu以后,我们点击右上角的设置按钮,如图示,点开之后,再点击“系统设置”。2、进入系统设置之后,我们可以看到这里有非常多的设置选项,我们点击“显示”,如图示。3、点开显示之后,我们可以为自己的电脑选择合适的分辨率,小编这里选择的是1360*768(16:9)。4、选择好以后,我们可以找到下方的应用,假如没有看到,可以点住上方,向左拖动。5、点击应用之后,我们可以看到这里会有一个提示,询问你是否显示正常,假如不正常,我们可以点击“恢复之前的配置”,假如正常,我们直接点击“保持当前配置”即可。6、设置好以后,我就可以看到自己刚才设置的效果了,如图示。
神钢电脑主板拆解教程(一步步教你如何拆解神钢电脑主板,轻松解决常见故障)
热门文章
- 1电脑开机重置错误的解决方法(应对电脑开机重置错误的有效措施)
- 2终端居然无法启动了,这是神马情况啊!突然想起,前一天更新了软件源,结果一下子贪多,软件源弄多了,导致update的时候等待了so long time ,于是等不急了,ctrl + c果断结果掉了今天再一启动,于是就悲剧了,终端无法启动,啥事都干不了!!!网上一艘,说启动gnome-termial试试,我在xterm里面启动gnome-terminal居然提示说没这个程序,于是sudo apt-get install gnome-terminal 果断解决问题!!有没有搞错!于是顺便装下wine,可惜这12.4软件包里面默认没有wine,不解!!于是手动安装了!!
- 3电脑沙发调节高度教程(轻松操作,让您的沙发高度适配您的需求)
- 4大家都为在UBUNTU中使用聊天工具而烦燥吗?大家还为找QQ而在网上不停的找方案吗?什么lumaqq啊,EVAQQ啊!假如让你感觉 装LUMAQQ感觉不方便怎么办?假如用apt-get install eva成功安装上EVA却用不了怎么办,而且EVA又不怎么稳定怎么办?现在Gaim搞定,大家都知道GAIM中有很聊天工具可以一起使用集合。同时在一个界面上使用,方便吧!但是MSN是直接可以用的(系统装好后),而QQ需要装一个叫openq的插件,下载地址:http://textwiki.org/wiki/OpenQ。假如没有这个东西的话你怎么也上不了QQ,总会跳出来说明 你的QQ密码有误,所以这个东西是必需要要用的哦!本人下载的是一个文件。而不是DEB包,所以右键归档成OpenQ.tar.gz接着安装就OK安装方法:[root@localhost xxx]# tar zxvf openq.tar.gz[root@localhost xxx]# cd openq[beinan@localhost openq-0.3.2]#./configure --libdir=/usr/lib[beinan@localhost openq-0.3.2]# make[beinan@localhost openq-0.3.2]# make install安装好后OpenQ,我们查看一下 /usr/lib/gaim 目录中,会有两个libqq两个相关的文件;[root@localhost openq-0.3.2]# ls -lh /usr/lib/gaim/libqq*-rwxr-xr-x 1 root root 675 8月 31 11:08 /usr/lib/gaim/libqq.la-rwxr-xr-x 1 root root 8.7M 8月 31 11:08 /usr/lib/gaim/libqq.so到这儿就OK啦!
- 5Flyme5.1.6.0a(打造独特个性化的手机主题,尽享视觉盛宴)
- 6方法很简单,一条命令就搞定了:sudo apt-get install rar unrar系统会自动下载2个大约604K的包并安装,安装结束后就可以自由压缩/解压缩RAR文件了。
- 7电脑远程登录密码错误的解决方法(如何应对电脑远程登录密码错误问题)
- 8PQ分区电脑支架安装教程(简单易行的步骤让你快速安装PQ分区电脑支架)
- 9OnePlus5手机(性能强劲,拍照出色,价格亲民,OnePlus5是你的不二选择)
- 10如何以分期付款购买台式电脑?(详细教程帮助您轻松分期购买您心仪的台式电脑)
- 11第一次安装Ubuntu,发现比较“奇怪”的一点是,在安装过程中,不像其他发布版本那样,要求设置root的密码,也就无法以root登录了。经过去网上查询才发现:Ubuntu默认是关闭root帐户的,这样做有如下优点:起初Ubuntu团队希望安装尽可能的简单,不使用root,在安装期间的两个用户交互步骤可以省略。(科林·沃森)更进一步, 假如在安装中使用root,用户将被要求永远记住他们选择的密码--即使他们很少使用到它。Root密码经常被对Unix安全模型不熟悉的用户忘记。(马特·齐默曼)它防止了缺省登录时“我能做任何事情”--在较大的变化发生之前,你将被提示输入口令,这可以使你考虑你这样做的结果。 假如你作为root登录,你可以删除一些“没用的文件夹”并且不会意识到你正处于错误的目录,那时已经太晚了。它是在Unix下长时间使用“su-command-^D”练习的情况下,代替一直呆在root shell--除非你做严重的系统维护(那时你仍然可以使用 sudo su)。(吉姆·奇塔姆 和 安德鲁·索巴拉)Sudo 增加了运行命令的日志记录(在/var/log/auth.log)。假如你陷入困境,你总是可以返回并看见那些运行的命令。(安德鲁·Zbikowski)开启root帐号的方法:为了启用root 帐号(也就是设置一个口令)使用:sudo passwd root当你使用完毕后屏蔽root帐号使用:sudo passwd -l root这个将锁住root帐号。如何在终端模式下切换到root身份?sudo -s -HPassword: <在此输入密码>
- 12Ubuntu 14.04中加入了开启本地菜单的选项,允许用户将全局菜单移动到各个窗口中。前面为大家介绍了如何禁用Ubuntu 13.10全局菜单,而在14.04中只需更改设置即可完成。打开系统设置中外观选项,在外观选项窗口切换到行为标签,选择显示窗口菜单方式,选择“在窗口标题栏”后关闭该窗口,现在你可以看到菜单已由全局菜单移动到窗口标题栏中。
全站热门
刚接触Ubuntu的朋友,有时候忘记自己设置登录密码了,不知道怎么重新设置,今天就教大家如何通过Recovery Mode来重新设置Ubuntu的帐户密码。1、我们在给电脑开机的时候,会进入开机引导的一个GRUB界面,GRUB loading, please wait,运行的这里需要按下ESC键来进入启动菜单。2、按下ESC键进入菜单后,就可以选择对Recovery Mode。3、当引导进入到Recovery Menu时,选root Drop to root shell prompt。4、这时自动以root用户登录,passwd命令重设密码,假如我的账号是xxxxxx,那么要重新设置的密码命令则是:$passwd xxxxx相关推荐:Ubuntu 下忘记用户名和登录密码的解决方法
复制代码代码如下:sudo hdparm -B 128 /dev/sda 假如设为254,硬盘温度甚至会攀升到45度,虽然这仍是一个正常的硬盘温度,但对于笔记本用户来说,靠近硬盘处的发热量是很容易察觉到的. 复制代码代码如下:hdparm -B 192 /dev/sda 复制代码代码如下:/dev/sda { 复制代码代码如下:sudo smartctl -a /dev/sda | grep Load_Cycle_Count 假如Load_Cycle_Count值每分钟都在增加,这时你应该把APM值设回原来的254,方法同上可以在/etc/hdparm.conf里修改. 执行命令复制代码代码如下: sudo hdparm -B 254 /dev/sda 即时生效, 配置在重启后生效. 因为磁头频繁的Load/Unload同样会影响硬盘寿命,一般硬盘设计能承受的加载循环计数Load_Cycle_Count最多为600000次.
技巧一、用命令行往文件的顶部添加文字每次我都会重新寻找这个命令的写法。下面就是如何使用sed往一个文件顶部添加一行的方法:复制代码代码如下: sed -i 1s/^/line to insertn/ path/to/file/you/want/to/change.txt技巧二、用命令行往配置文件里插入多行文本这种方法非常简单,很多人都知道,下面就是如何用命令行将(>>)多行文本插入一个文件中。这里使用的是“here document”语法,它能让你通过块文本符号来将段落插入文件中,通常用的符合是EOF(意思是 “End Of File”):复制代码代码如下:cat >>path/to/file/to/append-to.txt << EOF export PATH=$HOME/jdk1.8.0_31/bin:$PATH export JAVA_HOME=$HOME/jdk1.8.0_31/ EOF两个”EOF“之间的所有内容都会被添加到文件中。技巧三、用命令行递归方式全局搜索目录文件和替换假如你使用Eclipse,ItelliJ或其它IDE,这些工具的强大重构能力也许会让你轻松实现很多事情。但我估计很多时候你的开发环境中没有这样的集成工具。如何使用命令行对一个目录进行递归搜索和替换?别想Perl语言,你可以使用find and sed。复制代码代码如下:# OSX version find . -type f -name *.txt -exec sed -i s/this/that/g {} +使用了一段时间后,我总结写出了一个函数,添加入了 .bashrc ,就像下面这样:复制代码代码如下:function sr { find . -type f -exec sed -i s/$1/$2/g {} +}你可以像这样使用它:复制代码代码如下:sr wrong_word correct_word技巧四、用命令行在vim和Dropbox里开启一个临时文件我过去喜欢用Emacs里的scratch facility功能。也经常用Vim快速创建临时文件。下面这两个函数是使用openssl生成随机的字符串作为文件名:复制代码代码如下:function sc { gvim ~/Dropbox/$(openssl rand -base64 10 | tr -dc a-zA-Z).txt } function scratch { gvim ~/Dropbox/$(openssl rand -base64 10 | tr -dc a-zA-Z).txt }在命令行窗口输入sc或scratch,一个新的gvim或macvim窗口就会弹出来,里面会加载一个随机文件名的临时文件。技巧五、用命令行下载文件,支持链接转向、HTTPS和安全加密等情况下载一个页面输出到终端,跟随链接转向,忽略安全异常:复制代码代码如下:curl -Lks 下载一个链接,跟随链接转向,忽略安全异常: [/code]curl -OLks 这里用了很多参数,你可以阅读这个简单的curl文档来了解它们。技巧六、Bashmarks你还没有在.bashrc里使用bashmarks吗?还在等待什么?它真的非常有用。它能帮你保持历史操作,跳回到你经常使用的目录。下面是我的配置文件里脚本,但我想上面的链接能提供你更多技巧:复制代码代码如下: # USAGE: # s bookmarkname - saves the curr dir as bookmarkname # g bookmarkname - jumps to the that bookmark # g b[TAB] - tab completion is available # l - list all bookmarks # save current directory to bookmarks touch ~/.sdirs function s { cat ~/.sdirs | grep -v export DIR_$1= >~/.sdirs1 mv ~/.sdirs1 ~/.sdirs echo export DIR_$1=$PWD >>~/.sdirs } # jump to bookmark function g { source ~/.sdirs cd $(eval $(echo echo $(echo $DIR_$1))) } # list bookmarks with dirnam function l { source ~/.sdirs env | grep ^DIR_ | cut -c5- | grep ^.*= } # list bookmarks without dirname function _l { source ~/.sdirs env | grep ^DIR_ | cut -c5- | grep ^.*= | cut -f1 -d = } # completion command for g function _gcomp { local curw COMPREPLY=() curw=${COMP_WORDS[COMP_CWORD]} COMPREPLY=($(compgen -W `_l` -- $curw)) return 0 } # bind completion command for g to _gcomp complete -F _gcomp g技巧七、从格式化输出里提取一列(我最常使用的awk技巧)我几乎天天都会使用它。真的。经常会有一些输出,我只需要其中的第二列,或第三列,下面这个命令就能做到这些:复制代码代码如下:#Sample output of git status -s command: $ git status -s M .bashrc .vim/bundle/extempore/ # Remove status code from git status and just get the file names $ git status -s | awk {print $2} .bashrc .vim/bundle/extempore/为什么不写个函数,让我们随时都可以用呢?复制代码代码如下: function col { awk -v col=$1 {print $col} }这使得提取列非常容易,比如,你不想要第一列?简单:复制代码代码如下:$ git status -s | col 2 .bashrc .vim/bundle/extempore/技巧八、忽略头x个词我对xargs很着迷,我感觉它就像一把快刀。但有时候用它获得的结果需要调整一下,也许需要取得一些值。例如,你想去掉下面文件影像里的一些信息:复制代码代码如下:function skip { n=$(($1 + 1)) cut -d -f$n- }下面是如何使用它: 使用 docker images 得到下面的输出:复制代码代码如下:$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 65a9e3ef7171 3 weeks ago 1.592 GB 7c01ca6c30f2 3 weeks ago 11.1 MB 9518620e6a0e 3 weeks ago 7.426 MB 430707ee7fe8 3 weeks ago 7.426 MB boot2docker/boot2docker latest 1dbd7ebffe31 3 weeks ago 1.592 GB spaceghost/tinycore-x86_64 5.4 f47686df00df 7 weeks ago 11.1 MB durdn/bithub latest df1e39df8dbf 8 weeks ago 100.9 MB c5e6cf38d985 8 weeks ago 100.9 MB nginx latest e426f6ef897e 12 weeks ago 100.2 MB zoobab/tinycore-x64 latest 8cdd417ec611 8 months ago 7.426 MB scratch latest 511136ea3c5a 20 months ago 0 B 使用上面的函数,你可以获取所有的IDs:复制代码代码如下:$ docker images | col 3 IMAGE 65a9e3ef7171 7c01ca6c30f2 9518620e6a0e 430707ee7fe8 1dbd7ebffe31 f47686df00df df1e39df8dbf c5e6cf38d985 e426f6ef897e 8cdd417ec611 511136ea3c5a 进一步处理:复制代码代码如下:docker images | col 3 | xargs IMAGE 65a9e3ef7171 7c01ca6c30f2 9518620e6a0e 430707ee7fe8 1dbd7ebffe31 f47686df00df df1e39df8dbf c5e6cf38d985 e426f6ef897e 8cdd417ec611 511136ea3c5a 但前面的”IMAGE”字符我也想去掉:复制代码代码如下:docker images | col 3 | xargs | skip 1 65a9e3ef7171 7c01ca6c30f2 9518620e6a0e 430707ee7fe8 1dbd7ebffe31 f47686df00df df1e39df8dbf c5e6cf38d985 e426f6ef897e 8cdd417ec611 511136ea3c5a 完整的写下来就是这样:复制代码代码如下:docker rmi $(docker images | col 3 | xargs | skip 1)技巧九、创建自己的命令包在bash里,你可以很容易的创建自己的命令组件,你可以看一下下面我写的:复制代码代码如下: function dur { case $1 in clone|cl) git clone git@bitbucket.org:nicolapaolucci/$2.git ;; move|mv) git remote add bitbucket git@bitbucket.org:nicolapaolucci/$(basename $(pwd)).git git push --all bitbucket ;; trackall|tr) #track all remote branches of a project for remote in $(git branch -r | grep -v master ); do git checkout --track $remote ; done ;; key|k) #track all remote branches of a project ssh $2 mkdir -p .ssh && cat >>.ssh/authorized_keys < ~/.ssh/id_rsa.pub ;; fun|f) #list all custom bash functions defined typeset -F | col 3 | grep -v _ | xargs | fold -sw 60 ;; def|d) #show definition of function $1 typeset -f $2 ;; help|h|*) echo [dur]dn shell automation tools echo commands available: echo [cl]one, [mv|move] echo [f]fun lists all bash functions defined in .bashrc echo [def] lists definition of function defined in .bashrc echo [k]ey copies ssh key to target host echo [tr]ackall], [h]elp ;; esac }通过上面的脚本,我可以将ssh key拷贝到任何网站服务器——只需要键入 dur key user@somehost.总结你可以试一下我的这个.bashrc文件,或你自己也可以写一个。
先确保本地Linux服务器SSH服务开启,假如没有开启直接执行指令:service sshd start然后我们使用ssh指令进行远程登陆复制代码代码如下:ssh username@ip-address输入passwd指令修改旧密码修改默认账号root ----更新:翌日发现安装某些包会出现错误,提示找不到root,遂又改回root账号了vi /etc/passwd按i键进入编辑状态修改第1行第1个root为新的用户名按esc键退出编辑状态,并输入:x保存并退出vi /etc/shadow按i键进入编辑状态修改第1行第1个root为新的用户名按esc键退出编辑状态,并输入:x!强制保存并退出为了正常使用sudo,需要修改/etc/sudoers的设置,修改方法如下(来自How to add users to /etc/sudoers):运行visudo找到root ALL=(ALL) ALL在下面添加一行:新用户名 ALL=(ALL) ALL:x保存退出附:创建子用户远程登陆useradd -d /home/admin admin 创建adminpasswd admin 回车,然后根据提示输入密码为相应用户创建一个属于该用户的主目录mkdir -p /home/adminchown admin:admin/home/adminadmin账户可以远程登陆了
虽然在安装了一个版本后的Ubuntu系统会自带一个显卡驱动,但是显卡驱动是会更新的,这就要涉及到怎么在Ubuntu系统中安装Nvidia显卡驱动了,本文就和大家来探讨一下在Ubuntu系统中安装Nvidia显卡驱动的问题。小编一直用的Ubuntu都是系统自带的默认驱动, 由于分辨率没有任何问题, 所以一直没有安装Nvidia官方的驱动;近期更新到Ubuntu 15.04 之后, 在播放avi 格式的常规视频时却出现闪烁的现象, 而且是一直闪;1.因此考虑是不是显卡驱动需要更新一下, 最初找了很多更新 Nvidia驱动的方法, 写了很多命令,结果都无法安装。一直提示nouveau正在使用中,禁不掉;后来直接用系统内置的源来更新,居然成功了~ 命令如下:sudo apt-get updatesudo apt-get install nvidia-331回车之后会看到很长的列表, 系统自动下载了很多文件, 坐等安装完毕即可;完成后,输入一段命令查看是否安装成功:dpkg -l | grep nvidia假如出现类似下图所示的内容,那就是安装成功了:2.也可以在“系统设置”--“详细信息”中查看显卡驱动的信息, 我给这个Ubuntu分配了30个G的空间, 由于是U盘安装,所以后续还可以通过其他软件扩展空间的容量:Ubuntu15.04 的新桌面, 下方安装了一个docky放置快捷方式。 Ubuntu真是既美观。又好用~ ; 只是需要花一点点时间配置, 未来几年一定会发布集成度更高的Ubuntu, 到时候使用起来会更方便。Ubuntu系统中怎么安装Nvidia显卡驱动就为大家介绍到这里了,希望小编的经验能给大家带来帮助。
热门文章
- 1OPPOR9s最新版本(OPPOR9s新版本发布,全新突破创新体验)
- 2Ubuntu系统下的网络设置,包括多种:设置双网卡、单网卡绑定多IP等,这里面大家要实现的是最基本的网络设置。 sudo su gedit /etc/network/interfaces 文件内容: auto lo iface lo inet loopback auto eth0 ##这个应该是决定是否启用这个端口 iface eth0 inet static ##静态设置IP hwaddress ether 52:54:xx:51:xx:xx ##加入MAC地址,记得要放在IP地址之前 address 202.198.151.17 netmask 255.255.255.0 #broadcast 202.198.151.255 gateway 202.198.151.254 ##通过dhcp动态设置 iface eth1 inet dhcp 设置MAC地址的映射关系 gedit /etc/iftab 加入一行 eth1 mac 52:54:xx:51:xx:xx 设置DNS服务器 sudo vi /etc/resolv.conf 内容 nameserver 202.198.125.255 重新设置网络,以启用新设置 sudo /etc/init.d/networking restart
- 3也许还有不少人不知道MultiSystem,它是一个用来在Linux系统中创建多启动usb盘的小型的开源软件。使用这个工具,我们可以在USB中创建任意多的可启动Linux发行版。你所需要的只是网络链接(只在MultiSystem安装的时候需要),以及一个足够大的USB盘,这取决于你想在USB盘中放入发行版的数量。在 Ubuntu 14.10/14.04 安装MultiSystem手动安装:下载 MultiSystem脚本,并解压到任意地方。进入解压的地址,使用下面的命令运行脚本。复制代码代码如下:sudo ./install-depot-multisystem.sh使用 PPA 安装:当然,你也可以用下面的命令来更简单地使用PPA来安装MultiSystem。复制代码代码如下:sudo apt-add-repository deb http://liveusb.info/multisystem/depot all main wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add - sudo apt-get update sudo apt-get install multisystem安装完之后,它会自动打开MultiSystem。只要点击关闭按钮退出。安装之后MultiSystem 安装完成后,可以插入你的USB,并通过Unity Dash或者菜单运行MultiSystem。第一次启动时,MultiSystem界面看起来会像下面这样。选择USB设备,点击确认按钮。假如你看到下面的错误窗口,不必担心,它说的是USB设备没有标签。点击OK让MultiSystem自动设置标签。那么,拔出/重新插入USB,再次运行MultiSystem。选择USB盘,再次点击确认。现在,你被要求确认在USB中安装Grub2.点击OK继续。最终,你会高兴地看到MultiSystem的界面。现在,时候创建多启动USB盘。使用MultiSystem非常容易使用。将ISO文件拖入MultiSystem窗口中。假如不行的话,点击底部的cd 按钮来选择ISO文件。现在,MultiSystem会从ISO中拷贝文件,并让USB可启动。相似地,你可以在你的USB中加入任意多的发行版。我这次加入了两个Linux发行版:CentOS 6.5和Android。加完ISO文件后,你会在MultiSystem的主窗口中看到可启动的发行版列表了。就是这样。我们的多启动USB盘就可以使用了。重启系统,并在BIOS中设置USB优先启动。选择你想要安装的发行版并开始安装系统。此外,MultiSystem含有一些其它的选项: Grub 设置 Grub 和 Burg 的bootloader更新 下载 LiveCD VirtualBox 安装 格式化USB盘 还有更多选项这些额外选项可以在MultiSystem的菜单标签里面看到。同样,你也可以在Ubuntu中使用QEMU或者Oracle VirtualBox测试多启动USB盘。MultiSystem工具是我测试到现在最棒和最有用的一款工具。这款工具对那些想要在他们的机器上安装多个系统的人是非常有用的。在你外出的时候,你不必再携带CD/DVD袋了。只要买一个16GB或者32GB的USB就行,并下载所有你想要的系统,随心所欲的安装系统即可。并且,一个对于Windows系统用户的好消息是它也支持Windows系统。我在Windows 7上测试过,它可以工作!享受吧!
- 4目前 Opera 提供了针对 Ubuntu 的 .deb 文件(官方下载地址 http://opera.cn.uptodown.com/ubuntu)。Debian的.deb文件应该也可以工作。 Opera 提供了两种基本安装类型:使用静态库和共享库。它们的区别是 Opera 是如何链接到 Qt 库的。在共享库版本中,Opera 使用你机器上的 Qt,而静态库的版本则使用 Opera 内建的 Qt。静态库版本下载的体积更大,在菜单和文件选择器使用了点阵字库(没有抗锯齿功能)。动态的编译版本集成到系统中,这样它使用你其它 Qt 应用程序相同的抗锯齿设置。静态的编译版本在浏览器窗口和其它用户界面还是支持抗锯齿功能。静态版本可能更快和更稳定,至少 Opera 的爱好者已经体验了很长时间。你可以都试试,因为在 Ubuntu 中安装和卸载软件相当容易。 请访问Opera 官方下载http://opera.cn.uptodown.com/ubuntu网站,选择你需要的包并选择一个下载镜像站点。 你也可以访问Opera FTP或网站以获得最新的版本。 保存你下载的文件 安装Opera打开一个终端,转移到你放置下载的deb文件的位置,输入: sudo dpkg -i opera.deb注:Tab 键能够自动帮助你输入较长的复杂的文件名。前提是你在正确的目录中,只要输入“opera”并在上述命令说明的地方按下键盘上的 Tab,Ubuntu 会自动帮助你输入完整的文件名。 安装Opera需要一点时间。 假如你得到一些信息显示依赖的包未安装,请输入: sudo apt-get -f installapt 将会安装这些缺失的包。假如需要最新版,需要自己下载其中opera10.63更新,修复了输入法问题,可以正常连续输入文字了。 http://bbs.operachina.com/viewtopic.php f=78&t=89346 下载地址:http://snapshot.opera.com/unix/22184_10.63-6447/替换方案——通过 apt-get 安装 Opera将下列信息添加到你的 apt sources.list(/etc/apt/sources.list) 文件: deb http://deb.opera.com/opera/ pool/non-free 0 opera或者,你不需要最新的版本可以选择稳定的版本: deb http://deb.opera.com/opera/ stable non-free.修改后保存 sources.list 文件,然后在终端中输入: sudo apt-get update接下来: sudo apt-get install opera所有需要的依赖关系将会被处理,并且你不需要像上面所述创建桌面文件,这些都自动完成了。(译注:事实似乎并非如此,建议你将本文“Ubuntu 化 Opera(完成安装)”的部分进行一遍。) 另一个好处是你不需要持续关注未来的升级,它会自动完成。 在更高版本的opera, 他会自动建立一个文件 /etc/apt/sources.list.d/opera.list , 就像 google-chrome会建立 google-chrome.list 一样, 这个文件就是源信息. 可能在opera 10 测试版本,这个文件名会是 /etc/apt/sources.list.d/opera , 只要手工添加 .list 后缀就行. 假如提示只有 lenny , 只要在文件中找到 opera-beta字样, 改为: deb http://deb.opera.com/opera-beta/ lenny non-free就行. 以后只要 sudo apt-get update ; sudo apt-get install opera 或 apt-get upgrade 就能升级他.很方便. 设置 Opera 为默认浏览器要将 Opera 设置为系统默认的浏览器和邮件客户端,请这么做: 进入“系统 ->首选项 ->首选应用程序” 在“Web 浏览器”标签页选择“自定义”并输入: opera -newpage %s在“邮件阅读器”标签页选择“自定义”并输入: opera -newmail %s启动浏览器你可以通过“应用程序 ->Internet ->Opera”启动这个非常棒的浏览器了。ubuntu里的opera设置一首先,打开opera的 工具——首选项——高级——内容—— 打开 插件选项 ——更改路径,去掉 火狐的插件文件夹的勾。 一、flash插件 1.到Adobe网站(http://get.adobe.com/flashplayer/)下载flashplayer的插件,选择下载tar.gz的那个; 2.解压后,你会发现目录中有一个libflashplayer.so的文件(不用理那个脚本,我们不安装); 3.关闭Opera,把这个libflahsplayer.so放到你的Opera插件目录中,比如/usr/lib/opera/plugins/。假如不知道有哪些插件目录,在Opera中首选项->高级->内容->插件选项,弹出的窗口下方就是你现有的插件路径。当然你也可更改添加路径,但务必保证libflahsplayer.so文件放在现有的的路径中; 4.重新开启Opera,去一些网站测试一下吧:新浪、本友会。假如看到flash播放的内容,那就说明flash插件安装成功。 PS:假如你发现还是无法播放flash,情仔细检查你的插件路径是否正确;或者在Opera中按F12,查看是否开启了插件(Enable plug-ins)。假如你安装的是ubuntu系统,那么可以下载deb格式的那个,直接关闭opera,双击运行就ok了。 二、Opera之在线影音 将附件目录中的所有10个文件(5个*.so、5个*.xpt)拷到Opera的插件目录。比如/usr/local/opera/lib/opera/plugins。注意这个路径必须在Opera的可用插件路径中。 我们会发现,无论是火狐还是opera,在百度mp3那里试听歌曲时,假如离开页面歌曲就暂停了,这个情况,其实也很好解决,只要在播放器上 右击 选择配置——并 去掉 离开窗口 暂时播放 前面的勾就搞定了。也就是最后的一个选项。
- 5Ghost全盘教程(用Ghost打造独一无二的网站)
- 6ubuntu上安装QQ一直是装的是双系统win7 + ubuntu (或 deepin linux) , 因为ubuntu 和 deepin linux都是半年一个版本,所以,每次有新版本推出,我就轮流安装体验。不过大部分的学习娱乐都是在win 7下完成的。 前两天win7出问题了,ghost死活不认.gho文件,下了两个windows 居然没装上;好吧~!借此机会,戒掉 windows ,彻底改用linux试试。设置root用户ddd
- 7SteamOS是一个开源的基于Debian Wheezy分支的、为游戏的优化的操作系统。不像Debian 7,它使用的是xcompmgr图形合成器。SteamOS由维尔福公司设计开发,使用于Steam Machine游戏终端机上。在2013年12月13日首次发布。在该文中我将告诉你如何在Ubuntu 14.04上安装steamos会话,以使用户的SteamOS 大图片模式直接从lightdm GTK迎宾开始进入。安装方法分32位系统和64位系统,请根据你的系统选择32位系统安装安装命令:下载DEB安装包:安装下载包:64位系统安装安装命令:下载安装包:安装下载包:卸载先退出Steam OS会话并切换到常规会话模式,按 CTRL + ALT + F7 。移除SteamOS Session命令:复制代码代码如下:sudo apt-get remove steamos-compositor steamos-modeswitch-inhibitor
- 8昨天成功在Ubuntu上远程连接了Win7,今天在用的时候,莫名其妙的就不行了,报错如下:不知为何,在网上找了下,解决方案:参考网址:http://forum.ubuntu.org.cn/viewtopic.php t=380773.png在当前用户下,有这样一个文件夹:freerdp/有这样一个文件:known_hosts论坛上说,把这个文件删掉就可以了,尝试下,果然如此连接的时候,有个证书,估计有一定时效,超时了就有问题。确定后就可以重新连接了。谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。
- 9《穿越火线电脑玩家操作指南》(打造最强战士,征服战场!)
- 10一、用户概述SSH对于远程管理一台服务器来说是一个好方法。然而,SSH仍然存在着诸多问题。服务器和客户端的通信是安全的,不过这并不意味着涉及到的主机也是安全的。向外部世界打开一个SSH服务也就意味着允许强力攻击。复制代码代码如下:DenyHosts意在由Linux系统管理员运行,以帮助其挫败对SSH服务器的攻击(也称为基于字典的攻击或强力攻击)的企图。DenyHosts充当着一个对SSH和其它服务的动态阻击器,它依靠/etc/hosts.deny和 hosts.allow进行工作,并能够以动态方式构建重复地与我们的服务器连接的主机列表。默认情况下,这项服务会阻止来自那些不断地试图与我们的主机连接并实施访问的IP地址源。Denyhosts的处理在/etc/denyhosts.conf中进行配置。我们还可以通过Iptables行连接速率的限制,而且我们还应该在服务器上部署防火墙。一旦这些布置停当,我们就会确信自己在一台面向公众的主机上拥有了一个更加安全的SSH。