grep command

grep command grep: Global Regular Expression Print 按行处理, 输出文件中包含搜索字符串的所有行。 grep [OPTION...] PATTERNS [FILE...] 或 grep -E '123|abc' filename // 找出文件(filename)中包含 123 或者包含 abc 的行 egrep '123|abc' filename // 用 egrep 同样可以实现 判断指定文件中是否包含指定的字符串 # 文件中包含字符串,命令正常退出 $? = 0, 不包含 $? = 1 grep "prod" /path/to/file/web.xml > /dev/null if [ $? -eq 0 ]; then echo "Found!" else echo "Not found!" fi grep xxx -A5 grep xxx -B1 grep -C 5 foo file 显示 file 文件里匹配 foo 字串那行以及上下 5 行 #regex grep ".*A.*" foo.txt grep "foo\|bar" foo.txt # 统计某个字符串出现的次数 grep -o objStr filename|wc -l # 搜索子目录, recursively grep -r 'linux' * 参数 -i, –ignore-case: 忽略大小写 -A, –after-context=NUM print NUM lines of trailing context -B <显示行数> -before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。 -C 显示 file 文件里匹配 foo 字串那行以及上下5行 -r, -recursive, 搜索子目录 -l, -files-with-matches, 查询多文件时只输出包含匹配字符的文件名, 不打印匹配的文件内容。 -G, -basic-regexp BRE 模式,也是默认的模式 -E, -extended-regexp ERE 模式 -h, 查询多文件时不显示文件名。 -a, –text: 强制作为文本文件处理, 报错: Binary file [some_file] matches 的时候可以用。 -w pattern files : 只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical') -q, –quiet, –silent, 不显示任何东西到 stdout -P, –perl-regexp 使用 PCREs -n, –line-number 打印行号 grep 正则 https://blog.csdn.net/yufenghyc/article/details/51078107 ...

2011-08-20 · 7 min · 1447 words · -

dmesg

dmesg # 显示时间戳 dmesg -T Display messages in kernel ring buffer Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。 dmesg[1] - print or control the kernel ring buffer dmesg用于检测和控制内核环缓冲。程序用来帮助用户了解系统的启动信息 dmesg |grep scsi -A 3 https://www.jianshu.com/p/4a029091b705

2011-08-20 · 1 min · 31 words · -

Provider 模式

Provider 模式 首先什么是Provider模式?Provider是由两个设计模式融合而来的: 策略模式+抽象工厂模式。这两个模式具体的介绍我在这里就不多说了,网上一搜一大把。provider模式的作用是为一个API进行定义和实现的分离。这样就通过核心功能的灵活性和易于修改的特点使得API具有灵活性。通俗一点来说就是实现了定义和实现的分离,最终效果就是不需要更改代码即可实现程序不同逻辑的改变。 在BlogEngine中,provider模式被应用于提供不同的数据的持久化。为了保证解压后就能使用默认采用的是xmlProvider。本文研究的重点就是了解这个Provider模式,并知道BlogEngine如何通过provider模式使得不同数据持久化方式之间的灵活切换。 https://www.cnblogs.com/qianlifeng/archive/2010/12/07/1899343.html

2011-08-20 · 1 min · 6 words · -

yaml

yaml http://www.ruanyifeng.com/blog/2016/07/yaml.html YAML 语言 (发音 /ˈjæməl/ ) 的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。 它的基本语法规则如下。 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 YAML 支持的数据结构有三种。 对象: 键值对的集合,又称为映射 (mapping) / 哈希 (hashes) / 字典 (dictionary) 数组: 一组按次序排列的值,又称为序列 (sequence) / 列表 (list) 纯量 (scalars) : 单个的、不可再分的值

2011-08-19 · 1 min · 36 words · -

蓝牙 HID

蓝牙 HID The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。 2.一些概念 (1)HID Reports:Bluetooth HID devices支持三种Report:Input, Output, and Feature。 (2)HID建立Control Channel和Interrupt Channel两个通道,report可以在这两条channel上传输,在Control channel上传输的report称为synchronous reports ;在Interrupt channel上传输的report称为asynchronous reports。 (3)Feature reports are always transferred synchronously using GET_REPORT or SET_REPORT requests。 (4)Report Protocol Mode和Boot Protocol Mode。Bluetooth HID Hosts至少支持一种,Bluetooth HID Device则需要支持Report Protocol Mode,并且Report Protocol Mode是Bluetooth HID Device的默认Mode。 HOG (HID OVER GATT) 蓝牙4.0的BLE (bluetooth low en)技术 https://www.zhihu.com/question/23785524 https://developer.aliyun.com/article/376006

2011-08-18 · 1 min · 61 words · -

sftp config

sftp config cd /root/ssh emacs sshd_config remove the comments for RSAAuthentication, PubkeyAuthentication RSAAuthentication yes PubkeyAuthentication yes generate rsa key pair by puttygen edit file authorized_keys add public key which generate by putty. copy private key to client PC /root/.ssh/id_rsa

2011-08-04 · 1 min · 39 words · -

Flatpak

Flatpak Flatpak 由红帽员工亚历山大·拉尔森(Alexander Larsson)开发,并于2015年正式发布。它是用C编程开发的,提供了在Linux发行版上安装应用程序的一种快速和直接的方法。 Flatpak的工作原理是将一个应用程序组合并编译成一个包。此前,Flatpak被称为xdg-app。这个特定的框架使用了在沙箱环境中运行应用程序而不需要根特权的概念。因此,一些flatpak应用程序不能访问和利用系统的全部资源。 Flatpak应用程序主要针对三种桌面环境——FreeDesktop、KDE和GNOME。不幸的是,Flatpak不支持任何后端工具,因为它只生成在Desktop环境中运行的应用程序。这是这个包管理器的一个主要缺点,因为它不支持服务器,除非您安装像GNOME这样的桌面环境(DE)。 与Snap类似,Flatpak有一个名为Flathub的在线商店,用户可以在那里找到并下载他们想要的应用程序。Flathub首次发布时,只允许开发者发布免费和开源的应用程序。然而,在更新了他们的条款和条件之后,开发人员现在甚至可以发布专有包。 https://blog.csdn.net/weixin_39636364/article/details/120424180 pacan -S flatpak flatpak list flatpak search Spotify flatpak install flathub Spotify flatpak run com.spotify.Client flatpak uninstall <appid> flatpak uninstall --unused sudo apt-get remove --autoremove flatpak sudo apt-get purge flatpak ubuntu sudo apt install flatpak Add the Flathub repository flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo remove flatpak flatpak uninstall --all sudo apt purge flatpak rm -rf ~/.local/share/flatpak sudo rm -rf /var/lib/flatpak

2011-07-29 · 1 min · 74 words · -

netstat, 端口

netstat, 端口 netstat -ntlp -n 以网络IP地址代替名称 -t 显示TCP协议的连接情况。 -l 显示监控中的服务器的Socket。 -p 显示正在使用Socket的程序识别码和程序名称。 -a, -all Show both listening and non-listening sockets. With the -interfaces option, show interfaces that are not marked yum install net-tools

2011-07-28 · 1 min · 33 words · -

linux 环境变量, export, set, env, source, exec

linux 环境变量, export, set, env, source, exec 定义变量时加 export 表示为全局变量,不止对当前 shell 有效,对子进程也有效,不加 export 则为局部变量,只对当前 shell 有效,子进程无效。 set 设置了当前 shell 进程的本地变量,本地变量只在当前 shell 的进程内有效,不会被子进程继承和传递。 env 仅为将要执行的子进程设置环境变量。 export 将一个 shell 本地变量提升为当前 shell 进程的环境变量,从而被子进程自动继承,但是 export 的变量无法改变父进程的环境变量。 source 运行脚本的时候,不会启用一个新的 shell 进程,而是在当前shell进程环境中运行脚本。 exec 运行脚本或命令的时候,不会启用一个新的 shell 进程,并且 exec 后续的脚本内容不会得到执行,即当前shell进程结束了。 https://segmentfault.com/a/1190000013356532 .bashrc 文件 这种方法可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。 (1)用文本编辑器打开用户目录下的.bashrc文件 (2)在.bashrc文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH 重新加载 source .bashrc ########################################################## /etc/profile文件 所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 (1)用文本编辑器打开/etc/profile (2)在profile文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME ...

2011-07-18 · 2 min · 241 words · -

策略模式, strategy pattern

‘策略模式, strategy pattern’ 策略模式的教科书定义 它的定义很精简:一个类的行为或其算法可以在运行时更改 策略模式让算法独立于使用它的客户而独立变化。策略模式重点是封装不同的算法和行为,不同的场景下可以相互替换。策略模式是开闭原则的体现,开闭原则讲的是一个软件实体应该对扩展开放对修改关 闭。策略模式在新的策略增加时,不会影响其他类的修改,增加了扩展性,也就是对扩展是开放的;对于场景来说,只依赖于抽象,而不依赖于具体实现,所以对修改是关闭的。策略模式的认识可以借助《java与模式》一书中写到诸葛亮的锦囊妙计来学习,在不同的场景下赵云打开不同的锦囊,便化险为夷,锦囊便是抽象策略,具体的锦囊里面的计策便是具体的策略角色,场景就是赵云,变化的处境选择具体策略的条件。 Strategy模式有下面的一些优点: 相关算法系列 Strategy类层次为Context定义了一系列的可供重用的算法或行为。 继承有助于析取出这些算法中的公共功能。 提供了可以替换继承关系的办法: 继承提供了另一种支持多种算法或行为的方法。你可以直接生成一个Context类的子类,从而给它以不同的行为。但这会将行为硬行编制到 Context中,而将算法的实现与Context的实现混合起来,从而使Context难以理解、难以维护和难以扩展,而且还不能动态地改变算法。最后你得到一堆相关的类 , 它们之间的唯一差别是它们所使用的算法或行为。 将算法封装在独立的Strategy类中使得你可以独立于其Context改变它,使它易于切换、易于理解、易于扩展。 消除了一些if else条件语句 :Strategy模式提供了用条件语句选择所需的行为以外的另一种选择。当不同的行为堆砌在一个类中时 ,很难避免使用条件语句来选择合适的行为。将行为封装在一个个独立的Strategy类中消除了这些条件语句。含有许多条件语句的代码通常意味着需要使用Strategy模式。 实现的选择 Strategy模式可以提供相同行为的不同实现。客户可以根据不同时间 /空间权衡取舍要求从不同策略中进行选择。 Strategy模式缺点: 1)客户端必须知道所有的策略类,并自行决定使用哪一个策略类: 本模式有一个潜在的缺点,就是一个客户要选择一个合适的Strategy就必须知道这些Strategy到底有何不同。此时可能不得不向客户暴露具体的实现问题。因此仅当这些不同行为变体与客户相关的行为时 , 才需要使用Strategy模式。 2 ) Strategy和Context之间的通信开销 :无论各个ConcreteStrategy实现的算法是简单还是复杂, 它们都共享Strategy定义的接口。因此很可能某些 ConcreteStrategy不会都用到所有通过这个接口传递给它们的信息;简单的 ConcreteStrategy可能不使用其中的任何信息!这就意味着有时Context会创建和初始化一些永远不会用到的参数。如果存在这样问题 , 那么将需要在Strategy和Context之间更进行紧密的耦合。 3 )策略模式将造成产生很多策略类:可以通过使用享元模式在一定程度上减少对象的数量。 增加了对象的数目 Strategy增加了一个应用中的对象的数目。有时你可以将 Strategy实现为可供各Context共享的无状态的对象来减少这一开销。任何其余的状态都由 Context维护。Context在每一次对Strategy对象的请求中都将这个状态传递过去。共享的 Strategy不应在各次调用之间维护状态。 作者:JarvanMo 链接:https://www.jianshu.com/p/71feb016ac05 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 https://www.jianshu.com/p/71feb016ac05 https://www.cnblogs.com/hollischuang/p/13186766.html

2011-07-13 · 1 min · 51 words · -

ln link 软连接和硬连接

ln command, 软连接和硬连接 ln [参数][源文件或目录][目标文件或目录] -f, --force remove existing destination files # 创建软连接 # 原文件: foo # symbolic link : bar ln -s foo bar #硬连接 ln foo bar # 删除链结 unlink link0 # see the actual contents of a symlink ls -l link0 readlink link0 # 打印原始路径 ls -l link0 # 如果 link0 是个目录, 会列出目录下的文件 ls -l link0/ Linux链接分两种,一种被称为硬链接 (Hard Link) ,另一种被称为符号链接 (soft link, Symbolic Link) 。默认情况下,ln命令产生硬链接。 ...

2011-07-13 · 4 min · 769 words · -

apache basic

apache basic apache path /etc/apache2/apache2.conf /etc/apache2/httpd.conf /var/log/apache2 linux apache 版本 linux 自动安装的 apache: sudo apachectl -v 启动/重启/停止apache服务器 Task: Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start Task: Restart Apache 2 Server /重启apache服务 # /etc/init.d/apache2 restart or $ sudo /etc/init.d/apache2 restart Task: Stop Apache 2 Server /停止apache服务 # /etc/init.d/apache2 stop or $ sudo /etc/init.d/apache2 stop

2011-05-29 · 1 min · 59 words · -

开机自动运行

开机自动运行 用户登录时, bash会在用户目录下按顺序查找以下三个文件,执行最先找到的一个. ~/.bash_profile ~/.bash_login ~/.profile 在上述文件中加入相应命令可以启动某些程序. 如: sh /***/tomcat/bin/startup.sh

2011-05-08 · 1 min · 10 words · -

gitosis install

gitosis install 用apt-get update 和 apt-get upgrade 更新当前系统. 安装OpenSSH Server: sudo apt-get install openssh-server 修改ssh服务端配置文件/etc/ssh/sshd_config Port 22 # 修改成你想要的登陆端口,如2222 PermitRootLogin no # 禁止root用户登陆 检查密钥的用户和权限是否正确,默认打开的 设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有 权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 StrictModes yes RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥认证 ServerKeyBits 1024 #将ServerKey强度改为1024比特 PermitEmptyPasswords no # 禁止空密码进行登录 #修改完成后,重启ssh服务: sudo /etc/init.d/ssh restart 4.安装git: sudo apt-get install git-core 5.安装gitosis (1)建一个临时文件夹,用来存放下载的gitosis文件,如 mkdir ~/tmp (2)安装gitosis cd ~/tmp git clone git://eagain.net/gitosis git://eagain.net/gitosis.git cd gitosis sudo python setup.py install ...

2011-05-04 · 1 min · 106 words · -

git diff

git diff git diff 查看尚未暂存的文件更新了哪些部分 git diff filename 查看尚未暂存的某个文件更新了哪些 git diff –cached 查看已经暂存起来的文件和上次提交的版本之间的差异 git diff –cached filename 查看已经暂存起来的某个文件和上次提交的版本之间的差异 git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c 查看某两个版本之间的差异 git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename b8e7b00c02b95b320f14b625663fdecf2d63e74c:filename 查看某两个版本的某个文件之间的差异 显示颜色 ~/.gitconfig 中加三行 [color] status = auto branch = auto ui = auto

2011-05-02 · 1 min · 41 words · -

touch

touch touch fileA 更改 fileA 的日期时间, 默认修改 access, modify, change 三个时间, 如果文件fileA不存在touch命令会在当前目录下创建一个空白文件 fileA.

2011-05-01 · 1 min · 13 words · -

find command

find command find 命令默认会递归遍历子目录 # find pathname -options find / -name '*task*.log' # find by file size # >100MB find . -type f -size +102400k -name 按文件名查找文件 # -name 按文件名查找文件 find . -name t.sql # 使用通配符时要加引号(单引号/双引号) find . -name 'bookmark*' # . 当前目录 # / 根目录 # 查 3 分钟前修改的文件 find . -mmin +3 -a, and -o, or -type f 表示查找文件而不是目录 -type d 目录类型 -prune prune 的功能就是当遇到某个文件夹的时候,跳过这个文件夹,不进去继续查找。 ...

2011-04-30 · 4 min · 685 words · -

chmod

chmod chmod a+x 1.sh chmod og+rwx 1.sh 格式: [ugoa…][+-=][rwxX…][,…] u 拥有者 g 与拥有者同组的 o 其它用户 a 三者都是 chmod -R a+rw folderName -R 对目录下和所有文件和子目录进行相同的权限变更

2011-04-24 · 1 min · 23 words · -

linux CLI

linux CLI 作为 Linuxer,必须具备一定的 CLI 操作能力。有时候用 CLI 会比用 GUI 会更方便快捷。 —-lcan http://lcan.info/2011/03/cli-software/#comment-53 以下列出我所知道的一些常用 CLI 软件,仅供参考。 中文终端。据我所知,目前主要有两个解决方案: zhcon 和 fbterm。两个我都用过,zhcon 较长时间不更新了,问题比较多。不小心加错参数,甚至可能会导致死机。所以我推荐 fbterm,这个还是很不错的,要使用的话,必须开启 framebuffer。虽然某些方面也有些瑕疵,不过就目前而言,应该算是一个比较好用的中文终端了。有人可能会问: “中文输入怎么解决?“嘿嘿,这个倒不用担心。比较简陋的有 fbterm_ucimf,另外还有基于 ibus 的 ibus-fbterm 可供选择。 多窗口管理神器: tmux。功能和 screen 差不多,不过我感觉 tmux 更加强大、友好!可以横着切、竖着切窗口。让你充分利用你的屏幕!实乃远程管理、多任务控之必备神器啊! 文件管理器: vim 风格的可以选 ranger,另外还有 mc 之类的。 任务管理器: htop。这个可以理解为 top 的加强版。 音乐播放器: moc。这个用来播放 mp3,wma,flac 等常见音频文件还是不错的,但是不支持 ape 和 cue。如果这类文件比较多的,那就只能另寻他方了。cmus 也不支持 ape。 视频播放器: mplayer。说这个之前,我想咆哮几句: 是谁说 Linux 终端下只能用字符方式看视频啊!!!!是谁说在终端下看视频纯属找虐 啊!!!!!乃们这是误人子弟啊!!!!有木有听说过 framebuffer!!!!有木有!!!!有木有听说过 fbdev 输出!!!!!有木 有!!!!!! 我以前被人误导,也一直认为在 tty 终端下只能以字符方式看视频,但是直到有一天,我无意中了解到了有 framebuffer 这个东西!!!!无意中看到 mplayer 的视频输出里有 fbdev!!!!于是在开启了 framebuffer 的 tty 下。 mplayer -vo fbdev2 “我要看的视频” 我看到了神马?!我看到了一个清晰的带颜色输出的视频,竟然和在图形界面下播放时的质量差不了多少!!!!有木有看到!!!有木有!!!! PDF/图片查看器: fbida。fbida 里面包含了fbi,fbgs,ida,exiftran 四个应用。其中 fbi 可以用来查看图片 (FBI啊,名字就很牛X) ,fbgs 可以用来查看 PDF。前提嘛,估计各位看软件名就知道了,必 须开启 framebuffer。 截图工具: fbgrab。不废话,看官方说明: fbgrab – takes screenshots using the framebuffer。在桌面环境下可以用scrot这个命令行软件截屏。 IM 软件: finch。这个可以看成是 pidgin 的 CLI 版。 IRC 聊天: irssi。一个很强大的 IRC 客户端。 邮件客户端: mutt。有关介绍请移步 wiki。这个我基本不用。 RSS 阅读器: snownews。 屏幕录像: recordmydesktop。此软件可用于录制 GNOME、KDE 等桌面。

2011-04-03 · 1 min · 123 words · -