`
tiankefeng0520
  • 浏览: 143071 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Linux学习记录--shell简介

阅读更多

shell

 

命令类型查询:type

读入配置文件:source

 

操作系统内核(kernel)负责管理整个计算机硬件,但是这个内核是需要保护的,用户不能直接操作内核,因此就需要一个可以帮助我们操作内核的工具。Shell功能就在于此,他可以将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误地工作

 

我们使用的是linux默认shellbash shell,其主要功能是

Ø  命令记忆功能:

Ø  命令与文件不全功能

Ø  命名别名设置功能

Ø  作业控制,前台,后台控制

Ø  程序脚本

Ø  通配符

 

命令类型查询(type)

对于shell能够识别的变量分为:

内部命令:bash内置的命令

外部命令:来字外部的命令,非bash内置

 

语法:type [-tpa] name

选项与参数:不加任何参数是,会显示出是内部命令还是外部命令

-t:会已以下关键字说明命令的意义

         File:外部命令

         Alias:通过别名设置的命令

         Builtin:内置命令

-p:-如果后面接的是外部命令时才会显示完整文件名

-a:会有PATH变量定义的路径中,所有name命令列出来,包括alias

 

举例:

[root@localhost ~]# type ls
ls is aliased to `ls --color=tty'
[root@localhost ~]# type -t ls
alias
[root@localhost ~]# type cd 
cd is a shell builtin
[root@localhost ~]# type egrep
egrep is hashed (/bin/egrep)
[root@localhost ~]# type -t egrep
file
[root@localhost ~]# type -p egrep
/bin/egrep

 

路径与命令查找顺序

在我们系统中存在多个名字相同的名字,那么bash shell究竟使用的是哪个命令呢?其遵循的顺序如下:

1.  以相对/绝对路径来执行命令

2.  alias找到命令来执行

3.  bash内置命令来执行

4.  通过$PATH的顺序找到的第一个命令来执行

 

举例

[root@localhost ~]# alias echo='echo -n'
[root@localhost ~]# type -a echo
echo is aliased to `echo -n'
echo is a shell builtin
echo is /bin/echo
=>可以看到先找alias在内置命令 最后PATH

 

Bash的环境配置文件

当我们进如bash之后虽然我们什么也没有设置,但是系统的一些变量已经别名等信息就已经设置好了,这些信息就存在环境配置文件中,bash启动时就会读取这些文件,对配置信息进行加载和设置

 

环境配置文件分类

整体配置文件

个人配置文件

 

配置文件读取流程

用户输入完正确的用户名密码获得的bash首先会读取

1.       /etc/profile

这个文件设置的只要变量有PATH,MAIL,USER,HOSTNAME.HISTSIZE,接下来调用其他文件加载数据

2.       /etc/inputrc

3.       /etc/profile.d/*.sh

这个目录下的文件规定了bash的操作借口颜色,语系,公共别名等信息

4.       /etc/sysconfig/i18n

这个文件由/etc/profile.d/lang.sh调用复制设置语系

以上为整体配置文件,设置完成后开始设置个人配置文件

5.       ~/.bash_profile

~/.bash_profile,~/.bash_login ~/.profile三个文件只读取一个,而且顺序按照前面的顺序

root@localhost ~]# cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

在这个文件中将用户主目录添加到PATH中,并将PATH变为环境变量。并且还回去读取~/.bashrc文件(我通常将我个人的配置信息写到这里,如别名)

 

其他重要配置文件

/etc/man.config: 这个文件中记录了帮助信息在哪里

~/.bash_history:记录操作命令历史记录

~./bash_loyout:注销时系统做的事情记录在这里

 

读入环境配置文件(source)

环境配置文件只有bash在启动时读入,如果启动以后再修改就需要重新登录,才能让配置文件再一次被读入,source命令就是避免重新登录,使修改后的配置文件重新读入后立即生效

 

语法:source配置文件名

 

终端机环境设置

 

终端机中有的按键代表特殊的意义,如[backspace]代表删除,[ctrl+c]代表终止命令。在不同的Linux distributions中终端机环境设置不尽相同。Stty可以查看并设置这些命令

 

语法:stty –a

      stty name 热键

选项与参数:

-a:查看所有环境中所有按键设置

name:按键设置名称

 

举例:查看所有按键信息

[root@localhost ~]# stty -a
speed 38400 baud; rows 41; columns 143; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke


几个重要的内容:

Eof:代表输入结束

Erase:删除字符操作

Intr:终止目前命令

Kill:在提示符下,将正行命令删除

Quit:送出quit给正在运行的程勋

Start:暂停屏幕的输出

Stop:回复屏幕的输出

Susp: 暂停目前命令

 

举例2:修改按键信息

[root@localhost ~]# stty erase ^h
=>将删除字符按键变为[ctrl+h],此时[backspace]按键变成[ctrl+?]操作,
[root@localhost ~]# stty -a
speed 38400 baud; rows 41; columns 143; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;


 

通配符

Bash shell特点之一就是通配符,可以方便我们查找。

说明:通配符和正则表达式不是一个东西

 

常用的通配符:

*:代表0~n个任意字符

?: 代表一定有一个字符

[]:代表一定有一个括号内的字符

[-]代表一定是连续字符中的一个.例如:[0-9]代表一个是0-9中的一个字符。前提字符必须是连续的

[^]:^表示反向选择例如[^abc]代表一个非abc的字符

 

举例:

[root@ localhost ~]# LANG=C         <==由于与编码有关(字符连续),先配置语系

找出 /etc/ 底下以 cron 为开头的档名
[root@ localhost ~]# ll -d /etc/cron*    <==加上 -d 是为了仅显示目录而已

找出 /etc/ 底下文件名『刚好是五个字母』的文件名
[root@ localhost ~]# ll -d /etc/?????    

找出 /etc/ 底下文件名含有数字的文件名
[root@ localhost ~]# ll -d /etc/*[0-9]* 

找出 /etc/ 底下,档名开头非为小写字母的文件名:
[root@ localhost ~]# ll -d /etc/[^a-z]* 
0
0
分享到:
评论

相关推荐

    Linux学习笔记Linux学习资料Linux教程

    【linux学习笔记-16】shell管道重定向程序的实现.doc 【linux学习笔记-1】使用GDB调试简单的用户程序.doc 【linux学习笔记-2】父子进程共享文件描述符.doc 【linux学习笔记-3】文件操作(stat,chmod,umask).doc ...

    非常宝贵的LINUX学习笔记

    【linux学习笔记-1】使用GDB...【linux学习笔记-16】shell管道重定向程序的实现 【linux学习笔记--17】POSIX IPC——消息队列 【linux学习笔记--18】POSIX IPC——信号量 【linux学习笔记--19】POSIX IPC——共享内存

    尚硅谷Linux学习笔记(不包含shell)超级详细版

    我自己看完韩顺平老师在尚硅谷发布的新版的Linux的视频,看到了在Linux下安装Tomcat,JDK这个地方,不包含shell编程的笔记。因为以前我觉得Linux很难,所以一直想学会,这次笔记做得比较详细。另一个亮点是使用...

    linux运维学习笔记:企业Shell面试题总结-2.pdf

    linux运维学习笔记:企业Shell面试题总结-2

    linux运维学习笔记:企业Shell面试题总结-1.pdf

    linux运维学习笔记:企业Shell面试题总结-1

    linux脚本shell学习笔记

    shell学习基本命令,可以帮助初学者快速掌握较全面的shell脚本知识

    华为工程师linux的笔记-第5章.pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    Linux系统设计-Linux系统及shell编程 整理笔记

    Linux系统在科学计算、数据分析和机器学习等领域也有广泛应用。许多知名的科学计算软件都在Linux上开发和运行,Linux系统在各个领域都有广泛的应用,其强大的功能和灵活性使得它成为许多产品和服务的基础架构。

    华为工程师linux的笔记-第2章 .pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    linux运维学习笔记:Shell脚本书写规范.pdf

    linux运维学习笔记:Shell脚本书写规范

    Linux学习笔记【博文整理系列】

    学习linux的笔记,发到博文了,鉴于文档方便保存和查阅,发出来,免费的哈 博文来自http://blog.csdn.net/wklken,共12篇,类似手册,可快速练习和查阅,容易上手 文档列表: Linux笔记——vim常用操作及扩展补充...

    Linux和shell脚本学习笔记

    Linux学习笔记,Linux基础命令,shell脚本,正则表达式等学习笔记,欢迎下载!!

    linux学习笔记v1.0 - 1860平台指令.docx

    echo -e "AT\r\n" &gt;/dev/ttyUSB1 附录B: 1860平台使用命令 arm-linux-gcc -o wanfangzhu bd_daemon_new.c -lpthread -static ...adb shell chmod 777 /system/bin/wanfangzhu ./system/bin/wanfangzhu &

    linux运维学习笔记:Shell变量.pdf

    linux运维学习笔记:Shell变量

    华为工程师linux的笔记-第6章.pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    华为工程师linux的笔记-第7章.pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    华为工程师linux的笔记-第8章.pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    华为工程师linux的笔记-第9章.pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    华为工程师linux的笔记-第10章 .pdf

    Linux进阶篇总共包含9个章节,第15章到第38章学习内容分别包括:Linux性能优化、大数据量备份、Shell企业实战基础、Shell实战高级编程、自动化运维趋势、Puppet自动化运维实战、Ansible自动化运维实战、Jenkins企业...

    4412开发板学习笔记---Linux驱动的学习方法

    Linux内核中有上百个驱动,知识点多且杂,对于想学习驱动的同学来说,需要尽快掌握基础知识:如开发板的基本使用,硬件基础知识,开发环境的搭建,Linux常用工具,内核的编译以及烧写,Linux shell命令,C语言基础,...

Global site tag (gtag.js) - Google Analytics