转:linux环境下使用技巧

About Shell
-----------
Q1.用户登录到Linux机器,系统会启动login子程序处理用户登录请求,如何自动设置用户环境变量?
   比如 PATH,CVS_RSH等等

   编辑/etc/profile 和 $HOME/.bash_profile  $HOME/.bash_login
$HOME/.profile
   当退出登录时,shell会执行  ~/.bash_logout

Q2.如何快速执行历史命令?

   fc -s [cmd]
执行编号为cmd的命令,缺省的话,执行最近1条指令
   可以使用alias r='fc -s'
登记1个命令别名,减少键击次数

   注:
     fc - Fix Command

Q3.如何快速查看一个用户的id和组id?

   输入id
即可查看当前用户的id和组id(包括数字和名称)
   输入id [USERNAME] 即可查看
USERNAME的id和组id(包括数字和名称)

Q4.如何查看OS打开的所有文件句柄?

   输入lsof,可查看所有的打开文件
   输入lsof /path/of/file,
可查看/path/of/file目录中被打开的文件

Q5.如何转化不同编码的文件?
   例如 readme.txt
是GB2312编码的,Console只支持utf-8的,要将readme.txt
        打印处理,如果不作编码转换,必然出现乱码.
   可以用iconv工具进行转化
        cat readme.txt| iconv -f gb2312 -t utf-8

About Man/Info
---------------
Q1.用户手册将命令划分为不同的类别,如何查看分属不同Section的命令?

   man 7 locale    # 7代表Section 号

About VIM
----------
Q1.默认字符编码为utf8,打开使用gb2312编码的文件,中文全为乱码,如何恢复正常显示?

   输入 edit ++enc=cp936

Q2.如何在vim系统中执行命令?

   输入 !cmd

T2.
使用vim直接打开并编辑.*gz文件,而无须解压,读取,编辑,再压缩.
   压缩文件的支持是通过plugin
   vim  ls-lrR.txt.gz

T4. 如何Vim支持语法加亮?

  一劳永逸的方法,在~/.vimrc中增加如下语句
    syntax on
  临时性的方法, 输入命令:syntax on

T5. Vim如何在结构文档中快速切换,比如 C语言{
}块之间切换.

  输入在{}之间,输入%即可

T6.
如何让Vim记下我的编辑状态,以便下次快速恢复工作?

  输入 :mksession file_name_your_session

T7.
如何让Vim告诉你编辑文件的字节数,字数,当前位置信息?

  输入 g CTRL_G

T8. 输入help,打开了帮助窗口,如何快速关闭?

输入CTRL-W ,然后再输入CTRL-Q,
或者输入CTRL-W q

T9.
我要每天编辑日志,我不想去输入日期与时间,该怎么办?

现要如这样的日期形式Mon Sep 19 23:19:03 CST
2005,简单,定义
一个快捷键F2,在vim中做这样一个映射
:map <F2> gg:read !date<CR>

T10. 如何使用Vim改变文本文件的编码?


比如,原有1个文档为utf-8编码的,现在要将它改为cp936编码,可用如下指令
  :set fileencoding=cp936
  然后再保存文件:w

T11.如何将vim记住我的配置选项(比如默认的编码方式,文件类型等)?

  请将你的配置命令写到~/.vimrc配置脚本文件中

About X
--------
Q1.如何获得系统中所有的字体?

   输入指令  xlsfonts


About Program
--------------
R1. 目录名字不要包含大写字符,尽量少包含中文字符.

R2.


About Security
---------------
R1. 为了有助于确保Web
Mail您的密码和帐户的安全,请在每个会话结束时注销帐户。

About System
------------
S1.
Linux在boot起来之后,先调用/sbin/init,它是其他所有进程的父进程
      1.启动时先运行boot level master script
      2.执行硬件初始化脚本
      3.执行run level master
script,运行级别定义在/etc/inittab中
          每级的脚本放在/etc/init.d/rc<X>.d中
      4.到最后用户看到的即是mingetty登录界面

S2. Linux TTY这种用户接口的设计思想
   用户通过本地键盘或者网络  -->命令 -->TTY -->Shell
Interpreter
    --> Excute Cmd --> Output --> TTY --> 本地内存或者网络
-->显示器输出
   优点:
可以用不同形式的终端登录,比如本地键盘,远程网络,Modem,只有TTY与用户
   之间存在某种连接即可

S3. Linux如何同一张网卡如何支持多个IP?

    1. 配置 虚拟接口
    ifconfig eth0:0 192.168.12.240
    ifconfig eth0:0 netmask 255.255.255.0

    2. 增加一个路由表
    route add -net 192.168.12.0 netmask 255.255.255.0 dev eth0:0

S4.
如果Home分区中空间不够,但是/usr分区中留有较大的空间,如何平衡利用空间这两者?

   目标: 1.通过Home分区文件的形式读写数据
         2.实际的数据确是存储在/usr/分区中


利用符号链接的方式,在Home分区中建立一个符号链接目录,指向
   ln -s /usr/local/voip ~/project/voip

S5. Apache
使用UserDir模块时,~username形式访问,Apache告之禁止访问?

   比如/home/robbie 它具有drwx------属性,必须将它改为

drwxr-xr-x属性,Apache服务器才可打开用户目录

S6. 如何添加自定义的全局的初始化动作?


比如要添加这两个别名命令fcc,和fpp统计.c和.cpp源文件数目,
   可在/etc/bash.bashrc.local中添加如下脚本
   alias fcc='ll -R | grep "[:alpha:]*[.]c$" | nl  |less'
   alias fpp='ll -R | grep "[:alpha:]*[.]cpp$" | nl  |less'

About Toolkit
-------------
T1. 使用grep查找.gz文件中包含特定字符串的行?
   举例,有个文件,ls-lrR.txt.gz,
待查找的字符串为开头为rms,结尾为ogg的文件,可以用下列方式
   gunzip -c ls-lrR.txt.gz  | grep  'rms-.*ogg'
注: *NIX环境下, .可代表任何字符,
*代表任意匹配,+代表至少出现1次,?代表至多出现1次


T2. Windows
2000运行有telnet服务,这样可以使用linux的konsole/或者其他终端模拟器连接windows主机.

  telnet pc.window.address

T3. 如何查看PDF/ps格式的文档?

  gs ps_file_name3
  gs pdf_file_name

  Note: gs is PostScript and PDF language interpreter and previewer

T4. 如何跟踪IP报文的路径?

  Linux下,输入traceroute HOST_NAME|IP
  Win32下,输入tracert HOST_NAME|IP

T5. 如何查看内核的路由表?

  Linux下,输入/sbin/route
  Win32下,输入route PRINT

T6. 如何内核中的网络接口卡的物理地址?

  Linux下,输入/sbin/arp
  Win32下,输入 arp -a

T7. 如何实现按1个快捷键即输入"年-月-日 星期x"?

  可以使用map命令,将某一个快捷键变为命令输入
  参考:map <F2> ggA<C-R>=strftime("%Y-%m-%d  %A")<CR><Esc>

T8.
如何使用Shell工具链统计一个目录下所有.c的原文件数目?


分析:.c原文件的特征是以.c字符为结尾,可以使用正则表达是[.]c表示
  ll -R | grep "[:alpha:]*[.]c$" | nl  |less
  正则表达式 ([0-9]{5,})
代表由5位数字构成的单词,()是单词控制字符

Puzzle
-------
P1.
有时,使用Apache作为文件服务器,有些长文件名的图片文件在html页面中无法显示出来

你可能感兴趣的:(linux,Linux,vim,正则表达式,Bash,C)