当前位置:文档之家› unix常用shell命令与shell编程介绍

unix常用shell命令与shell编程介绍

unix常用shell命令与shell编程介绍
unix常用shell命令与shell编程介绍

UNIX 简介

1.UNIX版本

UNIX 操作系统1969 年在贝尔实验室诞生。在七十年代的中期,一些大学得到使用UNIX 的许可,并很快在学院之间得到广泛流行。当UNIX 传播到位于California 的Berkeley 大学的时候,Berkeley 大学的使用者们创建了自己的UNIX 版本,在得到国防部得支持后,他们开发出了许多新的特性。当AT&T 意识到这种操作系统的潜力后就开始将UNIX 商业化,为了加强产品性能,他们在AT&T 的不同部门进行UNIX 系统开发,并且开始在系统中结合Berkeley 开发出的成果。由此形成了Unix的两个重要派系:

●加州大学伯克力分校的BSD版(Berkeley Software Distribution)

●AT&T的Unix System V

经历一段时间后,两个派系决定休战,然后出现了包含BSD和System V所有特性的新版本:System V-SVR4

目前比较流行的UNIX版本还有两个派系

●XENIX 版本,由SCO机构发行,目前功能与System V相似

●OSF/1版本,OSF/1仍以BSD为主,包括一些System V的功能,Digital

是主要发行公司

SUN的早期版本SUN OS 4.X,HP的HP-UX是基于BSD版本开发的,SUN现在的版本Solaris(SUN从SUNOS5开始命名为Solaris2),IBM的AIX都是基于Unix System V开发的。由于这两个派系支持的C语音函数有些不同,因此SUN在新版本中保留了目录/ucb, /ucblib, /ucbinclude 来提供BSD版本的C函数支持。

注:ucb 是加州大学伯克力分校(University of California,Berkeley)

2.UNIX构成

UNIX主要由三个部分构成:

●UNIX核心

●用户进程

●文件系统

UNIX核心主要是由C语音编写的,还有少部分汇编代码,完成最基本的任务:

●处理硬件终端和例外

●提供系统服务

●建立用户进程并调度执行

3.UNIX文件系统

Unix文件系统是树形结构,每一个文件系统对应文件系统/dev目录下的一个设备文件。Unix文件系统都有一个根文件系统(目录名是’/’),其他文件系统都是挂接在根文件系统或者其子文件系统的目录上。文件系统常见目录结构如下图:

系统重要目录的功能说明:

?/opt 这个目录会用来存放应用程序和产品。开发人员和系统管理员会用

它来安装新的产品和本地的应用程序。

?/usr/bin 这个目录包含了基础的UNIX系统操作和文件处理的命令,所有

的用户都有权限读取这个目录("bin" 是binary 的缩写)。

?/usr/sbin 这个目录中有所有的在帮助手册1m章节中的命令,这些命令

都是系统管理命令。大都必须是超级用户才能使用其中的大多数命令。

?/usr/lib 这个目录包括应用程序使用的文档和共享的库

?/usr/share 这个目录包括独立提供的文件(其中最重要的是帮助手册)

?/usr/share/man 这个目录包括所有的语在线帮助页有关的所有的文

件。

?/uar/local/bin 这个目录通常用来存放本地开发的程序和工具

?/usr/contrib/bin 这个目录通常用来存放公用的程序和工具

?/sbin 这个目录包括基本的用于启动与关闭系统的命令

?/home 存放用户目录

?/etc 这个目录中有许多的系统配置文件

?/stand/vmUNIX 这个文件存储的是UNIX系统内核的文件。

?/tmp 这个目录通常被操作系统的一个临时空间,通常是运行

时的中间文件,或是工作临时文件时使用。

?/dev 这个目录下有那些可以被联接到你系统中的硬件设备的

文件,这些文件是作为一个到设备之间的联接。

?/mnt 这个目录用来挂接其它的设备(例如:光驱)

?/var/mail 这个目录包括每一个有邮件的用户的信箱。

?/var/tmp 这个目录通常被用于用户的临时空间。

?lost+found 存放修复文件系统时

系统启动时根据配置文件自动挂接文件系统,配置文件如下:

?Solaris:/etc/vfstab

?HP-UX:/etc/fstab

?AIX:/etc/filesystems

3.1. 文件系统类型

?ufs(User File System)

?cdfs(CD-ROM File System)

?日志文件系统jfs,vxfs

?nfs(NetWork File System)

ufs是古老的文件系统,它的结构如下:

柱面组块i结点表数据块

文件系统由一些柱面组构成。每个文件系统有卷标(label)、引导块、超级块(supperblock)、柱面组块(cylinder group block)和i结点表。16个扇区为一个文件系统块。

卷标在硬盘的第一个扇区(512bytes)上,其后的15个扇区是引导块(boot block),卷标和引导块加起来,占第一个文件系统块(8192bytes)。每个文件系统都有引导块,只有根(root)文件系统的卷标和引导块是激活的。

超级块描述了文件系统,占用接下来的16个扇区。它包含参数:块数、柱面组数、块长度、碎片长度、优先级、硬件描述(从卷标获得)、挂接点等。当文件系统挂接时,超级块被读入内存,以后所有建立、删除文件的操作都在超级块的内存副本上进行,若系统未将超级块写回硬盘之前,操作系统突然崩溃,文件系统将受损。由于超级块的重要性,它被复制到每个柱面组。

柱面组块记录了柱面组的I结点总数和数据块总数、柱面组的目录数、空闲块数、空闲结点数、空闲碎片数、空闲块表、已用I结点表。

根i结点是每个文件系统的根目录,i结点0不作普通用途,而传统上i结点1指向坏块(现在已不作此用途),因此,根i结点为2,I结点3指向lost+found目录。

i 结点记录中有关文件的信息

12个直接数据块可使文件容量达到96KB。一次间接块可使文件容量达到16MB(每个块有2048个指针,可指向2048个数据块)。二次间接块可使文件容量达到32GB。

SUN操作系统目前还是使用ufs格式的文件系统,ufs使用内存作为文件系统的缓冲区,系统掉电引起的缓冲区内容未更新到硬盘将导致文件系统损坏。

AIX使用的是JFS,HP使用的VxFs是新型的文件系统,使用硬盘作为文件系统的缓冲区,降低性能来换取系统的高可靠性。而且此文件系统允许动态改变文件系统的大小,ufs文件系统无法扩大,只能通过重建文件系统来实现。

NFS是允许主机之间共享文件系统的技术。

相关命令:

format mkfs fsck mount umount df / bdf fuser exportfs

3.2. 目录和文件

在Unix文件系统中,可使用的文件类型有:

●普通文件

●目录文件

●设备文件

●链接文件

●隐形文件

UNIX系统中的每一事物都是一个文件,包括:普通文件文本,邮件信息,数据,图片,程序源代码程序可执行的程序,例如ksh,who,date,man,和ls

目录:特殊的文件,记录有所包含的文件和目录的名字和文件系统中的标识。目录同时也存储了每个条目的inode (i节点号),inode 号标识有文件信息和数据在文件系统中存储的地址。

设备:一种特殊的文件,提供到硬件设备的接口,包括有磁盘,终端,打印机,内存。由于这些文件是作为接口存在的,它们不会存储有任何实际的数据。它们一般都在/dev 目录下,你的计算机的每一个需要联接的硬件设备都会有一个设备文件相对应。设备文件分字符文件和块文件两种,块大小一般是512字节。(BSIZE定义在/usr/include/sys/param.h )

链接文件分为硬连接和软连接。硬连接不能跨文件系统,不能用于目录、文件的硬连接数为0时文件才被删除;所有硬连接的权限都相同。软连接slinkfile->origfile,它的权限作不得准。

隐形文件其实还是普通的文件,唯一特殊的只是文件名是以小数点打头。用“ls -a”命令列出文件列表时,隐形文件才会显示,其他时候不会显示。

注:/dev/null 为编程方便而设的空设备,把输出定向到该设备就是不产生任何输出

下图是文件系统内容列表示例:

文件类型字段的值和对应含义如下

-普通文件

◆ d 目录

◆l 链接文件(软连接)

◆n 网络专用文件

◆ c 字符设备文件(终端,打印机)

◆ b 块设备文件(磁盘)

◆p 命名的管道(一种内部过程通信通道)

- r w x r- x r- x:这是该文件的权限位。如果除去最前面的横杠,这里一共是9个字符,他们分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。这9个字符可以分为三组:

r w x:文件属主权限这是前面三位

r- x:同组用户权限这是中间三位

r- x:其他用户权限这是最后三位

目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位。执行权限位则意味着搜索和访问该目录。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。用户不能够进入该目录并不妨碍他的执行。

目录的权限将会覆盖该目录中文件的权限。例如,如果目录d o c s具有如下的权限:

而其中的文件p a y的权限为:

那么a d m i n组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。该文件对任何用户都可读,但由于它所在的目录并未给a d m i n组的用户赋予执行权限,所以该组的用户都将无法访问该目录,他们将会得到“访问受限”的错误消息。

相关命令:

ls cd pwd mkdir rmdir touch rm vi find grep cat more cp mv ln mknod tar compress chmod umask

4.UNIX帐户

用户名称和ID

组的名称和ID

用户目录

默认使用的SHELL

注:用户ID=0的用户就是管理员

5.UNIX命令

5.1.1.ln -s sourcefile targetfile

创建链接,-s 表示创建符号链接

5.1.2.touch [ -acm ] [-r ref_file | -t time ] file ...

改变文件的访问或修改时间。-a 访问,-m 修改,-c 不创建新文件

5.1.3.*find

find / -name a.tar 2> /dev/null

find . -size +255c

find . -size -7c

find . -mtime -5 -exec ls -l {} \;

ls -l $(find . -name jiang23)

ls -l `find . -name jiang23`

5.2. 进程命令

5.2.1.* ps

显示进程

查占内存多的进程(RSS 是实际内存,单位K)

ps -ef | grep

ps aux|head -n1;ps aux|sort -rn +5|more

5.2.2.sleep

sleep 秒数;等待指定的秒数。

5.2.3.wait

wait [PID];不带参数,等待用户进程全部执行完毕

5.2.4.* kill

不带消息,默认传递“TERM”消息,杀死进程;带消息,就传递消息给进程。

kill -l; 列出可用消息选项。常用的有:STOP(暂停)、CONT(继续)、HUP(挂起)、TERM (终止)、KILL(强制终止)。可使用序号代替消息名,如KILL序号是9,HUP是1。

kill [-SIG] [PID] [%JOB];

%JOB:如”%vi t .txt”,将杀死所有vi命令产生的进程,不单单”%vi t .txt”。

PID=0 :表示终止组ID与kill命令组ID相等的所有进程

PID=-1:终止有效用户ID与kill命令进程用户ID相等的进程

PID=-n:取绝对值

5.2.5.nice

改变进程的优先级。例:nice -n16 find . -name *.c -print&

“-n16”中的16表示优先级,范围[-20~20],值越小,优先级越高。

5.2.

6.bg / Ctrl-Z

把当前作业推到后台,命令后带上“&”符合效果相同

5.2.7.fg

把作业拉到前台。例:fg %工作号;fg %\?.job(\”表示后继字符有特殊含义)

5.2.8.jobs -l

作业列表

5.2.9.*nohup

nohup使用户运行一条命令,即使用户注销退出也照样运行。经常和&符合连用。

5.2.10.* alias

alias yy="ps -ef|grep yq"

alias l="ls -al"

5.3. 系统命令

5.3.1.集成命令

AIX:smitty

HP-UX:sam

SUN:admintool

SCO:scoadmin

5.3.2.mount

mount -a [ fnv ] [ -t type ] ; 挂接/etc/fstab文件中的所有挂接。若有type参数,则挂接/etc/fstab文件中的所有同类挂接

mount [ -fnrv ] [ -t type ] [ -o options ] filesystem directory;

-f : 假造/etc/mtab文件。但不真正挂接任何系统

-n: 挂接文件系统,但不修改/etc/mtab文件

-r: 以只读方式挂接

-v: 显示挂接结果

-t: 挂接文件系统的类型。类型有:dos nfs, rfs, lo, hsfs, tmp

umount -a [ v ];解挂

umount [ -v ] filesystem |directory ...

5.3.3.pkgadd -d . /GNUgcc

sunOS sparc 安装已编译好的GNUgcc编译软件。./GNUgcc是目录

要删除用:pkgrm GNUgcc

5.3.4.sar

sar -A 5 2; 显示系统资源的占用情况。5表示每隔5秒,2表示2次。

sar; 等同于sar –f /var/adm/sa/sa31 ;sa31不是固定的,今天12号就是sa12。5.3.5.vmstat

显示系统资源的占用情况

5.3.

6.shutdown

关闭系统,类似的命令有halt,reboot

5.3.7.ulimit

ulimit –a 显示系统的限制参数

5.4. 网络命令

5.4.1.*ping

5.4.2.traceroute

5.4.3.*查看IP

ifconfig –a

netstat -ni

5.4.4.路由命令

显示路由netstat -nr

路由修改route

5.4.5.远处执行

rcp rsh rlogin

5.4.

6.*telnet

5.4.7.*ftp

ftp中常用命令:

ascii:将传输模式设为ascii 模式。通常用於传送文字档。

binary:将传输模式设为binary 模式,通常用於传送执行档,压缩档与影像档等。

cd remote-directory:将remote host(远方)上的工作目录改变。

lcd [ directory ]:更改local host (本地)的工作目录。

ls [ remote-directory ] [ local-file ]:列出remote host 上的档案。

get remote-file [ local-file ]:取得远方的档案。

mget remote-files :可使用通用字元一次取得多个档案。

put local-file [ remote-file]:将local host 的档案送到remote host。

mput local-files :可使用通用字元一次将多个档案放到remote host 上。

help [ command ]:线上辅助指令。

mkdir directory-name :在remote host 造一个目录。

prompt 更改交谈模式,若为on 则在mput 与mget 时每作一个档案之传输时均会询问。

quit/bye 离开ftp

配置文件”.netrc”,参数-i -n

5.5. 其他命令

5.5.1.计算器bc

5.5.2.*日期date

显示日历的命令是cal

5.5.3.*特殊符号

管道符:|

标准输入输出:< 和 << 和 > 和 >> 和 2> 和 2>> 和 >&n 和 <&n

执行符:”.”

双引号:使用双引号,可以去除美元符号、反引号和反斜线外的任意字符或字符串的特殊含义

单引号:可以去除引号中一切其他字符的特殊含义

反引号“``”:s h e l l将反引号中的内容作为一个系统命令,并执行其内容

波浪号“~”:代表用户目录

* :匹配任意个字符

? :匹配任意一个字符

反斜线“\”:如果下一个字符有特殊含义,去除该字符的特殊含义,有特殊含义的字符有:& * + ^ $ ` " | ?

注释符号 #

5.5.4.删除键设置stty

stty erase "^H"

5.5.5.查看二进制文件od

5.5.

6.*排序命令sort

sort +5

sort +5 -n

5.5.7.*过滤命令grep

常用的 grep 选项有:

-c 只输出匹配行的计数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。

grep DEST *.c

grep –v DEST

5.5.8.*查找文件find

其基本格式如下:

find pathname -options [-print -exec -ok]

让我们来看看该命令的参数:

pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

-print find命令将匹配的文件输出到标准输出。

-exec find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' command' {} \;,注意{ }和\;之间的空格。

-ok 和- e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的s h e l l命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

-name 按照文件名查找文件。

-perm 按照文件权限来查找文件。

-prune 使用这一选项可以使f i n d命令不在当前指定的目录中查找,如果同时使用了- d e p t h选项,那么- p r u n e选项将被f i n d命令忽略。

-user 按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n 天以内,+ n表示文件更改时间距现在n天以前。F i n d命令还有- a t i m e和- c t i m e选项,但它们都和- m t i m e选项相似,所以我们在这里只介绍- m t i m e 选项。

-nogroup 查找无有效所属组的文件,即该文件所属的组在/ e t c / g r o u p s中不存在。

-nouser 查找无有效属主的文件,即该文件的属主在/ e t c / p a s s w d

中不存在。

-newer file1 ! file2 查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件。

-type 查找某一类型的文件,诸如:

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/ e t c / f s t a b中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount 在查找文件时不跨越文件系统m o u n t点。

-follow 如果f i n d命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio 对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。

nohup sleep 600 &

5.5.9.cut

cut用来从标准输入或文本文件中剪切列或域。

cut一般格式为:

cut [options] file1 file2

下面介绍其可用选项:

-c list 指定剪切字符位置。

-f field 指定剪切域数。

-d 指定与空格和t a b键不同的域分隔符。

- c用来指定剪切范围,如下所示:

- c 1,5-7 剪切第1个字符,然后是第5到第7个字符。

-c1-50 剪切前5 0个字符。

-f 格式与- c相同。

-f 1,5 剪切第1域,第5域。

- f 1,10-12 剪切第1域,第1 0域到第1 2域。

5.5.10.*tar

tar cvf DESTFILENAME SOURCE

tar tvf DESTFILENAME

tar xvf DESTFILENAME

绝对路径和相对路径的区别

5.5.11.*压缩命令compress

compress a.tar

compress -c a.tar > a.tar.Z

compress -d a.tar.Z === uncompress a.tar.Z

5.5.12.crontab

cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。可以使用它运行任意一个s h e l l脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。每一个用户都可以有自己的crontab文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过c r o n . d e n y和c r o n . a l l o w这两个文件来禁止或允许用户拥有自己的crontab文件。

下面是c r o n t a b的格式:(其中< >表示空格)

分< >时< >日< >月< >星期< >要运行的命令

在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1 - 5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号*来表示连续的时间段。如果你对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。

例子:* * 6,0 /bin/find -name "core" -exec rm {} \;

c r o n t a b命令的一般形式为:

crontab [-l|-r|-v|-e|File] 中:

-e 编辑c r o n t a b文件。

-l 列出c r o n t a b文件中的内容。

-r 删除c r o n t a b文件。

编辑crontab的工具有变量EDITOR指定,需要重定义的话语句如下:

EDITOR=vi; export EDITOR

5.6. *vi 命令

vi 命令的状态模式

5.6.1.进入vi

$vi hello.c $view hello.c 进入vi;view为只读方式打开文件。

$vi +5 test.c ;处于第5行

$vi + hello.c; 处于最后一行

$vi +/int hello.c ;处于有”int “的行

$vi -r hello.c ;上回编辑时系统崩溃,没来得及存盘时用

5.6.2.Redo .

小数点“.”表示重复前一命令,结果与当前光标位置有关

5.6.3.Undo

字符“u”取消上一命令。

5.6.4.显示信息

Ctrl+g 显示文件名,行数,当前行

"myfile.txt" [Modified] line 2 of 3 --66%--

5.6.5.移动光标

h 左j下k上l右

nG :n 到第n行行首,n是一个数字,不带n到文件末。

w 下一词头 b 上一词头

0 行首(是数字0)^ 第一个非空白字符$ 行尾

( 句首) 下一句首

{ 段首} 下一段首

Ctrl-u 前滚1/2屏Ctrl-d 后滚1/2屏

Ctrl-f 前滚一屏Ctrl-b 后滚一屏

H 屏首M 屏中L 屏尾

5.6.6.删除文本

(dw dd x X 前可加数字,表示要删除对象的数目)

:n,md n,m是数字,表示删第n~m行

dd 删当前行

dw 删当前词

x 删当前字符

X 删前一个字符

d$ D 删至行末

d^ 删至行首

d0 d( d) d{ d} dH dM dL dw db (”d”可和光标移动键配合使用)

5.6.7.编辑命令

i 在光标前插入文本

I 在行首插入文本

a 在光标后插入文本

A 在行末插入文本

o 在当前行下插入一行

O 在当前行上插入一行

r 替换当前字符

R 替换字符,直到按〖ESC〗键退出编辑状态

~ 大小写转换

5.6.8.复制/粘贴

:k , j m h 或kmh 将k~j行移至h行下,k j h是数字,m 是命令

:k , j t h 或kth 将k~j行复制到h行下,co命令也是复制

Y 或nY 当前行或当前行起n行复制到剪贴板

p 剪贴板内容复制到当前行下

P 剪贴板内容复制到当前行上

n”kY 或“knyy 当前行起n行的内容复制到名为k的剪切板中,k可为单个字母或数字“knyw 当前词起n个词的内容复制到名为k的剪切板中

“knyl 当前字符起n个字符的内容复制到名为k的剪切板中

“kp 把名为k的剪切板的内容粘贴至下一行

5.6.9.寻找/替换

/ 向前查找

? 向后查找

s 替换

特殊字符:

^ 匹配串应位于行首

$ 匹配串应位于行尾

. 可表示任意单个字符

表示其前面字符可出现任意多次(含0次)

[ ] 指定范围,如[a-z],用^ 表示不在此范围

例:/^.*$表示从行首”^”开始,匹配任意字符”.”,任意多次”*”,直到行末”$”

:n,m s/old_str/new_str/gc在n~m行间,用新串替换旧串,”/g”表示全文匹配,否则每行只替换第一个旧字符串;”/c”表示替换钱提示,输入”y”替换。

:1,$s/HA322/PT359/g把所有的字串”HA322”替换为”PT359”,替换前不提示。”1,$”表示从第一行到最后一行

:g/old_str/ s //new_str/g 将文件中所有的旧串替换成新串

:S/ old_str/new_str/g将当前行中所有的旧串替换成新串(sun上不行)

5.6.10.打开/保存

:n 切换到下一个文件

:rew 从下一个文件开始从新编辑

:rew!

:e 打开文件

:r 文件名把文件读入,放光标下一行

:1,5w 文件名把1~5行写入新文件中

:1,5w! 文件名把1~5行写入文件中,不指定行数,即全文写入,如:”w!”

:x 存盘退出,不管是否已作修改

:q! 强行退出,不管是否已作修改

:wq 存盘退出

:q 退出,若已作改动,则无法退出

5.6.11.执行Shell命令

:! 命令执行命令,如:!data

:r ! 命令把Shell命令的输出作为vi的输入

:2,5w! cat把vi的输出作为Shell命令的输入

:!sh 进入子Shell系统,用exit命令退出

5.6.12.设置/显示

set设置环境参数

Ctrl-g 显示文件名、状态、当前行、总行数、当前行与总行数之比

Ctrl-l 重画屏幕

:nu 显示当前行号、行内容

all 显示所有选项设置情况

ignorecase / noignorecase 是否区分大小写

number / nonumber 是否显示行号

wrapscan / nowrapscan 搜索至文件头或尾时是否不再回绕

nomagic / magic 消除搜索时”* . $ [ ] “等字符具有的特殊意义,引用它们不需“\”term 设置终端类型

list / nolist 显示制表位(Ctrl+I)和行尾标志($)

report=1 显示由面向行的命令修改过的行数,默认值为1

terse / noterse 只显示简短的警告信息

warn /nowarn 是否显示告警

mesg 允许其他用户用write命令把信息写到终端上

永久性设置

方法一:使用环境变量EXINIT,该变量是ex 初始化用的

$EXINIT=”set number nowarn terse”

$export $EXINIT

方法二:配置~/.exrc 文件,因为vi 是从ex 发展来的,所以它的配置脚本名为.exrc 。

实例:set number

set nowrapscan

CRT常用命令

SecureCRT 常用命令 2010年4月26日 | 分类: Linux | 标签: SecureCRT 常用命令: 一、ls 只列出文件名(相当于dir,dir也可以使用) -A:列出所有文件,包含隐藏文件。 -l:列表形式,包含文件的绝大部分属性。 -R:递归显示。 –help:此命令的帮助。 二、cd 改变目录 cd /:进入根目录 cd :回到自己的目录(用户不同则目录也不同,root为/root,xxt为/home/xxt cd ..:回到上级目录 pwd:显示当前所在的目录 三.less 文件名:查看文件内容。 四.q 退出打开的文件。 五.上传文件: rz 选择要传送的文件,确定。 六.下载文件: sz 指定文件名,enter敲,即下载到了secureCRT/download目录下。 七:删除文件: rm 删除文件,rmdir 删除空目录。 八.显示最近输入的20条命令:history 20 九.获得帮助命令–help查看命令下详细参数:如:rz –help , sz –help 。 十.cd 进入某个文件夹的命令: mkdir+文件夹名创建某个文件夹的命令 sz+文件名从服务器端向本机发送文件的命令 rz 从本机向服务器端传送文件的命令 ll 列出当前目录下的所有文件,包括每个文件的详细信息 dir 对当前文件夹 vi 打开当前文件 十一.在编辑某个文件的时候: a 切换到编辑模式 ctrl+c 退出编辑模式

dd 删除整行 :q 退出当前文件 :w 写入并保存当前文件 -f 强行xx的参数。。。 其它命令: 1.ps -ef //查看server的进程,以列表形式显示的server进程。 ps 显示当前在系统运行的进程 /usr/bin/ps [选项] -e 显示每个现在运行的进程 -f 生成一个完全的列表 实际操作: ————————————– 1 SSH客户端连接到10.5.1.55系统(参见《启动远程客户端说明SecureCRT.doc》) $ cd /home/bea2/user_projects/csdomain/bin 2 查看weblogic92服务进程 $ ps -eaf | grep weblogic bea2 327926 331940 0 13:08:45 pts/4 0:00 grep weblogic webadmin 421908 368956 0 Sep 24 - 4:13 /usr/java5_64/bin/java -Xms256m -Xmx512m -da -Dplatform.home=/home/weblogic/bea/weblogic92 -Dwls.home=/home/weblogic/bea/weblogic92/server -Dwli.home=/home/weblogic/bea/weblogic92/integration -Dweblogic.management.discover=true -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/home/weblogic/bea/patch_weblogic923/profiles/de fault/sysext_manifest_classpath https://www.doczj.com/doc/3812287904.html,=AdminServer -Djava.security.policy=/home/weblogic/bea/weblogic92/server/lib/webl ogic.policy weblogic.Server bea2 491796 385044 17 00:12:50 pts/6 182:55 /usr/java5_64/bin/java -Xms6g -Xmx8g -javaagent:/home/bea2/user_projects/csdomain/Introscope/wily/Agent.j ar -Dcom.wily.introscope.agentProfile=/home/bea2/user_projects/csdomain /Introscope/wily/IntroscopeAgent.profile -Dcom.wily.introscope.agent.agentName=AdminServer -da -Dplatform.home=/home/weblogic/bea/weblogic92 -Dwls.home=/home/weblogic/bea/weblogic92/server -Dwli.home=/home/weblogic/bea/weblogic92/integration

Linux主要shell命令详解

shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell 就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。 有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。 shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。 shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。 当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用―$‖作提示符,对超级用户(root)用―#‖作提示符。 一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。

最常用的Shell命令

Shell命令行操作 Linux shell 简介 Linux shell指的是一种程序,有了它,用户就能通过键盘输入指令来操作计算机了。Shell会执行用户输入的命令,并且在显示器上显示执行结果。这种交互的全过程都是基于文本的,与其他各章介绍的图形化操作不同。这种面向命令行的用户界面被称为CLI(Command Line interface)。在图形化用户界面(GUI)出现之前,人们一直是通过命令行界面来操作计算机的。 现在,基于图形界面的工具越来越多,许多工作都不必使用Shell就可以完成了。然而,专业的Linux用户认为Shell是一个非常有用的工具,学习Linux时一定要学习Shell,至少要掌握一些基础知识和基本的命令 启动shell 在启动Linux桌面系统后,Shell已经在后台运行起来了,但并没有显示出来。如果想让它显示出来, 按如下的组合键就可以: + + 组合键中的F2可以替换为 F3、F 4、F 5、F6。 如果要回到图形界面,则按如下组合键: + + 另外,在图形桌面环境下运行“系统终端”也可以执行Shell命令,与用组合键切换出来的命令行界面

是等效的。“系统终端”启动后是一个命令行操作窗口,可以随时放大缩小,随时关闭,比较方便,推荐使用。启动“系统终端”的方法是: 【开始】→【应用程序】→【附件】→【系统终端】 该软件允许建立多个Shell客户端,它们相互独立,可以通过标签 在彼此之间进行切换。 Shell命令基本规则 一般格式 Shell命令的一般格式如下: 命令名【选项】【参数1】【参数2】... 【选项】是对命令的特别定义,以减号(-)开始,多个选项可以用一个减号(-)连起来,如ls -l -a与 ls -la 相同。 【参数】提供命令运行的信息,或者是命令执行过程中所使用的文件名。 使用分号(可以将两个命令隔开,这样可以实现一行中输入多个命令。命令的执行顺序和输入的顺序 相同。 命令补全 在送入命令的任何时刻,可以按键,当这样做时,系统将试图补全此时已输入的命令。如果已 经输入的字符串不足以唯一地确定它应该使用的命令,系统将发出警告声。再次按键,系统则会给出可用来补全的字符串清单。使用命令补全功能,可以提高使用长命令或操作较长名字的文件或文件夹的都是非常有意义的。

linux+shell脚本语言基础知识

linux shell脚本语言基础知识 一.shell简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。 二.shell使用 1.建立和运行shell程序 shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件: #!/bin/bash #hello world example

Shell脚本编写基础

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的https://www.doczj.com/doc/3812287904.html,所做的一样,所不同的是,在DOS中,https://www.doczj.com/doc/3812287904.html,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。 二、几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL $SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令: #shell-name 来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令: $exit 可以退出这个子shell。 使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍: 1.ash ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 2.bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 3.ksh ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。 4.csh

常用shell脚本

如何用脚本实现分割文件 #!/bin/bash if [ $# -ne 2 ]; then echo 'Usage: split file size(in bytes)' exit fi file=$1 size=$2 if [ ! -f $file ]; then echo "$file doesn't exist" exit fi #TODO: test if $size is a valid integer filesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesize let pieces=$filesize/$size let remain=$filesize-$pieces*$size if [ $remain -gt 0 ]; then let pieces=$pieces+1 fi echo pieces: $pieces i=0 while [ $i -lt $pieces ]; do echo split: $file.$i: dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1 done echo "#!/bin/bash" >; merge echo "i=0" >;>; merge echo "while [ $i -lt $pieces ];" >;>; merge echo "do" >;>; merge echo " echo merge: $file.$i" >;>; merge echo " if [ ! -f $file.$i ]; then" >;>; merge echo " echo merge: $file.$i missed" >;>; merge

xshell-linux命令

suse linux 常用命令 (1)命令ls——列出文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当前目录下以字母a开头的所有文件 ls -l *.doc 给出当前目录下以.doc结尾的所有文件 (2)命令cp——复制文件 cp afile afile.bak 把文件复制为新文件afile.bak cp afile /home/bible/ 把文件afile从当前目录复制到/home/bible/目录下 cp * /tmp 把当前目录下的所有未隐藏文件复制到/tmp/目录下 cp -a docs docs.bak 递归性地把当前目录下的docs目录复制为新目录docs.bak,保持文件属性,并复制所有的文件,包括以句点开头的隐藏文件。为了方便起见,-a选项包含-R 选项 cp -i 在覆盖前询问用户 cp -v 告诉用户正在做什么 (3)命令mv——移动和重命名文件 mv aflie bfile 将afile重命名为bfile mv afile /tmp 把当前目录下的afile移动到/tmp/目录下 (4)命令rm——删除文件和目录 rm afile 删除文件afile rm * 删除当前目录下的所有文件(未隐藏文件)。rm命令不删除目录,除非也指定了-r(递归)参数。 rm -rf domed 删除domed目录以及它所包含的所有内容 rm -i a* 删除当前目录下所有以字母a开头的文件,并且在每次删除时,提示用户进行确认 (5)命令cd——更改目录 cd ~ 切换到主目录 cd /tmp 切换到目录/tmp cd dir切换到当前目录下的dir目录 cd /切换到根目录 cd ..切换到到上一级目录 cd ../..切换到上二级目录 cd ~切换到用户目录,比如是root用户,则切换到/root下 (6)命令mkdir——建立目录 mkdir phots 在当前目录中建立名为photos的目录 mkdir -p this/that/theother 在当前目录下建立指定的嵌套子目录 (7)命令mkdir——删除目录 mkdir 将删除空目录 (8)命令more、less——查看文件内容 more /etc/passwd 查看/etc/passwd的内容 功能:分页显示命令

Shell脚本编程详解-吐血共享

第12章 Shell 脚本编程 ● Shell 命令行的运行 ● 编写、修改权限和执行Shell 程序的步骤 ● 在Shell 程序中使用参数和变量 ● 表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序 12-1 Shell 命令行书写规则 ◆ Shell 命令行的书写规则 对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: [root@localhost root]# ls a* -l;free;df 长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “ this is \ >long command ” This is long command 注意: “>”符号是自动产生的,而不是输入的。 12-2 编写/修改权限及执行Shell 程序的步骤 ◆ 编写Shell 程序 ◆ 执行Shell 程序 Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。

12-2-1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。 [root@localhost bin]#vi date #! /bin/sh echo “Mr.$USER,Today is:” echo &date “+%B%d%A” echo “Wish you a lucky day !” 注意: #! /bin/sh通知采用Bash解释。如果在echo语句中执行Shell命令date,则需要在date 命令前加符号“&”,其中%B%d%A为输入格式控制符。 12-2-2 建立可执行程序 编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。[root@localhost bin]#chmod +x date 12-2-3 执行Shell程序 执行Shell程序有下面三种方法: 方法一: [root@localhost bin]#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一种执行date的方法就是把它作为一个参数传递给Shell命令: [root@localhost bin]# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三: 为了在任何目录都可以编译和执行Shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。 具体操作如下: [root@localhost root]#export PATH=/bin:$PATH [root@localhost bin]# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day !

Linux Shell常用命令总结

1. find find pathname -options [-print -exec -ok] 让我们来看看该命令的参数: pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print find命令将匹配的文件输出到标准输出。 -exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格,同时两个{}之间没有空格, 注意一定有分号结尾。 0) -ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行 find . -name "datafile" -ctime -1 -exec ls -l {} \; 找到文件名为datafile*, 同时创建实际为1天之内的文件, 然后显示他们的明细. find . -name "datafile" -ctime -1 -exec rm -f {} \; 找到文件名为datafile*, 同时创建实际 为1天之内的文件, 然后删除他们. find . -name "datafile" -ctime -1 -ok ls -l {} \; 这两个例子和上面的唯一区别就是-ok会在每个文件被执行命令时提示用户, 更加安全. find . -name "datafile" -ctime -1 -ok rm -f {} \; 1) find . -name 基于文件名查找,但是文件名的大小写敏感. find . -name "datafile*" 2) find . -iname 基于文件名查找,但是文件名的大小写不敏感. find . -iname "datafile*" 3) find . -maxdepth 2 -name fred 找出文件名为fred,其中find搜索的目录深度为2(距当前目录), 其中当前目录被视为第一层. 4) find . -perm 644 -maxdepth 3 -name "datafile*" (表示权限为644的, 搜索的目录深度为3, 名字为datafile*的文件) 5) find . -path "./rw" -prune -o -name "datafile*" 列出所有不在./rw及其子目录下文件名为datafile*的文件。 find . -path "./dir*" 列出所有符合dir*的目录及其目录的文件. find . \( -path "./d1" -o -path "./d2" \) -prune -o -name "datafile*" 列出所有不在./d1和d2及其子目录下文件名为datafile*的文件。 6) find . -user ydev 找出所有属主用户为ydev的文件。 find . ! -user ydev 找出所有属主用户不为ydev的文件,注意!和-user之间的空格。 7) find . -nouser 找出所有没有属主用户的文件,换句话就是,主用户可能已经被删除。 8) find . -group ydev 找出所有属主用户组为ydev的文件。

常用shell脚本指令

常用shell脚本命令 1、显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2、删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' filename 3、删除当前行与下两行的内容: sed -i '/aaa/{N;N;d;}' filename 依次类推,删除三行,则为{N;N;N;d;},分析知:N为next 4、得出以空格为分割的字符串中单词的个数,即统计个数: awk ' { print NF } ' 如显示字符串VALUE中的单词个数,其中VALUE为:aaa bbb ccc ddd ee f 则执行 echo $VALUE | awk ' { print NF } ' 后的结果为6 5、在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 $name HaHa [root@linux ~]# myname="$name is wow" [root@linux ~]# echo $myname HaHa is wow [root@linux ~]# myname='$name is wow'

个人整理shell脚本编程笔记

shell脚本编程学习笔记(一) 一、脚本格式 vim shell.sh #!/bin/bash//声明脚本解释器,这个‘#’号不是注释,其余是注释 #Program://程序内容说明 #History://时间和作者 二、shell变量的种类 用户自定义变量:由用户自己定义、修改和使用 与定义变量:Bash与定义的特殊变量,不能直接修改 位置变量:通过命令行给程序传递执行的参数 1、定义变量: 变量名要以英文字母或下划线开头,区分大小写。 格式:变量名=值 输出变量:echo $变量名 2、键盘输入为变量内容: 格式:read [-p "信息"] 变量名 如:read -p "pewase input your name:" name 3、不同引号对变量的作用 双引号"":可解析变量,$符号为变量前缀。 单引号'':不解析变量,$为普通字符。 反引号``:将命令执行的结果输出给变量。 三、shell条件测试 1、test命令: 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数字。 格式:test 条件表达式[ 条件表达式] (注意:[]与表达式之间存在空格) 2、常见的测试类型: 测试文件状态 格式:[ 操作符文件或目录] 如:if [ -d /etc ] then echo "exists" else echo "not exists" fi 常见的测试操作符: -d:测试是否为目录 -e:测试目录或文件是否存在 -f:测试是否为文件 -r:测试当前用户是否有读权限 -w:测试当前用户是否有写权限 -x:测试当前用户是否有执行权限

shell常用命令

目录 一、目录操作 a) ls--查看文件/目录: 常用:ls –l 查看详细文件列表 b) pwd--查看当前目录: c) cd--改变工作目录: 常用①:cd ../ 跳转到上一级目录 常用②:cd /boot/ 跳转到指定目录 d) mkdir--创建目录: 常用:mkdir 123 创建一个空文件夹 e) rm--删除文件/目录: 常用: rm -rf 123 删除目录文件夹,并且目录下的文件一并删除。 f) mv--移动文件/目录改名、移动: 移动文件: mv 1.sh ./123 → mv 目标文件移动至某目录 重名命文件:mv 1.sh 123.sh → mv 原文件欲改后文件 g) ln--建立软连接和硬连接: 软连接:ln -s 123.sh ../ → ln -s 源文件欲放置路径 硬连接:ln 123.sh ../ → ln 源文件欲放置路径 h) rmdir--删除空目录: 二、文件操作 a)cat--查看文件内容,若文件不存在,创建对应文件: 常用:cat 1.txt b)cp--拷贝文件、目录: 备份:cp 123.sh 1.sh → cp 源文件目标文件 复制至某路径:cp 123.sh ../ → cp 源文件目标路径 c)chmod--修改文件权限: 常用:chmod 777 1.sh 给1.sh最高权限 一般模式:chmod +rw 1.sh 仅当前用户下1.sh具有可读写权限 d)touch--创建文件: 常用:touch ./1.sh → touch 路径+名称 f)vim--创建并打开文件: 常用:vim ./1.sh → vim 路径+名称 g)find--在指定目录查找符合条件的文件: 以[文件名+类型]寻找:find ./ -name “*.*”→ find 路径 -nama

PowerShell基本语法及常用命令

PowerShell基本语法及常用命令 Powershell常用命令 1.Get-Command 得到Powshell所有命令 2.Get-Process 获取所有进程 3.Set-Alias 给指定命令重命名如:Set-Alias aaa Get-Command 4.Set-ExecutionPolicy remotesigned 设置powershell可直接执行脚本文件一般脚本文件以.ps1结尾执行脚本文件直接输入文件地址即可执行脚本文件中只写命令即可 5.Get-Help get-* 查询以get开头的命令Get-Help *service* Get-Help Get-Command 获取Get-Command命令的基本用法 6.Get-Member 获取对象属性如: $var | Get-Memeber 访问$var属性直接$var.T oString() PS中的变量定义 不需要定义或声明数据类型 在变量前加"$" 定义变量的规则 -变量可以是数字$123 -变量可以是字符串$abc -变量可以是特殊字符${@1b} 内置的变量 -$pshome -$home

-$profile 变量赋值: $var=123 $var="aaaaaa" 取变量值: $var 变量赋值方法:Set-Variable var 100 取值方法: Get-Variable var 清空值: Clear-Variable var 删除变量Remove-Variable var 取多个变量如var1 var2 var3地值: Get-Variable var* 另一种赋值方法$var1="bbb" $var2="$var $var1" 结果$var2="aaaaaa bbb" $var2='$var $var1' 结果$var2="$var $var1" $date=Get-Date 获取当前时间 $date.AddDays(3) 当前时间加3天 排序用法 Get-Process | Sort-Object ws 根据WS值由小到大排序 Get-Process | Sort-Object | fl Get-Process | Sort-Object | Format-List 以列表形式显示数据 导入导出文件 Get-Process > c:\aa.txt

Shell脚本的特殊符号

这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1、{} 大括号: 用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,use rC-home, userC-bin, userC-data,这几个目录。 用法二:可用于语句块的构造,语句之间用回车隔开。如果你想在某些使用单个语句的地方(比如在AND或OR列表中)使用多条语句,你可以把它们括在花括号{}中来构造一个语句块。 eg: { grep -v “$cdcatnum” $strack_file > $temp_file cat $temp_file > $strack_file echo cat -n file1 } (注:以上大括号中的四句命令够成了一个语句块) 用法三:参数扩展 ${name:-default} 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量na me; ${name:=default}使用指定值来代替空的或者没有赋值的变量name; ${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。 ${#name} 给出name的长度 ${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分

linux 实验报告 简单shell命令操作

学生课程实验报告书课程:《linux网络操作系统》 级系 专业班 学号: 姓名: 指导教师:

一、实验项目:简单shell命令操作 二、实验日期: 三、实验原理: 字符界面下熟悉图形界面的转换、简单shell命令、输入输出重定向、文本编辑器vi的使用; 四、实验仪器: PC机 Redhat网络操作系统 五、实验步骤 1.将图形化用户界面转换成虚拟终端,并将虚拟终端转换成图形化用户界面 按ctrl+alt+f1~f6进入虚拟终端,按ctrl+alt+f7切换成图形化用户界面 2.请尝试字符界面下注销、重启、关机命令。 注销:exit或ctrl+D 重启:reboot或shutdow-r now 关机:halt或shutdow-h now 3.用date命令将系统时间设置为2012年3月17日8时44分。 date 0317******** 4.用cal命令查询你出生日期是星期几。 Cal 03 1989

5.c d命令将工作目录转换为/boot/grub,并用返回用户主目录。 cd /boot/grub转换为目录/boot/grub cd 返回用户主目录 6.显示/root文件夹下所有文件和目录(包括隐含文件和子文件夹下内容) Ls –al 7.用cat命令显示/root/install.log文件,要求显示文件的每行必须 有行号。 Cat –n install.log

8.用more和less命令显示/root/install.log文件,感受各种翻页 命令。 More /root/install.log less /root/install.log 9.显示/etc/inittab文件的前5行和后10行,要求带有行号。 Head –n 5 /etc/inittab tail –n 5 /etc/inittab

shell常用命令大全

一、文件目录类命令 1、查看联机帮助信息 man命令如:#man ls info命令如:#info cd 2、列出当前目录或指定目录的文件名和目录名 ls[选项]文件或目录 常用[选项]如下: -a:显示所有的文件,包括以“.”开头的隐含文件。 -l:长格式输出 -m:宽行输出 -F:以各种符号表示不同的文件类型 --color:彩色输出 -R:递归输出 3、touch 功能:修改文件的创建日期或以当前系统日期创建一个空文件。 -d:修改文件的日期。 #touch–d2*******test.txt 4、cp 功能:复制文件 用法:cp[选项]源文件或目录目标文件或目录 选项: a:该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地

拷贝目录,其作用等于dpR选项的组合。 -d拷贝时保留链接。 -f删除已经存在的目标文件而不提示。 -i和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。 -p此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 -r若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。 5、mv 功能:给文件或目录改名或将一个文件或目录移到另一个目录 用法:mv[选项]源文件或目录目标文件或目录 -i交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。-f禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。 6、rm 功能:删除文件或目录 用法:rm[选项]文件… -f强制删除 -r指示rm将参数中列出的全部目录和子目录均递归地删除。 -i进行交互式删除

shell脚本之前的基础知识

第十二章学习shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员。目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目。有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富。笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多。笔者在这一章中并不会多么详细的介绍shell脚本,而只是带你进入shell脚本的世界,如果你很感兴趣那么请到网上下载相关的资料或者到书店购买相关书籍吧。 在学习shell 脚本之前,需要你了解很多关于shell的知识,这些知识是编写shell脚本的基础,所以希望你能够熟练的掌握。 【什么是shell】 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。 笔者接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。那么这个bash有什么特点呢? 1)记录命令历史 我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中。有一点需要你知道的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。 与命令历史有关的有一个有意思的字符那就是”!”了。常用的有这么几个应用:(1)!! (连续两个”!”),表示执行上一条指令;(2)!n(这里的n是数字),表示执行命令历史中第n条指令,例如”!100”表示执行命令历史中第100个命令;(3)!字符串(字符串大于等于1),例如!ta,表示执行命令历史中最近一次以ta为开头的指令。

相关主题
文本预览
相关文档 最新文档