01 . Shell详细入门介绍及简单应用

Shell简介

Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 解释处理Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出显示到屏幕给用户.

Shell分为两类

图形界面 Shell(GUI Shell)

GUI为 Unix 或者类 Unix 操作系统构造一个功能完善、操作简单以及界面友好的桌面环境。主流桌面环境有 KDE,Gnome 等。

命令行界面 Shell(CLI Shell)

CLI是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。

在 Linux 系统上主流的 CLI 实现是 Bash,是许多 Linux 发行版默认的 Shell。还有许多 Unix 上Shell,例如 tcsh、csh、ash、bsh、ksh 等。

如何查看系统支持的shell

一个系统中可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的,但是最常用的shell还是/bin/bash

cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
Shell命令基本格式

shell命令可以分为两大类

  • 一类是内置命令,即系统自带的命令,如ls,这是显示文件夹下文件的命令;

  • 另一类是外置命令,如vi,是调用vi编辑器的命令,而vi编辑器是一个软件,这类命令由独立的程序实现的命令,用于对linux的扩展,是外置命令

shell命令格式如下

命令名 [选项] <参数1> <参数2>…
# 方括号内为可选的,命令可能有0个或者多个参数。
shell命令小知识

1.shell自动补齐和历史记录

shell会在用户输入命令前几个字母后按 键自动补齐,如果有多个候选命令会显示出全部命令。
shell会自动记录用户使用的命令,用户可以按 上 下 键 来查看。

2.shell提示符

shell提示符有两种,一种是 $结尾,为普通用户权限下的提示符号,一种是#结尾,为管理员权限,用户可以用su命令切换用户,如下图:

3.输入输出重定向

shell命令是控制台命令,使用标准输入和输出设备,即从键盘接受输入,将结果显示在显示器上。重定向可以将shell的输入输出重定向到文件或设备。
输入重定向符号为”<”,输出重定向符号为”>”和”>>”。如果shell命令 “X”在执行过程中,需要从控制台获得数据,那么执行”X < file”可以从file文件中获得所需数据。如果X在执行过程中产生数据,可以用 “X > file”和”X >> file”将结果输入到文件。”>”为覆盖输入,”>>”为追加输入

4.管道

linux系统中,管道是一种先进先出的单数据通道,利用管道符号”|”可以将多个命令组合到一起,把一个命令的输出传递给下一个命令作为输入,最终得到经过多个命令一次处理的结果。如,用ll和grep结合来查找当前目录是否有这个文件:

什么是Shell脚本

脚本就是shell命令组成的文件,这些命令都是可执行程序的名字,脚本不用编译即可通过解释器解释运行。
 它是一种解释型语言,我们可以用shell脚本操存执行动作,用脚本判定命令的执行条件,用脚本来实现动作的批量执行

Shell简单使用

脚本开头

为了便于脚本的使用者可以快捷的了解到脚本的用途与其使用的解释器,通常我们需要在脚本的开头加上注释。

#!/bin/bash		 脚本使用的解释器,通常用幻数“#!”指定
# Autho:				脚本作者
# Create_date		脚本创作时间
# Mail:					脚本作者联系方式
# Description:	脚本作用解释
# Version:			脚本的版本
脚本内容

在shell脚本中可以出现任何系统命令,输入你想要执行的命令即可,我们创建一个hello.sh

cat hello.sh
#!/bin/bash		 脚本使用的解释器,通常用幻数“#!”指定
# Autho:				脚本作者
# Create_date		脚本创作时间
# Mail:					脚本作者联系方式
# Description:	脚本作用解释
# Version:			脚本的版本
echo hello
shell脚本的执行方法

首先我们给脚本执行权限

chmod +x 脚本路径/脚本名

执行方式1: 输入脚本的绝对路径或者相对路径

# 注意: 如果不给+x权限是不能这种方式执行脚本的
# 绝对路径
/root/test.sh 
hello

# 相对路径
./test.sh 
hello

执行方式2: sh +脚本

sh /root/test.sh
hello

执行方式3: source + 脚本

source /root/test.sh
hello

执行方式4: . + 脚本

 . test.sh 
hello

区别

# 第一种和第二种会新打开一个bash,不同bash中的变量无法共享,
# 第三种和第四种是直接使用当前运行环境作为解释器运行环境
sudo 执行脚本带不出环境变量
# 有时候sudo ./test.sh执行脚本找不到一些java环境变量,可以通过
sudo -E ./test.sh

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


系ubuntu 下面打开终端输入:sudo apt-get install sendmail一般就安装完成噶啦跟住进入 /etc/mail/目录输入:m4 sendmail.mc &gt; sendmail.cf意思系跟住.mc文件 生成 sendmial.cf文件输入呢个命令:ps aux | g
依家我有1个软件goagent目录(大家懂得) 放在/home/gateman/Programs/ 下 1. proxy.py 入面有1个 proxy.py 文件 放在/home/gateman/Programs/goagent/local/ 入面 2.breakwall.sh 我在 proxy.p
其实我想讲的是 cp -L关于-L参数的解释:-L, --dereference always follow symbolic links in SOURCE意思是如果复制目标是1个软链接,则复制链接的目标 不是链接本身做个例子: 例如 ~/tmp/fo1 入面有1个c.txt 文件 和 指向他的软
原地址:http://www.rjgc.net/control/content/content.php?nid=4418 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/do
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。实例:用live CD ubuntu假设你的
简单解析下, stdin就是标准输入, stdout就是标准。举个例子, 在当前我要打包1个文件夹 /var/log/ 到当前目录下,并用zip压缩,那么我们可以分步执行#tar -cvf log.tar /var/log/#zip -r log.tar.zip log.tar#rm -rf log
转自:http://man.ddvip.com/linux/Mandrakelinuxref/process-priority.html系统中运行的每个进程都有一个优先级(亦称“nice 值”),其范围从 -20 (最高优先级)到 19 (最低优先级)。默认情况下,进程的优先级是 0 (“基本”调度
str=&quot;/home/gateman&quot; if [ ${str:0:1} = &quot;/&quot; ]; then echo &quot;yes&#39;fi ${str:0:1} 中0表示从第几个字符开始,1表示截取多长
转自:http://kwokchivu.blog.51cto.com/1128937/694347 在RedHat系统下用usermod 命令可把某用户添加进多个附属组,默认情况下,一次性添加多个附属组可用以下方式来添加: usermod -G 附属组1,附属组2,...,附属组X 用户名 但在添加
有个文件 test.txt 内容如下:bash-3.00$ cat test.txt user user user_hiuser #注:呢行系空行T JGATEMANGATTTTTEMANGABBEMANAAABbash-3.00$下面介绍下常用的通配符 配合grep 命令:1. &quot;.&q
linux系统为每1个文件都分配有i索引节点(inode),系统根据呢d节点从磁盘找出数据。 一般来讲,每1个文件名(包含全路径)实际上都链接住1个i索引节点。inode实际上系乜咧? 其实可以算系1个指向磁盘具体位置(柱面,扇区之类)的指针, 系统分析某个文件的inode,得出磁盘柱面,扇区等数据
grep 可以立即为筛选, 一般的用法系 grep + 要查询的字段 + 文件(或者内容 例如| 传递既内容)1.grep + 要查询的字段 + 文件gateman@GPC:~/shell/SQL_GSI$ grep OID a.sqlWHERE OID=@BuildNOWHERE OID INWH
原文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/index.html开始之前人类大脑对文字的处理是平面式的,所以我们浏览文章、查找资料或者重构代码,要么是横向读,要么是纵向读,要么使用搜索功能,将文字作为一个平面整体。而在
PS:偶很喜欢用scp这个命令来传输数据。scp命令跟cp命令类似,只不过cp命令是在同一台机器上用的,scp是在两台机器上复制传输数据的命令。scp实质相当于利用SSH协议来传输数据的cp命令。 用法举例: 1、复制远程服务器的文件到本地: scp -P888 root@120.18.50.33:
打开终端,进入/bin/ls 一下会见到 bash sh 呢两个文件。其实距地系两个唔同既shell 解析器。如果在脚本a.sh 开头写入#!/bin/sh那么执行./a.sh 时候 就相当于 sh a.sh同理 开头写入#!/bin/bash执行./a.sh 时候 就相当于 bash a.sh如果
find查找文件的时候排除某个或几个文件或目录转自:http://www.cnblogs.com/starspace/archive/2008/10/20/1315380.html比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件find /usr/sam -path &quot;/
假设有变量 var=http://www.google.com/test.htm一 # 号截取,删除左边字符,保留右边字符。echo ${var#*//}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.goog
转自: http://edyfox.codecarver.org/html/_vimrc_for_beginners.htmlVIM 中可供用户定制的选项非常非常多,作为初学者,我们没有必要了解这么多东西。下面,滇狐简单列出了一些最常用的配置项,大家可以根据自己的需要将这些内容添加到自己的 .vim
转自:http://www.einit.com/user1/11/archives/2006/3603.htmlUnix/Linux下一般想让某个程序在后台运行,很多都是使用 &amp; 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysq
首先, mount是类unix系统, 挂载设备到1个文件夹的操作命令, 注意系设备阿正常来讲,mount 是不能挂在文件夹到文件夹的。例如, 在我的~/tmp/ 目录中有两个文件夹fo1 fo2其中fo1 中有3个文件a.txt b.txt c.txt fo2 有4个 e.txt d.txt e.t