Linux运维 第二阶段 (八)shell基础


Linux运维第二阶段(八)shell基础


一、bash特性:

1GUIgnome,KDE,Xfce;CLIsh,csh,ksh,bash,tcsh,zsh

2、程序、进程(进程是程序的副本,进程是程序的实例,在每一个进程看来,当前主机上只存在内核和当前进程)

3#type  bash(查看当前shell

#bash(进入子shell,子shell认为当前系统仅内核与他自己)

#pstreedisplay a tree ofprocesses查看系统进程树)

#exit(退出子shell

4、命令行编辑快捷键:

ctrl+a光标跳至行首

ctrl+e光标跳至行尾

ctrl+u删除光标到行首的内容

ctrl+K删除光标至行尾的内容

ctrl+l清屏

5、命令历史:

#history(查看历史命令,属内置命令,新使用的命令在内存缓冲区,过段时间才会同步至数据文件中.bash_history

#history -c(清空历史命令)

#history -d  n(仅删除第n条历史命令)

#history -w(保存命令历史至历史文件中)

#echo $HISTSIZE(查看命令保存条数)

6、命令历史的使用技巧:

上下箭头,上一个命令或下一个命令

<ESC>,.先按ESC键松开再按.可跳至上一个命令

<ALT>+.跳至上一条命令

!n执行历史命令中第n条命令

!-n执行历史命令中倒数第n条命令

!!执行上一条命令

!string执行命令历史中最近一个以指定字符串开头的命令

!$引用上一个命令的最后一个参数

<TAB>命令补全或路径补全

7、命令别名(别名的有效范围仅为当前shell,配置文件~/.bashrc):

#alias CMDALIAS=’COMMAND  [option]  [arguments]’(设置命令别名)

#unalias CMDALIAS(删除命令别名)

例:#alias  cdnet=’cd  /etc/sysconfig/network-scripts/’或在~/.bashrc中添加此句

8、命令替换($(COMMAND)`COMMAND`反引号):

#touch file-`date  +%F_%T`#touch  file-$(date +%F_%T)

注:bash中支持的引号,``反引号(命令替换),””双引号(弱引用,可以实现变量替换),’’单引号(强引用,不可以变量替换)

9、文件名通配(#man  7  glob):

*任意长度任意字符

?任意单个字符

[]匹配指定范围内的任意单个字符,如[abc],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]

[^]匹配指定范围外的任意单个字符,如[^0-9]非数字

字符集合:[:space:]空白字符,[:punct:]标点符号,[:low:]小写字母,[:upper:]大写字母,[:alpha:]大小写字字母,[:digit:]数字,[:alnum:]大小写字母数字

[[:space:]]外面的中括号表示引用

例:#touch  ‘a  b’

#ls [[:alpha:]]*[[:space:]]*[[:alpha:]](查找以字母开头字母结尾中间有空白字符)

10、站在用户登录的角度来说,shell的类型:登录式SHELL(正常在某终端登录,#su  -[l] USERNAME是完全切换);非登录式SHELL(图形终端中打开的命令行窗口;自动执行的SHELL脚本;#su  USERNAME是半切换)

11bash的配置文件:

全局配置:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc

个人配置:~/.bash_profile,~/.bashrc

profile类的文件:设定环境变量;运行命令或脚本

bashrc类的文件:设定本地变量;定义命令别名

12、登录式SHELL如何读取配置文件:

/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc

非登录式SHELL如何读取配置文件:

~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh

 

二、输入输出重定向、管道:

1、  CPU(运算器、控制器);寄存器(CPU暂时存储器);RAM(存储器);输入设备、输出设备(I/O);程序(指令+数据);地址总线(内存寻址)、数据总线(传输数据)、控制总线(控制指令);

2、  系统设定的默认输入设备(键盘)、输出设备(显示器,廉价)

3、  标准输入(stdin,描述符0<);

标准输出(stdout,描述符1>>>);

标准错误输出(stderr,描述符22>2>>);

另:&>(重定向标准输出或错误输出至同一个文件);

>|(强制覆盖输出);

<<(此处文档,Here document);

/dev/null(软件设备,位桶bit bucket,数据黑洞)

 

举例:

#ls /var  >  /tmp/var.out (会将显示结果重定向至指定文件)

#ls /varr  >  /tmp/var1.out (由于/varr目录不存在,则用>不会重定向至指定文件,是不同的数据流)

#ls /varr  2>  /tmp/var2.out /varr目录不存在则会将结果重定向至指定文件,2>仅重定向错误输出)

#ls /var  2>  /tmp/var.out (会输出到屏幕,不会重定向)

#ls /varr  >  /tmp/var3.out 2>  /tmp/var3.out  (都保存至文件,无论执行正确或错误,也可指定为不同的文件)

#ls /varr  &>  /tmp/var4.out (同上例)

#cat <  /etc/issue  (输入重定向)

#tr  a-z’  ‘A-Z’ <  /etc/issue  (将指定文件全部中的小写字符全转为大写字符,不改变源文件,仅显示输出)

 

举例:

#type set  set为内置命令)

#set -C  (禁止把已存在文件覆盖重定向,默认为不开启,+C为关闭此项)

#ls /etc  >  /tmp/var.out (确认/tmp/var.out存在,若开启上句中的功能,此句无法执行,会报错,提示-bash: /tmp/var.out: cannot overwrite existing file

#ls /etc/  >|  /tmp/var.out >|表示强制覆盖,就算已设置#set  -C,也可覆盖重定向至指定文件)

#cat <<  EOF

>the first line.

>the second line.

>EOF <<表示Here document,此例在输完EOF回车后,以上两行会显示到屏幕上)

#cat >>  /tmp/file.txt  << EOF

>the first line.

>the second line.

>EOF (此例用于在脚本中生成文件,结束符EOF可自定义,常用的EOFEND,此例中会将以上两行写入指定文件/tmp/file.txt

 

4、  管道(|):前一个命令的输出,作为后一个命令的输入

举例:

#echo ‘hello,world!’  |  tr  ‘a-z’  ‘A-Z’

#echo ‘redhat’  |  passwd --stdin  root

#cat /etc/passwd  |  sort

#cat -d:  -f1  /etc/passwd |  sort  | tr  ‘a-z’  ‘A-Z’

#echo ‘hello,world!’  |  tee /tmp/hello.txt  teeread fromstandard input and write to standard output and files,从标准输入读入数据,一份输出至屏幕一份保存至指定文件)

#wc -l  /etc/passwd  | cut  -d:  -f1

#ls /usr/bin  |  wc -l 

#ll /usr/bin  | wc  -l  (与上句比较出差别)

#cut -d:  -f7  /etc/passwd |  sort  -u  -uunique重复项只显示一次)

#file /var/log/*

#cd /var/log; file  `ls  /var/log`

#head -6  /etc/inittab  | tail  -1

#tail -9  /etc/inittab  | head  -1  | cut  -d:  -f1,7 |  tee  /tmp/user.txt

#ls -d  /etc/pa*  | wc  -l  (比较有-d与无-d的差别)

 

 

三、grep的使用、正则表达式REGEXP:

grepglobal researchexpression):

默认grep工作在贪婪模式下;

文本查找的需要;

根据模式(pattern)搜索文本,并将符合模式的行显示出来);模式:文本字符和正则表达式(REGEXPregular expression)元字符组合而成的匹配条件;

 ‘’,“”:只要不涉及到变量,单双引号都可用,单引号(强引用),双引号(弱引用);

#fgrep(不支持正则表达式,没有元字符时使用fgrep速度更快);

#grep [options]  pattern  FILE

  -i--ignore-case,忽略大小写)

 --color

  -v(显示没有被模式匹配到的行)

  -o(只显示被模式匹配到的字符串,与行无关)

  -E--entended  REGEXP,或#egrep

 -A  #(显示匹配到字符串所在行以及其后的几行)

 -B  #(显示匹配到字符串所在行以及其前的几行)

 -C  #(显示匹配到字符串所在行以及其前后的几行)

REGEXPbasic REGEXPextendedREGEXP#egrep#grep  -E);

1、  basic REGEXP:

字符匹配:

.(匹配任意单个字符);

[](匹配指定范围内的任意单个字符;

[^](匹配指定范围外的任意单个字符);

[:digit:][:lower:][:upper:][:punct:][:space:][:alpha:][:alnum:](字符集合)

次数匹配:

*(匹配其前面的字符任意次);

.*(任意长度任意字符);

\?(匹配其前面的字符0次或1次);

\{m,n\}(匹配其前面的字符至少m次,最多n次);

位置锚定:

^(锚定行首,此字符后面的任意内容必须出现在行首);

$(锚定行尾,此字符前面的任意内容必须出现在行尾);

^$(空白行)

锚定词:

\<\b(词首,其后的任意字符必须作为单词的首部出现);

\>\b(词尾,其前的任意字符必须作为单词的尾部出现);

分组:

\(\) \1,\2,\3,....(向后引用,例如:匹配likelikerlovelover#grep  ‘\(l..e\).*\1’  test.txt

 

举例:

#grep ‘[[:digit:]]$’  /etc/inittab

#grep ‘[[:space:]][[:digit:]]’ /etc/inittab

#grep ‘\<r’  /etc/passwd  (以下两例同此句比较#grep  ‘r’ /etc/passwd

#grep ‘r\b’  /etc/passwd

#grep ‘\<bash$’  /etc/passwd

 

2、  extended REGEXP:

字符匹配:

.

[]

[^]

次数匹配:

*

?

+(匹配其前字符至少1次);

{m,n}

位置锚定:

^

$

\<(词首);

\>(启尾);

分组:

()

\1,\2,\3,...

或者:

 

举例:精确匹配#ifconfig中所有IP地址(不包括广播地址及子网掩码)

#ifconfig | egrep -o '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'

 

 

 

sedstream editor):行编辑器、全屏编辑器,把每行读到内存空间(模式空间),默认不编辑源文件,仅对模式空间的数据作处理,处理结束将模式空间打印至屏幕;

#sed [options]  ‘AddressCommand’  file1...

options

-n(静默模式,不再显示模式空间的行,不加-n默认是打印模式空间);

-i(直接修改源文件);

-e(后接脚本或编辑好的语句,如#sed  -e SCRIPT  -e  SCRIPT FILE,可以同时执行多个脚本);

-f(后接脚本文件,如#sed  -f /PATH/TO/FILE  FILE);

-r(表示使用扩展正则表达式)

Address

start line,end line;(起始行,结束行,例如:1,13

/pattern///中间是正则表达式)参照shell基础中正则表达式的用法

/pattern1/,/pattern2/(第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束,中间的所有行);

linenumber(指定行);

startline,+N(从startline开始向后N行)

Command

d(删除符合条件的行);

P(显示符合条件的行);

a \string(在指定的行后追加新行,内容为string);

i \string(在指定的行前添加新行,内容为string);

r FILE(将指定文件的内容添加至符合条件的行处);

w FILE(将指定范围内的行另存至指定的文件中);

s/pattern/string/修饰符(查找并替换,不加修饰符g默认只替换第一次被模式匹配到的字符串,修饰符(g全局替换,i查找时忽略大小写)s///也可用s###,s@@@等其它符号)

 

举例:

#sed ‘/^\//a  #  hello linux’  /etc/fstab  (在行首是/的行后追加#  hello linux

#sed ‘/^\//a  #  hello linux\n#  hello  world’ /etc/fstab  (在行首是/的行后追加两行)

#sed ‘$r  /etc/issue’  /etc/fstab (在末行后添加指定文件内容,此例可用做文件合并)

#sed ‘1,2r  /etc/issue’  /etc/fstab (在第一行和第二行后都追加指定文件的内容)

#sed ‘/oot/w  /tmp/oot.txt’  /etc/fstab (将查询到的含oot的行另存至指定文件/tmp/oot.txt

#sed ‘s/oot/OOT/g’  /tmp/oot.txt  (将查询到含oot的全部替换为大写)

#sed ‘s/^\//#/g’  /etc/fstab  (将行首的/全部替换为#

#sed ‘s#l..e#&r#g’  test.txt  &r匹配模式里的整个字符串,将文件中likelove均替换为likerlover

#sed ‘s#\(l..e\)#\1r#g’  test.txt  (同上例)

#sed ‘s#l\(..e\)#L\1#g’  test.txt  (将文件中likelove替换为LikeLove

 

#sed -r  ‘s/^[[:space:]]+//g’  /etc/grub.conf  (删除行首的空白字符)

#history |  sed  ‘s#^[[:space:]]##g’  (功能同上例)

#sed ‘s@\(id:\)[0-9]\(:initdefault\)@\15\2@g’ /etc/inittab  (将行id:3:initdefault中的3替换为5

#sed ‘/^$/d’  /etc/inittab  (删除空白行)

#sed ‘s/^#//g’  /etc/inittab  (删除文件中开头的#

#sed -r  ‘s/^#[[:space:]]+//g’  /etc/inittab (删除文件中开头的#,且#后必须有空白字符)

#sed -r  ‘s@^[[:space:]]+#@@g’  test.txt (删除文件中以空白字符开头后跟#的行)

#echo “/etc/rc.d/”  |  sed -r  ‘s@^(/.*/)[^/]+/?@\1@g’  (取出一路径中上一层目录的名称)


扩展:取路径名或基名另一种方法

#FILE=/etc/init.d/php-fpm

#echo ${FILE%/*}(得到结果/etc/init.d)

#echo ${FILE##*/}(得到结果php-fpm)






以上是学习《马哥运维课程》做的笔记。

 

 

 







一、shell的两种主要语法:Bourne家族(sh/ksh/bash/psh/zsh;C家族(csh/tcsh)。

         注:bashzsh在不同程度上支持csh的语法。

         #vi  /etc/shells                 (可查询linux支持的shell

二、1、#echo  -e|-n  输出内容

         -e      可支持反斜线\控制的字符转换(\\,\a,\b,\c,\e,\f\,\n,\r,\t,\v,\0mmm,\xhh

         -n      取消输出行末的换行符号,内容输出后不换行

例:#echo  -e  “ab\bc”

         #echo  -e  “a\tb\tc\nd\te\t\f\”

         #echo  -e  “\e[1;31mabcd \e[0m”       (输出内容加颜色)

         注:字体颜色(30m-37m分别代表:黑、红、绿、黄、蓝、洋红、青、白);背景颜色(40m-47m.

         2shell脚本的运行方式:

    赋予权限直接运行(通过绝对路径或相对路径);

    通过bash调用执行(#bash  hello.sh

三、bash的基本功能:

         1、#history  选项

            -c      (清空历史命令

            -w历史命令保存文件  (缓存中的历史命令写入文件,默认保存位置:~/.bash_history

         #vi  /etc/profile      (可修改文件历史命令保存条数

         注:用history命令查看到的是缓存中的,可用#history �Cw 直接写入文件

         历史命令的调用:上下键;!n重复执行第n条历史命令;!!重复执行上一条命令;!字串,重复执行最近一次以该字串开关的命令;!$重复上一条命令的最后一个参数

         2、命令与文件的补全(tab键)

         3、命令别名:#alias  别名=‘原命令’unalias取消别名

         例:#alias  vi=’vim’               (临时生效

     命令执行顺序:绝对路径、相对路径;别名;bash内部命令;环境变量PATH定义的路径依次查找。

         4、常用快捷键:ctrl+A,ctrl+E,ctrl+C,ctrl+L,ctrl+u,ctrl+K(删除或剪切光标之后的内容),ctrl+Y(粘贴),ctrl+S(暂停屏幕输出),ctrl+Q(恢复屏幕输出),ctrl+D(退出当前终端),ctrl+Z(暂停放入后台),ctrl+R(在历史命令中搜索)

         5、设备  设备文件名     文件描述符     类型

        键盘   /dev/stdin         0       标准输入

        显示器 /dev/stdout        1       标准输出

        显示器 /dev/stderr        2       标准错误输出

命令>文件|设备          错误命令2>文件|设备      覆盖方式

命令>>文件|设备         错误命令2>>文件|设备     追加方式

命令>文件 2>&1           命令&>文件                覆盖方式正确输出错误输出都保存

命令>>文件 2>>&1         命令&>>文件               追加方式正确输出错误输出都保存

命令>>文件1 2>>文件2                   正确输出追加至文件1,错误输出追加至文件2

#wc 选项 文件

     -c       统计字节数byte

     -w       统计单词数word

     -l       统计行数line

6、多命令顺序执行:

              命令1;命令2     (多个命令顺序执行,命令之间没有任何逻辑关系

         &&     命令1&&命令2     (当命令1正确执行($?=0)命令2才会执行;命令1执行不正确($?!=0)命令2不会执行

         ||     命令1||命令2     (当命令1执行不正确($?!=0)命令2才会执行;当命令1正确执行($?=0)命令2不会执行

注:一般情况下最好让&&在前||在后,否则会错误执行,例:命令&&命令||命令

7 #grep 选项 “搜索内容”

         -A number        列出符合条件的行,并列出后续n

         -B number        列出符合条件的行,并列出前n

         -i               ignore忽略大小写

         -v               invert-match取反

         -c               统计找到符合条件的字符串的次数

         -n               line-number输出行号

         --color=auto     搜出的关键字用颜色显示

例:#grep �CA 3 “root”/etc/passwd

         #grep �Cn “/bin/bash” /etc/passwd

         #grep �Cv “/bin/bash” /etc/passwd

         #netstat �Can | grep “ESTABLISHED” | wc �Cl

         #rpm �Cqa | grep httpd

8、通配符:

      *        匹配0个或任意多个字符,可匹配任何内容

                匹配1个任意字符

         []       匹配括号中任意一个字符,例:[abc]中的一个

         [-]      匹配括号中范围内的一个字符,例:[a-z]中的一个字符

         [^]      匹配不是括号中的一个字符,例:[^0-9]代表不是数字的字符

9bash中的其它特殊符号

         ‘’         单引号内的所有特殊符号都没有特殊含义,包括$``反引号

         “”         双引号中的特殊符号都没有特殊含义,除$``反引号、\转义符外

         ``           反引号里的内容是系统命令,在bash中会先执行,同$()一样

         $()          引用系统命令,与反引号作用一样

         \           在转义符\之后的特殊符号将失去特殊含义,变为普通字符,例:\$,输出$

         $           调用变量的值,例:$name

         ()          一串命令执行时,()内的命令在子shell中执行

         {}          一串命令执行时,{}内的命令在当前shell中执行,也可用于变量变形与替换

         []          用于变量的测试

         #           shell中表示注释

注:(){}的区别:执行一串命令时()里的命令需重新开一个子shell执行,而{}里的命令是在当前shell下执行;两者都把命令放在括号里,且命令之间用;分号隔开,()内最后一个命令可以不用分号,{}内最后一个命令要加上分号;{}内的第一条命令与左括号之间必须要有一个空格,()内则不用;两者括号里的某个命令的重定向只影响该命令,但括号外的重定向则影响括号里的所有命令。

例:     #name=sb

         #(name=sd;echo $name)

         #echo $name

         #{ name=sd;echo $name;}

         #echo $name

四、bash的变量和运算符

         1、变量:

         变量名称由字母、数字、下划线组成,不能以数字开头,例:2name

         变量的默认类型是字符串型,如要进行数值运算,则必须指定为数值型;

         变量用等号连接,且左右两侧不能有空格;

         变量值中若有空格,要用单引号或双引号包括,例:test=”hello world”,注意双引号里有三个特殊符号拥有特殊含义:$``反引号、\

         在变量的值中,不能有转义符\

         如需增加变量的值,可进行变量值的叠加,两种格式:”$变量名${变量名},例:#test=”$test”456#test=${test}456

         如要把命令的结果作为变量值赋予变量,则要使用``反引号或$(),例:#test=$(date)#test=`date`

         环境变量名建议大写,便于区分。

         2、变量的分类:

         用户自定义变量:最常见的,由用户自由定义变量名和变量值;

         环境变量:保存系统操作环境的相关数据,可自由定义,如当前登录用户、家目录、命令提示符;

         位置参数变量:主要用来向脚本传递参数和数据,变量名不能自定义,变量作用是固定的;

         预定义变量:bash中已定义好的变量,变量名不能自定义,变量作用是固定的。

        3#set                   (查看系统中所有变量

            #env                   (仅查看环境变量environment

            #set �Cu|-x            -u,有此项调用未声明变量时会报错,默认无任何提示;-x,有此项在命令执行之前会把命令先输出一次

            #unset 变量名          (变量删除

        4#export AGE=”18”     (声明为环境变量

            #env | grep AGE        (查询环境变量

            #unset AGE             (删除AGE变量

  • PATH变量:系统查找命令的路径,用冒号分隔

注:在命令行中输入了一个命令,没写绝对路径,系统就会到PATH定义的路径中寻找,有则执行。无则提示“Command not fount”;脚本可拷贝至PATH定义的某一路径中,也可通过变量的叠加实现。

例:#cp /root/sh/hello.sh /bin

#PATH=”$PATH”:/root/sh                  仅临时生效,永久生效写入配置文件/etc/profile

#echo $PATH

  • PS1变量:命令提示符设置,默认:[\u@\n \W]\$

#echo $PS1

#PS1=’[\u@\h \W]\$ ‘

  • LANG语系设置

#echo $LANG               (对当前系统生效,由配置文件i18n赋予变量LANG

#locale �Ca | wc-l        (可支持的所有语系

#locale                   (当前系统的语系

/etc/sysconf/i18n         (系统默认语系,重启后生效

注:纯字符界面下显示中文:en_US.UTF-8改为zh_CN.UTF-8,并安装zhcon中文插件;图形界面和远程连接登录,需先工具配置正确并设为中文环境zh_CN.UTF-8

         5、位置参数变量

         $n     n为数字,$0代表命令本身,$1-$9为第一到第九个参数,10以上的参数表示方法为:${10}

         $*     代表命令行中所有参数,$*把所有的参数看作一个整体

         $@   代表命令行中所有参数,$@把每个参数区分对待

         $#     代表命令行中所有参数的个数

         6、预定义变量:

         $?     最后一次执行命令的返回状态,0表示上一个命令正确执行,非0上一个命令执行不正确

         $$      当前进程的PID

         $!     后台运行的最后一个进程的PID

         7、接收键盘输入:

         #read  选项 变量名

              -p              在等待read输入时,输出提示信息

              -t秒数          指定等待时间

              -n字符数        只接受指定的字符数

               -s             隐藏输入的数据,适用于机密信息的输入

注:变量名可以自定义,如不指定,则保存至默认变量REPLY;如果只提供一个变量名,则整个输入行赋予该变量,如有多个变量,则输入行分为若干字,一个接一个的赋予各个变量,而命令行上的最后一个变量取得剩余的所有字。

         例:#vi read.sh

#!/bin/bash

#Author:

read �Ct 30 �Cp “please input your name: “name

echo “Name is $name”

read �Ct 30 �Cp “please input your age: “ age

echo �Ce “\n”

echo “Age is $age”

read �Ct 30 �Cn 1 �Cp “please select yourgender[m/f]: “ gender

echo �Ce “\n”

echo “Sex is $gender”

         8#declare +/-选项 变量名

         -        设定

         +        取消

         -a       array数组

         -i       integer整数

         -x       environment环境变量

         -p       print显示被声明为什么变量

         -r       声明为只读变量,一旦为只读,不能修改变量的值,不能删除不能取消只读属性

> 数值运算方式:

         #aa=11

         #bb=22

         #cc=$(( $aa+$bb))

         #cc=$[  $aa+$bb]

         #declare�Ci cc=$aa+$bb

         #cc=$(expr $aa + $bb)

         #letcc=$aa+$bb

    >数组变量类型:

        #name[0]=sz

        #name[1]=sd

        #name[2]=sb

        #echo ${name}(仅输出第一个下标变量

        #echo ${name[*]}      (输出数组所有内容

注:调用数组时使用${数组[下标]}的方式。

         >环境变量

         #declare�Cx test=123       (同#exporttest=123

         >#declare�Cr test     (设为只读,不能修改,不能取消,不能删除

         >#decalre�Cp name(查询变量属性

         #declare+x test       (取消环境变量属性

         9、变量的测试与内容置换

五、环境变量配置文件

         1、使配置文件立刻生效:

#source 配置文件

         #.配置文件  

         2、登录时生效的环境变量配置文件:

         /etc/profile/etc/profile.d/*.sh~/.bash_profile~/.bashrc/etc/bashrc

         /etc/profile:调用/etc/profile.d/*.sh~/.bash_profile

         ~/.bash_profile:在PATH变量后加入:HOME/bin这个目录,脚本可放至~/bin下,可直接执行

         ~/.bashrc:定义默认别名

         /etc/basrc:定义PS1变量;定义了umask默认权限,non-login过程生效;定义了PATH变量,non-login过程生效调用/etc/profile.d/*.sh

         ~/.bash_logout:注销时生效的环境变量配置文件;

         ~/.bash_history:历史命令保存文件。

         3/etc/issuetty1-tty6本地终端欢迎界面,支持的转义符可用#man agetty查询

         /etc/issue.net:远程登录欢迎信息,如ssh/telnet。需同时更改配置文件/etc/ssh/sshd_config#Banner none下加入Banner/etc/issue.net,不支持/etc/issue中的转义符

         /etc/motd:用户登录之后显示的欢迎信息,本地远程都可显示,前两个文件/etc/issue/etc/issue.net是在用户登录之前显示的。

         #stty�Ca   (查询所有快捷键

         #stty关键字 快捷键    (设置快捷键:#stty intr^p(^p是手工输入的),强制中止改为ctrl+p

 


 注:本文由互联网收集整理(51CTO、360DOC、chinaunix、百度百科、兄弟连免费视频等)。      

你可能感兴趣的:(linux,shell,运维)