linux的命令解释器-----shell
什么是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相关推荐
- linux shell编程 ppt,Linux常用命令与Shell基本编程.ppt
Linux常用命令与Shell基本编程.ppt Shell 脚本基本编程,无线产品部 katanazhang 2009-11-09,课程目标,linux 常用命令 shell 脚本编程 awk 的用法 ...
- Linux常用命令和shell命令
Linux常用命令和shell命令 1. 文件目录 创建目录 mkdir 目录名1 目录名2 ... 创建多级目录 mkdir -p 目录名 查看当前所在目录 pwd 创建文件 touch 文件名 删 ...
- linux常见命令以及shell入门编程(笔记总结记录)
linux常见命令以及shell入门编程(笔记总结记录) 文章目录 linux常见命令以及shell入门编程(笔记总结记录) 一.linux常见命令 1.不常用 2.常用 3.数据查找处理相关 1.g ...
- linux用户命令解释器,Linux下的命令解释器 ash.exe
(1)简介 ash --a shell 这是由Kenneth Almquist在1989年编写的,ash是Linux下的许多命令解释器中的一个,它的许多特性接近于SYSTEM V的shell. (2) ...
- Linux高级命令和Shell编程
1.Linux高级命令 该章节的所有操作都在/export/data/shell目录进行,请提前创建该目录. mkdir -p /export/data/shell/ 1.1.重定向命令 1.重定向& ...
- linux简单命令解释器设计,Linux环境下模拟实现命令解释器
在Linux环境下模拟实现命令解释器 一.程序概述 1.进入系统概述 本次课程设计是在红帽Linux发行版(Red Hat Enterprise Linux AS release 4 (Nahant ...
- Linux常用命令及Shell的简单介绍
一.linux命令 1.查看指令的参数搭配: man 指令名称 2.基础指令 ls 列出当前目录下的所有文档的名称(文档指的是文件和文件夹) 常用参数搭配: ls -l 列出文档详细信息 l ...
- linux ulimit命令 控制shell执行程序的资源
Linux ulimit命令用于控制shell程序的资源. ulimit为shell内建指令,可用来控制shell执行程序的资源. 语法 ulimit [-aHS][-c <core文件上限&g ...
- Linux从头开始学--学习笔记9知识点补充-ubuntu,centos;在linux上创建c程序;linux基础命令,shell命令,vi命令,man帮助手册
这是我从头开始学习Linux的学习笔记,后续还会更新. 记录自己的技术成长,也希望和大家分享交流,欢迎关注~ 本笔记为coursera网站课程<Linux for Developers>的 ...
最新文章
- oracle挂堎,Oracle 冷拷备实例挂到新ORACLE时应注意问题。
- 实现nginx上配置免费证书Let's Encrypt
- Laravel/Lumen搭建服务器性能测试
- Uva 10537 过路费
- junit 测试遇上java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 错误
- LeetCode练习及自己理解记录(1)
- SiameseRPN++分析
- 警惕 十种短命的生活方式
- apache gobblin mysql_incubator-gobblin-master
- 前端自动化打包工具--webpack
- PX4避障和轨迹规划(3DVFH*)
- html异步 post,Jquery中Ajax/Post同步和异步请求
- 用友u8怎么导出凭证_用友软件如何导出凭证模板?
- 接口测试用例设计 - 实战篇
- c语言程序设计 点菜系统,C语言点餐系统
- php怎么画五星红旗,PHP_php基于GD库画五星红旗的方法,本文实例讲述了php基于GD库画 - phpStudy...
- 关于一起疑似脚本注入安全事件过程记录
- SRC挖掘---web开放重定向漏洞-2day
- 美国大学计算机科学博士生排名,usnews美国大学研究生计算机科学专业完整排名...
- 边缘计算系统逻辑架构:云、边、端协同,定义及关系
热门文章
- 通过SqlDbx导出*.sql,然后倒入到SQLServer2005
- Python脚本把支付宝和微信账单数据转换成随手记APP的excel标准模板导入
- Did China Eat America’s Jobs?
- java查看jvm内存使用情况
- k2000显卡相当于gtx_电脑中的显卡是什么样干什么样的?NVDIA推出的两块Quadro显卡K1000M和K2000M性能究竟差多少...
- rtx2060什么水平_显卡新秀:RTX2060性能评测
- Typora最常用的记笔记教程
- 前端之JS事件events
- IDEA修改项目war包名称
- 使用docker搭建nodebb论坛