linux Shell常用命令笔记
说明:一直都没有做笔记的习惯,或者说没有坚持写笔记的习惯。这次要离开目前的公司了,为了面试也为了打发时间,写点平时在公司用到的shell吧。
watch:该命令用来每个一段时间执行一次另外一个显示output的命令。一般在supercrt客户端用watchdate保证session的常连。
who:查看当前线上用户情况
whoami:显示当前用户名
whereis:显示命令的路径
sudo:用root权限运行,一般需要输入root密码。
su:切换用户su-mwang
ls:列表,一般用ls-trl,按时间循序列出所有文件
ln:创建一个软连接,效果如下
05:31 AM drone@rjprod-batch1$ ls -trl lib lrwxrwxrwx 1 drone staff 6 Jun 17 2011 lib -> ../lib
touch:改变文件的日期或者生成空文件。
pwd:当前路径
cd:进入folder
chmod:改变文件权限,700,777,chmod+xxx.sh用来为文件赋予执行权限
chown:改变文件属主,不常用
scp: ssh版copy,可以跨server。scp [email protected]:/home/mwang/test.txt .将server上的test.txt拷贝到当前文件夹,反之则是将当前文件夹的test.txt文件拷贝到server上的mwang folder里面去。
ssh:连接到server,如:sshdrone@rjdr-batch1。也可以跨server执行命令,如:sshrjdr-tp1~/maxit/RJF/startDTPs.sh
dd: 拷贝并转码文件,dd if=test.txt of=test_ebcdic.txt conv=ebcdic为test.txt文件新生成一份ebcdic格式的新文件。cp: 拷贝
cp /home/drone/maxit/RJF/test.txt .
rm:删除rm-r删除目录,一般rm-ixx.txt,这样在删除之前会让用户确认。
mkdir:新建目录
mv: 剪切(重命名)mv test.txt emptyfile.txtalias: 重命名,定义新的命令
alias psd='ps -ef | grep drone'定义一个psd命令,执行psd的效果等于ps -ef | grep droneexport:将一些变量传递到子的script中去。比如脚本dailyBatchProcess.sh里面调用了dailyBatchProcess_preTP.sh,那么dailyBatchProcess.sh里面定义的参数默认在dailyBatchProcess_preTP.sh里面是不可见的,当在dailyBatchProcess.sh里面对变量使用
export PATH EDITOR ORACLE_HOME JAVA_HOME,在dailyBatchProcess_preTP.sh就可以直接使用JAVA_HOME等变量了。
echo:显示output或文本,echo"hello"
date:显示日期,date+%Y%m%d显示如201401231。
which:显示命令的完整路径,与date搭配使用的例子如下:
GNU_DATE=`which date` TODAY=`$GNU_DATE +%Y%m%d` YESTERDAY=`$GNU_DATE -d "yesterday" '+%Y%m%d'`
$:在script中显示script调用时的参数。
$0=调用的脚本名,$1第一个参数,$2,$3同理。$?=执行脚本后的return结果,一般0表示成功,其它数字代表errorcode.
-号与!号:cd-代表返回上一次调用cd的目录。!代表重新执行某一命令的最近一次执行。如:!nohup./dailyBatchProcess.shRJF20140101>mark.log2>&1&
&:即代表重定向如2>&1,将错误输出也定义到标准输出中。也代表后台执行如放在命令最后。
nohup:将命令的执行者上升至root.看ps-ef可以发现PPID变为1了
crontab:定时任务,有点像dos的at命令。如:
45 0 * * 2-6 /home/drone/maxit/RJF/Transform/rjfDailyBatchProcess.sh > /home/drone/maxit/RJF/Transform/rjfDailyBatch.log 2>&1
前面五个参数分别代表分钟,小时,日期,月份,星期。上例表示周二至周六,每天凌晨0:45跑一次脚本
>与>>:一个是覆盖输入,一个是在最后一行添加输入。
··:注意该字符是数字键最左边的字符,不是单引号。它的意思是获取脚本执行的结果。例子:TODAY=`DATE+%Y%m%d`
..profile:表示在脚本中加载.profile文件。
sqlplus:连接oracle命令。用法:sqlplusMWANG/MWANG123@STUDB。
在脚本中可有如下使用:
sqlplus -s MWANG/MWANG123@STUDB<<! set trimspool on; set linesize 32767; set pagesize 0; SPOOL ./sql.log START showStu.sql; exit; !
sqlldr:load文件进oracle数据库
sqlldr userid=$DB_USER/$DB_PASS@$ORACLE_SID control=./sec_data.ctl data=./sec_data.txt log=./log/sec_data.log bad=./error/sec_data.bad bindsize=5000000 parallel=true direct=true readsize=5000000 columnarrayrows=100000 streamsize=1000000 multithreading=true errors=50000 silent=(header, feedback)
pushd,popd:pushd将目录放入栈,popd从栈中取出目录。pushd相当于cd的同时还将当前的目录地址记入栈,而popd相当于cd到栈顶第一个目录,然后将该目录移除。FILO模式。例子:
pwd pushd /home/drone/maxit pwd pushd /FTP pwd popd pwd popd pwd
if,while,for,switch都大同小异。
[]或test:在if后面用来判断条件的。
即可判断数字,也可判断文件,常用的有大于-gt,小于-lt,等于-eq,-e文件存在
top:查看系统资源
tail:查看文件末尾,-20表示只看最后20行,-f表示实时查看最后一行(比如看Log)
head:查看文件头,head-20表示查看头两行
less:查看,常用less-N带行号。在less里面用/来做正则匹配。空格翻页,b向前翻。G最后一页,g最前一页。
vi:vi编辑器参考http://xiaohuafyle.iteye.com/blog/1671540
cat:获取文件内容,cat>xx.txt,打开一个xx.txt的文件,并将屏幕输入导入xx.txt在最后一行也ctrl+D结束。
ps:查看线程,一般ps-ef
find:查找命令,dos里有findstr。常用:find.-name"*.txt"-print在当前目录及子目录找出所有的txt文件。
kill:杀线程,kill-9强制杀死。
wc:统计命令,wc-lxx.txt统计xx.txt文件的行数
mailx:发邮件命令mailx-s"testemail"[email protected]<detail.txt
tar:压缩解压,tar-cvf压缩,tar-xcvf解压。
awk:一个单独的模式匹配语言,很强大,常用awk-F':''{print$1}'查看第一列。
awk-F':'-vONE=1'BEGIN{}END{}'
-F代表分隔符,-v代表定义变量,BEGIN代表开始时执行一次,END代表结束时执行一次。
for,while,if语句也都支持,&&与||或,"ABC"~"^[ABC]+$"匹配正则表达式,!~不匹配。
求某一列在文件中的位置。
awk-F'|''{for(x=0;x<=NF;x+=1)if($x=="abc")printx}'mark显示abc在文件mark中的第几列
sed:是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
常用sed's/_&1._/_/g'PLUTO_ACCT_HASH_VALUE.sql>../tables2/PLUTO_ACCT_HASH_VALUE.sql来将PLUTO_ACCT_HASH_VALUE.sql文件中的"_&1._"替换成"_"
curl:curl"www.baidu.com"简单的发起一个http的请求
相关推荐
= -1)//对指定路径进行判断。while //遍历文件夹下的文件。if (strFileName =="." && strFileName == ".." != 0)//排除当前目录和上一级目录。