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
浙公网安备 33010602011771号