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页面中无法显示出来