经典*nix命令[zt]

经典*nix命令

id    //显示用户的uid,gid,groups信息
echo $LOGNAME //显示登录的用户名
bc   //计算表达式,输入2+3回车计算出5;quit退出
df -k   //以K字节显示文件系统使用情况
vi系列命令
vi *.sql //假如vi编辑多个文件,用:n切换下一个文件
ESC+":!sh"或:!ksh //执行外部命令
ESC+":20,24 w file" //将文件20-24行放到file文件中
vi -R 只读打开文件

一行命令杀进程inetd
Kill 命令kill -1 `ps -e |grep inetd |awk '{print $1}'`
netstat -a|grep bat 检查batserv程序是否处于监听状态。

more显示文件的时候,想退出按q键,到最前按g键,h键显示帮助,到最后按G
env **查看环境变量
uname -a **查看本机型号
hostname **显示主机名
domainname **显示主机域名
存储,压缩文件
tar -cvf target.tar sourcefilelist //打包
tar -xvf target.tar //解包
tar -tvf target.tar //查看包内文件目录结构
compress .tar文件       //压缩为.Z
uncompress .Z文件 //解压缩文件

file * //查看当前目录下所有文件的格式file * | grep commands
which 程序名 **察看命令文件的位置,这个是一个单独的文件
type 程序名 **察看命令文件的位置,这个是bash内置命令
script从键入script开始,你的所有终端显示内容将被输入到一个文件里(默认为typescript),直至exit或者Ctrl+D退出script环境。这在希望记录大段输入以及输出内容时很有用。

*******************************************
1、搜索含有某个指令的脚本:find /etc 2>/dev/null | xargs grep 'awk ' 2>/dev/null

说明:
find /etc 查找/etc 目录下的所有文件,并显示文件名
2>/dev/null 把所有的错误信息,如权限错误,不能访问等等 重定向倒看不到的虚拟设备,只显示有用信息。(1代表“标准输出”,2代表“标准错误输出”)
| 把前一个命令的输出以管道的方式传给后面的命令
xargs 对输入的每一个参数,循环执行后面的命令
grep 'awk' 在指定文件中查找字符串,这里的输入文件时xargs命令传过来的,每次处理一个find输出的文件名
******************************************
find . | xargs grep "abc" **全文检索,打印出来包含关键字的文件名和行数据

find . -exec grep -l "string" {} \;**全文检索,只显示包含关键字的文件名
find . -name *.cpp grep -l "字符串" {} \;
切换用户并使用该用户的环境配置:su - user

unix上查看本地的ip地址和网卡信息:
hostname //显示机器名
cat /etc/hosts
netstat -in   //


比如知道文件或程序名为sql,如何知道它在哪呢?which sql

chmod +x filename    //增加执行属性
rm -f file    //删除文件
rm -rf directory     //删除文件夹
cd a*        //就可以进入比如:appp的文件夹
ps -x        //查看属于自己的进程
ps -ef | grep ap*    //查找以ap开头的进程
uname -a //显示操作系统os类型
用vi编辑器时,ESC+:232 代表跳到252行
用vi编辑器时,ESC+:/banner 代表跳到查找包含banner词的行,用n还可继续查
find . -exec grep -l "string" {} \;    //在当前目录全文查找string串
man ls        //在线帮助man+命令
mv 移动或更改文件、目录名称
pwd 当前目录
cat/more cat file1 | more
kill PID      //杀死进程
find . -name file1.c

压缩命令
tar -zcvf
.压缩资料
==========
执行格式:compress filename 压缩文件
执行格式:compressdir directory-name 压缩目录

.解压缩还原资料
================
执行格式:uncompress filename     反压缩文件
执行格式:uncompressdir directory-name 反压缩目录


--------------------------------
ls -Rl | more     //以分页方式列出目录下所有文件子目录
查看系统中的使用者:
===================
执行格式: who 或 finger
su username       //进入其他帐号
who am i

vi模式下:q!离开并放弃保存;wq离开并保存;w保存但不离开vi

df   查看磁盘中可以使用的自由空间
df -t 查看使用百分比例

diff 比较两个文件

more 或 vi 向下翻页用CTRL+D,向上翻页用CTRL+B

l -rt 显示最近更新的文件
sybase:
isql -U -P -S

unix默认shell采用ksh
在命令行下,使用时先按“ESC”键,
1、按“j”向后查找。
2、按“k"向前查找。
3、按”/“后跟查找关键字,回车匹配查找,按”n"显示下一个满足条件命令行,该功能类似vi中操作。

用esc+k或j上翻或下翻显示历史命令的时候,如何编辑命令呢:

k 上翻,l 光标后移,x删除光标所在的字符,向上箭头把光标移到最后,i 输入新字符


在当前目录(不包括子目录)里搜索文件内容:grep 字符串 *
在当前目录(包括子目录)里搜索文件内容:find . | xargs grep aaa
同时包含词"typedef"和"TIASTRU"
find . | xargs grep typedef.*TIASTRU

.* 匹配任意字符

--------------------------------正则表达式---------
.. 匹配2个字符
abc?(2|9)1    ?匹配0或1个2或9
abc*([0–9]) *匹配0或多个0-9
abc+([0–9])   +匹配1或多个0-9
)   @严格匹配one和ne
no!(thing|where) !不匹配thing或where
---------------------------------------------------

关机
shutdown -y 0

vi里跳到某行用:108


vi嵌入外部文件
ESC+: r 文件路径
vi执行外部命令
ESA+:! ls


sybase:
sp_help 表名    //查表结构等
sp_helpdb 数据库名   //查数据库信息
select @@version    //查看版本

字符串不够8位左补0:
sprintf( szYhtId, "%08s", szTemp);   //不要忘了s
/*转换为INT类型*/
szYhtid = atoi(yhtid);

-------------------------------------------
.本地工作站与远端工作站之间文件传输
====================================
( 必须拥有远端工作站之帐号及密码,才可进行传输工作 )
执行格式: ftp hostname or ftp ip_address
Example :
ftp doc 与远端工作站 doc ,进行文件传输
Name (doc:user-name) : 输入帐号
Password (doc:user-name): 输入密码

ftp>; help 列出 ftp 文件传输,可使用之任何命令。
ftp>; !ls 列出本地工作站,目前目录下之所有文件名。
ftp>; !pwd 列出本地工作站,目前所在之工作目录位置。
ftp>; ls 列出远端工作站目前目录下之所有文件名。
ftp>; dir 列出远端工作站目前目录下之所有文件名(略同於 UNIX 的 ls -l 指令).
ftp>; dir . |more 同上,但每页会暂停(可能不适用 Unix 以外的 ftp)。
ftp>; pwd 列出远端工作站目前所在之目录位置。
ftp>; cd dir1 更改远端工作站之工作目录位置至 dir1 之下。
ftp>; get file1 将远端工作站之文件 file1 ,拷贝到本地工作站中。
ftp>; put file2 将本地工作站之文件 file2 ,拷贝到远端工作站中。
ftp>; mget *.c 将远端工作站中,副文件名为 c 之所有文件,拷贝到本地工作站中。
ftp>; mput *.txt 将本地工作站中,副文件名为 txt 之所有文件,拷贝远端工作站中。
ftp>; prompt 切换交谈式指令(使用 mput/mget 时不用每个文件皆询问yes/no)。
ftp>; quit 结束 ftp 工作。
ftp>; bye 结束 ftp 工作。
注: 从PC与工作站间的文件传输也可通过在 PC端的 FTP指令进行文件传输,指令用法与
上所述大致相同。

例子:
ftp -n -i -v << !
open 199.1.1.11
user aips aips
prompt
as
quote type b 9
lcd /home/usr/aips/yht
cd /home/aips/test
mput *
bye
!

其中:prompt指设置交互提示,这里关闭
lcd 把本地目录切换到/home/usr/aips/yht
==================================================
1.![cmd[args]]在本地机中执行交互shell、exit回到ftp环境,如!ls *.zip。
------------------------------------------


find删除一些旧的文件,但是遇到windows的长文件名时的删除方法:
find ./ -mtime +300 | awk -F \0 '{printf("\"%s\"\n",$0)}' | xargs -n 1 rm -f
查找某个目录下的具有包含某个字符串的文件并删除:
find . -type f -exec grep "232" {} \; -exec rm {} \;
find . -type f -exec grep -q "123" {} \; -exec rm {}\;
删除当前计算机系统日期前2天产生的所有文件,包括子目录下所有目录和文件:
find . -type d -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;
find . -type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;

又一个获取代理的脚本 前几天在看freshmeat的时候,我最喜欢的代理被封了。

无奈,换代理。

忽然想起有一个代理的首页是代理列表,而且是哈尔滨网通的,何不搞下来呢?

写了一个脚本,结合xyxproxy来做。

#!/bin/sh
#

wget -q -O proxy.html http://219.217.250.85/help.php
cat proxy.html | grep '"cells"' | awk -F"<td>" '{print $2}' | cut -f1 -d"<" > proxy.txt

rm proxy.html

Bash debugger

Bash debugger为了研究Xwindow的启动过程, 我找到了一个调试Bash script的好东东:bashdb(Bash Debugger)。 我下的版本是bashdb-3.00-0.02, 我的bash版本是
GNU bash, version 3.00.16(1)-release (i386-redhat-linux-gnu)

安装过程本来应该很直接的:
       ./configure && make && make check
       su -c 'make install'

可是最后make install出了些小问题, 报告bashdb-main.inc的符号链接无法建立。我研究了下, 应该是安装程序的小bug。最终的解决办法是手动把所有的.inc文件拷贝到 /usr/local/lib/bashdb下, 再把dbg-main.inc建立一个链接bashdb-main.inc. 一切OK。

调试的方法有两种, 一种是
$bashdb foo.sh
另一种把script头第一行改为
#!/bin/sh --debugger

调试的snapshot:

你可能感兴趣的:(#脚本收集区)