LINUX常用命令
LINUX常用命令
1. cd
格式 : cd [dirName]
说明 : 变换工作目录至 dirName。 其中 dirName可为绝对路径或相对路径。若目录命令省略,则变换至使用者登录时所在的目录( home directory )。另外,"~" 也表示为 home directory 的意思,"." 则是表示当前所在的目录,".." 则表示当前目录位置的上一层目录。
范例 :
1. 跳到当前目录的子目录(如:usr/bin)当中:
cd /usr/bin
2. 跳到自己的 home directory :
cd ~ (或 cd )
3. 跳到当前目录的上上两层 :
cd ../..
4. 跳到父目录下的另外一个目录(如:conf):
cd ../conf
2. pwd
格式 : pwd
说明 : 显示当前所在目录
3. ls
格式 : ls [-alrtAFR] [name...]
说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
-a 显示所有文件及目录 (包括"."开头的文件)
-l 除文件名外,还将文件类型、权限、拥有者、文件大小等信息详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (当前目录) 及 ".." (父目录)
-F 在列出的文件命令后加一符号;例如可执行文件则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之档案亦皆依序列出
范例:
1. 列出当前工作目录下所有命令是 s 开头的文件,愈新的排愈后面 :
ls -ltr s*
2. 将 /bin 目录以下所有目录及文件详细资料列出 :
ls -lR /bin
3. 列出当前工作目录下所有文件及目录;目录后加 "/", 可执行文件后加"*" :
ls -AF
4. passwd
格式:passwd [-l|-u] [username]
格式:passwd [-x max] [-n min] [-w warn] [-i inact] [username]
格式:passwd [username]
说明:用来更改使用者的密码。当具备 root 权限的使用者时,可以设置[username]的密码、更改使用者密码的有效期、锁定账户和解除锁定等。
-l:锁定账户[username],不更改原有密码,使账户[username]不能登录
-u:解除锁定
-x:要求更改密码的最大天数
-n:允许更改密码的最小天数
-w:密码失效之前的警告天数(即提前几天警告账户密码将失效)
-i:密码失效之后多少天,账户失效
-d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码,
-S 显示指定使用者的密码认证种类,
[username] 指定帐号名称.
范例:
1. 锁定账户: lijiangong ,使他不能登录
passwd -l lijiangong
2. 解除锁定:
passwd -u lijiangong
3. 设定密码有效期
passwd -x10 -n3 -w2 -i5 lijiangong
即:3天之后才能更改密码、10天之后必须更改密码、第八天提醒修改密码、
密码失效5天之后账户失效
5. who
格式 : who - [husfV] [user]
说明 : 显示有哪些用户登录到系统中,显示的信息包含用户ID,使用的终
端,上线时间,呆滞时间,CPU使用量,动作等等。
参数说明 :
-h : 不显示标题列
-u : 不显示用户的动作/工作
-s : 使用简短的格式来显示
-f : 不显示用户的上线位置
-V : 显示程式版本
相关命令 : whoami
说明 : 显示当前用户是谁
6. cat
格式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把文件串连接后输出到萤幕或加 > fileName 到另一个档案
参数:
-A 等价于 -vET
-n或 --number由 1 开始对所有输出的行数编号
-b或 --number-nonblank和 -n 相似,只不过对于空白行不编号
-e 等价于 –vE
-E 每行末尾显示一个$符号
-s或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-t 等价于 –vT
-T 显示制表符为 ^I
-v或 --show-nonprinting, dos格式的回车换行显示为^M
范例:
1. 把 textfile1 的文件内容加上行号后输入到 textfile2 文件里:
cat -n textfile1 > textfile2
2. 把 textfile1 和 textfile2 的文件内容加上行号(空白行不加)之后将内容附加到 textfile3 :
cat -b textfile1 textfile2 >> textfile3
( > 为重定向操作符, >>为重定向追加操作符 )
7. mkdir
格式: mkdir dirName
说明: 创建目录。
范例:
1. 在当前目录下创建一子目录,名为 AAA:
mkdir AAA
8. rmdir
格式: rmdir [-p] dirName
说明: 删除空的目录。
参数: -p 是当子目录被删除后使它也成为空目录时,则顺便一并删除。
范例:
1. 将当前目录下,名为 AAA 的子目录删除 :
rmdir AAA
2. 在当前目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir -p BBB/Test
9. chmod
格式 : chmod [-cfvR] [--help] [--version] mode file...
说明 : Linux/Unix 的文件存取权限分为三级 : 文件拥有者、组、其他。利用 chmod 控制文件的存取权限。
参数 :
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwx]...][,...],其中u表示该文件的拥有者,g 表示与该文件的拥有者属于同一个组(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行。X 表示只有当该档案是个子目录
或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐
个变更)
--help : 显示辅助说明
--version : 显示版本
范例 :
1. 将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt或 chmod a+r file1.txt
2. 将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个组的人可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
3. 将 ex1.py 设定为只有该文件拥有者可以执行 :
chmod u+x ex1.py
4. 将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
10. chown
格式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
说明 :利用 chown 可以将文件的拥有者加以改变。
参数 :
user : 新的档案拥有者的使用者
IDgroup : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
范例 :
1. 将文件 file1.txt 的拥有者设为 users 组的使用者 jessie :
chown jessie:users file1.txt
2. 将当前目录下的所有文件与子目录的拥有者都设为 users 组的使用者 lamport :
chmod -R lamport:users *
11. chgrp
格式 : chgrp [-R] group file...
说明 : 改变文件的所属的组。
参数 :
-R : 对当前目录下的所有文件与子目录(包括子目录下的文件)进行相同的变更
范例 :
1. 将文件 file1.txt 的所属组设为 users 组:
chgrp users file1.txt
2. 将当前目录下的所有文件与子目录(包括子目录下的文件)都设为 bin 组:
chmod -R bin *
12. 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 可以显示文件的时间记录。
参数:
-a 改变文件的读取时间记录。
-m 改变文件的修改时间记录。
-c 假如目的文件不存在,不会建立新的文件。与 --no-create 的效果一样。
-r 使用参考文件的时间记录,与 reference-file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。
范例:
1. 最简单的命令格式,将文件的创建时间改为现在的时间。若文件不存在,系统会建立一
个新的文件。
touch file
touch file1 file2
2. 将 file 的时间记录改变成与 referencefile 一样。
touch -r referencefile file
3. 将 file 的时间记录改成 5 月 6 日 18 点 3 分,公元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
13. cp
格式:cp [-arf] source dest
cp [-arf] source... directory
说明:将一个文件拷贝至另一文件,或将数个文件拷贝至另一目录。
参数:
-a将文件状态、权限等信息都照原状予以复制。
-r 若 source 中含有目录名,则将目录下的文件顺序拷贝至目的地。
-f 若目的地已经有相同的文件名存在,则在复制前先予以删除再行复制。
范例:
1. 将文件 aaa 复制一份名字为 bbb 的文件:
cp aaa bbb
2. 将当前目录下的所有C程序拷贝到当前目录下的Finished 子目录中 :
cp *.c Finished
此外,还有一条命令是远程拷贝scp
14. mv
格式: mv [-i] source dest
mv [-i] source... directory
说明:将一个文件改名为另一文件,或将数个文件移至另一目录。
参数:-i 若目的地已有同名文件,则先询问是否覆盖旧文件。
范例:
1. 将文件 aaa 改名为 bbb :
mv aaa bbb
2. 将所有的C程序移至 Finished 子目录中 :
mv -i *.c Finished
15. rm
格式:rm [-ifr] name...
说明:删除文件及目录。
参数:
-i 删除前逐一询问确认。
-f 即使原文件属性设为只读,也直接删除,无需逐一确认。
-r 将目录及以下之文件逐一删除。
范例:
1. 删除所有C程序文件并删除前逐一询问确认 :
rm -i *.c
2. 将 Finished 子目录及子目录中所有文件删除 :
rm -r Finished
16. find
各式 : find [path...] [expression]
说明 : 将符合 expression 的文件列出来。
-amin n : 在过去 n 分钟内被读取过的文件
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天被读取过的文件
-cmin n : 在过去 n 分钟内被修改过的文件
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天过修改过的文件
-name filename, -iname filename : 符合 filename 的文件。iname 会忽略大小写
-size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。
范例:
1. 将当前目录及其子目录下所有扩展名是 c 的文件列出来。
# find . -name "*.c"
2. 将当前目录及其子目录下所有最近 20 分钟内更新过的文件列出
# find . -cmin -20
17. grep
格式:grep [-no] pattern files
说明:搜索字符串命令
参数:
-n 显示行号
-o 只显示匹配的串
范例:
1. grep printf *
file1.c: printf("\nHello\n");
file2.c: printf("\nSample\n");
grep -n printf *
file1.c:4 printf("\nHello\n");
file2.c:9 printf("\nSample\n");
grep -o printf *
file1.c: printf
file2.c: printf
2. 如果搜索的串中有空格,则用引号括起来
grep "asd abc" *
18. more
格式:more [-num] [+linenum] [fileNames..]
说明:类似 cat ,不过是以一页一页的方式显示。而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
参数:-num 一次显示的行数
+linenum 从第 num 行开始显示
fileNames 欲显示内容的文件,可为多个文件
范例:
1. 从第 20 行开始显示 testfile 之文件内容。
more +20 testfile
19. less
格式: less [Option] filename
说明: less 的作用与 more 十分相似,都可以用来浏览文本文件的内容,不同的是 less 允许使用者往回卷动(PageUp PageDown)以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个文件,因此在遇上大型文件的开启时,会比一般的文本编辑器(如 vi)来的快速。
20. head
格式:head [-n|c num] fileName
说明:显示文件头部内容。没有参数时,显示最前10行
参数:
-n num 显示最前num行
-c num显示最前num 字符
21. tail
格式:tail [-n|c num] fileName
说明:显示文件尾部内容。没有参数时,显示最后10行
参数:
-n num 显示最后num行
-c num 显示最后num 字符
-f 跟踪,随文件增长显示新的内容。(用Ctrl+C退出)
22. cut
格式:cut -cnum1-num2 filename
说明:显示每行从开头算起第 num1 到 num2 的字符。
范例:
1. shell>> cat example
test2
this is test1
显示每行开头算起前 6 个字符
shell>> cut -c0-6 example
test2
this i
23. at
格式 : at TIME command
说明 : 指定在 TIME 这个特定时刻执行某个程序或指令,TIME 的格式
是 HH:MM,其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon,
teatime(就是下午 4 点)等口语词。
如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,
其中 MM 是月份,DD 是第几日,YY是指年份。另外,使用者甚至也可以使用是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours,days, weeks
另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下
enter 之后,at会进入交谈模式并要求输入指令或程式,当你输入完后按下 ctrl+D 即可完
成所有动作。
范例 :
1. 三天后的下午 5 点钟执行 /bin/ls :
at 5pm + 3 days /bin/ls
2. 三个星期后的下午 5 点执行 /bin/ls :
at 5pm + 2 weeks /bin/ls
3. 明天的 17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date
4. 1999 年的最后一天的最后一分钟印出 hello world !
at 23:59 12/31/1999 hello world !
24. crontab
格式 :
crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e } cmd
说明 :
crontab 是用来在固定时间或固定间隔执行程序。
-u user 设定指定user 的时间表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user ,就是表示设定自己的时间表。
参数 :
-e : 执行文字编辑器来设定时程表,默认的文字编辑器是 VI
-r : 删除当前的时程表
-l : 列出当前的时程表
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天(0~6,0为星期天)。cmd 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行,f2 为 * 时表示每小时都要执行,其余类推;
当 f1 为 a-b 时,表示从第 a 分钟到第 b 分钟这段时间内要执行,f2为 a-b 时,表示从第 a 到第 b小时都要执行,其余类推;
当 f1 为 */n 时,表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示,每n 小时个时间间隔执行一次,其余类推;
当 f1 为 a, b, c,... 时,表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示,第 a, b, c...个小时要执行,其余类推;
使用者也可以将所有的设定先存放在文件 file 中,用 crontab file 的方式来设定时间表。
范例 :
1. 每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 * * * * /bin/ls
2. 在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
0/20 6-12 * 12 * /usr/bin/backup
3. 周一到周五每天下午 5:00 执行一次 /bin/ls :
0 17 * * 1-5 /bin/ls
4. 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
25. sleep
格式 : sleep [--help] [--version] number[smhd]
说明 : sleep 可以用来将当前动作延迟一段时间
参数 :
--help : 显示辅助讯息
--version : 显示版本编号
number : 时间长度,后面可接 s、m、h 或 d, 其中 s 为秒,m 为 分钟,h 为小时,d 为日数
范例 :
1. 显示当前时间后延迟 1 分钟,之后再次显示时间 :
date;sleep 1m;date
26. kill
格式: kill [ -s signal ] pid ...
kill -l [ signal ]
说明:kill 送出一个特定的信号 (signal) 给进程号为 pid 的进程。根据该信号而做特定的动作, 若没有指定,默认是送出终止 (TERM) 信号
参数:
-s (signal) : 其中常用的一个信号(9) 杀死进程; 详细的信号可以用 kill -l
-l (signal) : 列出所有可用的信号名称
范例:
1. 将 pid 为 323 的进程杀死 :
kill -9 323
2. 将 pid 为 456 的行程重跑 (restart) :
kill -HUP 456
27. ps
格式:ps [options] [--help]
说明:显示进程的名称、占用资源、状态等
参数:
ps 的参数非常多, 在此仅列出3个
-A 列出所有的行程
-e 列出所有的进程
-f 显示详细的信息(包括命令行参数)
范例:
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
pstree
格式: pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
pstree -V
说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
参数:
-a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
-c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
-c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
范例:
1. pstree
init-+-amd
|-apmd
|-atd
|-httpd---10*[httpd]
%pstree -p
init(1)-+-amd(447)
|-apmd(105)
|-atd(339)
%pstree -c
init-+-amd
|-apmd
|-atd
|-httpd-+-httpd
| |-httpd
| |-httpd
| |-httpd
....
28. top
格式:top
说明:显示CPU的使用率、内存大小、内存使用率、进程状态等
29. expr
格式: expr [option] expresion
说明:字符串处理命令
范例:
1 求字串长度
shell>> expr length "this is a test"
14
2. 数字运算
shell>> expr 14 +[-*/%] 9
13[5、126、1、5]
3. 从位置处抓取字串
shell>> expr substr "this is a test" 3 5
is is
4. 字符串首次出现的索引值
shell>> expr index "testforthegame" e
2
5. 字串真实重现
shell>> expr quote thisisatestformela
thisisatestformela
30. locate
格式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-Vh] [--version] [--help]
说明:
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。在一般的distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用
# locate your_file_name 的型式就可以了。
参数:
-n 至多显示 个输出。
范例:
1. locate chdrv : 寻找所有叫 chdrv 的档案
2. locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
31. split
格式:split [OPTION] [INPUT [PREFIX]]
说明:将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为PREFIXaa, PREFIXab...;PREFIX 预设值为 `x。若没有 INPUT 档或为 `-,则从标准输入读进资料。
参数:
-b, --bytes=SIZE
-b, --bytes=SIZE SIZE 值为每一输出档案的大小,单位为 byte。
-C, --line-bytes=SIZE 每一输出档中,单行的最大 byte 数。
-l, --lines=NUMBER NUMBER 值为每一输出档的列数大小。
-NUMBER 与 -l NUMBER 相同。
--verbose 于每个输出档被开启前,列印出侦错资讯到标准错误输出。
--help 显示辅助资讯然后离开。
--version 列出版本资讯然后离开。
SIZE 可加入单位: b 代表 512, k 代表 1K, m 代表 1 Meg。
范例:
1. PostgresSQL 大型资料库备份与回存:
因 Postgres 允许表格大过你系统档案的最大容量,所以要将表格 dump 到单一的档案可能会有问题,使用split进行档案分割。
% pg_dump dbname | split -b 1m - filename.dump.
重新载入
% createdb dbname
% cat filename.dump.* | pgsql dbname
% cat filename.dump.* | pgsql dbname
32. ln
格式: ln [options] source dist,
其中 option 的格式为 :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}] [--help] [--version] [--]
说明:Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic 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 : 显示版本
范例 :
1. 将档案 yy 产生一个 symbolic link : zz
ln -s yy zz
2. 将档案 yy 产生一个 hard link : zz
ln yy xx
33. man,info
man、info :在线手册命令
格式:man command
范例:man cat [info cat]
34. alias
说明:建别名
参数:alias aaa=“ls –l”
35. unalias
说明:取消别名
参数:unalias aaa
36. clear
说明:清屏命令