linux Shell常用命令笔记

说明:一直都没有做笔记的习惯,或者说没有坚持写笔记的习惯。这次要离开目前的公司了,为了面试也为了打发时间,写点平时在公司用到的shell吧。

watch : 该命令用来每个一段时间执行一次另外一个显示output的命令。一般在super crt客户端用watch date保证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 +x xx.sh 用来为文件赋予执行权限

chown :改变文件属主,不常用

scp: ssh版copy,可以跨server。
scp [email protected]:/home/mwang/test.txt . 
将server上的test.txt拷贝到当前文件夹,反之则是将当前文件夹的test.txt文件拷贝到server上的mwang folder里面去。

ssh: 连接到server,如: ssh drone@rjdr-batch1。 也可以跨server执行命令,如:ssh rjdr-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 -i xx.txt,这样在删除之前会让用户确认。

mkdir: 新建目录

mv: 剪切(重命名)
mv test.txt emptyfile.txt


alias: 重命名,定义新的命令
alias psd='ps -ef | grep drone'
定义一个psd命令,执行psd的效果等于ps -ef | grep drone

export:将一些变量传递到子的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表示成功,其它数字代表error code.

-号与!号: cd -代表返回上一次调用cd的目录。 !代表 重新执行某一命令的最近一次执行。如:!nohup ./dailyBatchProcess.sh RJF 20140101 > mark.log 2>&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命令。用法:sqlplus MWANG/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 -l xx.txt统计xx.txt文件的行数

mailx: 发邮件命令mailx -s "test email" [email protected] <detail.txt

tar: 压缩解压, tar -cvf 压缩, tar -xcvf 解压。

awk: 一个单独的模式匹配语言,很强大,常用 awk  -F ':'  '{print $1}' 查看第一列。
awk -F ':' -v ONE=1 'BEGIN{} END{}'
-F代表分隔符, -v代表定义变量, BEGIN代表开始时执行一次,END代表结束时执行一次。
for, while, if语句也都支持, &&与||或, "ABC" ~ "^[ABC]+$" 匹配正则表达式,!~不匹配。
求某一列在文件中的位置。
awk -F '|' '{ for(x = 0; x <= NF; x+=1)if($x == "abc") print x}' mark 显示abc在文件mark中的第几列

sed: 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用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的请求

猜你喜欢

转载自xiaohuafyle.iteye.com/blog/2112101