Linux 系统命令及其使用详解(大全)

(来源中国系统分析员)


名称:cat 
  使用权限:所有使用者 
  使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 
  说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 
  参数: 
  -n 或 --number 由 开始对所有输出的行数编号 
  -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 
  -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 
  -v 或 --show-nonprinting 
  范例: 
  cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 
  cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 

名称:cd 
  使用权限:所有使用者 
  使用方式:cd [dirName]
  说明:变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。 
  范例:跳到 /usr/bin/:
  cd /usr/bin 

  跳到自己的 home directory:
  cd ~ 

  跳到目前目录的上上两层:
  cd ../.. 

指令名称:chmod 
  使用权限:所有使用者 
  使用方式:chmod [-cfvR] [--help] [--version] mode file... 
  说明:Linux/Unix 的档案存取权限分为三级:档案拥有者,群组,其他。利用 chmod 可以藉以控制档案如何被他人所存取。
  把计:
  mode:权限设定字串,格式如下:[ugoa...][[+-=][rwxX]...][,...],其中表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group),o 表示其他以外的人,a 表示这三者皆是。 
  表示增加权限,- 表示取消权限,= 表示唯一设定权限。 
  表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 
  -c:若该档案权限确实已经更改,才显示其更改动作 
  -f:若该档案权限无法被更改也不要显示错误讯息 
  -v:显示权限变更的详细资料 
  -R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更
  --help:显示辅助说明 
  --version:显示版本
  范例 :将档案 file1.txt 设为所有人皆可读取:
  chmod ugo+r file1.txt 

  将档案 file1.txt 设为所有人皆可读取:
  chmod a+r file1.txt 

  将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入:
  chmod ug+w,o-w file1.txt file2.txt 

  将 ex1.py 设定为只有该档案拥有者可以执行:
  chmod u+x ex1.py 

  将目前目录下的所有档案与子目录皆设为任何人可读取:
  chmod -R a+r * 

  此外chmod也可以用数字来表示权限如 chmod 777 file 
  语法为:chmod abc file 
  其中a,b,c各为一个数字,分别表示User,Group,Other的权限。

  r=4,w=2,x=1 
  若要rwx属性则4+2+1=7; 
  若要rw-属性则4+2=6; 
  若要r-x属性则4+1=7。 

  范例: 
  chmod a=rwx file 
  和 
  chmod 777 file 
  效果相同 
  chmod ug=rwx,o=x file 
  和 
  chmod 771 file 
  效果相同 
  若用chmod 4755 filename可使此程式具有root的权限 

指令名称:chown 
  使用权限:root 
  使用方式:chmod [-cfhvR] [--help] [--version] user[:group] file... 

  说明:Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 
  把计:
  user:新的档案拥有者的使用者 IDgroup:新的档案拥有者的使用者群体(group)-c:若该档案拥有者确实已经更改,才显示其更改动作-f:若该档案拥有者无法被更改也不要显示错误讯息-h:只对于连结(link)进行变更,而非该 link 真正指向的档案-v:显示拥有者变更的详细资料-R:对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help:显示辅助说明--version:显示版本 
  范例:
  将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie:
  chown jessie:users file1.txt 

  将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport:
  chmod -R lamport:users * 

名称:cp 
  使用权限:所有使用者 
  使用方式: 
  cp [options] source dest 
  cp [options] source... directory 
  说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
  把计
  -a 尽可能将档案状态,权限等资料都照原状予以复制。 
  -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。 
  -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。 
  范例: 
  将档案 aaa 复制(已存在),并命名为 bbb:
  cp aaa bbb 

  将所有的C语言程式拷贝至 Finished 子目录中:
  cp *.c Finished 

名称:cut 
  使用权限:所有使用者 
  用法:cut -cnum1-num2 filename 
  说明:显示每行从开头算起 num1 到 num2 的文字。 
  范例: 
  shell>> cat example 
  test2 
  this is test1 
  shell>> cut -c0-6 example ## print 开头算起前 个字元 
  test2 
  this i 

用法:find 
  使用说明:
  将档案系统内符合 expression 的档案列出来。你可以指要档案的名称,类别,时间,大小,权限等不同资讯的组合,只有完全相符的才会被列出来。 
  find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression 
  expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。 
  -mount, -xdev:只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案 
  -amin n:在过去 分钟内被读取过 
  -anewer file:比档案 file 更晚被读取过的档案 
  -atime n:在过去 天过读取过的档案 
  -cmin n:在过去 分钟内被修改过 
  -cnewer file :比档案 file 更新的档案 
  -ctime n:在过去 天过修改过的档案 
  -empty:空的档案-gid n or -group name:gid 是 或是 group 名称是 name 
  -ipath p, -path p:路径名称符合 的档案,ipath 会忽略大小写 
  -name name, -iname name:档案名称符合 name 的档案。iname 会忽略大小写 
  -size n:档案大小 是 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c:档案类型是 的档案。 
  d: 目录 
  c: 字型装置档案 
  b: 区块装置档案 
  p: 具名贮列 
  f: 一般档案 
  l: 符号连结 
  s: socket 
  -pid n:process id 是 的档案 

  你可以使用 ( ) 将运算式分隔,并使用下列运算。 
  exp1 -and exp2 
  ! expr 
  -not expr 
  exp1 -or exp2 
  exp1, exp2 
  范例
  将目前目录及其子目录下所有延伸档名是 的档案列出来。 
  # find . -name "*.c" 
  将目前目录其其下子目录中所有一般档案列出 
  # find . -ftype f 
  将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出 
  # find . -ctime -20 

名称:less 
  使用权限:所有使用者 
  使用方式: 
  less [Option] filename 
  说明: 
  less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动 
  以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。
  范例: 


指令名称:ln 
  使用权限:所有使用者 
  使用方式:ln [options] source dist,其中 option 的格式为:
  [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}] 
  [--help] [--version] [--] 

  说明:Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。 

  ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。 

  不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

  -f:链结时先将与 dist 同档名的档案删除-d:允许系统管理者硬链结自己的目录-i:在删除与 dist 同档名的档案时先进行询问-n:在进行软连结时,将 dist 视为一般的档案-s:进行软链结(symbolic link)-v:在连结之前显示其档名-b:将在链结时会被覆写或删除的档案进行备份-S SUFFIX:将备份的档案都加上 SUFFIX 的字尾-V METHOD:指定备份的方式--help:显示辅助说明--version:显示版本 
  范例:
  将档案 yy 产生一个 symbolic link:zz 
  ln -s yy zz 
  将档案 yy 产生一个 hard link:zz 
  ln yy xx 

名称:ls 
  使用权限:所有使用者 
  使用方式:ls [-alrtAFR] [name...] 
  说明:显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)
  -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出
  -l 除档案名称外,亦将档案型态,权限,拥有者,档案大小等资讯详细列出 
  -r 将档案以相反次序显示(原定依英文字母次序
  -t 将档案依建立时间之先后次序列出 
  -A 同 -a ,但不列出 "." (目前目录及 ".." (父目录
  -F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/" 
  -R 若目录下有档案,则以下之档案亦皆依序列出 
  范例: 
  列出目前工作目录下所有名称是 开头的档案,愈新的排愈后面:
  ls -ltr s* 
  将 /bin 目录以下所有目录及档案详细资料列出:
  ls -lR /bin 
  列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*":
  ls -AF 


名称:mv 
  使用权限:所有使用者 
  使用方式: 
  mv [options] source dest 
  mv [options] source... directory 
  说明:将一个档案移至另一档案,或将数个档案移至另一目录。 
  参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。 
  范例: 
  将档案 aaa 更名为 bbb:
  mv aaa bbb 
  将所有的C语言程式移至 Finished 子目录中:
  mv -i *.c 

名称:rm 
  使用权限:所有使用者 
  使用方式:rm [options] name... 
  说明:删除档案及目录。 
  把计
  -i 删除前逐一询问确认。 
  -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 
  -r 将目录及以下之档案亦逐一删除。 
  范例: 
  删除所有C语言程式档;删除前逐一询问确认:
  rm -i *.c 
  将 Finished 子目录及子目录中所有档案删除:
  rm -r Finished 

名称:rmdir 
  使用权限:于目前目录有适当权限的所有使用者 
  使用方式: rmdir [-p] dirName 
  说明: 删除空的目录。 
  参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。 
  范例: 
  将工作目录下,名为 AAA 的子目录删除:
  rmdir AAA 

  在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。 
  rmdir -p BBB/Test 


名称:touch 
  使用权限:所有使用者 
  使用方式: 
  touch [-acfm] 
  [-r reference-file] [--file=reference-file] 
  [-t MMDDhhmm[[CC]YY][.ss]] 
  [-d time] [--date=time] [--time={atime,access,use,mtime,modify}] 
  [--no-create] [--help] [--version] 
  file1 [file2 ...] 

  说明: 
  touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。
  参数: 
  改变档案的读取时间记录。 
  改变档案的修改时间记录。 
  假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。 
  不使用,是为了与其他 unix 系统的相容性而保留。 
  使用参考档的时间记录,与 --file 的效果一样。 
  设定时间与日期,可以使用各种不同的格式。 
  设定档案的时间记录,格式与 date 指令相同。 
  --no-create 不会建立新档案。 
  --help 列出指令格式。 
  --version 列出版本讯息。 


名称:cal 
  使用权限:所有使用者 
  使用方式:cal [-mjy] [month [year]] 
  

名称:sleep 
  使用权限:所有使用者 
  使用方式:sleep [--help] [--version] number[smhd] 
  说明:sleep 可以用来将目前动作延迟一段时间 
  参数说明:
  --help:显示辅助讯息 
  --version:显示版本编号 
  number:时间长度,后面可接 s,m,h 或 
  其中 为秒,m 为 分钟,h 为小时,d 为日数 
  例子:
  显示目前时间后延迟 分钟,之后再次显示时间:
  date;sleep 1m;date 


名称:chfn 
  使用权限:所有使用者 
  用法:shell>> chfn 
  说明:提供使用者更改个人资讯,用于 finger and mail username 
  范例: 
  shell>> chfn 
  Changing finger information for user 
  Password: [del] 
  Name[]:Johnney Huang ### 提供 finger 时的资料 
  Office[]:NCCU 
  Office Phone[]: [del] 
  Home Phone[]: [del] 



名称:login 
  这个命令都不会就不要干算了!呵呵我也不在这里多费笔墨耽误大家美好青春了^_^ 

  名称:passwd 
  使用权限:所有使用者 
  使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username] 
  说明:用来更改使用者的密码 
  参数: 
  -k 
  -l 
  -u 
  -f 
  -d 关闭使用者的密码认证功能使用者在登入时将可以不用输入密码只有具备 root 权限的使用者方可使用
  -S 显示指定使用者的密码认证种类只有具备 root 权限的使用者方可使用
  [username] 指定帐号名称

名称:who 
  使用权线:所有使用者都可使用 
  使用方式:who - [husfV] [user] 
  说明:显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。 
  把计:
  -h:不要显示标题列 
  -u:不要显示使用者的动作/工作 
  -s:使用简短的格式来显示 
  -f:不要显示使用者的上线位置 
  -V:显示程式版本 

指令:mesg 
  使用权限:所有使用者 
  使用方式:mesg [y|n] 
  说明 : 决定是否允许其他人传讯息到自己的终端机介面 
  把计 
  y:允许讯息传到终端机介面上。 
  n:不允许讯息传到终端机介面上 。 
  如果没有设定,则讯息传递与否则由终端机界面目前状态而定。 
  例子:
  改变目前讯息设定,改成不允许讯息传到终端机介面上:
  mesg n 

  与 mesg 相关的指令有: talk,write,wall。 


名称:talk 
  使用权限:所有使用者 
  使用方式:
  talk person [ttyname] 
  说明:与其他使用者对谈 
  把计:
  person:预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入 person@machine.name 
  ttyname:如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息 
  例子.1:
  与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线:
  talk Rollaend 
  接下来就是等Rollaend回应,Rollaend接受,Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c 
  例子.2 :linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈:
  talk Rollaend@linuxfab.cx pts/2

  接下来就是等Rollaend回应,Rollaend接受,Rollaend输入 `talk jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c 
  注意:若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。

名称:wall 
  使用权限:所有使用者 
  使用方式:
  wall [ message ] 
  使用说明: 
  wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时讯息结束时需加上 EOF (通常用 Ctrl+D) 
  例子:
  传讯息"hi" 给每一个使用者:
  wall hi 

名称:kill 
  使用权限:所有使用者 
  使用方式: 
  kill [ -s signal | -p ] [ -a ] pid ... 
  kill -l [ signal ] 
  说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作若没有指定预设是送出终止 (TERM) 的信号 
  把计
  -s (signal):其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑砍掉结束详细的信号可以用 kill -l 
  -p:印出 pid , 并不送出信号 
  -l (signal):列出所有可用的信号名称 
  范例: 
  将 pid 为 323 的行程砍掉 (kill):
  kill -9 323 
  将 pid 为 456 的行程重跑 (restart):
  kill -HUP 456 



名称:expr 
  使用权限:所有使用者 
  ### 字串长度 
  shell>> expr length "this is a test" 
  14 

  ### 数字商数 
  shell>> expr 14 % 9 
  

  ### 从位置处抓取字串 
  shell>> expr substr "this is a test" 3 5 
  is is 

  ### 数字串 only the first character 

  shell>> expr index "testforthegame" e 
  

  ### 字串真实重现 
  shell>> expr quote thisisatestformela 
  thisisatestformela 


指令:clear 
  用途:清除萤幕用。 
  使用方法:在 console 上输入 clear。