经典*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
no@(one|ne) @严格匹配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 /;
【原创】批量删除文件修改时间为n天前的文件
copy自yesterday.vbs
搞不明白如何将vbs变量传递给cmd变量,算了,用for...('cscript.exe..)..来取了
用法:cmd下
del_day 5
删除文件修改时间为5天前的文件,测试,删除操作务必谨慎
代码:
@echo off
>t_day.vbs echo ' Yesterday.vbs, Version 1.01
>>t_day.vbs echo '
>>t_day.vbs echo ' Written by Rob van der Woude
>>t_day.vbs echo ' http://www.robvanderwoude.com
>>t_day.vbs echo '
>>t_day.vbs echo ' Calculate yesterday's date
>>t_day.vbs echo dtmYesterday = DateAdd("d",-%1,Date)
>>t_day.vbs echo '
>>t_day.vbs echo ' Get yesterday's year
>>t_day.vbs echo strYear = DatePart("yyyy",dtmYesterday)
>>t_day.vbs echo '
>>t_day.vbs echo ' Get yesterday's month, add leading zero if necessary
>>t_day.vbs echo If DatePart("m",dtmYesterday) ^< 10 Then
>>t_day.vbs echo strMonth = 0 ^& DatePart("m",dtmYesterday)
>>t_day.vbs echo Else
>>t_day.vbs echo strMonth = DatePart("m",dtmYesterday)
>>t_day.vbs echo End If
>>t_day.vbs echo '
>>t_day.vbs echo ' Get yesterday's day, add leading zero if necessary
>>t_day.vbs echo If DatePart("d",dtmYesterday) ^< 10 Then
>>t_day.vbs echo strDay = 0 ^& DatePart("d",dtmYesterday)
>>t_day.vbs echo Else
>>t_day.vbs echo strDay = DatePart("d",dtmYesterday)
>>t_day.vbs echo End If
>>t_day.vbs echo '
>>t_day.vbs echo ' Format output for yesterday
>>t_day.vbs echo strYest = strYear ^& strMonth ^& strDay
>>t_day.vbs echo '
>>t_day.vbs echo ' echo
>>t_day.vbs echo Wscript.echo( strYest )
@echo on
for /f "delims=" %%i in ('cscript.exe //nologo t_day.vbs') do set t_day=%%i
setlocal ENABLEDELAYEDEXPANSION
for /r %%i in (*.*) do set c_day=%%~ti && if "!c_day:~0,2!!c_day:~3,2!!c_day:~6,2!" lss "%t_day:~2,6%" del /q "%%i"
endlocal
cls
@echo =========================
@echo 删除完毕.
@echo =========================
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
no@(one|ne) @严格匹配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 /;
【原创】批量删除文件修改时间为n天前的文件
copy自yesterday.vbs
搞不明白如何将vbs变量传递给cmd变量,算了,用for...('cscript.exe..)..来取了
用法:cmd下
del_day 5
删除文件修改时间为5天前的文件,测试,删除操作务必谨慎
代码:
@echo off
>t_day.vbs echo ' Yesterday.vbs, Version 1.01
>>t_day.vbs echo '
>>t_day.vbs echo ' Written by Rob van der Woude
>>t_day.vbs echo ' http://www.robvanderwoude.com
>>t_day.vbs echo '
>>t_day.vbs echo ' Calculate yesterday's date
>>t_day.vbs echo dtmYesterday = DateAdd("d",-%1,Date)
>>t_day.vbs echo '
>>t_day.vbs echo ' Get yesterday's year
>>t_day.vbs echo strYear = DatePart("yyyy",dtmYesterday)
>>t_day.vbs echo '
>>t_day.vbs echo ' Get yesterday's month, add leading zero if necessary
>>t_day.vbs echo If DatePart("m",dtmYesterday) ^< 10 Then
>>t_day.vbs echo strMonth = 0 ^& DatePart("m",dtmYesterday)
>>t_day.vbs echo Else
>>t_day.vbs echo strMonth = DatePart("m",dtmYesterday)
>>t_day.vbs echo End If
>>t_day.vbs echo '
>>t_day.vbs echo ' Get yesterday's day, add leading zero if necessary
>>t_day.vbs echo If DatePart("d",dtmYesterday) ^< 10 Then
>>t_day.vbs echo strDay = 0 ^& DatePart("d",dtmYesterday)
>>t_day.vbs echo Else
>>t_day.vbs echo strDay = DatePart("d",dtmYesterday)
>>t_day.vbs echo End If
>>t_day.vbs echo '
>>t_day.vbs echo ' Format output for yesterday
>>t_day.vbs echo strYest = strYear ^& strMonth ^& strDay
>>t_day.vbs echo '
>>t_day.vbs echo ' echo
>>t_day.vbs echo Wscript.echo( strYest )
@echo on
for /f "delims=" %%i in ('cscript.exe //nologo t_day.vbs') do set t_day=%%i
setlocal ENABLEDELAYEDEXPANSION
for /r %%i in (*.*) do set c_day=%%~ti && if "!c_day:~0,2!!c_day:~3,2!!c_day:~6,2!" lss "%t_day:~2,6%" del /q "%%i"
endlocal
cls
@echo =========================
@echo 删除完毕.
@echo =========================