常用shell脚本指令

合集下载

xshell常用的20个命令

xshell常用的20个命令

xshell常用的20个命令Xshell是一款功能强大的终端仿真软件,它可以帮助您轻松的连接到远程服务器和设备,以满足您的远程管理需求。

Xshell提供了非常多的有用的功能,其中包括自动完成和命令建议功能。

本文将介绍Xshell常用的20个命令,它们可以帮助您更轻松地使用Xshell。

1.ls:ls是一个常用的文件管理命令,用于显示当前目录下的文件和子目录的列表。

您可以使用该命令查看文件的大小、修改日期和文件权限等信息。

2.cd:cd命令用于更改当前的目录,您可以使用该命令进入到更深层次的目录。

3.pwd:pwd命令用于显示当前所在目录的路径,使用该命令可以确定当前所在的文件夹位置。

4.touch:touch命令用于创建一个新文件或更新文件的时间戳。

5.mkdir:mkdir命令用于创建新目录,您可以使用该命令在当前目录下创建新子目录。

6.rmdir:rmdir命令用于删除空目录,使用该命令可以删除不需要的空目录。

7.cat:cat命令用于显示文件的内容。

您可以使用该命令查看文件的内容,以及将多个文件的内容拼接到一起。

8.more:more命令用于显示文件的内容,不同之处在于每次只显示一屏的内容,您可以使用空格键进入下一屏的内容。

9.head:head命令用于显示文件的前几行内容,您可以指定要显示多少行内容,也可以使用该命令查看文件的头部。

10.tail:tail命令用于显示文件的最后几行内容,您可以指定要显示多少行内容,也可以使用该命令查看文件的尾部。

11.grep:grep命令用于搜索文件中指定的字符串,您可以使用该命令查找特定的字符串或者模式在文件中出现的次数。

12.find:find命令用于搜索指定的文件或者目录,您可以在指定的路径中搜索文件名称、日期、大小等信息。

13.cp:cp命令用于复制文件或目录,您可以使用该命令将文件或目录从一个位置复制到另一个位置。

14.mv:mv命令用于移动文件或者目录,您可以使用该命令将文件从一个位置移动到另一个位置。

Shell命令大全

Shell命令大全

Shell命令⼤全⼀、Linux下常⽤命令:⽂件与⽬录操作basename:从⽂件名中去掉路径和扩展名cd:切换当前⼯作⽬录到指定⽬录chgrp:改变⽂件所属组chmod:改变⽂件的权限chown:改变⽂件的所有者和组cp:复制⽂件或⽬录dd:复制⽂件并转换⽂件内容file:确定⽂件类型find:在指定⽬录下查找⽂件并执⾏指定的操作ln:创建⽂件链接locate/slocate:快速定位⽂件的路径ls/dir/vdir:显⽰⽬录内容mkdir:创建⽬录mv:移动或重命名⽂件pwd:显⽰当前⼯作⽬录rename:重命名⽂件rm:删除⽂件或⽬录rmdir:删除空⽬录touch:修改⽂件的时间属性updatedb:创建或更新slocate数据库whereis:显⽰指令程序、源代码和man⼿册页which:显⽰指令的绝对路径⼆、Linux下常⽤命令:备份与压缩ar:创建、修改归档⽂件和从归档⽂件中提取⽂件arj:.arj⽂件压缩指令bunzip2:压缩bzip2格式的压缩⽂件bzcat:解压缩⽂件到标准输出bzip2:创建.bz2格式的压缩⽂件bzip2recover:修复损坏的.bz2⽂件bzless/bzmore:解压缩.bz2⽂件并分屏显⽰内容compress:压缩数据⽂件cpio:存取归档包中的⽂件dump:⽂件系统备份gunzip:解压缩由gzip压缩的⽂件gzexe:压缩可执⾏程序gzip:GNU的压缩和解压缩⼯具lha:压缩和解压缩指令resotre:还原由dump备份的⽂件或⽂件系统tar:创建备份档案⽂件unarj:解压缩.arj⽂件uncompress:解压缩.Z⽂件unzip:解压缩.zip⽂件zcat:解压缩⽂件并送到标准输出zforce:强制gzip格式的⽂件加上.gz扩展名zip:压缩⽂件zipinfo:显⽰zip压缩⽂件的详细信息znew:将“.Z”⽂件转换成“.gz”⽂件三、Linux下常⽤命令:⽂本处理cat:链接⽂件并显⽰到标准输出cksum:检查和计算⽂件循环冗余校验码cmp:⽐较两个⽂件的差异col:过滤控制字符colrm:从输⼊中过滤掉指定的列comm:⽐较两个有序⽂件的不同csplit:分割⽂件cut:显⽰⽂件中每⾏的指定内容diff3:⽐较3个⽂件的不同diff:⽐较并显⽰两个⽂件的不同diffstat:根据diff指令的结果显⽰统计信息ed:⾏⽂本编辑器emacs:全屏⽂本编辑器ex:⽂本编辑器expand:将Tab转换为空⽩(Space)fmt:最优化⽂本格式fold:设置⽂件显⽰的⾏宽grep/egrep/fgrep:显⽰⽂件中匹配的⾏head:输出⽂件开头部分内容ispell:交互式拼写检查程序jed:⽂本编辑器joe:编辑⽂本⽂件join:合并两个⽂件的相同字段less:分屏查看⽂本⽂件look:显⽰⽂件中以特定字符串开头的⾏more:分屏查看⽂本⽂件od:以数字编码输出⽂件内容paste:合并⽂件的内容pico:⽂本编辑器sed:流⽂件编辑器sort:排序数据⽂件spell:拼写检查split:分割⽂件sum:计算并显⽰⽂件的校验码tac:反序显⽰⽂件内容tail:输出⽂件尾部部分内容tee:将输⼊内容复制到标准输出和指定⽂件tr:转换或删除⽂件中的字符unexpand:将空⽩(Space)转换为Tabuniq:删除⽂件中的重复⾏vi:全屏⽂本编辑器wc:计算⽂件的字节数、单词数和⾏数四、Linux下常⽤命令:shell指令alias:定义命令别名bg:将作业(或任务)放到后台运⾏bind:显⽰或设置键盘配置declare:声明shell变量dirs:显⽰shell⽬录堆栈中的记录echo:打印字符串到标准输出enable:激活与关闭shell内部命令eval:执⾏指定指令并返回结果exec:执⾏给定指令后退出登录exit:退出当前shellexport:设置与显⽰环境变量fc:编辑并执⾏历史命令fg:将后台任务(或作业)切换到前台运⾏hash:显⽰与清除指令时运⾏查询的哈希表history:显⽰与操纵历史命令jobs:显⽰shell的作业信息kill:杀死进程或作业logout:退出登录shellpopd:从shell⽬录堆栈中删除记录pushd:向shell⽬录堆栈中添加记录set:设置shell的执⾏⽅式shopt:设置控制shell⾏为变量的开关值ulimit:设置shell的资源限制umask:设置创建⽂件的权限掩码unalias:取消由alias定义的命令别名unset:删除定义的变量或函数五、Linux下常⽤命令:打印相关指令accept:接受打印请求cancel:取消打印任务disable:停⽌打印机enable:启动打印机lp:打印⽂件lpadmin:配置cups打印机和类lpc:控制打印机lpq:显⽰当前打印队列lpr:打印⽂件lprm:删除当前打印队列中的作业lpstat:显⽰CUPS的状态信息pr:打印前转换⽂本格式reject:拒绝打印请求六、Linux下常⽤命令:其他基础指令bc:实现精确计算的计算器cal:显⽰⽇历clear:清屏指令consoletype:显⽰当前使⽤的终端类型ctrlaltdel:设置热键Ctrl+Alt+Del的功能date:显⽰和设置系统⽇期时间dircolors:设置ls指令显⽰时的颜⾊eject:弹出可移动设备的介质halt:关闭计算机hostid:显⽰当前主机的数字标识hwclock:查询和设置系统硬件时钟info:读取帮助⽂档login:登录系统man:显⽰联机帮助⼿册md5sum:计算并显⽰⽂件的md5摘要信息mesg:设置终端写权限mtools:显⽰mtools软件包的指令mtoolstest:测试并显⽰mtools⼯具包的配置poweroff:关闭计算机并切断电源reboot:重新启动计算机shutdown:关闭计算机sleep:睡眠指定长的时间stat:显⽰⽂件或⽂件系统的状态talk:与其他⽤户交谈wall:向所有终端发送信息whatis:在数据库中查询关键字who:显⽰当前已登录⽤户的信息whoami:显⽰当前⽤户名write:向指定⽤户终端发送信息yes:不断输出指定字符串七、Linux下常⽤命令:⽤户管理chfn:改变⽤户的finger信息chsh:改变⽤户登录时的默认shellfinger:⽤户信息查询程序gpasswd:管理组⽂件/etc/groupgroupadd:创建组groupdel:删除组groupmod:修改组信息groups:显⽰⽤户所属的组grpck:验证组⽂件/etc/group的完整性grpconv:启⽤组的影⼦⼝令⽂件grpunconv:关闭组的影⼦⼝令⽂件logname:显⽰登录⽤户名passwd:设置⽤户密码pwck:验证⽤户⽂件密码⽂件的完整性pwconv:启⽤⽤户的影⼦⼝令⽂件pwunconv:关闭⽤户的影⼦⼝令⽂件su:切换⽤户useradd:创建⽤户userdel:删除⽤户usermod:修改⽤户的配置信息users:显⽰当前登录系统的⽤户名⼋、Linux下常⽤命令:进程管理init:进程初始化控制killall:根据名称结束进程nice:设置进程优先级nohup:以忽略挂起信号⽅式运⾏程序pgrep:基于名字查询并显⽰进程号pidof:查找正在运⾏程序的进程号pkill:向指定的进程发送信号ps:显⽰系统当前的进程状态pstree:⽤树形图显⽰进程的⽗⼦关系renice:调整进程优先级w:显⽰当前登录⽤户的相关信息watch:全屏⽅式显⽰指定命令的输出信息九、Linux下常⽤命令:磁盘与⽂件系统管理badblocks:磁盘坏块检查⼯具blockdev:从命令⾏调⽤块设备的ioctl函数chattr:改变⽂件的第2扩展⽂件系统属性convertquota:转换quota⽂件格式df:报告磁盘剩余空间情况dumpe2fs:显⽰ext2/ext3⽂件系统信息e2fsck:检查ext2/ext3⽂件系统e2image:保存ext2/ext3源数据到⽂件e2label:设置ext2/ext3⽂件系统标签edquota:编辑⽤户的磁盘空间配额fdisk:Linux下的分区⼯具findfs:查找⽂件系统fsck:检查与修复Linux⽂件系统grub:Linux下的引导加载器hdparm:调整硬盘I/O性能lilo:Linux加载器lsattr:显⽰⽂件的ext2⽂件系统属性mkbootdisk:为当前系统创建专门的引导软盘mke2fs:创建第2扩展⽂件系统mkfs:创建各种⽂件系统mkinitrd:创建初始化ram磁盘映像⽂件mkisofs:创建光盘映像⽂件mknod:创建块设备或字符设备⽂件mkswap:创建交换分区⽂件系统mktemp:创建临时⽂件mount:加载⽂件系统parted:磁盘分区管理⼯具quota:显⽰⽤户磁盘配额quotacheck:创建、检查和修复配额⽂件quotaoff:关闭⽂件系统的磁盘配额功能quotaon:打开⽂件系统的磁盘配额功能quotastat:显⽰磁盘配额状态repquota:显⽰⽂件系统磁盘配额信息报表swapoff:关闭交换空间swapon:激活交换空间sync:强制将缓存数据写⼊磁盘tune2fs:调整ext2/ext3⽂件系统的参数umount:卸载已经加载的⽂件系统⼗、Linux下常⽤命令:内核与性能depmod:处理内核可加载模块的依赖关系dmesg:显⽰内核的输出信息free:显⽰内存使⽤情况insmod:加载模块到内核iostat:报告CPU、I/O设备及分区状态ipcs:显⽰进程间通信的状态信息kernelversion:显⽰内核主版本号lsmod:显⽰已加载的模块modinfo:显⽰内核模块信息modprobe:加载内核模块并解决依赖关系mpstat:显⽰进程相关状态信息rmmod:从内核中删除模块sar:收集、显⽰和保存系统活动信息slabtop:实时显⽰内核的slab缓存信息sysctl:运⾏时修改内核参数tload:监视系统平均负载情况top:显⽰和管理系统进程uname:显⽰系统信息uptime:显⽰系统运⾏时间及平均负载vmstat:显⽰虚拟内存的状态⼗⼀、Linux下常⽤命令:X-Window系统startx:初始化X-Window会话xauth:X系统授权许可⽂件管理⼯具xhost:显⽰和配置X服务器的访问权限xinit:X-Window系统初始化程序xlsatoms:显⽰X服务器原⼦数据定义xlsclients:显⽰指定显⽰器上运⾏的X程序xlsfonts:显⽰X服务器使⽤的字体信息xset:设置X系统的⽤户偏爱属性⼗⼆、Linux下常⽤命令:系统安全chroot:以指定根⽬录运⾏指令nmap:⽹络探测⼯具和安全扫描器scp:加密的远程复制⼯具sftp:安全⽂件传输⼯具slogin:加密的远程登录⼯具ssh:加密的远程登录⼯具sudo:以另⼀个⽤户⾝份执⾏指令⼗三、Linux下常⽤命令:编程相关指令awk/gawk:模式扫描与处理语⾔expr:计算表达式的值gcc:GNU的C语⾔编译器gdb:GNU调试器ldd:显⽰共享库依赖make:⼯程编译⼯具nm:显⽰⽬标⽂件的符号表perl:perl语⾔的命令⾏⼯具php:PHP脚本语⾔命令⾏接⼝test:条件测试⼗四、Linux下常⽤命令:其他系统管理与维护指令arch:显⽰当前主机的硬件架构at:按照时间安排任务的执⾏atq:查询待执⾏的任务atrm:删除待执⾏的任务batch:在指定时间运⾏任务chkconfig:设置系统在不同运⾏等级下所执⾏的服务crontab:按照时间设置计划任务last:显⽰以前登录过系统的⽤户相关信息lastb:显⽰登录系统失败的⽤户相关信息logrotate:系统⽇志的轮循⼯具logsave:将命令的输出信息保存到⽇志⽂件logwatch:报告和分析系统⽇志lsusb:显⽰所有的USB设备patch:补丁与更新⽂件rpm:Red Hat软件包管理器runlevel:显⽰当前系统的运⾏等级service:Linux服务管理和控制⼯具telinit:切换当前系统的运⾏等级yum:RPM软件包⾃动化管理⼯具⼗五、Linux下常⽤命令:⽹络配置dnsdomainname:显⽰系统的DNS域名domainname:显⽰和设置主机域名hostname:显⽰或者设置系统主机名ifcfg:配置⽹络接⼝ifconfig:配置⽹络接⼝的⽹络参数ifdown:关闭指定⽹络接⼝ifup:启动指定⽹络接⼝nisdomainname:显⽰和设置主机域名route:显⽰与操纵本机的IP路由表ypdomainname:显⽰和设置主机域名⼗六、Linux下常⽤命令:⽹络测试与应⽤arp:管理本机arp缓冲区arping:向相邻主机发送ARP请求报⽂arpwatch:监听⽹络上的ARP信息dig:域名查询⼯具elinks:纯⽂本⽹页浏览器elm:电⼦邮件客户端程序ftp:⽂件传输协议客户端host:DNS域名查询⼯具ipcalc:IP地址计算器lynx:纯⽂本⽹页浏览器mail:电⼦邮件管理程序ncftp:增强的FTP客户端⼯具netstat:显⽰⽹络状态nslookup:DNS域名查询⼯具pine:电⼦邮件和新闻组处理程序ping:测试到达⽬标主机的⽹络是否通畅rsh:远程shelltelnet:远程登录⼯具tftp:简单⽂件传输协议客户端tracepath:追踪数据经过的路由traceroute:追踪数据包到达⽬的主机经过的路由wget:从指定URL地址下载⽂件⼗七、Linux下常⽤命令:⾼级⽹络指令arptables:管理内核的ARP规则表ip:强⼤的多功能⽹络配置⼯具iptables:IP包过滤与NAT管理⼯具iptables-save:保存内核中iptables的配置iptables-restore:还原iptables的配置信息tcpdump:监听⽹络流量⼗⼋、Linux下常⽤命令:⽹络服务器指令ab:Web服务器性能测试apachectl:Apache HTTP服务器控制接⼝exportfs:管理NFS服务器共享的⽂件系统htdigest:管理⽤于摘要认证的⽤户⽂件htpasswd:管理⽤于基本认证的⽤户⽂件httpd:Apache超⽂本传输协议服务器mailq:显⽰待发送的邮件队列mysql:MySQL服务器的客户端⼯具mysqladmin:MySQL服务器管理⼯具msqldump:MySQL服务器备份⼯具mysqlimport:MySQL数据库导⼊⼯具mysqlshow:显⽰MySQL数据库、表和字段信息nfsstat:显⽰⽹络⽂件系统状态sendmail:电⼦邮件传送代理程序showmount:显⽰NFS服务器上的加载信息smbclient:samba服务器客户端⼯具smbmount:加载samba⽂件系统smbpasswd:改变samba⽤户的密码squid:HTTP代理服务器程序sshd:OpenSSH守护进程。

xshell常用的20个命令

xshell常用的20个命令

xshell常用的20个命令XShell是一款桌面式终端模拟器,它能够提供一种跨平台连接网络的方法,可以在Windows、Linux和Mac OS之间轻松地进行连接。

由于其功能强大,XShell在远程连接服务器方面占据了一席之地。

本文将通过介绍XShell中最常用的20个命令,来帮助您更好地使用XShell中的功能。

1. exit:结束当前连接并退出XShell。

2. help:显示帮助,说明XShell支持的命令,选项,提供简要说明。

3. open:用于连接指定的网络,它支持用户名和密码,以及其他认证方法。

4. close:用于断开当前的网络连接。

5. connect:与特定的远程端口建立连接,而且还可以指定一些参数。

6. disconnect:断开连接,但不会断开XShell会话。

7. re-connect:根据当前XShell会话重新建立连接。

8. telnet:在XShell会话中使用Telnet协议,这样可以建立一个临时连接,以连接到网络服务器。

9. sftp:使用SFTP协议上传或下载文件。

10. scp:使用Secure Copy Protocol协议来远程复制文件到或从远程系统中。

11. ssh:使用Secure Shell协议建立安全连接,以允许远程用户登录到系统并执行指定的任务。

12. cd:切换目录,类似在DOS中的cd命令。

13. ls:列出当前目录中的文件,类似于DOS中的dir命令。

14. pwd:显示当前工作目录,类似于DOS中的pwd命令。

15. mv:移动或重命名文件/目录,类似于DOS中的move命令。

16. cp:复制文件或目录,类似于DOS中的copy命令。

17. rm:删除文件或目录,类似于DOS中的del命令。

18. grep:在文件中搜索文本,类似于DOS中的find命令。

19. wc:显示文件中的字符数,单词数和行数,类似于 DOS中的type命令。

Shell脚本技巧

Shell脚本技巧

Shell脚本技巧1.test测试命令test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:(1)数值测试:-eq:等于则为真-ne:不等于则为真-gt:大于则为真-ge:大于等于则为真-lt:小于则为真-le:小于等于则为真(2)字符串测试:=:等于则为真!=:不相等则为真-z 字符串:字符串长度伪则为真-n 字符串:字符串长度不伪则为真(3)文件测试:-e 文件名:如果文件存在则为真-r 文件名:如果文件存在且可读则为真-w 文件名:如果文件存在且可写则为真-x 文件名:如果文件存在且可执行则为真-s 文件名:如果文件存在且至少有一个字符则为真-d 文件名:如果文件存在且为目录则为真-f 文件名:如果文件存在且为普通文件则为真-c 文件名:如果文件存在且为字符型特殊文件则为真-b 文件名:如果文件存在且为块特殊文件则为真另外,Linux还提供了与(“!”)、或(“-o)、非(“-a”)三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。

同时,bash也能完成简单的算术运算,格式如下:$[expression]例如:var1=2var2=$[var1*10+1]则:var2的值为21。

2.if条件语句if [ -x /sbin/quotaon ]; thenecho "Turning on Quota for root filesystem"/sbin/quotaon /elif [ -x /sbin/quotaon ]; then/usr/bin/bashelseecho "ok"fi3.for 循环#!/bin/shWORD="a b c d e f g h i j l m n o p q r s t u v w x y z"for i in $WORD ; doecho $idone#!/bin/shFILES=`ls /txt/*.txt`for txt in $FILES ; dodoc=`echo $txt | sed "s/.txt/.doc/"`mv $txt $docdone4.while和until 循环#!/bin/shwhile [ -f /var/run/ppp0.pid ] ; dokillall pppddone#!/bin/shuntil [ -f /var/run/ppp0.pid ] ; dosleep 1doneShell还提供了true和false两条命令用于建立无限循环结构的需要,它们的返回状态分别是总为0或总为非05.case 条件选择#!/bin/shcase $1 instart | begin)echo "start something";;stop | end)echo "stop something";;*)echo "Ignorant";;esaccase表达式中也可以使用shell的通配符(“*”、“?”、“[ ]”)。

sh命令的用法

sh命令的用法

sh命令是Shell命令的简称,用于在Unix和类Unix操作系统上执行命令。

它是一种解释性语言,通过读取命令并将其传递给操作系统来执行。

以下是一些常见的sh命令用法:
运行脚本文件:通过sh命令可以运行Shell脚本文件。

语法如下:
php
sh <脚本文件名>
例如,要运行名为"script.sh"的脚本文件,可以使用以下命令:
bash
sh script.sh
执行命令:sh命令可以用来执行任何在Shell中可用的命令。

语法如下:
php
sh -c <命令>
例如,要在当前Shell中打印"Hello World!",可以使用以下命令:
bash
sh -c "echo Hello World!"
交互模式:通过使用-i选项,可以让sh命令进入交互模式。

这将打开一个Shell提示符,允许用户交互式地输入命令。

语法如下:
bash
sh -i
脚本中调用命令:在Shell脚本中,可以使用sh命令来调用其他Shell命令或脚本。

语法如下:
php
sh <命令或脚本> <参数>
例如,要在脚本中调用另一个脚本,可以使用以下语法:
bash
sh another_script.sh arg1 arg2
这些是sh命令的一些常见用法。

shell脚本常用命令

shell脚本常用命令

shell脚本常⽤命令shell基本命令1.#!/bin/sh是指此脚本使⽤/bin/sh来解释执⾏。

解释:#! 是⼀个约定的标记,它告诉系统这个脚本需要什么解释器来执⾏,即使⽤哪⼀种 Shell。

2.echo 命令⽤于向窗⼝输出⽂本。

举例:echo "Hello World !"3.your_name="qinjx"赋值变量echo ${your_name}打印变量;使⽤变量的时候加括号和美元符4.chmod +x ./test.sh #使脚本具有执⾏权限./test.sh #执⾏脚本chmod 777 /tmp -R 意思是把tmp⽂件夹及其⼦bai⽂件夹的权限全部修改为777解释语句⼀:ping -c 5 > /dev/null 2>&11. ping -c 5 -c<完成次数>:设置完成要求回应的次数;2. >/dev/null这条命令的作⽤是将标准输出1重定向到/dev/null中。

/dev/null代表linux的空设备⽂件,所有往这个⽂件⾥⾯写⼊的内容都会丢失,俗称“⿊洞”。

那么执⾏了>/dev/null之后,标准输出就会不再存在,没有任何地⽅能够找到输出的内容。

3. 2>&1这条命令⽤到了重定向绑定,采⽤&可以将两个输出绑定在⼀起。

这条命令的作⽤是错误输出将和标准输出同⽤⼀个⽂件描述符,说⼈话就是错误输出将会和标准输出输出到同⼀个地⽅。

linux在执⾏shell命令之前,就会确定好所有的输⼊输出位置,并且从左到右依次执⾏重定向的命令,所以>/dev/null 2>&1的作⽤就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重⽤了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。

执⾏了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到⽂件中。

shell脚本介绍以及常用命令

shell脚本介绍以及常用命令

shell脚本介绍以及常⽤命令Shell脚本Shell Script,Shell与Windows/Dos下的相似,也就是⽤各类命令预先放⼊到⼀个⽂件中,⽅便⼀次性执⾏的⼀个,主要是⽅便进⾏设置或者管理⽤的。

但是它⽐Windows下的批处理更强⼤,⽐⽤其他编程的程序效率更⾼,毕竟它使⽤了Linux/Unix下的命令。

换⼀种说法也就是,shell script是利⽤shell的功能所写的⼀个程序,这个程序是使⽤,将⼀些shell的语法与指令写在⾥⾯,然后⽤正规表⽰法,管线命令以及数据流重导向等功能,以达到我们所想要的处理⽬的shell和shell脚本的区别:shell是什么呢?确切⼀点说,Shell就是⼀个,它的作⽤就是遵循⼀定的语法将输⼊的命令加以解释并传给系统。

它为⽤户提供了⼀个向Linux发送请求以便运⾏程序的接⼝系统级程序,⽤户可以⽤Shell来启动、挂起、停⽌甚3⾄是编写⼀些程序。

Shell本⾝是⼀个⽤C语⾔编写的程序,它是⽤户使⽤Linux的桥梁。

Shell既是⼀种命令语⾔,⼜是⼀种(就是你所说的shell脚本)。

作为命令语⾔,它互动式地解释和执⾏⽤户输⼊的命令;作为程序设计语⾔,它定义了各种和参数,并提供了许多在⾼阶语⾔中才具有的控制结构,包括循环和分⽀。

它虽然不是 Linux系统的⼀部分,但它调⽤了系统内核的⼤部分功能来执⾏程序、创建⽂档并以并⾏的⽅式协调各个程序的运⾏。

交互式shell和⾮交互式shell 交互式模式就是shell等待你的输⼊,并且执⾏你提交的命令。

这种模式被称作交互式是因为shell与⽤户进⾏交互。

这种模式也是⼤多数⽤户⾮常熟悉的:登录、执⾏⼀些命令、签退。

当你签退后,shell也终⽌了。

shell也可以运⾏在另外⼀种模式:⾮交互式模式。

在这种模式下,shell不与你进⾏交互,⽽是读取存放在⽂件中的命令,并且执⾏它们。

当它读到⽂件的结尾,shell也就终⽌了。

Linux13:shell脚本基本命令

Linux13:shell脚本基本命令

Linux13:shell脚本基本命令shell脚本基本命令输出命令echo输出命令echo,基本模式就是echo [选项] [输出内容]输出内容如果包含空格,则必须将内容⽤双引号括起来。

选项-e可以使输出语句⽀持反斜线转义。

加⼊退格后就不会显⽰退格符左边的⼀个字符。

ascii码表中有对应的⼋进制和⼗六进制表⽰法,所以可以表⽰对应的字符。

显⽰环境变量的值:echo ${PATH}或echo $PATH,如果⼀个变量没有被设定,那么就什么都不返回。

颜⾊输出如将abcd⽤红⾊打印:echo -e "\e[1;31m abcd \e[0m"其中\e[1的意思是开启颜⾊输出,⽽\e[0m是结束颜⾊输出,31m代表红⾊,abcd是输出内容,其他颜⾊如下:第⼀个脚本与脚本执⾏⽅式新建⼀个脚本hello.sh:#!/bin/bash#the first programecho "hello world"exit 0其中第⼀⾏是声明,不是注释,不能省略,这是在指定使⽤哪个shell,如果没有这⾏有的程序可能⽆法执⾏。

第⼆⾏#开头的是注释,第四⾏是命令。

最后⼀⾏在设置回传值,在执⾏完该脚本后,执⾏echo $?就能查看这个值,可以通过这个⾃定义错误信息。

在脚本中有需要时要重新定义⼀下PATH环境变量,以便直接使⽤⼀些外部命令⽽不是写绝对路径:PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/module/jdk1.8.0_144/bin:/opt/module/hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/root/bin export PATH执⾏shell脚本要先赋予其可rx权限:chomd 755 hello.sh然后再执⾏./hello.sh这⾥也可以⽤绝对路径执⾏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常用shell脚本命令1、显示包含文字aaa的下一行的内容:sed -n '/aaa/{n;p;}' filename2、删除当前行与下一行的内容:sed -i '/aaa/{N;d;}' filename3、删除当前行与下两行的内容:sed -i '/aaa/{N;N;d;}' filename依次类推,删除三行,则为{N;N;N;d;},分析知:N为next4、得出以空格为分割的字符串中单词的个数,即统计个数:awk ' { print NF } '如显示字符串VALUE中的单词个数,其中VALUE为:aaa bbb ccc ddd ee f则执行 echo $VALUE | awk ' { print NF } ' 后的结果为65、在linux中建立一个文件与另一文件的链接,即符号链接ln -s /var/named/chroot/etc/named.conf named.conf这要就建立了当前目录的文件named.conf对/var/named/chroot/etc/named.conf 的符号链接。

即操作named.conf就意味着操作实际文件/var/named/chroot/etc/named.conf ,这时用ll命令查看的结果如:lrwxrwxrwx 1 root root 32 Mar 22 12:29 named.conf ->/var/named/chroot/etc/named.conf注意:当用sed来通过named.conf来删除一部分信息时,会将符号链接的关系丢掉,即会将named.conf变成一个实际文件。

所以需对实际文件进行删除操作。

6、显示指定字符范围内的内容:如:显示文件test.txt中字符#test begin与#test end之间所有的字符sed -n "/#test begin/,/#test end/p" test.txt或 awk "/#test begin/,/#test end/" test.txt在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则.1. 单引号和双引号的区别单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符,不会作变量的引用,直接输出字符窜。

请看如下例子:[root@linux ~]# name=HaHa[root@linux ~]# echo $nameHaHa[root@linux ~]# myname="$name is wow"[root@linux ~]# echo $mynameHaHa is wow[root@linux ~]# myname='$name is wow'[root@linux ~]# echo $myname$name is wow从上面例子可以看出,使用了单引号的时候,那么$name只是普通字符,直接输出而已!2. 逐行读取文件∙使用for循环来读取文件for line in `cat file.txt`doecho $linedone注意:由于使用for来读入文件里的行时,会自动把空格和换行符作为一样分隔符,如果行里有空格的时候,输出的结果会很乱,所以只适用于行连续不能有空格或者换行符的文件∙使用while循环读取文件cat file.txt |while read linedoecho $linedone或者:while read linedoecho $linedone < file.txt注意:由于使用while来读入文件里的行时,会整行读入,不会关注行的内容(空格..),所以比for读文件有更好的适用性,推荐使用while循环读取文件3. bash shell 脚本中常用隐含变量中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)$$ 变量最常见的用途是用做暂存文件的名字以保证暂存文件不会重复。

$* 和 $@ 如果输出是一样的,但是在使用for循环,在使用双引号("")引用时"$*" 会输出成一个元素而 "$@" 会按照每个参数是一个元素方式输出请看测试例子#cat test.sh#!/bin/shecho '"$@" output.....'for i in "$@"doecho $idoneecho '"$*" output ....'for i in "$*"doecho $idone输出结果#sh test.sh a b c d"$@" output.....abcd"$*" output ....a b c d从输出结果可以看出 "$*" 输出是一行而 "$@" 输出则是四行4. 变量内容的删除与替换我们在一些情况下,需要对变量中的字符窜进行查找删除或者替换,就需要使用下表列出的方法[root@linux ~]# exporttest_str="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin: /usr/bin:/root/bin"[root@linux ~]# echo ${test_str#/*kerberos/bin:}/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin5. 变量条件测试赋值在某些时刻我们需要‘判断’某个变量是否存在,若变量存在则将此变量值赋值给新的变量,若变量不存在则将其他值赋值给新的变量.[root@linux ~]# test_name=""[root@linux ~]# test_name=${test_name-root}[root@linux ~]# echo $test_name<== 因为 test_name 被设定为空字符窜!所以当然还是保留为空字符窜![root@linux ~]# test_name=${test_name:-root}[root@linux ~]# echo $test_nameroot <== 加上‘:’后若变量内容为空或者是未设定,都能够以后面的内容替换!基本上这种变量的测试也能够透过 shell script 内的 if...then... 来处理,不过通过上述提及的简单的方法来测试变量,是程序看起来更精简一些!6. shell 中分隔符 : 变量IFS 使用shell脚本中,如果使用for循环一个字符窜的话,默认使用空格来分割字符窜.还有前面所提到的使用for循环逐行读取文件内容时候,文件行中如果有空格的话输出的结果也会变乱.这个时候使用 IFS 变量来设置特定的字符窜分割符来,达到输出正确的目的.默认情况下 IFS 是使用<space><tab><newline>,空格 \t \n 来作为默认的分割符的.我们将前面使用for逐行读取文件的例子改进下就可以输出正确了,请看下面#!/bin/bashIFS_old=$IFS #将原IFS值保存,以便用完后恢复IFS=$’\n’ #更改IFS值为$’\n’for line in `cat file.txt`doecho $linedonefile.txt 文件内容如下[root@linux]$ cat file.txtsdfsdfsdfsdfssssss ssssss ssssss ssssssdfsdfsdfsdfsdf执行测试程序输出结果如下(正确输出)[root@linux]$ sh test.shsdfsdfsdfsdfssssss ssssss ssssss ssssssdfsdfsdfsdfsdf如果未设置IFS变量,使用默认的IFS变量值 ,输出结果如下[root@linux]$ sh test.shsdfsdfsdfsdfssssssssssssssssssssssssdfsdfsdfsdfsdf从以上测试程序输出结果,可以根据自己的需求来设定 IFS变量,在举一个例子如下:while IFS=: read userName passWord userID groupID geCos homeDir userShelldoecho "$userName -> $homeDir"done < /etc/passwd7. shell 数组的使用数组赋值方式:(1) array=(var1 var2 var3 ... varN)(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)(3) array[0]=var1arrya[1]=var2...array[n]=varN计算数组元素个数或者长度:(1) ${#array[@]}(2) ${#array[*]}了解了数组基础语法,举例说明,请看:#!/bin/bashNAMESERVERS=("." "." ".") # 得到数组长度tLen=${#NAMESERVERS[@]}# 循环数组for (( i=0; i<${tLen}; i++ ));doecho ${NAMESERVERS[$i]}done在看一个复杂一点的例子,将文件内容读取到数组中:#!/bin/bash# 设置IFS将分割符设置为换行符(\n)OLDIFS=$IFSIFS=$'\n'# 读取文件内容到数组fileArray=($(cat file.txt))# restore itIFS=$OLDIFStLen=${#fileArray[@]}# 循环显示文件内容for (( i=0; i<${tLen}; i++ ));doecho "${fileArray[$i]}"done8. 逻辑判断条件测试∙文件属性的判断#!/bin/bashecho "checks the existence of the messages file."echo -n "Checking..."if [ -f /var/log/messages ];thenecho "/var/log/messages exists."fiechoecho "...done."∙字符串比较if [ "$(whoami)" != 'root' ]; thenecho "You have no permission to run $0 as non-root user." exit 1;fi数值比较(整数)num=`wc -l work.txt`if [ $num -gt 150 ];thenecho "you've worked hard enough for today."echofi如果要查看详细的测试操作,可以查看man手册 man test如何用脚本实现分割文件CODE:[Copy to clipboard]如何查找日期为某一天的文件CODE:[Copy to clipboard]如何计算当前目录下的文件数和目录数CODE:[Copy to clipboard]如何只列子目录?CODE:[Copy to clipboard]如何实现取出文件中特定的行内容CODE:[Copy to clipboard]如何查找含特定字符串的文件CODE:[Copy to clipboard]如何列出目录树CODE:[Copy to clipboard]如何实现取出文件中特定的列内容CODE:[Copy to clipboard]在vim中实现批量加密CODE:[Copy to clipboard]$@等特定shell变量的含义CODE:[Copy to clipboard]如何使程序的执行结果同时定向到屏幕和文件CODE:[Copy to clipboard]如何用sendmail给系统所有用户送信CODE:[Copy to clipboard]如何查找某条命令的相关库文件CODE:[Copy to clipboard]如何使用host命令获得更多信息CODE:[Copy to clipboard]如何停止终端多个进程CODE:[Copy to clipboard]如何转存用户bash_history文件2009年04月28日Program, Shellshell技巧脚本shell常用技巧用自动导入函数的方法,可以在命令行下像执行命令一样快捷,而且速度快,占用资源少. 1,建立自己的函数库mkdir functionlib然后将常用的脚本改成函数的语法,如:function filename { command ; }将filename拷贝到functionlib中,2,修改环境文件,在/etc/profile中添加export FPATH=$HOME/functionlib3,重登录一下这样的话,你就可以随时用像ls那样运行你自己的filename”命令”而不需要用什么dot,sh,来运行你的函数/脚本啦~~如果在脚本中运行,可以在脚本顶部用#!/bin/sh##autoload filename //来自动导入函数.…filename //调用函数…用自动导入函数的方法,可以在命令行下像执行命令一样快捷,而且速度快,占用资源少. 1,建立自己的函数库mkdir functionlib然后将常用的脚本改成函数的语法,如:function filename { command ; }将filename拷贝到functionlib中,2,修改环境文件,在/etc/profile中添加export FPATH=$HOME/functionlib3,重登录一下这样的话,你就可以随时用像ls那样运行你自己的filename”命令”而不需要用什么dot,sh,来运行你的函数/脚本啦~~如果在脚本中运行,可以在脚本顶部用#!/bin/sh##autoload filename //来自动导入函数.…filename //调用函数…技巧:pkill的妙用——————————————————————————–有的时候有很多进程或运行或睡眠或僵死,占用了很多宝贵的内存空间,kill固然可以杀掉某些进程,但更好的方法是用pkill,举例:代码:root//root>ps -APID TTY TIME CMD…1045 ? 00:00:00 kdeinit1052 ? 00:00:00 kdeinit1054 pts/0 00:00:00 xterm1056 pts/1 00:00:00 bash1082 pts/0 00:00:00 psroot//root>freetotal used free shared buffers cachedMem: 252340 212036 40304 0 5752 103200-/+ buffers/cache: 103084 149256Swap: 610460 0 610460root//root>pkill -9 xterm;free[1]+ Killed xtermtotal used free shared buffers cachedMem: 252340 210776 41564 0 5760 103200-/+ buffers/cache: 101816 150524Swap: 610460 0 610460在我杀掉了xterm这个进程后,看看你的free内存空间相应增加不少?.详细使用方法请:man pkill or pkill –help用stty和dd实现暂停,只须按一个键就可.#!/bin/ksh#function char {settty=$(stty -g)stty rawdd if=/dev/tty bs=1 count=1 2> /dev/nullstty -rawstty $settty}print “Press any key to continue…”input=$(char)技巧:如何检查用户的输入? ——————————————————————————–有的时候,我们对用户的输入要作必要的检测,如,限制输入的长度/类型.举例说明:代码:#!/bin/ksh#要求用户必须输入四个数字while truedoecho -n “请输入四个数字:”read numlen=${#num}#变量len存放输入的长度if [[ $num != [0-9][0-9][0-9][0-9] || $len != 4 ]] then#进行检测,如果你输入有非数字字符,或者长度不等于四个,便提示错误信息echo “错误! 重新输入”continueelseecho “输入正确,退出!”;exit 0fidone这是个例子,在我们编写脚本中可以借鉴shell变量传递给sed,awk,grep简单方法——————————————————————————–有时候在脚本编写中,需要往诸如awk等工具中传递shell的变量,举个简单的例子,如: ps -aux|sed -n 1pread input?”please field number your want to see:”ps -aux|awk ‘{print $”‘${input}’”}’read enter?”please line number your want to see:”ps -aux|sed -n ${enter}pread user?”please username your want to see:”ps -aux|grep $user注:上述文件无实际意义,只为说明而已.开启小键盘数字灯的方法——————————————————————————–在man setleds的描述中,有一段设置字符控制台数字灯的脚本:代码:INITTY=/dev/tty[1-8]for tty in $INITTYdosetleds -D +num < $ttydone把它放在/etc/rc.d/rc.local文件中即可!这样就可以像WIN一样一启动系统,它的小键盘的数字灯总是打开的!在字符模式下,也可以这样:setleds -D +num/+caps/+scroll技巧:把输入的密码变成*号的方法-------------------------------------------------------------------------------- 注:此贴转自:代码:#!/bin/shgetchar() {stty cbreak -echodd if=/dev/tty bs=1 count=1 2> /dev/nullstty -cbreak echo}printf “Please input your passwd: ”while : ; doret=`getchar`if [ -z $ret ]; thenechobreakfistr=”$str$ret”printf “*”doneecho “Your password is: $str”技巧:数值转换——————————————————————————–代码:#!/bin/bash#scriptname:conver#在BASH下简单实现十进制到二进制和十六进制的转换cat<技巧:统计文本中单词数量的方法——————————————————————————–有些单词在一篇文章中经常会出现很多次,怎么统计这个单词的个数呢?!如:文件kshfile,统计shell这个单词的个数,$cat kshfilekshThe “Korn” shell, written by David Korn of AT&T Bell Labs (now Lucent). Written as a major upgrade to “sh”, it is compatible with it, but has many more internal commands for the most frequently used functions. It also incorporates most of the same features from tcsh which enhance interactive use (command line history recall etc.). This shell is now available on most systems. It was slowto gain acceptance because earlier versions were encumbered by AT&T licensing. $cat kshfile|tr ” ” ” “|grep -wc shell2技巧:显示文本奇数偶数的方法——————————————————————————–[javalee//home/javalee/myshell]cat tmpaaaaaaddddddkasdkfkkdjhasdjfdfddfkjsdfklklsasdfjklkas#显示文件tmp的奇数行的内容:[javalee//home/javalee/myshell]sed -n ‘1,$p;n’ tmpaaaaaakasdkfkkdfddfasdfjklkas#显示文件tmp的偶数行的内容:[javalee//home/javalee/myshell]sed -n ‘1,$n;p’ tmpdddddddjhasdjfkjsdfklkls技巧:倒读文本——————————————————————————–例如文章:$cat -n tmp1 abcdefgh2 1232342343 sjdfk234231,行号倒序:$cat -n tmp|tac #tac和cat很有趣吧~~3 sjdfk234232 1232342341 abcdefgh2,每行倒读:$cat tmp|revhgfedcba43243232132432kfdjs3,全部倒过来:$cat -n tmp|rev|tac32432kfdjs 3432432321 2hgfedcba 14,用sed也可以解决要求对sed有足够的理解)$cat -n tmp|sed ‘/ /!G;s/(.)(.* )/&21/;//D;s/.//’hgfedcba 1432432321 232432kfdjs 3技巧:把汉字转换成十六进制和二进制的方法——————————————————————————–命令行下,利用perl的unpack函数,可以将汉字巧妙的变成十六进制和二进制,如: [javalee//home/javalee/myshell]perl -le ‘print unpack(“B*”,”中”);’ #把汉字”中”转换成二进制1101011011010000[javalee//home/javalee/myshell]perl -le ‘print unpack(“H*”,”国”);’ #把汉字”国”转换成十六进制b9fa技巧:妙用watch命令实时观察内存变化——————————————————————————–在linux中,有一个很有趣的命令–watch,他的作用很有趣!他作用是以全屏幕方式重复地执行指定的命令,用户可以通过他了解命令的运行情况.如,我们要观察内存动态的变化,那么就可以:watch free这样就可以动态的观察内存中各个指标在指定时间内的变化啦~~,如要观察虚拟内存的变化,也可以通过打开另外一个终端,而不耽误当前终端的操作!:xterm -e watch -n 1 vmstat &这样就会弹出一个xterm,显示有关虚拟内存的情况.详细解释,请:watch –helpman watch技巧:用 tr 过滤文件[转贴]——————————————————————————–了解文本实用程序Jacek Artymiak(jacek@)自由作家和顾问2003 年 7 月没有人曾说过 sed 很容易–它确实不容易!但通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。

相关文档
最新文档