说明:一直都没有做笔记的习惯,或者说没有坚持写笔记的习惯。这次要离开目前的公司了,为了面试也为了打发时间,写点平时在公司用到的shell吧。
watch : 该命令用来每个一段时间执行一次另外一个显示output的命令。一般在super crt客户端用watch date保证session的常连。
who : 查看当前线上用户情况
whoami: 显示当前用户名
whereis: 显示命令的路径
sudo : 用root权限运行,一般需要输入root密码。
su : 切换用户 su - mwang
ls : 列表, 一般用ls -trl, 按时间循序列出所有文件
ln : 创建一个软连接,效果如下
touch: 改变文件的日期或者生成空文件。
pwd : 当前路径
cd : 进入folder
chmod : 改变文件权限,700,777, chmod +x xx.sh 用来为文件赋予执行权限
chown :改变文件属主,不常用
scp: ssh版copy,可以跨server。
ssh: 连接到server,如: ssh drone@rjdr-batch1。 也可以跨server执行命令,如:ssh rjdr-tp1 ~/maxit/RJF/startDTPs.sh
dd: 拷贝并转码文件,
cp: 拷贝
rm: 删除 rm -r 删除目录,一般rm -i xx.txt,这样在删除之前会让用户确认。
mkdir: 新建目录
mv: 剪切(重命名)
alias: 重命名,定义新的命令
export:将一些变量传递到子的script中去。比如脚本dailyBatchProcess.sh里面调用了dailyBatchProcess_preTP.sh,那么dailyBatchProcess.sh里面定义的参数默认在dailyBatchProcess_preTP.sh里面是不可见的,当在dailyBatchProcess.sh里面对变量使用
echo: 显示output或文本, echo "hello"
date: 显示日期, date +%Y%m%d 显示如201401231。
which:显示命令的完整路径,与date搭配使用的例子如下:
$ : 在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命令。如:
前面五个参数分别代表分钟,小时,日期,月份,星期。上例表示周二至周六,每天凌晨0:45跑一次脚本
> 与 >>: 一个是覆盖输入,一个是在最后一行添加输入。
·· : 注意该字符是数字键最左边的字符,不是单引号。它的意思是获取脚本执行的结果。例子: TODAY = `DATE +%Y%m%d`
. .profile : 表示在脚本中加载.profile文件。
sqlplus : 连接oracle命令。用法:sqlplus MWANG/MWANG123@STUDB。
在脚本中可有如下使用:
sqlldr: load文件进oracle数据库
pushd, popd : pushd 将目录放入栈, popd从栈中取出目录。 pushd 相当于cd的同时还将当前的目录地址记入栈,而popd相当于cd到栈顶第一个目录,然后将该目录移除。FILO模式。例子:
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编辑器 参考[url]http://xiaohuafyle.iteye.com/blog/1671540[/url]
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" mark.wang.en@gmail.com <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的请求
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 mwang@10.10.10.13:/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编辑器 参考[url]http://xiaohuafyle.iteye.com/blog/1671540[/url]
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" mark.wang.en@gmail.com <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的请求