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.txt
alias: 重命名,定义新的命令
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的请求

相关推荐