zl程序教程

您现在的位置是:首页 >  系统

当前栏目

linux vim的全目录搜索 和 hostname的设置?

LinuxVim搜索 设置 目录 hostname
2023-09-14 09:08:50 时间
  1. vim下的搜索命令是: vimgrep, 简写就是vim. 关于这个全局搜索的用法根grep的差不多, 但是, 如果你直接使用 grep的话 就会在vim的外部执行,
    根vim内部就没有什么关系了, 所以, 要使用vimgrep, 这样搜索的结果会显式在 vim的quickfix窗口中

  2. 关于搜索的格式, 跟grep差不多: vim /搜索内容/ 搜索范围 只是跟grep不同的是, 搜索内容要用 /... / 阔起来.
    范围的表示方法:

  • % 表示当前文件
    • 表示当前目录(不包含子目录)
  • ** 表示当前目录及其下的所有递归 子目录
  • 可以使用多个路径, 用空格来隔开.
  1. 搜索和quickfix窗口结合使用?
    你可以直接的/单独使用vim命令来搜索, 这时候, 搜索结果是保持在另外一个缓冲区,但是他不会被 直接显示出来 当然你可以用 cn, cp 来切换
    但是毕竟不是很直观, 要显示更直观, 就要结合copen命令, 将搜索结果用管道命令 传递给copen打开. 即: vim /tags.php/ ** | copen

  2. 注意, 如果在vim冒号命令的前面 指定了范围, 比如 %, 比如1,10等这些, 就表示的是 对当前缓冲区中的内容进行操作, 就不会 "临时地"返回到控制台. 而是直接对当前缓冲区进行操作.

  3. :%!nlset nu 的区别是: 前者的行号是作为这一行的内容而存在, 而后者的行号不是内容的一部分.

vim中如何引用xdebug的函数命令?

是通过 冒号命令中的 :python ..., 这里好像一定要加python, 否则就是错误的.
命令中, 使用的对象是debugger, 不是 xdebug.
比如: 要单步执行调试命令, 使用的命令是: :python debugger.step_into() 逐过程执行: : python debugger.step_over()


==================================================

单纯地用mysql原生语句书写的连接/查询数据库

<?php

header('Content-type: text/html; charset=utf8');

$conn = mysql_connect('localhost', 'root', '') or die('failed to connect!');
mysql_select_db('test', $conn);  // 注意,这里的参数, 一定是'db'数据库名称 在前面, $conn在后 大于符号  的后面,不能写反了! 

$sql = "insert into foo(id, name)  values('', '张三'), ('', '李四'), ('', '王五')";
if(mysql_query($sql)) {echo 'insert 3 rows successfully this time';}

$sql = "select * from foo";
$result = mysql_query($sql);
 
 while($row = mysql_fetch_row($result)){
     foreach($row as $val){
      echo $val.' : ';
                  }
      echo '<br>';
      }


 可以看作一个空白的汉字 php echo $e['line'

语义化的输出很重要!


linux的主机名, 有三种: 一是static静态主机名,二是 动态/瞬态/临时transient hostname主机名; 三是灵活主机名:pretty ['priti]
在前面两种主机名设置中, 不能包含"特殊字符或空白字符",否则会报错,而设置失败. 而pretty主机名则可以使用特殊字符或空白字符.

要注意在不同的linux发行版和版本中, 主机名使用的文件可能不同, 有的是/etc/hostname文件, 但是fedora23中使用的是/etc/sysconfig/network文件

注意linux的选项[options] 和 表达式[expression]的区别, 看以 横线开头的 究竟是 选项还是 参数?

  • 通常, 选项是要放在 紧跟着 命令后面的, 而又在参数之前的, 比如: cat -n filename 有时候, 选项也可以放在 参数的后面...
  • 然而,如果 所写内容不是 "选项" , 而是 参数/表达式的 一部分, 那么就 不能 紧跟着放在 命令后, 而应该 放在命令格式 所规定的位置, 而不能乱放,否则可能会 产生错误
    比如 find 命令, 因为选项是可以随意放的(通常情况下是这样的), 所以 如果find -name /etc 'rc.sysinit'这个命令就会出错, 误以为 -name是选项 而实际上 -name是参数[表达式 expression] 的一部分, 而find的格式是 find [path] [expression], 要求 path必须放在 表达式的前面, 所以 必须将-name 放在路径后面 , 作为查找条件表达式的一部分: find /etc -name 'rc.sysinit' 命令就是正确的.
  • 事实上, find的格式是: find [查找目录/路径] [表达式expression]
    表达式包括三种: 一种是 options 查找选项,比如 -maxdepth最大查找深度, 第二种是test, 即查找条件conditions, 这个也是我们用得最多的;第三种是操作后的动作actions

要注意: 几乎linux的所有命令和程序都遵循一个概念: 程序的参数包括选项(参数)和 非选项non-option参数. option 约束程序的行为, non-option规定程序的输入值等 通常要求 option参数 应该放在 non-option参数之前. 有些程序/命令, 即使没有这样的硬性规定, 但是最好还是按照这样的顺序写. 比如find如果不按照这样写就会报错: warning, you have specified the -maxdepth option after a non-option argument, but the -maxdepth option is not positional.

默认的查找目录是当前目录.或./, 默认的表达式是 -print,直接输出到屏幕终端

查找条件有很多方式, 比如按名字查找 -name foo, 按类型查找 -type *type, 还有按时间查询等.

  -type c
              File is of type c:
              b      block (buffered) special
              c      character (unbuffered) special
              d      directory
              p      named pipe (FIFO)
              f      regular file
              l      symbolic  link;  this  is  never true if the -L option or the -follow option is in effect, unless the symbolic link is broken.  If you want to    search for symbolic links when -L is in effect, use -xtype.
              s      socket
              D      door (Solaris)

关于linux的hostname? 参考: http://blog.sina.com.cn/s/blog_d83f9fc50102w52w.html

有三种, static hostname, transient临时的, 瞬态的名字和 pretty灵活的名字, 可能通过 hostaname, 文件 /etc/hostname, /etc/sysconfig/network 等 都无法设置成功 , 不会生效. 而是要通过命令 hostnamectl [命令包括: status, set-hostname等等)

  • transient名字 , 可能是由 dhcp或 dns服务器 临时分配的, 比如可能是 当前的ip地址, 而有时 终端terminal 使用的主机名 就是 transient名字, 所以会出现 [root@192.168.1.102 ~ ] #这样的 提示符.
  • hostnamectl set-hostname .... 命令是即时生效的, 不需要重启机器.