shell 的基本知识(第十讲)


1.(基础知识一定要学好)

命令历史 history 查看历史命令

!数字(运行第几条命令)

!!(表示运行上一条命令)

ls   !$ (上一条命令的最后一个参数)

 !n  !字符(表示命令历史中以n开头的最近的命令)
Tab 
键可以补全文件路径或者命令(有时需要按两下table)
alias  a=“b”  unalias a

alias  aming ="netstat -an" 作用是输出系统的网络连接 只是在当前shell中生效

root vi .bashrc(root 用户的配置文件 针对mount一个用户写到这个用户的home下的.bashrc )

所有用户vi  /etc/profile

                 /etc/bashrc

通配符 *匹配零个或多个字符 ?匹配一个字符
输入输出重定向 >, >>,  <,  2>(错误追加重定向), 2>>

写cront的时候 

ls aming >1.log 2 >err.log(正确的一个日志,错误的一个日志)

ls aming > 1.log 2>&1(正确和错误的的都写到一个日志)

ls aming >> 1.log 2>&1

< 反向重定向

 mail -s " "1l1wl" (标题) [email protected]  < /etc/passwd

yum  install mailx -y(发邮件的软件包)

管道符 |(前面命令的结果丢给后边)

wc -l (统计行数)
作业控制 ctrl+z, jobs(后台有多少个进程正在运行),  fg(如果有两个后台进行

fg 1  fg 2),  bg 1(进入后台并且运行)

直接调入后台 :sleep 10 &


2. 变量
系统变量名都是大写,echo 可以查看变量名
env 
可以列出当前用户的所有环境变量以及用户自定义全局变量

echo $LANG
set
命令可以把所有变量列出来包括系统的和自定义的全局变量以及当前shell自定义变量
linux
下设置自定义变量规则: (1)格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两边不能有空格;(2)变量名只能由英、数字以及下划线组成,而且不能以数字开头;(3)当变量内容带有特殊字符(如空格)时,需要加上单引号;(4)如果变量内容中需要用到其他命令运行结果则可以使用反引号;(5)变量内容可以累加其他变量的内容,需要加双引号(可以解析$符号);
b=$a:123或者

b=$a"123" b="$a"123)(此处双引号的作用是解析$)三种方法都对。

系统所有用户使用变量: export myname=Aming  全局变量,加入/etc/profilesource /etc/profile永久生效
系统某个用户使用变量: export myname=Aming 加入当前用户家目录下的 .bashrc source .bashrc 
export myname=Aming  
全局变量,export 不加任何选项表示,声明所有的环境变量以及用户自定义变量
用户自定义变量,可以使用 unset 变量名进行解除变量设置

a=1 

echo $a 

unset a 直接解除

3. 
系统和个人环境变量的配置文件
/etc/profile  PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask
 


/etc/bashrc  $PS1 

[\u@\h \W]\$

[root@centos ~]

r root

@还是@

h 是centos

w 是目录 

$就是后面的符号   $PS1="[\u@\h  \w]\\$"  [root@centos  ~]#

 umask    以后如果设置umask修改/etc/profile 不要改这个文件(/etc/bashrc)

.bash_profile  用户自己的环境变量

.bashrc  当用户登录时以及每次打开新的shell执行该文件 (alias)
.bash_history  
记录命令历史用的 
.bash_logout 
:当退出shell时,会执行该文件。 

history -c 或者 清空

 >.bash_history


4. shell中的特殊符号 
匹配符号,零个或多个任意字符 
匹配符号,1个任意的字符
注视说明用的,使后面的内容失去原本的意义
脱义字符,将特殊字符还原为普通字符
|
将符号前面命令的结果丢给符号后面的命令,一般针对文档操作的命令比较常用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等  
引用变量,还有 !$(vim $末尾)
分号,多条命令写一行时,分隔命令 
用户家目录 
放到命令最后面,让命令在后台运行(日志)ls >1.log 2>&
>, >>, 2>, 2>>  [
错误]重定向,追加[错误]重定向    
[ ] 
中括号,中间为字符组合,代表中间字符中的任意一个 ls 1[23a].txt


5. 
常用命令:
1
cut
语法: cut -d ‘分隔字符’ [-cf] n 这里的n是正整数 
-d 
后面指定分隔符,用单引号引起来,-f 指定第几段 cut -d ':'  -f 1 /etc/passwd |head -n 5

head /etc/passwd | cut -d ':' -f 3

-c 后面只有一个数字表示截取第几个字符head -n2 /etc/passwd|cut -c2
-c 
后面跟一个数字区域,表示截取从几到几head -n2 /etc/passwd|cut -c2-52  2,5是第二和第五
2
sort
语法: sort [-t 分隔符] [-kn1,n2] [-nru]  (n1<n2) 
不加选项,从首字符向后,依次按ASCII码值进行升序排序sort  /etc/passwd 
-t 
后指定分隔符,-kn1,n2表示在指定的区间中排序,-k后面只跟一个数字表示对第n个字符排序,-n表示使用纯数字排序 sort -t: -k3 -n /etc/passwd
-r 
表示以降序的形式排序 sort -t: -k3,5 -r /etc/passwd
-u 
去重  cut -d: -f4 /etc/passwd |sort -n -u
unique

横向输出可以加一个管道

sort -n -u | xargs 
3
wc
用于统计文档的行数、字符数、词数
不加任何选项,会显示行数、词数以及字符数
-l 
统计行数
-m 
统计字符数
-w 
统计词数
4
uniq
uniq 
去重复,最常用就一个 -c 用来统计重复的行数,去重前要先排序sort testb.txt |uniq -c  (排序去重统计)

sort -n1.txt | uniq -c | sort -n 

5tee
后跟文件名,类似于>,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上 
6
tr 用来替换字符 
最常用的就是大小写转换: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]' 
tr 
替换一个字符也是可以的grep 'root' /etc/passwd |tr 'r' 'R' 
7
split 切割大文件用的
-b : 
按大小来分割单位为byte  split -b50 1.txt 
默认会以xaa, xab, …这样的形式定义分隔后的文件名,也可以指定文件名 split -b50 1.txt 123 
-l : 
按行数分隔,split -l10 file

split -l 2 /etc/passwd pwd


6. && 
 ||
command1 ; command2  
前面命令是否执行完成都会执行后面命令
command1 && command2 
只有前面命令执行成功才会执行后面命令
command1 || command2  
只有前面命令不成功再去执行后面命令



你可能感兴趣的:(shell)