什么是shell

Shell是系统的
        用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行 。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程。shell程序语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。

shell命令分为两类

内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多 
        外置命令,在文件系统的某个目录下,有个与命令名称相同的文件。

可以使用type 命令查看命令是file、alias还是builtin t

ype -a 列出当前命令可以如何执行

type -t 仅列出命令按照哪种方式执行

[root@server ~]# type -a useradd
useradd is /usr/sbin/useradd
[root@server ~]# type -t useradd
file
[root@server ~]#

可以通过环境变量PATH来让shell查看命令的可执行文件的路径

[root@server ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@server ~]#

shell中的变量

变量简单说就是让某一个特定字符串代表不固定的内容,变量可分为两类:环境变量(全局变量)和普 通变量(局部变量)
1、普通变量

普通变量也可称为局部变量,只能在创建它们的Shell函数或Shell脚本中使用,普通变量一般由开发者在 开发脚本程序时创建。
设置变量:
 变量命名的规则:只能使用数字、字母和下划线,且不能用数字开头 
变量名和变量值用“=”连接
等号两边不能有空格符
变量的赋值,一般有五种写法:

name=value
name1='value'
name_2="value"
_name_3=`cmd`
_na_me_4=$(cmd)

2、环境变量
环境变量也可称为全局变量,可以在创建它们的Shell 及其派生出来的任意子进程 Shell 中使用,环境变量又可分为自定义环境变量和 bash 内置的环境变量。
(1)bash内置的环境变量:用于定义 Shell 的运行环境,保证 Shell 命令的正确执行,Shell 通过环境 变量来确定登录用户名、命令路径、终端类型、登录目录等
(2)自定义环境变量:自定义环境变量可以在命令行中设置和创建,但用户退出命令时这些变量值就会 丢失。如果希望永久保存环境变量,可在用户家目录下的.bash_profile  或 .bashrc 文件中,或者全 局配置/etc/bashrc 或 /etc/profile  文件中定义,在将环境变量放入上述的文件中后,每次用户登 录时这些变量都将被初始化。
按照系统规范,所有环境变量的名字均采用大写形式
在命令行中设置环境变量:

export 变量名=value
变量名=value ;
export 变量名
declare -x
变量名=value

在文件中设置环境变量:永久生效要用root账户在.bashrc;bashrc;.bash_profile;bash_profile这四个文件中添加你想设置的永久变量

[root@server ~]# ll -a /root
total 84-rw-r--r--.  1 root root   176 Aug 12  2018  .bash_profile
-rw-r--r--.  1 root root   227 Oct 30 03:30  .bashrc

显示与取消变量
(1)通过 echo 或 printf 打印变量

[root@server ~]# echo $HOME
/root
[root@server ~]# echo $UID
0
[root@server ~]# echo $PWD
/root
[root@server ~]# echo $SEHLL[root@server ~]# echo $USER
root
[root@server ~]# printf "HOME"
HOME[root@server ~]# printf "HOME\n"
HOME
[root@server ~]# printf "PWD\n"
PWD
[root@server ~]#

(2)显示默认的环境变量

[root@server ~]# env
HOSTNAME=server
XDG_SESSION_ID=8
TERM=xterm
[root@server ~]#set
BASH=/bin/bash
[root@server ~]# declare |head
BASH=/bin/bash

(3)用 unset 消除本地变量和环境变量

[root@server ~]# echo $USER
root
[root@server ~]# unset USER
[root@server ~]#echo $USER
[root@server ~]#

 Linux 中的特殊符号

符号 功能 说明
可使用分号分隔多条命令 在一行上输入和执行多条较短的命令时可以使用;来分割命令
* 匹配任意0或多个字符 不能用于创建文件
匹配任意单个字符 不能用于创建文件
[] 匹配方括号中的任意一个字符,表示范围可以用“-” 不能用于创建文件
[^]或[!] 匹配方括号中的任意一个字符或数字后进行取反 用于查找和删除文件
{string,string} 匹配括号中的任意一个字符串,表示一个范围时,字符串之间可以加入“-” 用于创建、查看、删除文件
\ 使\后面的特殊字符失去效果 可以在命令行后加一个\,再按回车,表示并不执行该命令而是表似换行
` 反引号,一般用于引用命令,执行的时候反引号里面的命令会被执行,
' 单引号,将单引号内的所有内容原样输出 所有特殊字符在单引号内都会失去特殊含义
双引号,除了几个特殊字符外,双引号内的内容都原样输出

命令别名

别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。 
语法:alias 别名=’原命令 [选项]…… [参数]……’

查看已经设置的命令别名

[root@server ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias hello='echo hello everyone >> /file.txt'
alias hh='touch ~/file1'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias shuaxin='touch /file.txt'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@server ~]#

删除命令别名

[root@node13 ~]#unalias 别名

别名的永久化也需要进入.bashrc;bashrc;.bash_profile;bash_profile这四个文件中进行配置。

命令历史

history 命令可以查阅命令历史记录 ,也可在命令行利用向上或向下光标键来进行查询。 
语法:history [选项] [参数]

选项:
number:显示最近number条命令历史
-c:清空当前历史命令
-a  [file]:后面没跟文件时,默认将缓冲区中历史命令写入~/.bash_history中 -r [file]:将历史命令文件中的命令读入当前历史命令缓冲区中 
-w:将当前历史命令缓冲区命令写入历史命令文件中;

[root@server ~]# history 5497  declare |head498  echo $USER499  alias500  alias --help501  history 5

命令行的快捷键

ctrl+d 输入已结束;也可当做exit
ctrl+c 键盘中断请求,终止当前的命令
Ctrl+a 移动到当前行的开头
Ctrl+e 移动到当前行的结尾
Ctrl+l 清屏==clear
Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身) Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身) ctrl+←/→  光标在命令行中按照单词跳转

以下是有关shell的命令使用

1、当前用户永久生效的命令别名 
(1)写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello,everyone写入文 
件/file.txt中。 
(2)写一个命令别名为shuaxin,实现的功能为每输入一次该命令,file.txt文件的所有时间就更新为当前 时间。

(1)写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello,everyone写入文 
件/file.txt中。

先进入vim界面

[root@server ~]# vim .bashrc

随后添加hello的vim命令

alias hello="echo hello everyone >> /file.txt"
[root@server ~]# source .bashrc

验证

[root@server ~]# hello
[root@server ~]# cat /file.txt
hello everyone
[root@server ~]#

(2)写一个命令别名为shuaxin,实现的功能为每输入一次该命令,file.txt文件的所有时间就更新为当前 时间。

进入vim编辑界面

[root@server ~]# vim .bashrc

在vim界面中添加相关命令

alias shuaxin='touch /file.txt'
[root@server ~]# source .bashrc

验证

[root@server ~]# ll /file.txt
-rw-r--r--. 1 root root 15 Oct 30 03:33 /file.txt
[root@server ~]# shuaxin
[root@server ~]# ll /file.txt
-rw-r--r--. 1 root root 15 Oct 30 03:36 /file.txt
[root@server ~]#

2、所有用户生效的命令别名 
写一个所有用户都生效的命令别名为hh,每一个用户输入这个命令之后可以在该用户家目录下创建一个file1 文件。

先进入vim编辑界面

在vim界面中加入命令

alias hh='touch ~/file1'
[root@server ~]# source /etc/bashrc

验证

[root@server ~]# hh
[root@server ~]# ll
total 16
-rw-r--r--. 1 root root  197 Oct 30 03:25 '!'
-rw-------. 1 root root 1382 Oct 16 12:54  anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Desktop
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Documents
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Downloads
-rw-r--r--. 1 root root    0 Oct 30 03:40  file1
-rw-r--r--. 1 root root    0 Oct 24 07:39  file-10-24
-rw-r--r--. 1 root root 1654 Oct 16 13:04  initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Music
-rw-r--r--. 1 root root 3283 Oct 28 11:28  myfile.zip
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Pictures
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Public
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Templates
drwxr-xr-x. 2 root root    6 Oct 16 13:28  Videos
[root@server ~]# su - rehl
[rehl@server ~]$ hh
[rehl@server ~]$ ll
total 0
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Desktop
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Documents
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Downloads
-rw-rw-r--. 1 rehl rehl 0 Oct 30 03:41 file1
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Music
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Pictures
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Public
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Templates
drwxr-xr-x. 2 rehl rehl 6 Oct 16 13:09 Videos
[rehl@server ~]$

3、命令历史:查看命令历史,并且调用第十行命令

首先查看历史命令

[root@server ~]# history1  cd2  pwd3  su  -  rhel4  exit5  su  rhel6  su - rhel7  logout8  su - rhel9  su - rehl10  exit11  hostnamectl set-hostname other12  hostnamectl set-hostname server

使用第10行的命令

[root@server ~]# history !10
history exit
-bash: history: exit: numeric argument required
[root@server ~]#

或者直接打!10也可以执行第十行 的命令

linux的命令解释器-----shell相关推荐

  1. linux shell编程 ppt,Linux常用命令与Shell基本编程.ppt

    Linux常用命令与Shell基本编程.ppt Shell 脚本基本编程,无线产品部 katanazhang 2009-11-09,课程目标,linux 常用命令 shell 脚本编程 awk 的用法 ...

  2. Linux常用命令和shell命令

    Linux常用命令和shell命令 1. 文件目录 创建目录 mkdir 目录名1 目录名2 ... 创建多级目录 mkdir -p 目录名 查看当前所在目录 pwd 创建文件 touch 文件名 删 ...

  3. linux常见命令以及shell入门编程(笔记总结记录)

    linux常见命令以及shell入门编程(笔记总结记录) 文章目录 linux常见命令以及shell入门编程(笔记总结记录) 一.linux常见命令 1.不常用 2.常用 3.数据查找处理相关 1.g ...

  4. linux用户命令解释器,Linux下的命令解释器 ash.exe

    (1)简介 ash --a shell 这是由Kenneth Almquist在1989年编写的,ash是Linux下的许多命令解释器中的一个,它的许多特性接近于SYSTEM V的shell. (2) ...

  5. Linux高级命令和Shell编程

    1.Linux高级命令 该章节的所有操作都在/export/data/shell目录进行,请提前创建该目录. mkdir -p /export/data/shell/ 1.1.重定向命令 1.重定向& ...

  6. linux简单命令解释器设计,Linux环境下模拟实现命令解释器

    在Linux环境下模拟实现命令解释器 一.程序概述 1.进入系统概述 本次课程设计是在红帽Linux发行版(Red Hat Enterprise Linux AS release 4 (Nahant ...

  7. Linux常用命令及Shell的简单介绍

    一.linux命令   1.查看指令的参数搭配: man 指令名称   2.基础指令 ls  列出当前目录下的所有文档的名称(文档指的是文件和文件夹) 常用参数搭配: ls -l 列出文档详细信息 l ...

  8. linux ulimit命令 控制shell执行程序的资源

    Linux ulimit命令用于控制shell程序的资源. ulimit为shell内建指令,可用来控制shell执行程序的资源. 语法 ulimit [-aHS][-c <core文件上限&g ...

  9. Linux从头开始学--学习笔记9知识点补充-ubuntu,centos;在linux上创建c程序;linux基础命令,shell命令,vi命令,man帮助手册

    这是我从头开始学习Linux的学习笔记,后续还会更新. 记录自己的技术成长,也希望和大家分享交流,欢迎关注~ 本笔记为coursera网站课程<Linux for Developers>的 ...

最新文章

  1. oracle挂堎,Oracle 冷拷备实例挂到新ORACLE时应注意问题。
  2. 实现nginx上配置免费证书Let's Encrypt
  3. Laravel/Lumen搭建服务器性能测试
  4. Uva 10537 过路费
  5. junit 测试遇上java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 错误
  6. LeetCode练习及自己理解记录(1)
  7. SiameseRPN++分析
  8. 警惕 十种短命的生活方式
  9. apache gobblin mysql_incubator-gobblin-master
  10. 前端自动化打包工具--webpack
  11. PX4避障和轨迹规划(3DVFH*)
  12. html异步 post,Jquery中Ajax/Post同步和异步请求
  13. 用友u8怎么导出凭证_用友软件如何导出凭证模板?
  14. 接口测试用例设计 - 实战篇
  15. c语言程序设计 点菜系统,C语言点餐系统
  16. php怎么画五星红旗,PHP_php基于GD库画五星红旗的方法,本文实例讲述了php基于GD库画 - phpStudy...
  17. 关于一起疑似脚本注入安全事件过程记录
  18. SRC挖掘---web开放重定向漏洞-2day
  19. 美国大学计算机科学博士生排名,usnews美国大学研究生计算机科学专业完整排名...
  20. 边缘计算系统逻辑架构:云、边、端协同,定义及关系

热门文章

  1. 通过SqlDbx导出*.sql,然后倒入到SQLServer2005
  2. Python脚本把支付宝和微信账单数据转换成随手记APP的excel标准模板导入
  3. Did China Eat America’s Jobs?
  4. java查看jvm内存使用情况
  5. k2000显卡相当于gtx_电脑中的显卡是什么样干什么样的?NVDIA推出的两块Quadro显卡K1000M和K2000M性能究竟差多少...
  6. rtx2060什么水平_显卡新秀:RTX2060性能评测
  7. Typora最常用的记笔记教程
  8. 前端之JS事件events
  9. IDEA修改项目war包名称
  10. 使用docker搭建nodebb论坛