您的位置:首页 > 运维架构 > Shell

Linux常用命令全集 linux_Shell(脚本)编程入门_实例讲解详解

2014-05-22 13:25 696 查看
一,安装和登陆命令

1,进入图形界面 startx

2,进入图形界面 init 5

3,进入字符界面 init 3

4,登陆 login

5,关机 poweroff

-p 关闭机器的时候关闭电源

-n 在关闭机器时不同步数据

-w 不做关机的操作,只是把这个操作记录到日志里

-d 不把关机的信息记录到日志文件里

-f 不调用

6,关机重启 shutdown

命令格式: shutdown [选项] 时间 [信息] 时间--是必要参数,一定要加,可以用

now,也可以用+5 信息--在关机的时候给用户的信息

-t 这个参数后面需要加数字,比如 5,表示在发出关机信号 5 秒后开始关机

-k 不做真正的关机,只是通知一下所有的用户.

-r 重启计算机

-h 关机后关闭电源

-f 在重新启动的时候跳过 fsck(磁盘检查程序)

-F 重启时,忽略 fsck 程序(同-f 一样)

-c 取消已在执行的关机动作 例: #shutdown -k now just kid #shutdown -h now system shut down now

7,关机 halt 选项同 poweroff 一样

8,重启计算机 reboot

9,mount 挂载文件系统,

umount 卸载文件系统 挂载光盘 #mount -t iso9660 /dev/cdrom /mnt/cdrom 或者#mount /mnt/cdrom 卸载光盘 #umount

/mnt/cdrom 退出光盘 #eject 送入光盘 #eject -t 挂载软盘 #mount /mnt/floppy 卸载软盘 #umount /mnt/floppy 挂载本地

FAT32 分区,并使挂载后显示中文 #mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/win 卸载 #/umount /mnt/win 挂载 U 盘

或者移动硬盘 #mount -o iocharset=utf8 /dev/sda1 /mnt/usb 卸载 #umount /mnt/usb 如果本地语言环境不是 utf8,而是

gb18030,需使用下面的命令挂载 #mount -o iocharset=gb2312 /dev/sda1 /mnt/usb 挂载一个光盘镜像至本地/mnt/cdrom 目录,

用下面的命令 #mount -t iso9660 -o loop /tmp/cd.iso /mnt/cdrom

10,字符界面下安装操作系统的命令 linux text

11,选择不同方法安装操作系统的命令 linux askmethod

二,图形化界面相关命令

1,系统设置 setup

2,服务启动设置 ntsysv

3,登陆设置 gdmsetup gdmconfig

4,网络设置 networkconfig thizconfig

5,音量控制 gnome-volume-control

6,KDE 控制中心 kcontrol

7,KDE 设置向导 kpersonalizer

8,网络检测命令 xmtr

三,信息显示命令

1,显示特定指令执行时所需消耗的时间及系统资源等资讯 time

2,显示或设定系统的日期与时间 date

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss], 其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟

,CC 为年份前两位数字,YY 为年 份后两位数字,ss 为秒数 #date 081112552006.35

3,显示日历 cal #cal -m #cal -s #cal 2006 #cal 08 2006

4,uptime 提供使用者下面的资讯,不需其他参数 现在的时间 系统开机运转到现在经过的时间 连线的使用者数量 最近一分钟,五分

钟和十五分钟的系统负载 参数:-V 显示版本资讯 #uptime

5,l ast 显示系统开机以来或是从每月初登入者的讯息 #last

6,dmesg 显示系统启动的信息

7,uname 显示系统信息 -m 显示硬件型号 -n 显示主机名 -r 显示内核版本 -S 显示操作系统类型 -V 显

示操作系统的版本 -a 显示全部信息

8,id 显示真实和有效的 UID 和 GID #id 显示当前用户的 id 信息

9,hostname 显示或设置系统的主机名 -a 显示主机的别名 -d 显示 DNS 域名 -F 从指定文件中读取主机名 -i 显示

主机的 IP 地址

10,who 或 w 显示在线登陆用户 -q 显示全部的登陆名和登陆数 #w 显示系统中当前用户的信息 #w user

username 仅显示指定用户的信息 11,whoami 显示用户自己的身份

12,whois 查询域名注册及 IP 地址相关信息 #whois www.sina.com.cn 小技巧:如果想注册一个域名,可以

用 whois 工具查询一下是否有人注册.

13,whatis 查看命令的解释 #whatis ls

14,whereis 显示系统命令及其文档所在目录 #whereis ls

15,which 显示系统命令所在目录 #which ls

16,stat 显示指定文件的相关信息(含节点内容) #stat -f / 查看整个文件系统的情况

17,free 显示当前内存和交换空间使用情况 -b 以字节为单位 -m 以 MB 为单位

18,du 显示指定的文件或目录已使用的磁盘空间的总量

-a 显示对所有文件的统计(包含子目录)

-b 输出的结果一字节 bytes 为单位

-c 只计算目录的总用量

-h 以 M 为单位 1024kb=1M -H 以 M 为单位 1000kb=1M

-s 只显示目录使用空间的总和

19,df 显示文件系统磁盘空间的使用情况

-h 以 1024kb=1M 计算

-H 以 1000kb=1M 计算

-t 指定显示分区的类型

-i 显示分区的 inode 使用情况

20,wc 统计指定文件中的字节数,字数,行数,并将结果显示输出 -c 输出字节统计数 -l 输出换行符统计数 -L 输出最长

的行的长度 -w 输出单词统计数

21,ls 显示目录文件 -a 显示所有文件(包含隐藏文件) -l 使用长格式显示 -F 以符号形式附加文件类别 -R 以树状结构

显示目录内容 -d 查看目录属性 -i 显示每个文件的 inode 号 -m 所有项目以逗号隔开,并填满整行 -h 将列出文件的大小及人性化

格式输出 -t 依照文件最后修改时间的顺序列出文件名 --color 彩色显示文件

22,cat 显示文本文件内容 -b 显示文件内容的时候显示行数 -n 显示文件内容包括空行 -s 将多个空行合并成一个空行输



23,tac 反转显示文件内容,后面的行放在前面显示 选项同上

24,head 显示文本文件的前若干行 -n (行数)显示文件的最后指定的行 -b (字节数) 显示文件最后字节数里

的内容 -q 不输出文件头的内容 -v 输出文件头的内容

25,tail 显示文本文件的后若干行 选项同上

26,more 或 less 分页显示文本文件内容

-s 将多个空行压缩成一个空行

-p 清楚屏幕后在显示 +行数 直接从给定的行数开始显示 -数字 规定每次显示多少行

27,cut 显示每行从开头算起 num1 到 num2 的文字 # cat example test2 this is test1 # cut -c0-6 example ##

print 开头算起前 6 个字元 test2 this i

28,pwd 显示当前工作目录

29,locale 显示当前语言环境

30,fc-list 列出系统字体

31,jobs 查看当前终端,当前 shell 下的后台的进程

32,ps 查看系统中的进程 #ps aux #ps -elf

33,pstree 将所有行程以树状图显示

34,top 查看系统中实时进程

35,set 查看系统变量

36,export 查看环境变量

37,man 查看命令帮助信息

38,info 查看命令帮助信息

39,help 查看命令帮助信息

四,文件处理命令

1,file 显示文件类型

2,mkdir 创建目录 -p 依次创建目录(建立多级目录) -m 指定目录的权限

3,grep 在指定的文本文件中查找指定的字符串

4,dd 转换及输出数据 #dd if=/dev/hda of=/dev/hdb 硬盘对拷

5,find 查找文件或目录 -name 根据指定的文件名进行查找 例:#find . -name "*.c" (将当前目录及其子目录下所有扩展

名是 c 的文件列出) -type 查找指定类型的文件

类型文件有:

l 链接 d 目录 f 普通文件 b 块设备文件 c 字符设备文件 s socket(套接字文件) p 管道(pipe)文件 例:#find ~ -type

d -size n [bc] 查找 n 值大小的文件,默认单位是字节 b=bit c=kb 例: #find ~ -size 1500b #find ~ -size +1500b 查找大于

1.5M 大小的文件 #find ~ -size -1500b 查找小于 1.5M 大小的文件 -user <用户名> 查找属于指定用户的文件 #find / -user

test -group <用户组名>查找属于指定用户组的文件 #find / -group test -newer <文件名> 查找比文件更新的文件 #find / -

newer /home/httpd -cmin +n 查找在过去 n 分钟以内(-)或以外(+)被修改过的文件 #find ~ -cmin +20 -ctime +n 查找在过去 n

天以内(-)或以外(+)被修改过的文件 #find ~ -ctime +20 -atime +n 查找在过去 n 天以内(-)或以外(+)被读取过的文件 #find ~

-atime +20 -amin +n 查找在过去 n 分钟以内(-)或以外(+)被读取过的文件 #find ~ -amin +20 -links n 查找 n 个链接数的文件

#find /home -links [2-5]

6,mv 移动文件或目录,文件或目录改名

-i 出现提示

-v 显示进度

–f 强制移动

-u 只有源文件比目的文件新时才移动

7,diff 比较并显示文件差异的部分

8,comm 比较文件内容

9,ln 建立文件之间的链接 -s 符号链接的选项 -f 强制建立链接 -i 出现提示 -v 显示操作信息

10,rm 删除文件或目录 -r 递归删除 -f 强制删除 -v 删除时显示信息 -i 删除时会有提示确认 11,rmdir 删除

空目录 -p 依次删除目录 -v 删除的时候显示信息

12,cp 复制文件或目录 -R 递归复制整个目录里的内容 -f 强制复制 -p 复制完后保持目录的权限值 -i 复制时

出现同名会有提示 -v 显示进度 -l 创建硬链接 -u 只有在目的文件比源文件旧时才复制

13,cd 切换目录 #cd 回到用户的主目录 #cd - 回到用户的主目录 #cd ~ 回到用户的宿主目录 #cd .. 转到上

一级目录 #cd / 切换到根目录 #cd . 切换到当前目录

14,tar -f 这个选项是一定要用的,表示使用归档文件 -v 显示进度 -c 建立一个新的 tar 文件 -z 调用 gzip 或者 gunzip 程序

-j 调用 bzip2 或者 bunzip2 程序 -t 显示 tar 打包文件里的内容 -x 解压缩 tar 文件 -r 追加一个或多个文件到已有的 tar 包

中 -u 如果文件比打包文件中的新就替换打包中的文件 -k 在解开打包文件时保持原有的文件 -C 指定解包的目的目录 -A 将其他打

包中的文件追加到一个打包文件中 -M 将一个包分成多个包,但必须配合-L 参数一起使用(分包实现的过程比较麻烦) --get 提取某

个文件 --remove -files 打包以后删除文件 -t 进行测试解压缩,不会解压到当前目录 格式: tar [选项] 生成打包文件名 需打包

的源文件

15,compress 压缩命令,生成.z 的文件

16,uncompress 解压缩扩展名为.z 的文件

17,zip 压缩文件或目录

18,unzip 解压缩扩展名为.zip 的文件

19,gzip 压缩命令(不支持对目录进行压缩) ,生成.gz 的文件

20,gunzip 或 zcat 解压缩.gz 的文件

21,bzip2 压缩命令,生成.bz2 的文件

22,bunzip2 解压缩命令

23,touch 更改文件的时间标记或创建一个空文件

24,unlink 删除软链接 25,locate 在系统中搜索包含字符串的文件

26,ldd 列出与文件有关的分享函数库

五,系统管理相关命令

1,clear 清楚界面

2,konsole 打开命令终端

3,gnome-terminal 打开命令终端

4,fdisk 修改磁盘分区

m 帮助

l 打印已知分区

d 删除一个分区

n 新建一个新的分区

p 打印当前分区表

w 将新的分区表写入磁盘,并且退出

t 改变一个分区的系统标识

q 放弃保存并且退出 例如:#fdisk /dev/hda #fdisk -l

5,mkfs 格式化磁盘工具 键入 mkfs 后,按 tab 键两次,会显示出很多格式化工具

6,fsck 单用户模式下,检测修复文件系统 例如: #fsck -j /dev/hda1 注:建议不要手动 fsck,系统会自动调用

7,quota 显示并限制用户的磁盘用量

8,quotacheck

-a 根据/etc/mtab 检查所有非网络文件系统(当带了-a 参数以后,就不能再手动指定检查哪 个分区了)

-v 显示过程和结果

-u 检查带有 usrquota 参数的分区

-g 检查带有 grpquota 参数的分区

-c 创建数据库 aquota.usr 和 aquota.group

-M 把所有分区强制以读写方式检查

-R 检查除了根分区以外的所有分区 #quotacheck -avugc

9,quotaon 启动 quota

-a 打开所有磁盘配额

-v 显示输出结果

-u 指定基于用户的磁盘配额

-g 指定打开基于组的磁盘配额

-p 打印当前状态

10,quotaoff 关闭 quota 选项同上

11,edquota 配置限额

-u 用户名

-g 组名

-t 设置宽限时间

12,repquota 查看所有配额

13,at 在指定的时间执行特定的命令

14,atq 查询待执行的任务

15,atrm 删除待执行的任务

16,crontab 设置计划任务

17,lp 打印文件

18,useradd 新建账号

19,usermod 修改账号设置

20,userdel 删除账号

21,groupadd 建立组

22,groupmod 改变组标识符或名称

23,groupdel 删除组

24,kill 对程序下达信号或终止程序

25,nice 以改过的优先级执行程序

26,renice 调整正在执行程序的优先级

27,wget 从指定的网址下载文件

28,md5sum 计算并校验软件 MD5 码

29,mesg 控制当前所用终端机的写入权限

30,wall 广播信息

31,write 传送信息给其他用户

32,lpq 列出打印机队列的状态

33,lprm 删除正在打印的作业

34,sleep 时间暂停

35,chfn 改变 finger 所显示的信息

36,chsh 改变用户登陆系统时所使用的 shell

六,网络操作相关命令

1,ifconfig 设置或显示网络接口

2,ifup 启用网络接口

3,ifdown 关闭网络接口

4,ping 传送 ICMPecho 的包,用来检查联机状态

5,netstat 查询网络的当前状态

6,route 显示并设置路由

7,traceroute 追踪联机所经过的路由器

8,mtr 是一个既具有 ping 功能,又具有 traceroute 功能的命令

8,xmtr 是一个在 X windows 下执行的命令

9,tcpdump 显示网络上 TCP 的联机状态

10,telnet 远程联机程序

11,ftp 文件传输

12,rlogin 远程登陆主机

3,rcp 远程复制文件或目录

14,ssh 远程加密的联机

15,finger 远端查询主机上的用户信息

16,mail 收发邮件

17,host 查询主机使用的域名

18,nslookup 查询网络名称与地址的对应

七,系统安全相关命令

1,passwd 修改用户密码

2,su 切换并取代该用户的身份

3,sudo 使用指定的用户权限执行程序

4,umask 设置新建文件的权限屏蔽

5,chgrp 改变文件或目录所属的组

6,chmod 改变文件或目录的权限

7,chown 改变文件或目录的拥有者或组

8,chattr 改变文件属性

9,lsattr 列出 ext2 上的文件属性

10,pswho

八,其它命令

1,bc 计算器

2,xmms 播放器

3,xine 播放器

linux Shell(脚本)编程入门 实例讲解详解

为什么要进行shell编程

在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门

非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便

携性比效率更重要的任务。

下面,让我们一起来看看shell是如何工作的:

建立一个脚本

Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用

。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash的大姐,bourne shell中运行)。

如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。程序必须以下面

的行开始(必须方在文件的第一行):

#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编辑好脚本时,如果要

执行该脚本,还必须使其可执行。

要使脚本可执行:

chmod +x filename

然后,您可以通过输入: ./filename 来执行您的脚本。

注释

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么

即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。

变量

在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变

量,您可以这样写:

变量名=值

取出变量值可以加一个美元符号($)在变量前面:

#!/bin/sh

#对变量赋值:

a="hello world"

# 现在打印变量a的内容:

echo "A is:"

echo $a

在您的编辑器中输入以上内容,然后将其保存为一个文件first。之后执行chmod +x first。使其可执行,最后输入./first执行该脚

本。

这个脚本将会输出:

A is:

  hello world

有时候变量名很容易与其他文字混淆,比如:

num=2

  echo "this is the $numnd"

这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。

可以使用花括号来告诉shell我们要打印的是num变量:

num=2

  echo "this is the $nd"

这将打印: this is the 2nd

有许多变量是系统自动设定的,这将在后面使用这些变量时进行讨论。

如果您需要处理数学表达式,那么您需要使用诸如expr等程序(见下面)。除了一般的仅在程序内有效的shell变量以外,还有环境

变量。由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。

Shell命令和流程控制

在shell脚本中可以使用三类命令:

1)Unix 命令:

虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。

常用命令语法及功能:

echo "some text": 将文字内容打印在屏幕上。

ls: 文件列表。

wc –l file wc -w file wc -c file: 计算文件行数 计算文件中的单词数 计算文件中的字符数。

cp sourcefile destfile: 文件拷贝。

mv oldname newname : 重命名文件或移动文件。

rm file: 删除文件。

grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt

cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut –b 5-9

file.txt千万不要和cat命令混淆,这是两个完全不同的命令。

cat file.txt: 输出文件内容到标准输出设备(屏幕)上。

file somefile: 得到文件类型。

read var: 提示用户输入,并将输入赋值给变量。

sort file.txt: 对file.txt文件中的行进行排序。

uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq。

expr: 进行数学运算Example: add 2 and 3 expr 2 "+" 3。

find: 搜索文件比如:根据文件名搜索find . -name filename -print。

tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile。

basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux。

dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin。

head file: 打印文本文件开头几行。

tail file : 打印文本文件末尾几行。

sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用

正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。比如:将linuxfocus 替换为 LinuxFocus :cat text.file |

sed 's/linuxfocus/LinuxFocus/' > newtext.file。

awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F,

'{print "," }'这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下:

Adam Bor, 34, IndiaKerry Miller, 22, USA

命令输出结果为:

Adam Bor, IndiaKerry Miller.

2) 概念: 管道, 重定向和 backtick

这些不是系统命令,但是他们真的很重要。

管道 (|) 将一个命令的输出作为另外一个命令的输入。

grep "hello" file.txt | wc -l

在file.txt中搜索包含有”hello”的行并计算其行数。在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。

重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。

> 写入文件并覆盖旧文件。

>> 加到文件的尾部,保留旧文件内容。

反短斜线,使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。

命令:

find . -mtime -1 -type f -print

用来查找过去24小时(-mtime –2则表示过去48小时)内修改过的文件。如果您想将所有查找到的文件打一个包,则可以使用以下脚

本:

#!/bin/sh

  # The ticks are backticks (`) not normal quotes ('):

  tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`

3) 流程控制

"if" 表达式 如果条件为真则执行then后面的部分:

if ....; then
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: