linux之bash

echo $varibale  获取变量

echo ${varibale}

$ echo $PATH

$ echo ${PATH}

/usr/local/bin

 

变量赋值  注:括号两边不能存在空格符

$ username=myname

$ echo $username

myname

 

“” 特殊字符保持原有特性

‘’ 特殊符号为一般字符

$ var="name is $username"

$ echo $var

name is myname

$ var='name is $username'

$ echo $var

name is $username

 

unset 取消变量

$ unset username

$ echo $username

 

env  查看环境变量

$ env

 

set 查看所有变量

$ set

 

PS1 命令行提示字符的设定

(envpin)root@li409-214:~/envpin/myweb# echo $PS1

(envpin)${debian_chroot:+($debian_chroot)}\u@\h:\w\$

 

$ echo $$  显示bash的PID号

11876

 

?上一个指令的回传值

$ echo $SHELL

/bin/bash

$ echo $?

0

$ var =  myvar

bash: var: command not found

$ echo $?

130  错误返回值

 

export 自定义变量转为环境变量

自定义变量和环境变量的区别是其能否被子程序所使用

$ export username

 

read 读取来自键盘的输入

-p  命令提示符

-t  等待时间

$ echo $username

为空

$ read -p 'please input your name: ' -t 30 username

please input your name: huhuchen

$ echo $username

huhuchen

 

declare/typeset 宣告变量类型

declare -[aixr] variable

a  变量定义为数组类型

i 变量定义为整数数字类型

x  定义为环境变量,export

r 只读不能修改的变量,readonly

 1 $ sum=10+1+2
 2 $ echo $sum
 3 10+1+2
 4 $ declare -i sum=10+1+2
 5 $ echo $sum
 6 13
 7 $ declare -x sum
 8 $ export | grep sum
 9 declare -ix sum="13"
10 $ declare -r sum
11 $ sum=aaaaa
12 bash: sum: readonly variable
13 $ declare -p sum
14 declare -irx sum="13"
15 “-”变为“+”可取消相应的属性
16 $ declare +x sum
17 $ declare -p sum
18 declare -ir sum="13"

 

数组

$ var[1]="small"
$ var[2]="middle"
$ var[3]="big"
$ echo "$var[1],$var[2],$var[3]"
[1],[2],[3]
$ echo "${var[1]},${var[2]},${var[3]}"
small,middle,big

 

 

$ ulimit 用户与文件系统和程序的限制

 

别名

$ alias rm="rm -i"  别名

$ alias

alias rm='rm -i'

$ unalias rm

 

历史命令

$ history 列出目前内存里的所有命令

    1  ulimit -a
    2  alias rm="rm -i"
    3  alias
    4  unalias rm
    5  alias
    6  history

$ history 3  列出最近的3个命令

    5  alias
    6  history
    7  history 3

$ history -w 立刻将目前的资料写入到histfile中,默认会写入到.bash_history中

 

 通配符

*

?

[]

[-]

[^]

 

 特殊符号

\  跳脱符号,转义

>,>>   数据流重定向:输出导向,分别为取代和累加

<,<<   数据流重定向:输入导向,分别为取代和累加

 

1>

1>>

2>

2>>

/dev/null

 

 

命令执行的判断依据

; 顺序执行一序列命令

$ sync;sync.shudown -h now

 

指令回传(?) 与&& 和||

cmd1 && cmd2  只有cmd1执行后($?=0),cmd2才执行

cmd1 || cmd2  只有cmd1执行后($?!=0),cmd2才执行

 

 

管线命令

cut   -[dfc]

$ echo $PATH
/home/z28/.env/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3

-d -f 将标准输入的数据按照d后的字符切割成段,并按f 后接数据取相应段数据

$ echo $PATH | cut -d ":" -f  1

/home/z28/.env/bin

$ echo $PATH | cut -d ":" -f 3

/usr/bin

-c 以字符的长度为单位取出固定区间

$ history 6
   43  echo $PATH | cut -d ":" -f 1
   44  echo $PATH | cut -d ":" -f 3
   45  export
   46  history
   47  history -6
   48  history 6

$  history 6 | cut -c 6-
  export
  history
  history -6
  history 6
  history 6 | cut -c 3-
  history 6 | cut -c 6-

 

cut是将一行信息当中,取出我们想要的某一部分,而grep则是分析一行信息,若其中有我们需要的信息,则取出整行

grep -[acinv] '搜索字符串' filename

-i  忽略大小写不同

-c 计算找到“搜索字符串”的次数

-n 顺便打印行号

$ history 6
   48  history 6
   49  history 6 | cut -c 3-
   50  history 6 | cut -c 6-
   51  man grep
   52  history 12
   53  history 6

$ history 6 | grep -in cut
1:   49  history 6 | cut -c 3-
2:   50  history 6 | cut -c 6-
6:   54  history 6 | grep -in cut

 

排序命令

sort

uniq 取出重复资料

$ last | cut -d " " -f1 |sort | uniq -c
      1
      2 e1
     20 wooparad
      2 work
      1 wtmp
    103 z1
     16 z28
    145 z32
      2 z35
      2 z41
      4 z47
      6 z50
     92 z57
     49 z59
     43 z60
      2 z62
     19 z63

 

wc   -l仅列出行数

$ cat /etc/man.conf | wc    列出文档的行数,字数,字符数
    144     723    4612

 

tee  双向数据流,将同一数据流传至文档和标准输出

$ last | tee ~/temp.txt | grep 'root'

 

字符转化命令

tr  删除一段信息中的文字,或者是文字替换

$ last -3
z50      pts/15       222.134.33.19    Sat Jun  9 15:24 - 15:25  (00:00)    
z50      ssh          222.134.33.19    Sat Jun  9 15:24 - 15:25  (00:00)    
z57      pts/15       125.77.120.41    Sat Jun  9 14:53 - 15:03  (00:09) 

$ last -3 | tr 'a-z' 'A-Z'

Z50      PTS/15       222.134.33.19    SAT JUN  9 15:24 - 15:25  (00:00)    
Z50      SSH          222.134.33.19    SAT JUN  9 15:24 - 15:25  (00:00)    
Z57      PTS/15       125.77.120.41    SAT JUN  9 14:53 - 15:03  (00:09)    
$ last -3 | tr -d '0-9'
z      pts/       ...   Sat Jun   :   still logged in   
z      ssh          ...   Sat Jun   :   still logged in   
z      pts/       ...    Sat Jun   : - :  (:)  

 

col 字符转化

 

join 将两个文件中的数据整合为一行

 

paste -d file1 file2 将两行贴在一起,并以tab键隔开

 

split  将一个较大的档案分割为较小的多个档案

 

 

http://t.42qu.com/by/10000000?t=10294558

 

 

posted on 2012-06-07 11:24  huhuchen  阅读(222)  评论(0)    收藏  举报

导航