1. 文件和目录
(1)cd 命令
用于切换当前工作目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
语法:cd [dirName]
cd /home
进入 '/ home' 目录
cd ..
返回上一级目录
cd ../..
返回上两级目录
cd
进入个人的主目录
cd ~user1
进入个人的主目录
cd -
返回上次所在的目录
(2)pwd命令
显示当前工作路径,目前所在的工作目录的绝对路径名称。
(3)ls命令
用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法:ls [-alrtAFR] [name...]
ls
查看目录中的文件
ls -l
显示文件和目录的详细资料
ls -a
列出全部文件,包含隐藏文件
ls -r
将文件以相反次序显示(原定依英文字母次序)
ls -R
连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
ls *[0-9]*
显示包含数字的文件名和目录名
(4)cp 命令
主要用于复制文件或目录。
语法:cp [options] source dest 或 cp [options] source... directory
参数说明:
-a
将文件的特性一起复制
-p
连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i
若目标文件已经存在时,在覆盖时会先询问操作的进行
-r
递归持续复制,用于目录的复制行为
-u
目标文件与源文件有差异时才会复制
(5)mv命令
用来为文件或目录改名、或将文件或目录移入其它位置。
语法:mv [options] source dest 或 mv [options] source... directory
-f
force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i
若目标文件已经存在,就会询问是否覆盖
-u
若目标文件已经存在,且比目标文件新,才会更新
注意:
命令 | 运行结果 |
---|---|
mv source_file(文件) dest_file(文件) | 将源文件名 source_file 改为目标文件名 dest_file |
mv source_file(文件) dest_directory(目录) | 将文件 source_file 移动到目标目录 dest_directory 中 |
mv source_directory(目录) dest_directory(目录) | 目录名 dest_directory 存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory |
mv source_directory(目录) dest_file(文件) | 出错 |
(6)rm 命令
用于删除文件或目录,remove之意
语法:rm [options] name...
-f
强制删除,就是force的意思,忽略不存在的文件,不会出现警告消息
-i
互动模式,在删除前会询问用户是否操作
-r
递归删除,最常用于目录删除,它是一个非常危险的参数
2. 查看文件内容
(1)cat 命令
用于连接文件并打印到标准输出设备上,后接要查看的文件名,通常可用管道与more和less一起使用
语法:cat [-AbeEnstTuv] [--help] [--version] fileName
参数:
-n 或 --number
由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank
和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank
当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting
使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends
在每行结束处显示 $。
-T 或 --show-tabs
将 TAB 字符显示为 ^I。
-A, --show-all
等价于 -vET。
-e
等价于"-vE"选项;
-t
等价于"-vT"选项;
举例:
cat file1
从第一个字节开始正向查看文件的内容
tac file1
从最后一行开始反向查看一个文件的内容
cat -n file1
标示文件的行数
cat filename | head -n 3000 | tail -n +1000
显示1000行到3000行
cat filename | tail -n +3000 | head -n 1000
从第3000行开始,显示1000(即显示3000~3999行)
cat -n textfile1 > textfile2
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里
cat -b textfile1 textfile2 >> textfile3
把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里
(3)head 命令
用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10行的内容。
语法:head [参数] [文件]
参数:
-q
隐藏文件名
-v
显示文件名
-c<数目>
显示的字节数。
-n<行数>
显示的行数。
举例:
head -n 2 file1
查看文件的前两行
head file1
查看文件的前十行
head -c 20 file1
查看文件前20个字节
(3)more 命令
类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
语法:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数:
-num
一次显示的行数
-d
提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.]
-l
取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f
计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p
不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c
跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s
当遇到有连续两行以上的空白行,就代换为一行的空白行
-u
不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern
在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num
从第 num 行开始显示
fileNames
欲显示内容的文档,可为复数个数
(4)less 命令
与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
语法:less [参数] 文件
参数:
-b <缓冲区大小>
设置缓冲区的大小
-e
当文件显示结束后,自动离开
-f
强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g
只标志最后搜索的关键词
-i
忽略搜索时的大小写
-m
显示类似more命令的百分比
-N
显示每行的行号
-o <文件名>
将less 输出的内容在指定文件中保存起来
-Q
不使用警告音
-s
显示连续空行为一行
-S
行过长时间将超出部分舍弃
-x <数字>
将"tab"键显示为规定的数字空格
/
字符串:向下搜索"字符串"的功能
?
字符串:向上搜索"字符串"的功能
n
重复前一个搜索(与 / 或 ? 有关)
N
反向重复前一个搜索(与 / 或 ? 有关)
b
向上翻一页
d
向后翻半页
(5)tail命令
用于查看文件最后几行的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件
语法:tail [参数] [文件]
参数:
-f
循环读取
-n <行数>
显示文件的尾部 n 行内容
-q
不显示处理信息
-v
显示详细的处理信息
-c <数目>
显示的字节数
--pid=PID
与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent
从不输出给出文件名的首部
-s, --sleep-interval=S
与-f合用,表示在每次反复的间隔休眠S秒
举例:
tail -n 2 file1
查看一个文件的最后两行
tail -n +1000 file1
从1000行开始显示,显示1000行以后的
tail -c 10 file1
显示文件最后的十个字符
tail -f file1
实时跟踪文件内容的变化
3. 文本编辑器
用vi
文本编辑器来编辑文本文件
最基本用法:vi somefile.txt
- 首先会进入“命令模式”,此模式只接受各种命令快捷键,不能编辑文件内容
- 按
i
键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容 - 编辑完成之后,按
Esc
键退出编辑模式,回到命令模式; - 再按
:
,进入“底行命令模式”,输入末行命令,回车即可
(1)进入编辑模式的几个指令:
i
在光标当前位置进入编辑模式
I
在该行的最前面进入编辑模式
a
在光标后一位进入编辑模式
A
在该行的末尾进入编辑模式
o
在该行的上一行进入编辑模式
O
在该行的下一行进入编辑模式
(2)命令模式(一般模式)部分指令:
dd
删除行,如 5dd ,则一次性删除光标后的5行
yy
复制当前行, 复制多行,则 3yy,则复制当前行附近的3行
p
粘贴
gg
直接跳到文件的首行
G
直接跳到文件的末行
x
删除字符
u
恢复操作
v
进入字符选择模式,选择完成后,按y复制,按p粘贴
ctrl+v
进入块选择模式,选择完成后,按y复制,按p粘贴
shift+v
进入行选择模式,选择完成后,按y复制,按p粘贴
(3)末行模式部分指令:
:q
退出
:w
保存
:wq
退出并保存
:w 新文件名
另存为
:number
转到第number行
:$
光标跳转到第1行
:set nu
显示行号
:set nonu
取消行号
:3d
删除第3行
:/demotext
查找第1次出现的demotext的地方,按n定位到下一个,按N定位到上一个
:%s/demotext/demotext1
查找文件中所有demotext,替换为demotext1
4. 文件搜索
(1)find 命令
用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法:find path -option [ -print ] [ -exec -ok command ] {} \ ;
参数:
-mount, -xdev
只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n
在过去 n 分钟内被读取过
-atime n
在过去n天内被读取过的文件
-cmin n
在过去 n 分钟内被修改过
-ctime n
在过去n天内被修改过的文件
-anewer file
比文件 file 更晚被读取过的文件
-cnewer file
比文件 file 更新的文件
-ipath p, -path p
路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name
文件名称符合 name 的文件。iname 会忽略大小写
-size n
文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
-type c
文件类型是 c 的文件(d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket)
举例:
find / -name file1
从 '/' 开始进入根文件系统搜索文件和目录
find . -name "*.c"
将目前目录及其子目录下所有延伸档名是 c 的文件列出来
find / -user user1
搜索属于用户 'user1' 的文件和目录
find /usr/bin -type f -atime +100
搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10
搜索在10天内被创建或者修改过的文件
find /var/mail/ -size +50M -exec rm {} \;
删除大于50M的文件
find /var/log -type f -mtime +7 -ok rm {} \;
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find . -type f -perm 644 -exec ls -l {} \
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find / -type f -size 0 -exec ls -l {} \
查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
(2)whereis 命令
该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
语法:whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
参数:
-b
只查找二进制文件
-B <目录>
只在设置的目录下查找二进制文件
-f
不显示文件名前的路径名称
-m
只查找说明文件
-M <目录>
只在设置的目录下查找说明文件
-s
只查找原始代码文件
-S <目录>
只在设置的目录下查找原始代码文件
-u
查找不包含指定类型的文件
举例:
whereis halt
显示一个二进制文件、源码或man的位置
which halt
显示一个二进制文件或可执行文件的完整路径
5. 权限相关
(1)chmod 命令
控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
说明:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取(4),w 表示可写入(2),x(1) 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
举例:
chmod ugo+rwx directory1
设置目录的所有人(u)、群组(g)以及其他人(o)以读(r,4 )、写(w,2)和执行(x,1)的权限
chmod go-rwx directory1
删除群组(g)与其他人(o)对目录的读写执行权限
(2)chown 命令
- 命令用于设置文件所有者和文件关联组的命令
- Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符
- chown 需要超级用户 root 的权限才能执行此命令
语法:chown [-cfhvR] [--help] [--version] user[:group] file...
参数:
user
新的文件拥有者的使用者 ID
group
新的文件拥有者的使用者组(group)
-c
显示更改的部分的信息
-f
忽略错误信息
-h
修复符号链接
-v
显示详细的处理信息
-R
处理指定目录以及其子目录下的所有文件
--help
显示辅助说明
--version
显示版本
举例:
chown user1 file1
改变一个文件的所有人属性
chown -R user1 directory1
改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chown user1:group1 file1
改变一个文件的所有人和群组属性
(3)chgrp 命令
改变文件所属用户组
语法:chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参数:
-c或--changes
效果类似"-v"参数,但仅回报更改的部分
-f或--quiet或--silent
不显示错误信息
-h或--no-dereference
只对符号连接的文件作修改,而不更动其他任何相关文件
-R或--recursive
递归处理,将指定目录下的所有文件及子目录一并处理
-v或--verbose
显示指令执行过
--reference=<参考文件或目录>
把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
举例:
chgrp group1 file1
改变文件的群组
6. 文本处理
(1)grep 命令
分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等
grep Aug /var/log/messages
在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages
在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages
选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/*
在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
(2)sed命令
sed 's/stringa1/stringa2/g' example.txt
将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt 从example.txt
文件中删除所有空白行
(3)paste 命令
paste file1 file2
合并两个文件或两栏的内容
paste -d '+' file1 file2
合并两个文件或两栏的内容,中间用"+"区分
(4)sort 命令
sort file1 file2
排序两个文件的内容
sort file1 file2 | uniq
取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u
删除交集,留下其他的行
sort file1 file2 | uniq -d
取出两个文件的交集(只留下同时存在于两个文件中的文件)
(5)comm 命令
comm -1 file1 file2
比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2
比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2
比较两个文件的内容只删除两个文件共有的部分
7. 打包和压缩
(1)tar 命令
对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压
-c
新建打包文件
-t
查看打包文件的内容含有哪些文件名
-x
解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j
通过bzip2的支持进行压缩/解压缩
-z
通过gzip的支持进行压缩/解压缩
-v
在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename
filename为要处理的文件
-C dir
指定压缩/解压缩的目录dir
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
bunzip2 file1.bz2
解压一个叫做 'file1.bz2'的文件
bzip2 file1
压缩一个叫做 'file1' 的文件
gunzip file1.gz
解压一个叫做 'file1.gz'的文件
gzip file1
压缩一个叫做 'file1'的文件
gzip -9 file1
最大程度压缩
rar a file1.rar test_file
创建一个叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1
同时压缩 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar
解压rar包
zip file1.zip file1
创建一个zip格式的压缩包
unzip file1.zip
解压一个zip格式压缩包
zip -r file1.zip file1 file2 dir1
将几个文件和目录同时压缩成一个zip格式的压缩包
8. 系统和关机
系统的关机、重启以及登出
shutdown -h now
关闭系统(1)
init 0
关闭系统(2)
telinit 0
关闭系统(3)
shutdown -h hours:minutes &
按预定时间关闭系统
shutdown -c
取消按预定时间关闭系统
shutdown -r now
重启(1)
reboot
重启(2)
logout
注销
time
测算一个命令(即程序)的执行时间
9. 进程相关
(1)jps命令
显示当前系统的java进程情况,及其id号。
jps
(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
(2)ps命令
用于将某个时间点的进程运行情况选取下来并输出,process之意
-A
所有的进程均显示出来
-a
不与terminal有关的所有进程
-u
有效用户的相关进程
-x
一般与a参数一起使用,可列出较完整的信息
-l
较长,较详细地将PID的信息列出
ps aux
查看系统所有的进程数据
ps ax
查看不与terminal有关的所有进程
ps -lA
查看系统所有的进程数据
ps axjf
查看连同一部分进程树状态
(3)kill命令
用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用。
(4)killall命令
向一个命令启动的进程发送一个信号。
(5)top命令
是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
(6)查看进程端口号
netstat -tunlp|grep 端口号
如何杀死进程:
(1)图形化界面的方式
(2)kill -9 pid (-9表示强制关闭)
(3)killall -9 程序的名字
(4)pkill 程序的名字