Linux指令和shell脚本

一、关于Shell

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

shell分类:

一:图形界面shell(Graphical User Interface shell 即 GUI shell)

例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。

二:命令行式shell(Command Line Interface shell ,即CLI shell)

例如:

在Unix/linux中主要有:

Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
TENEX/TOPS C shell ( tcsh)

MS-DOS系统:

cmd.exe/ 命令提示字符(Windows NT 系统)
Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统)

传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。

交互式与非交互式shell

shell提供了你与操作系统之间通讯的方式。 这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。

交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。

shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

二、常用指令

1、文件管理

cat 命令:

用于连接文件并打印到标准输出设备上

cat [-AbeEnstTuv] [--help] [--version] fileName

ex:把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

cat -b textfile1 textfile2 >> textfile3

类似的命令:echo仅用于输出命令后面的字符串到标准输出设备上。

diff命令:

用于比较文件的差异,以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]

mv 命令:

用来为文件或目录改名、或将文件或目录移入其它位置。

mv [options] source dest
mv [options] source... directory

参数说明

  • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
  • -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;

rm命令:

用于删除一个文件或者目录。

rm [options] name...

参数

  • -r 将目录及以下之档案亦逐一删除。

直接删除当前目录下的所有文件及目录,命令行为:

rm -rf * 

cp命令:

主要用于复制文件或目录。

cp [options] source dest

cp [options] source... directory

2、磁盘管理

cd命令:

用于切换当前工作目录至 dirName(目录参数)。

其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

另外,"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,"…" 则表示目前目录位置的上一层目录。

cd [dirName]
  • dirName:要切换的目标目录。

du命令:

用于显示目录或文件的大小。

du会显示指定的目录或文件所占用的磁盘空间。

ex:以以K,M,G为单位,显示test文件的大小(–human-readable)

du -h test

mkdir命令:

用于建立名称为 dirName 之子目录。

mkdir [-p] dirName

参数说明

  • -p 确保目录名称存在,不存在的就建一个。

rmdir命令:

删除空的目录。

rmdir [-p] dirName

参数

  • -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

tree命令:

用于以树状图列出目录的内容。

执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]

ls命令:

用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

 ls [-alrtAFR] [name...]

3、系统管理

shutdown命令:

可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。

使用权限:系统管理者。

shutdown [-t seconds] [-rkhncfF] time [message]

参数说明

  • -t seconds : 设定在几秒钟之后进行关机程序。
  • -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
  • -r : 关机后重新开机。
  • -h : 关机后停机。
  • -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
  • -c : 取消目前已经进行中的关机动作。
  • -f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。
  • -F : 关机时,强迫进行 fsck 动作。
  • time : 设定关机的时间。
  • message : 传送给所有使用者的警告讯息。

su命令:

用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

使用权限:所有使用者。

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

参数说明

  • -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
  • -m -p 或 --preserve-environment 执行 su 时不改变环境变数
  • -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
  • -s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
  • –help 显示说明文件
  • –version 显示版本资讯
  • - -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
  • USER 欲变更的使用者帐号
  • ARG 传入新的 shell 参数

变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)(不加 - 则不改变环境)

su - clsung

sudo命令:

以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

使用权限:在 /etc/sudoers 中有出现的使用者。

ps命令:

用于显示当前进程 (process) 的状态。

ps [options] [--help]

ex:显示当前全部进程

ps -A 显示进程信息

kill命令:

用于删除执行中的程序或工作。

kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

4、系统设置

passwd命令:

用来更改使用者的密码

passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

必要参数

  • -d 删除密码
  • -S 显示密码信息

修改用户信息

passwd runoob  //设置runoob用户的密码
Enter new UNIX password:  //输入新密码,输入的密码无回显
Retype new UNIX password:  //确认密码
passwd: password updated successfully

export 命令:

用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作

export [-fnp][变量名称]=[变量设置值]

参数说明

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。

set 用来显示本地变量
env 用来显示环境变量
export 用来显示和设置环境变量

5、备份压缩

gzip命令:

用于压缩文件。

gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。

gzip [-acdfhlLnNqrtvV][-S &lt;压缩字尾字符串&gt;][-&lt;压缩效率&gt;][--best/fast][文件...] 
gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-&lt;压缩效率&gt;][--best/fast][目录]

参数

  • -q 不显示指令执行过程。
  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
  • -v 显示指令执行过程或显示版本信息。
  • -d或–decompress或----uncompress  解开压缩文件。

tar命令:

用于备份文件。

tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]

参数

  • -x或–extract或–get 从备份文件中还原文件。
  • -c或–create 建立新的备份文件。
  • -t或–list 列出备份文件的内容。
  • -z或–gzip或–ungzip 通过gzip指令处理备份文件。
  • -v或–verbose 显示指令执行过程。
  • -f<备份文件>或–file=<备份文件> 指定备份文件。

ex:

压缩文件 非打包

touch a.c       
tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz
a.c

列出压缩文件内容

tar -tzvf test.tar.gz 
-rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c

解压文件

tar -xzvf test.tar.gz 
a.c

zip 命令:

用于压缩文件。

zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip

zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]

unzip命令:

用于解压缩zip文件

unzip为.zip压缩文件的解压缩程序。

unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

三、总结

本文仅简单解释shell和记录部分常见的交互式命令,详细信息请参考如下引文:

[1] 菜鸟教程-Linux命令

[2] 菜鸟教程-Shell

[3] 百度百科-Shell

你可能感兴趣的:(Linux学习)