shell 常用命令

时间:2022-12-29 03:08:19

Terminal是Mac OS X系统中的字符控制界面,可以更灵活地控制苹果电脑
以下看到 “>“ 就是打指令的地方,prompt,指令列
>pwd
列出路径
>ls
列出此档案夹里所有的东西
>l
列出使档案夹里所有的东西以及它的权限
>cd
无论身在何处,回到home 档案夹
>cd snoopy
进入到叫snoopy 的档案夹
>cd ..
回到上一层档案夹
>mkdir kitty
制作档案夹叫kitty- make directory
>touch girl
制作一个叫girl 的档案
>rmdir
丢掉“档案夹“- remove directory
>rm micky
将micky 这一个 “档案“ 丢掉
>mv kitty snoopy
如果你所在的档案夹里没有叫snoopy 的档案夹那会将kitty 更名为snoopy
如果你所在的档案夹里有叫snoopy 的档案夹那会将kitty 一到snoopy 这个档案里
>mv simpson ../
将simpson 这个档案移到上一层
>cp Desktop/garfield .
将Desktop 这个档夹里的garfield 这个档案拷贝到你现在所在的档案夹
可以将“.“改成你想要的档夹
>man cp
列出cp 这个指令的介绍,用法 (现在有许多GUI 的软件,提供此服务)
>cat snoopy
显示出snoopy 这个“档案“的内容
>more snoopy
一样可以显示出snoopy 这个档案的内容
>less snoopy
一样可以显示出snoopy 这个档案的内容,过可以使用下面这一些指令
空格键 : 到下一页
b:到上一页
q:离开
上下左右键的上键:往上一行
上下左右键的下键:往下一行
>tail /var/log/httpd/access_log
观看记录文件最后十行(这理是http 的access_log 这个记录文件)
>wget www.laushu.idv.tw/hi.sit
下载网络上www.laushu.idv.tw/hi.sit 这一个档
>telnet 216.170.128.9
telnet 到216.170.128.9
>ssh 216.170.128.9
ssh 到216.170.128.9
>ftp 216.170.128.9
ftp 到216.170.128.9 (在ftp 的 状态下还有很多指令可以用,这里不一一解释)
>login mummy
以mummy 的身分使用Terminal
>make
编译原始码
>sudo make install
安装软件
>su
使用root (必须先在NetInfo Manager 里设定使定密码启动)
>vi
>emacs
vi 及emacs 是Terminal 所附有的文字编辑器,不要以为它跟Word 一样,那你就错了,这是个完全没有GUI 的环境,甚至连如何储存离开等常用的指令,你都必须很神奇的自己知道,不然就没辄了。
ctrl + d
告诉计算机你已经结束输入指令
ctrl + z
停止程序的执行并回到 指令列,使用Terminal 软件当机的时候很好用
更多指令:
1.man用来介绍系统各种命令的详细用法。
格式:man command
command 为系统能接受的命令。
%man man
%man pwd
2.who/w查询目前进入系统的使用者。
%who
%whoami
%who am i
%w
3.finger查询目前进入系统的使用者。
%finger u8442019
4.date显示现在之年、月、日、时间及星期。
%date
Wed Oct 13 12:31:39 CST 1999
5.quota使用者可使用之磁盘空间(Kbyte)及档案个数查询。
Example:
%quota -v u8442019
Filesystem usage quota limit timeleft files quota limit imeleft
/autohome/mail
3 2000 2000 1 0 0
6.du显示每一个档案或目录所占的block数。
格式:du [option] [dirname]
Option: -s 仅显示使用block 数的总和
Example:
%du
%du -s ~
7.last为印出进出系统使用人次情形
%last |more
%last |grep reboot|more
8.chfn/passwd -r nis –g(solaris) 更改finger name。
%chfn
9.alias 将命令用一别名取代。
格式:alias alias_name command
examples:
%alias copy 'cp -i'
%copy
unalias 取消alias的设定。
格式:unalias alias_name
examples:
%unalias copy
网络侦错指令
1.nslookup
格式:nslookup 网站
examples:
%nslookup bbs.ccu.edu.tw
2.ping
格式:ping 网站
examples:
%ping bbs.ccu.edu.tw
3.traceroute 网站
格式:traceroute 网站
examples:
%traceroute bbs.ccu.edu.tw
档案(目录)的操作
1.pwd列出现在的工作目录。
%pwd
2.ls列出目录内的文件名称。
格式:ls [options] [directory] [file]
options:
-a 印出全部的档案。
-l 列出档名外,并加上各种信息。
-F 加此参数则会在目录文件后加上/,执行文件后加上*,链接文件后加上@,其余为一般档案。
-g 列出档案的所属群体名称。
-t 列出的档名依日期排序,若没指定则依档名排序。
examples:
%ls
%ls –lg
%ls -lg
total 4
drwxr-xr-x 3 huang center 2048 Oct 14 10:30 bin
-rwxr-xr-x 1 huang center 233 Sep 11 09:38 letter
%
第一行total 4 表示bin,letter 所占的内存容量(以block为单位)
有关每个目录、档案的信息,说明如下:
- rwxr-xr-x 1 huang center 233 Sep 11 09:38 letter
- ----------- --- --------- --------- ------ ---------------- ---------
1 2 3 4 5 6 7 8
(1)档案型态
- 表一般档案。
d 表目录。
l 表链接档案。
c 表字符式特殊档案。
b 表区块式特殊档案。
(2)使用权:表示谁有权去读取及使用此档案,从左至右3字符为一组,分成自己、群体及其它三部份,其中
r 表读取。
w 表写入。
x 表执行。
(- 表对应项目的动作不被执行。)
(3)链接次数:是指链接至该文件的数目,以目录而言,表示在档案系统中的目录个数。
(4)档案拥有者:该档的拥有者。
(5)档案所属群体:该档的所属群体。
(6)字符个数:即档案大小,以位(byte)为单位。
(7)最后一次修改的日期与时间:为档案最后一次修改的日期与时间。
(8)文件名称。
3.mkdir建立目录。
格式:mkdir directory1 [directory2 ...]
%mkdir dir1 dir2
4.cd改变目前的工作目录。
格式:cd [directory]
%cd dir1
5.rmdir
6.mv移动或更改文件名称。
格式:
mv [options] oldfile newfile
mv [options] olddir newdir
options:
-i 可避免覆盖原有的档案。
-f 强制覆盖原有的档案。
examples:
%mv file1 file2
%mv -i file2 file2
%mv -f file2 file3
7.touch 开启一个空的档案
格式:
%touch file1 file2 ……
8.cp复制档案。
格式:
cp [options] file1 file2
cp [options] dir1 dir2
cp [options] file directory
options:
-i 可避免覆盖原有的档案。
-r 拷备目录及其下所有档案、子目录。
examples:
%cp file1 file2
%cp file1 dir1
%cp -r dir1 dir2
9.rm删除档案。
格式:rm [options] file1 file2 file3 ...
options:
-i 删除档案前会先询问。
-f 强制删除档案。
-r 删除目录及其下所有档案、子目录。
examples:
%rm file1 file2 file3
%rm -rf dir1
*用rm 删除的档案将永久的被删除,救不回来。
10.chmod更改档案使用权。
格式:chmod mode filename ...
mode 有两种表示法:
.绝对模式以八进制数字表示。
400 即r-- --- --- (100 000 000)仅档案拥有者可读取。
777 即rwx rwx rwx (111 111 111)任何人都可对该档做 读取、写入、执行等动作。
700 即rwx --- --- (111 000 000)仅档案拥有者可读取 写入、执行。
.符号模式 其格式如下:
[who] op permission [op permission] ...
who 可以是:
u 档案拥有者的存取权。
g 档案所属群体的存取权。
o 其它使用者的存取权。
a 全部使用者的存取权。
*如果省略此参数,则默认值为a。
op 可以是
+ 开放存取权。
- 取消存取权。
= 设定存取权。
permission 可以是
r 读取权。
w 写入权。
x 执行权。
examples:
%chmod o-w file 开放file写入权给其它使用者。
%chmod 700 file 仅档案拥有者可对file做读取、写入、 执行的动作。
11.cat显示档案内容,类似于DOS 的type。
格式:cat [options] filename
options:
-n 产生行号。
-s 档案中连续空白行,仅输出一行。
examples:
%cat -n file1
%cat -s file2
12.more显示档案内容, 每次仅显示一个屏幕之档案内容。
格式:more [options] filename
options:
+line number 从第n行开始显示。
+/pattern 从含有pattern的前两行开始显示。
-d 设定打印行数。
在more中常用之指令如下:
space 键 往下卷动一个屏幕。
enter 键 往下卷动一行,键入数字后,再按enter可向下卷动指定之行数。
q 键 停止输出。
%more -d20 more.man 一次显示20行。
%more +50 more.man 从第50行开始显示。
%more +/terminal more.man 从含有terminal的前两行开始显示。
13.grep从某一档案中,找出符合条件的数据列。
格式:grep [option] pattern filename
Option:
-c 只显示符合条件的列数。
-i 忽略大小写。
-n 显示时加行号。
-v 显示不符合条件的列资料。
-w 将pattern视为一个字(Word)来处理。
%ps -aux |grep elm 找出process中,含有elm字眼的process。
%grep -n meeting * 在目前目录下,找出含有meeting字眼的档案并列出是在该档的第几行。
%grep -w '952 console' joe1
grep的一些应用:
(1)%grep 'thing' file1 列出该行中含有thing字眼的料,该行可能含有thing, things or somethings只要含有thing即将其印出。
(2) %grep 's.nd' file1 “.”可代换为任一字符,只要是以s开头nd结尾的字,都将其印出,Ex: sand or send。
(3)%grep '[l-s]end' file1 列出以l, m, n...s字符开头, end结束 的数据行, Ex: lend、mend、send。
(4)%grep '[Mm]end' file1 列出含Mend or mend 的列资料。
(5)%grep '^some' file1 列出以some为行开头的资料, Ex: someoneor somewhere。
(6)%grep '!' file1 列出含有!的资料行。
14.head从文件首开始显示n行数据,默认值为10行。
格式:head [-n] [file]
Example:
%head file1 显示前10行资料。
%head -20 file1 显示前20行资料。
15.tail从文件尾向前算起显示n行资料。
格式:tail [-/+n] [files]
Option:
+ 从第n行开始显示。
- 从文件尾向前算起显示n行资料。
Example:
%tail -20 file 1
%history |tail -5
16.find 寻找档案。
格式:find path expression
Option:
-name filename 如有filename匹配现在文件名称则为真。
-print 显示文件名称。
-type d 档案型态d表目录;f表一般档案;c表字符特殊文件 案,b表区域特殊档案。
-exec command
-size n
-user
Example:
%find ~ -name '*.c' -print 找出使用者目录底下所有.c的档案。
%find ~ -size 0 -exec rm {} ;将使用者目录下所有档案大小为0的档案删除。
%find ~ -type d -print 将使用者目录下所有目录档案列出。
17.wc 计算档案的列数,字数及字符数。
格式:wc [option] [filename]
Option:
-l 只计算列数(Line)。
-w 只计算字数(Word)。
-c 只计算字符数(Character)。
Example:
%wc file1
%who |wc -l
18.dff比较两个文本文件的差别。
格式:diff filename1 filename2
19.sort排序文本文件。
格式:sort [options] [file]
Option:
- 从标准输入读取。
-b 忽略前置空格。
-d 按字典顺序,仅字母数字空格才有效。
-n 以数值来做排序。
-r reverse反方向顺序排序。
-o 将output存于下个自变量中指定的档案,否则sort 会将排序结果送到屏幕显示。
-tc 字段间以字符c来分开。
+n1[-n2] n 跳过n1个字段,至第n2的字段为止,做排序。
Example:
%sort -b +1n file1 跳过1个字段,以第2字段为key sort file1。
%sort -t: +2n /etc/passwd 以uid(第3字段)为key sort /etc/passwd。
打印相关之指令
1.lpr/lp送印指令(HP9000/800 G60 用lp指令)。
格式:lpr [options] filename ....
options:
-Pprinter 指定打印机,若省略此参数,则指预设打印机lp。
目前中心的列表机有
lp 系统打印机。
sp 激光打印机。
np 激光打印机。
-m 当档案打印完毕,会送一个讯息给使用者。
-#n 打印n份。
examples:
%lpr file
%lpr file1 file2 file3
%man lpr | lpr -m
%cat file1 file2 | lpr -#3 打印3份
2.lpq查询printer queue ,当你的档案送印后,可用此指令查询是否送印成功(HP9000/800 G60用lpstat指令)。
格式:lpq [options]
options:
-Pprinter 指定打印机,若省略此参数,则指预设打印机lp。
examples:
%lpq 查询系统打印机lp打印情况。
%lpq -Psp 查询激光打印机sp打印情况
3.lprm取消已送印的档案(HP9000/800 G60用cancel指令)。
格式:lprm [options] job#
options:
-Pprinter 打印机,若省略此参数,则为预设打印机lp。
-username 将此user欲打印的档案取消,若省略此参数,则指自己。
examples:
%lpq -Psp
Rank Owner Job Files Total Size
1st guo 235 file1 38 bytes
2nd guo 236 file2 38 bytes
3rd guo 237 file3 300 bytes
%lprm -Psp 236 237
4.pr调整文件打印格式,先产生在屏幕,确定无误后再用lpr送打印机打印。
格式:pr [option] [filename]
Option:
-ln 设定页长。
-n 产生n栏的报表。
+n 从第n页开始打印。
-h 下一个参数当报表表头。
Example:
%pr -150 -h "THE OUTPUT REPORT" file1
产生页长为50,表头为"THE OUTPUT REPORT" 的报表。
过程控制
1.ps显示目前系统process状况。
格式:ps [options]
Option:
-a 显示全部的process。
-u 显示process的使用者。
-l 显示process更多的讯息。
w 可以把指令行很长的程序颢显示出来,由于屏幕宽度有限,超过部份系统会自动切掉,w愈多显示的长度就愈长。
Example:
%ps
PID TT STAT TIME COMMAND
12536 P2 S 0:00 -csh(csh)
12539 P2 TW 0:00 mail huang
12540 P2 TW 0:00 cat
12541 P2 TW 0:00 vi
12549 P2 R 0:00 ps
说明:
PID 每一个process的编号。
TT 终端机编号。
STAT process目前的状况。
R running
T stopped
I idle
P page wait
S sleep
TIME 使用的CPU的时间。
%ps -auxww|more
*在IBM及HP9000/800 G60系统上要用%ps -ef。
2.指令& 将欲执行的命令(或程序),放到背景作业执行。
Example:
%cc myprog.c &
%who | sort > list &
*如果在.chrc文件内有set notify的命令,则系统会以[Done]来显示背景作业己执行完毕。
3.jobs列出在此系统上所有的Background job。
Example:
%mail huang
Ctrl-z
%cat > file1
Ctrl-z
%vi
Ctrl-z
%jobs
[1] Stopped mail huang
[2] - Running cat > file1
[3] + Stopped vi
(1) (2) (3) (4)
(1) job number 工作代号。
(2) + 表示current job。
- 表示next current。
(3)每个job目前执行的状况。
(4) job的作业内容。
4.fg启动被暂停的job,并改为前景作业。
格式:fg %job_number
Example:
%fg 启动current job,改为前景作业。
%fg %1 启动job1,改为前景作业。
5.bg启动被暂停的job,并改为背景作业。
格式:bg %job_number
Example:
%bg 启动current job,改为背景作业。
%bg %1 启动job1,改为背景作业。
6.stop 暂停一个正在执行的job。
格式:stop %job_number
Example:
%stop %2
7.kill删除一个job。
格式:kill %job-number或kill pid
Example:
%kill %3
%kill 8122
*如果尚无法清除此job,则可则改用以%kill -9取代kill指令。
%kill -9 8122
8.at 于特定时间执行某些指令,执行后产生的Standard Output必须自己以输出转向的方式处理,否则看不到结果。
格式:at [options] time [day] [script]
Option:
-m 执行完毕后会送mail给使用者。执行过程中若有错误,则虽未给予此参数,亦会送mail告知使用者。
time 执行命令的时间,前2位。
day 执行命令的日期,若省略则指当天。
script 内含要执行的命令,类似PC的批次档,若省略此参数,则可将命直接在终端机输入,欲结束按Ctrl-d。
Example:
%at -m 1040 Aug 20
at> a.out> output
Ctrl-d
%
说明:在8月20日10点40分,去执行a.out>output的动作,执行完送一封mail给使用者。
%at -m 1050 scrfile 在10点50分时,去执行scrfile的动作,执行完送一mail给使用者。
9. atq 查询待行之作业。
Example:
%atq
Rank Execution Date Owner Job# Queue Job Name
lst Aug 14,1992 17:00 huang 858825600.a a stdin
10. atrm job# 取消at命令。
%atrm 858825600.a

tar [option] file or dir
tar -xvf zdd.tar 将zdd.tar解压,解压后将产生zdd文件夹,里面包含解压后的文件 x表示解压,v表示输出解压信息,f表示操作普通文件
tar -cvf tmp.tar tmp 将文件夹tmp打包成tmp.tar
tar -rvf tmp.tar zzz 将文件zzz追加到tmp.tar中

zip 压缩
zip [options] dest_files source
zip -r9 ~/zdd /home/zdd/* 将目录/home/zdd下的所有文件压缩并放入当前目录下名为zdd。-r表示递归处理文件夹中的文件,9表示最大压缩率。

unzip 解压缩
unzip -d ~/zdd zdd.zip 将zdd.zip解压到当前目录下的zdd目录中,-d表示指定解压目录。