工作快一年了,shell命令也玩了一年了。还是有点积累的,下面是本人常用的。

1、pwd | xargs -i basename {}   获取当前所在目录的名称

2、ps -ef|grep -w  indexd_admin_mcd.pid|grep -v grep|wc -l

ps -ef 查找进程    grep -v  查找不存在  grep -w 强制 PATTERN 仅匹配整个词

查找进程中为 indexd_admin_mcd.pid的进程,并且排除掉grep的进程。最后计数,这样进程的个数。

3、if [ $cn -lt 1 ]   如果cn的值< 1

4、ulimit  -c   最大的core文件的大小,以blocks为单位。    ulimit -c  unlimited  对生成的core文件大小不进行限制。

5、kill

kill -9 pid,是不顾后果的强制终止(如果的你的速度够快,有时候是和ctrl+c是一样的)

kill -15 pid,是先关闭和其有关的程序,再将其关闭

6、crontab

crontab -l    显示crontab中的所有的内容

crontab filename     用新的文件代替crontab里的所有的内容。

所有想在crontab中添加新的自动运行的进程,则先用crontab -l >temp,先将crontab中所有的内容全部重定向到一个新的文件中,然后在这个temp文件后>>追加内容。最后用crontab temp,用temp的文件内容替代crontab的所有的内容。

crontab文件的格式:分  时  日  月  星期

7、$()与‘’的意思相同,获取shell执行后的值,但是用$()会更加的直观。  ${},{}中经常放的是变量,这样在${}就可以精确后面的变量的范围了。

${file#*/}:拿掉第一条/及其左边的字符串: dir1/dir2/dir3/my.file.txt

${file##*/}:拿掉最后一条/及其左边的字符串:my.file.txt

${file#*.}:拿掉第一个.及其左边的字符串:file.txt

${file##*.}:拿掉最后一个.及其左边的字符串:txt

${file%/*}:拿掉最后条/及其右边的字符串:/dir1/dir2/dir3

${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)

${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

8、运算

(( A )) 做运算的,A是任何的运算的表达式 A中的变量可用$来替换,也可以不用。

9、if  判断条件中 $#   和$? 是什么意思?

$#  获取参数的数目my.sh p1 "p2 p3" 为例   $#可得到2

$@ 与 $* 均可获得所有的参数 my.sh p1 "p2 p3" p4 $@ 与 $* 得到p1 p2 p3 p4

但是,如果置于 soft quote 中的话:

"$@" 则可得到 "p1" "p2 p3" "p4" 这三个不同的词段(word)

"$*" 则可得到 "p1 p2 p3 p4" 这一整串单一的词段。

10、在 shell command line 中可用 $? 这个变量得到最新的一个 return value ,也就是刚结束的那个行程传回的值。

* 若在 script 里,用 exit RV 来指定其值,若没指定,在结束时以最后一道命令之 RV 为值。

* 若在 function 里,则用 return RV 来代替 exit RV 即可。

11、重定向输出

* 2>&1 就是将 stderr 并进 stdout 作输出

* 1>&2 或 >&2 就是将 stdout 并进 stderr 作输出

ls my.file no.such.file 2>/dev/null

* 若将 FD1 跟 FD2 转到 /dev/null 去,就可将 stdout 与 stderr 弄不见掉。

* 若将 FD0 接到 /dev/null 来,那就是读进 nothing 。

>/dev/null 2>&1   单纯只跑程序,不想看到任何输出结果  除了用 >/dev/null 2>&1 之外,你还可以&>/dev/null

12、tee复制

所谓 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去。

cm1 | cm2 | tee file | cm3

在预设上, tee 会改写目标档案,若你要改为增加内容的话,那可用 -a 参数达成。

凡举 cat, more, head, tail, wc, expand, tr, grep, sed, awk, ... 等等文字处理工具,搭配起 pipe line 来使用

13、shell程序的参数

$0   当前程序的执行名字

$n   当前程序的第n个参数值,n=1..9

$*   当前程序的所有参数

$#   当前程序的参数个数

$$   当前程序的PID

$!   执行上一个指令的PID

$?  执行上一个指令的返回值

14、date显示时间

date '+%F %T'    2012-08-27 15:52:54   等同于date +"%Y-%m-%d %T"

date -d '-1 days' +"%Y%m%d"    获取前一天的时间

15、if添加的判断的另一个方式

判断参数的个数

01 if (( $# < 1 ))
02 then
03     echo "Usage: $0 worker_id"
04     exit 1
05 fi
06 if (( $# == 1 ))
07 then
08     WORKER_ID=$1
09     MAX_WORKER_ID=$WORKER_ID
10 elif (( $# > 1 ))
11 then
12     echo "Usage: $0 [worker_id]"
13     exit 1
14 else
15     echo "worker count $WORKER_CNT"
16 fi

这样写if的条件的判断就和c语言的一样了,条件运算

16、ipcs  查看共享内存的使用的情况

ipcrm -M  shmid  关闭共享内存

17、make -p

即使data这个文件夹不存在,也可以创建他的子目录,当然同同时,他也被创建。

mkdir -p /data/coredump

18、head  tail

head 是显示一个文件的内容的前多少行;

head  -n  行数值  文件名;

比如我们显示/etc/profile的前10行内容,应该是:

[root@localhost ~]# head -n 10 /etc/profile

tail 工具,显示文件内容的最后几行,用法比较简单;

tail   -n  行数值  文件名;

比如我们显示/etc/profile的最后5行内容,应该是:

[root@localhost ~]# tail  -n 5 /etc/profile

更多:http://blog.csdn.net/carzyer/article/details/4759593

19、创建软链接

ln -sf  a  b     b链向a

20、export  执行的路径

export LD_LIBRARY_PATH=./

21、if  [ expr ];   then … fi

-n str

字符串 str 是否不为空

-z str

字符串是否为空

str1  = str2

str1是否与 str2 相同

str1 != str2

str1是否与 str2 不同

int1 -eq int2

等于

int1 -le  int2

小于等于

int1 -ge int2

大于等于

int1 -lt   int2

小于

int1 -gt  int2

大于

int1 -ne int2

不等于

-b

是否块文件

-p

文件是否为一个命名管道

-c

是否字符文件

-r

文件是否可读

-d

是否一个目录 *

-s

文件的长度是否不为零

-e

文件是否存在 *

-S

是否为套接字文件

-f

是否普通文件 *

-x

文件是否可执行,则为真

-g

是否设置了文件的 SGID 位

-u

是否设置了文件的 SUID 位

-G

文件是否存在且归该组所有

-w

文件是否可写,则为真

-k

文件是否设置了的粘贴位

-t fd

fd 是否是一个与终端相连的打开的文件描述符(fd 默认为 1)

-O

文件是否存在且归该用户所有

22、for循环

1 for((i=1;i<=100;++i))
2 do
3     echo $i
4 done

23、对一行的第一列进行排重,只保留最新的数据。awk的内置的数组进行排重,排重之后在sort

01 filename=$1
02 awk '
03 {
04     cont[$1] = $0;
05 }
06 END {
07     for (key in cont)
08     {
09     print cont[key];
10     }
11 }' $filename | sort -k1

24、显示上次文件的创建的时间

stat -c %Y $file

25、while循环

http://www.linuxidc.com/Linux/2011-02/32239p2.htm

http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html

26、查看当前目录下的文件的大小

du -h --max-depth=1

27、# nohup  ./pso > pso.file 2>&1 &

解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。

当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。

http://www.cnblogs.com/xianghang123/archive/2011/08/02/2125511.html

28、将大文件分割为指定大小的文件

http://huangyandong.blog.51cto.com/1396940/690276

split -b 1m 20121018_quey.txt

29、对windows上传的文件进行处理,处理特殊字符

dos2unix over_wap_query_seed.20121023.txt

30、将window的^M回车符号换成linux的

tr -s "[\r]" "[\n]" < log.get

tr -s "[\015]" "\n" < log.get

31、在securecrt软件上显示用户名和ip

echo -ne "\e]2;${USER}@$(/sbin/ifconfig eth1 | awk -F"[ :]+" '/inet addr/{print $4}')\a"

如果你是root用户,把下面上面的那句命令行追加到 /etc/profile

如果你是个人账户,在自己的家目录新建一个 .profile 文件,把命令行追加到.profile文件

32、shell保留两位小数

echo "scale=2; 1*100/3" | bc

33、去掉变量的最后一个字符

AA=abcd

echo $AA | cut -c 1-$(expr ${#AA} - 1)

34、linux下如何查询已知进程运行目录

ls -l /proc/PID/cwd

最后为大家分享两个pdf文档,这是我入门学习shell时候用的。

原创文章,转载请注明: 转载自成长的企鹅

本文链接地址: 常用的shell命令整理

关于我:成长的企鹅简介

常用的shell命令整理的更多相关文章

  1. Lua 常用的shell命令

    lua作为一种小巧的脚本语言,其函数等动作可以使用shell命令进行运行和调试,以下是几个常用的shell命令.基本格式是  lua [选项参数] [脚本参数] (1)%lua 程序名.lua     ...

  2. hbase的常用的shell命令&hbase的DDL操作&hbase的DML操作

    前言 笔者在分类中的hbase栏目之前已经分享了hbase的安装以及一些常用的shell命令的使用,这里不仅仅重新复习一下shell命令,还会介绍hbase的DDL以及DML的相关操作. hbase的 ...

  3. Hbase_02、Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作(转)

    阅读目录 前言 一.hbase的shell操作 1.1启动hbase shell 1.2执行hbase shell的帮助文档 1.3退出hbase shell 1.4使用status命令查看hbase ...

  4. Linux的经典shell命令整理

    Linux的经典shell命令整理 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p ...

  5. Hadoop集群常用的shell命令

    Hadoop集群常用的shell命令 Hadoop集群常用的shell命令 查看Hadoop版本 hadoop -version 启动HDFS start-dfs.sh 启动YARN start-ya ...

  6. Liunx常用运维命令整理记录

    前言 作为后端开发者,掌握一些常用的运维命令也是很有必要的,本文记录常用Liunx运维命令 基本命令 目录切换 cd base-admin/ 切换到当前目录下的base-admin目录 cd .. 切 ...

  7. 安卓日常开发和逆向中常用的shell命令与非shell命令

    简述shell 命令与 非shell命令区别 shell命令不用先adb shell进入界面执行 非shell命令必须要 adb shell进入界面执行 基础非shell命令 1.安装app adb ...

  8. 常用Linux Shell命令,了解一下!

    目录 1 前言 2 正文 2.1 关机/重启 2.2 echo 2.3 vim文本编辑器 2.3.1 最基本用法 2.3.2 常用快捷键 2.3.3 查找/替换 2.4 拷贝/删除/移动/重命名 2. ...

  9. kafuka常用的shell命令

    kafka常用shell命令: ------------------------------------ 1.创建topic bin/kafka-topics.sh --create --zookee ...

随机推荐

  1. ExtJS001HelloWorld弹窗

    html页面 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  2. Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socke ...

  3. BZOJ 1005: [HNOI2008]明明的烦恼( 组合数学 + 高精度 )

    首先要知道一种prufer数列的东西...一个prufer数列和一颗树对应..然后树上一个点的度数-1是这个点在prufer数列中出现次数..这样就转成一个排列组合的问题了.算个可重集的排列数和组合数 ...

  4. Linux 下 Hadoop java api 问题

    1. org.apache.hadoop.security.AccessControlException: Permission denied: user=opsuser, access=WRITE, ...

  5. Snap.svg中transform旋转值的“r+数组”表现形式

    Snap.svg中transform的值还可以写为类似以下这种形式: transform:'r'+[100,[50,50]]; 这种写法的意思是,让元素以(50,50)为旋转中心点,然后旋转100度. ...

  6. Sql日期时间格式转换 备用

    sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...

  7. Android开发中出现cannot be resolved to a variable错误,也就是R文件不能生成。

    最近开始学过习Android开发,配置完成开发环境后,在创建第一个Android项目就出现了cannot be resolved to a variable错误,也就是R文件不能生成的问题. 以下是从 ...

  8. BootStrap学习2 typeahead

    首先看看这些 http://www.wrapcode.com/bootstrap/typeahead-json-objects/ http://stackoverflow.com/questions/ ...

  9. IC卡,ID卡,M1卡,射频卡

    一般把可读可写,频率是13.56MHz的射频卡称为IC卡,IC卡可以写入数据, 只能读,频率是125KHz的射频卡称为ID卡, M1卡是NXP公司的S50卡的一种叫法,国内的复旦F08,达华的TKS5 ...

  10. Json.Net系列教程 1.Json.Net介绍及实例

    原文 Json.Net系列教程 1.Json.Net介绍及实例 本系列教程假设读者已经对Json有一定的了解,关于Json在这里不多说.本系列教程希望能对读者开发涉及到Json的.Net项目有一定的帮 ...