英文、数字及下划线组成,而且不能以数字开头;
3、当变量内容带有特殊字符(空格 $),需要加单引号;
[root@linuxidc ~]# ABC='linux centos'
[root@linuxidc ~]# echo $ABC
linux centos
如变量内容中本身有单引号,需要加双引号;
[root@linuxidc ~]# ABC="Linux'"
[root@linuxidc ~]# echo $ABC
Linux'
4、如果变量内容需要引用其他运行结果,需要使用反引号
[root@linuxidc ~]# ABC=`pwd`
[root@linuxidc ~]# echo $ABC
/root
5、变量内容可以累加其他变量的内容,需要加双引号。
[root@linuxidc ~]# AA="Angle"
[root@linuxidc ~]# echo $AA
Angle
[root@linuxidc ~]# AB="$AA"BB
[root@linuxidc ~]# echo $AB
AngleBB
?
单引号和双引号的区别,用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用。
9、pstree? ? 以树状图显示当前系统的进程
当前shell下运行bash命令后,会进入一个新的shell,新shell为之前shell的子shell;
[root@linuxidc ~]# pstree | grep bash
? ? |-login---bash
? ? |-sshd---sshd---bash-+-grep
[root@linuxidc ~]# bash
[root@linuxidc ~]# pstree | grep bash
? ? |-login---bash
? ? |-sshd---sshd---bash---bash-+-grep
?
在父shell中设定一个变量后,进入子shell后变量不会生效;需要在子shell中生效要用exprot指令;export 声明全局变量,让该shell的子shell也知道;如果export后面不加任何变量名,则它会声明所有的变量。
[root@linuxidc ~]# echo $AA
Angle
[root@linuxidc ~]# bash
[root@linuxidc ~]# echo $AA
[root@linuxidc ~]# exit
exit
[root@linuxidc ~]# export AA
[root@linuxidc ~]# bash
[root@linuxidc ~]# echo $AA
Angle
?
10、取消变量? ? unset 变量名
[root@linuxidc ~]# AB="Angle BB"
[root@linuxidc ~]# echo $AB
Angle BB
[root@linuxidc ~]# unset AB
[root@linuxidc ~]# echo $AB
系统环境变量与个人环境变量的配置文件
/etc/profile? 系统预设的几个重要的变量,例如PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
/etc/bashrc? ? 预设umask以及PS1等变量。PS1就是我们登录linux 命令行最前面显示的字符;
\u? 用户users
\h? 主机名hostname
\W? 当前目录pwd
\$? 系统用户为#,普通用户显示$
[root@linuxidc ~]# echo $PS1[\u@\h \W]\$
[root@localhost ~]# PS1='[\h@\u \W]\$'
[localhost@root ~]#
更改PS1的显示;
每个用户的主目录下还有几个这样的隐藏文件:
.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
.bash_history :记录命令历史用的。
.bash_logout :当退出shell时,会执行该文件。可以把一???清理的工作放到这个文件中。
Linux shell中的特殊字符
*? ? 代表零个或多个任意字符
?? ? 代表一个任意字符
#? ? 代表注释说明的意思,#号后面的内容忽略掉;
\? ? 脱意字符,将后面的特殊字符(* $)还原为普通字符;
|? ? 管道符,讲前面命令执行的结果作为后面命令的输入;
$? ? 引用变量
;? ? 分隔2个命令,2个命令都执行,不管前面命令是否错误 ls a.txt ; cat a.txt
&? ? 把命令放到后台运行
&&? ? 命令的连接符,第一个执行成功才会执行第二个;
||? ? 分隔命令,只有前面命令运行不成功,才会执行后面的命令;
cut? ? 截取某一个字段、字符
-d? ? 指定分隔符,分割字符用单引号 ' ' 括起来
-f? ? 指定第哪个区间
-c? ? 指定第几个字符;指定多个字符 -c 1,5 ;可以指定一个区间 -c 1-4 ;
列出以:号分隔列出第7列的内容,只显示前3行;
[root@localhost ~]# cut -d: -f 7 passwd | head -3?
/bin/bash
/sbin/nologin
/sbin/nologin
[root@linuxidc ~]# head -3 passwd |cut -c 1-4
root
bin:
daem
?
sort? ? 排序输出? ? 默认按首字母升序的顺序排列;
-t? ? 指定分隔符
-k? ? 指定以哪个区间进行排序
-r? ? 逆序排列
-u? ? 删除重复的
-n? ? 按照数字大小排序
-f? ? 忽略大小写
按:号分隔,按第3列uid排序;
[root@localhost ~]# sort -t: -n -k 3 passwd |head -3
root:x:0:0:root:/root:/bin/bash
ROOT:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
?
wc? ? 统计行数、单词数、字节数
wc -l? ? ? 统计行数
wc -w? ? 统计单词数
wc -c? ? 统计字符数(wc -m 一样的功能)
[root@linuxidc ~]# wc -l /etc/passwd
24 /etc/passwd
[root@linuxidc ~]# wc -w /etc/passwd
32 /etc/passwd
[root@linuxidc ~]# wc -c /etc/passwd
1041 /etc/passwd
[root@linuxidc ~]# wc /etc/passwd
? 24? 32 1041 /etc/passwd
?
uniq? ? 去除重复的行
针对数字的话,需要先进行sort排序,再去除重复的行。
-c? ? 统计重复的行数,并写在最前面;
[root@linuxidc tmp]# uniq 1.txt?
111
222
111
333
[root@linuxidc tmp]# sort 1.txt | uniq -c
? ? ? 2 111
? ? ? 1 222
? ? ? 1 333
[root@linuxidc tmp]# sort test.txt |uniq -c
? ? ? 2 12345? ? ?
? ? ? 1 67899? ? ?
? ? ? 2 abc? ? ?
? ? ? 1 helloworld
?
tee? ? 重定向文件,并且同时还在屏幕上显示;
类似与重定向 “>”, 但是比重定向多了一个功能,在把文件写入后面所跟的文