概念一:什么是shell

用户用来和内核交互的东西,他相当一个接口,我们通过这个接口调用别的程序,然后他调用内核来帮我们完成程序功能。shell有很多种类,他们之间有部分区别,Linux默认使用bash,下面也都按bash shell来介绍。

概念二:bash shell的基本功能

执行命令:基本功能不废话。

命令记忆功能:执行过的命令都会被记录在~/.bash_history这个文件里,这个文件在每次注销系统的时候更新,默认记录1000条,黑客比较喜欢看这个文件,能知道你的一些敏感信息。

补全功能:输入命令或文件可用tab键来补全。

设置命令别名:用alias命令设置。

作业控制:控制任务前后台执行。

程序脚本:一会儿介绍。

通配符:用于字符串相关处理。

概念三:shell的变量功能。

1,设置变量直接用"="赋值就行了,不用声明类型,等号两边不要有空格。

2,取变量内容可用的格式有"$variable"、"${variable}",打印变量的值用echo命令,取消一个变量用unset。

3,变量只能是英文字母开头包含字母和数字,特殊字符要用"\"转义为一般字符。

4,双引号内的变量若是加上了$就能取得变量内容,而单引号内的不会。

5,export命令可以将自定义变量转变为环境变量,自定义变量不会被子进程继承也不会留给父进程,但是环境变量都可以。

6,通常系统默认变量都是全大写,自己设置的会用小写。(仅仅是习惯)

常接触的系统环境变量

HOME:存了主文件夹的路径。

SHELL:目前环境使用的shell的种类。

HISTSIZE:历史命令的最大记录条数。

PATH:执行文件查找路径。

LANG:当前环境的语系。

RANDOM:用户可以用这个变量获取一个0~32767的随机数(bash环境下)

PS1:命令提示符变量。

$:目前这个shell的线程代号。

?:上一个执行命令的回传码。

变量的相关操作

读取变量内容:echo $variable   或者  echo ${variable}

删除变量:unset variable

将自定义变量换成环境变量:expert variable

查看所有变量:set

读入来自键盘的输入:

read [-pt] variable  

-p后面接提示信息。  

-t后面接等待用户输入的时间。

声明变量的类型:

declare [-aixrp] variable

-a  声明为数组类型变量。

-i  声明为整数类型。

-x  声明为环境变量。

+x  将环境变量变成自定义变量。

-r  设置为只读类型。

-p  列出变量类型。

变量内容的删除和替换(图片来自网络http://www.360doc.com/content/12/0618/11/2245786_218855156.shtml

bash shell的操作环境相关

1,命令查找顺序

  以相对路径或者绝对路径来执行命令。

  有alias找到该命令来执行。

  由bash内置的命令来执行。

  通过$PATH这个变量的顺序查找出第一个来执行。

 

2,bash的登陆与欢迎信息。

  登陆信息存放在/etc/issue内,通过telnet登陆的登陆信息存放在/etc/issue.net内

  欢迎信息存放在/etc/motd内。

3,bash的环境配置文件。

  之前用命令设置的命令别名和变量名在我们退出Linux后就会失效,若想一直保持这种设置,必须写入bash的环境配置文件。

  关于配置文件的加载是有些复杂的。

  首先shell配置分为login shell与non-login shell,输入账号后打开的shell就是login shell

  login shell:先读取/etc/profile再读取~/.bash_profile或者~/.bash_login或者~/.profile。其中/etc/profile还会调用别的文件。

  nonlogin shell:只读/etc/profile。

  当我们修改了某个配置文件想直接生效的时候可以用source命令。

4,终端机的环境设置

  stty:可以用来修改一些常用功能对应的按键。

  set:设置命令输入输出环境。

5,bash通配符(5与6的图片来源于网络资源)

6,bash特殊符号(文档名尽量不要包含)

linux——(7)了解shell的更多相关文章

  1. Linux中的shell

    shell的含义: 首先shell的英文含义是"壳": 它是相对于内核来说的,因为它是建议在核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核. Li ...

  2. linux 学习10 shell 基础

    10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

  3. linux下的shell运算(加、减、乘、除)

    linux下的shell运算(加.减.乘.除) 标签: linuxshell运算加减乘除 2014-03-12 16:25 15127人阅读 评论(0) 收藏 举报 分类: linux(17) ((i ...

  4. 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...

  5. [转] 关于linux下通过shell命令(自动)修改用户密码

    关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...

  6. 时隔两年最近再次折腾opensuse 的一些笔记 - opensuse linux java service shell

    时隔两年最近再次折腾opensuse 的一些笔记 - opensuse linux java service shell opensuse 一些常用命令:    service xxx start/s ...

  7. Linux生产服务器Shell脚本分享

    Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...

  8. linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)

    程序猿都非常懒,你懂的! 近期在开发中,须要用到server的ip和mac信息.可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题.以下是在windows系统上, ...

  9. (原创)鸟哥linux学习script shell相关笔记

    在使用鸟哥linux进行script shell学习的过程中碰到一些不太明白的知识点,在这里进行一些记录 1. [root@www scripts]# vi sh03.sh #!/bin/bash # ...

  10. linux基础之Shell Script入门介绍

    本文介绍下,学习shell script编程的入门知识,通过几个入门实例,带领大家走进shell script的神圣殿堂,呵呵,有需要的朋友参考下. 本文转自:http://www.jbxue.com ...

随机推荐

  1. 「LibreOJ β Round #4」多项式 (广义欧拉数论定理)

    https://loj.ac/problem/525 题目描述 给定一个正整数 kkk,你需要寻找一个系数均为 0 到 k−1之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x)modk= ...

  2. uva 1636 Headshot

    https://vjudge.net/problem/UVA-1636 首先在手枪里随机装一些子弹,然后抠了一枪,发现没有子弹.你希望下一枪也没有子弹,是应该直接再抠一枪(输出SHOOT)呢,还是随机 ...

  3. CF864 E DP 输出路径

    n个物品有Deadline,拿物品需要花费时间,问取得最大价值的方案. 本质是个01背包,先按时间排序,然后把花费的时间作为背包就行了. 主要就是找方案,倒过来找发生转移的就行了. 太菜了真的不会打C ...

  4. C++类四个默认函数&深复制&浅复制

    学习C++语言的同学都知道,C++中类是有默认的几个函数的,主要是有四个函数: 四个函数 默认构造函数:A(void),无参构造函数 拷贝(复制)构造函数:A(const A&a).用一个对象 ...

  5. (转)使用Excel批量给数据添加单引号和逗号

    在使用PLSQL连接oracle数据库处理数据的过程中,常用的操作是通过ID查询出数据,ID需要附上单引号,如果查询的ID为一条或者几条,我们手动添加即可,但是如果是几百条.几千条的话,就需要使用一些 ...

  6. .NET Core get started on Ubuntu 14.04

    昨天.NET Core 1.0 正式发布了,所以尝尝鲜. 根据官方介绍页面的步骤: 步骤1. sudo sh -c 'echo "deb [arch=amd64] https://apt-m ...

  7. JavaScript Promises 实现框架一览及对比

    In my previous post in Danish I looked at how to perform asynchronous calls by using promises. Now t ...

  8. jQuery插件ASP.NET应用之AjaxUpload

    本次使用AJAXUPLOAD做为上传客户端无刷上传插件,其最新版本为3.9,官方地址:http://valums.com/ajax-upload/ 在页面中引入 jquery.min.1.4.2.js ...

  9. 我的Mac使用笔记

    此篇记录mac使用相关的一些东西,不断更新中... 1.Mac 安装homebrew : https://brew.sh/index_zh-cn.html /usr/bin/ruby -e " ...

  10. 20、什么样的项目适合Web自动化测试

    1.什么是Web自动化测试?概念:让程序代替人为自动验证Web项目功能的过程 2.什么Web项目适合做自动化测试 1.需求变动不频繁 2.项目周期长 3.项目需要回归测试 3.如阿进行Web自动化测试 ...