> cd命令
(change Directory) 说明:切换当前目录。这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
- 格式:
cd [目录名]
- 实例:
命令 | 说明 |
---|---|
cd / | 切换到根目录 |
cd ~ | 切换到"Home"目录 |
cd | 切换到"Home"目录 |
cd - | 切换到上一次工作路径 |
cd. | 切换到当前目录 . 表示当前一级目录 |
cd.. | 切换到上一级目录 .. 表示上一级目录 |
> ls命令
就是list的缩写,查看文件与目录的命令
- 格式:
ls [参数] [文件名]
- 常用参数搭配:
命令 | 说明 |
---|---|
-l | 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来 |
-h | 将文件容量以较易读的方式(GB,kB等)列出来 |
-a | 列出目录所有文件,包含以.开始的隐藏文件 |
-A | 列出除.及..的其它文件 |
-R | 连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来 |
-t | 以文件修改时间排序 |
-s | 在每个文件的前面打印出文件大小 |
-S | 以文件大小排序 |
-r | 反序排列 |
-F | 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" |
-d | 仅列出目录本身,而不是列出目录的文件数据 |
> cat命令
该命令用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用,从而可以一页页地查看数据
cat主要有三大功能:
- 一次显示整个文件 cat filename
- 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
- 将几个文件合并为一个文件:cat file1 file2 > file 不存在新建,存在则覆盖
- 附加文档:cat file1 file3 >> file3
- 格式:
cat [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-b | 对非空输出行号,从1开始 |
-n | 输出所有行号,从1开始 |
-s | 遇到连续两行以上的空白行,则替换成一行 |
-E | 每行结束处显示$ |
-T | 将TAB字符显示为^l |
- 例:
- 把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
cat -n log2012.log > log2013.log
- 把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里
cat -b log2012.log log2013.log >> log.log
- 清空 /etc/test.txt 文档内容
cat /dev/null > /etc/test.txt
> grep命令
该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等
- 格式:
grep [参数] pattern [文件名]
- 常用参数搭配:
参数 | 说明 |
---|---|
-i | 忽略大小写 |
-v | 显示不包含匹配文本的所有行 |
-n | 显示匹配行及行号 |
-a | 将binary文件以text文件的方式查找数据 |
-c | 计算找到'pattern'的次数 |
> find命令
find是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出
- 格式:
find [路径] [参数] [动作]
- 常用参数搭配:
与时间有关的参数:
参数 | 说明 |
---|---|
-mtime n | 在n天之前的当天内被更改过的文件 |
-mtime +n | 在n天之前(不含n天本身)被更改过的文件 |
-mtime -n | 在n天之内(含n天本身)被更改过的文件 |
- 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件
与用户或用户组名有关的参数:
参数 | 说明 |
---|---|
-user name | 列出文件所有者为name的文件 |
-group name | 列出文件所属用户组为name的文件 |
-uid n | 列出文件所有者为用户ID为n的文件 |
-gid n | 列出文件所属用户组为用户组ID为n的文件 |
- 例如:
- 在目录/home/ljianhui中找出所有者为ljianhui的文件
find /home/ljianhui -user ljianhui
与文件权限及名称有关的参数:
参数 | 说明 |
---|---|
-name filename | 找出文件名为filename的文件 |
-size [+-]SIZE | 找出比SIZE还要大(+)或小(-)的文件 |
-perm mode | 查找文件权限刚好等于mode的文件,mode用数字表示,如0755 |
-perm -mode | 查找文件权限必须要全部包括mode权限的文件,mode用数字表示 |
-perm +mode | 查找文件权限包含任一mode的权限的文件,mode用数字表示 |
- 例如:
- 查找文件名为passwd的文件
find / -name passwd
- 查找当前目录中文件权限的0755的文件
find . -perm 0755
- 查找当前目录中大于12KB的文件,注意c表示byte
find . -size +12k
> cp命令
该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下
- 注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在shell脚本中,如果不加-i参数,则不会提示,而是直接覆盖!
- 格式:
cp [参数] 源目录 目标目录
- 常用参数搭配:
参数 | 说明 |
---|---|
-i | 若目标文件已经存在时,在覆盖时会先询问 |
-r | 递归持续复制,用于目录的复制行为 |
-u | 目标文件与源文件有差异时才会复制 |
-a | 将文件的特性一起复制 |
-p | 连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份 |
-l | 不复制文件,只是生成链接文件 |
-f | 覆盖已经存在的目标文件而不给出提示 |
- 例:
- 连同文件的所有特性把文件file1复制成文件file2
cp -a file1 file2
- 把文件file1、file2、file3复制到目录dir中
cp file1 file2 file3 dir
> mv命令
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)
- 格式:
mv [参数] 源目录 目标目录
- 常用参数搭配:
参数 | 说明 |
---|---|
-i | 若存在同名文件,则先询问是否覆盖旧文件 |
-f | force强制的意思,如果目标文件已经存在,不会询问而直接覆盖 |
-u | 若目标文件已经存在,且比目标文件新,才会更新 |
- 例:
- 将文件test.log重命名为test1.txt
mv test.log test1.txt
- 将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中
mv llog1.txt log2.txt log3.txt /test3
- 移动当前文件夹下的所有文件到上一级目录
mv * ../
> rm命令
该命令用于删除文件或目录,remove之意,如果没有使用 -r 选项,则rm不会删除目录。如果使用 rm 来删除文件, 则无法恢复
- 格式:
rm [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-r | 递归删除目录下的所有内容 |
-f | 忽视不存在的文件,不给予提示 |
- 例:
- 删除任何.log文件;删除前逐一询问确认
rm -i *.log
- 删除test子目录及子目录中所有档案删除,并且不用一一确认
rm -rf test
> rmdir命令
从一个目录中删除一个或多个子目录项
注意:不能删除非空目录
- 格式:
rmdir [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-p | 是当子目录被删除后使它也成为空目录的话,则顺便一并删除 |
- 例:
- 当Test子目录被删除后使parent也成为空目录的话,则顺便一并删除
rmdir -p parent/Test
> mkdir命令
创建文件夹
- 格式:
mkdir [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-m | 对新建目录设置存取权限,也可以用chmod命令设置 |
-p | 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录 |
- 例:
- 当前工作目录下创建名为t的文件夹
mkdir t
- 在tmp目录下创建路径为a/b/c的目录,若不存在,则创建
mkdir -p /tmp/a/b/c
> pwd命令
该命令用于删除文件或目录,remove之意,如果没有使用 -r 选项,则rm不会删除目录。如果使用 rm 来删除文件, 则无法恢复
格式:
pwd
例:
- 查看当前路径
pwd
- 查看软链接的实际路径
pwd -P
> less命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
- 格式:
less [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-i | 忽略搜索时的大小写 |
-N | 显示每行的行号 |
-o <文件名> | 将less 输出的内容在指定文件中保存起来 |
-s | 显示连续空行为一行 |
-x <数字> | 将“tab”键显示为规定的数字空格 |
/字符串 | 向下搜索“字符串”的功能 |
?字符串 | 向上搜索“字符串”的功能 |
- 常用操作命令:
命令 | 说明 |
---|---|
n | 向下n行,需要定义。默认为1行 |
N | 向下滚动一屏 |
b | 向下滚动一屏 |
d | 返回上一屏 |
h | 输出当前行的行号 |
Q | 输出文件名和当前行的行号 |
u | 调用vi编辑器 |
y | 退出more |
空格键 | 输出当前行的行号 |
回车键 | 输出文件名和当前行的行号 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
- 例:
- ps查看进程信息并通过less分页显示
ps -aux | less -N
- 查看多个文件
less 1.log 2.log
可以使用n查看下一个,使用p查看前一个
> more命令
功能类似于cat, more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
- 格式:
more [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
+n | 从第n行开始 |
-n | 定义屏幕大小为n行 |
+/pattern | 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 |
-c | 从顶部清屏,然后显示 |
-s | 把连续的多个空行显示为一行 |
- 常用操作命令:
命令 | 说明 |
---|---|
Enter | 向下n行,需要定义。默认为1行 |
空格键 | 向下滚动一屏 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
v | 调用vi编辑器 |
q | 退出more |
- 例:
- 显示文件中从第3行起的内容
more +3 text.txt
- 在所列出文件目录详细信息,借助管道使每次显示5行,按空格显示下5行
ls -l | more -5
> head命令
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
- 格式:
head [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-n <行数> | 显示的行数(行数为负数表示从最后向前数) |
-c <行数> | 显示前n个字节内容 |
- 例:
- 显示1.log文件中前20行
head 1.log -n 20
- 显示1.log文件前20字节
head -c 20 log2014.log
- 显示t.log最后10行
head -n -10 t.log
> tail命令
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
- 格式:
tail [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-f | 循环读取(常用于查看递增的日志文件) |
-n <行数> | 显示行数(从后向前) |
-c <数目> | 显示的字节数 |
-q | 不显示处理信息 |
-v | 显示详细的处理信息 |
--pid==PID | 与-f合用,表示在进程ID,PID死掉之后结束 |
- 例:
- 循环读取逐渐增加的文件内容
ping 127.0.0.1 > ping.log &(后台运行:可使用jobs -l查看,也可使用fg将其移到前台运行)tail -f ping.log
> which命令
Linux which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
格式:
which [参数] 文件名
例:
- 查看ls命令是否存在,执行哪个
which ls
- 查看which
which which
- 查看cd
which cd (显示不存在,因为cd是内建命令,而which查找显示是PATH中的命令)
查看当前PATH配置:echo $PATH;或使用env查看所有环境变量及对应值
> wc命令
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
- 格式:
wc [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-c | 统计字节数 |
-l | 统计行数 |
-m | 统计字符数 |
-w | 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串 |
- 例:
- 查找文件的 行数 单词数 字节数 文件名
wc text.txt 结果:7 8 70 test.txt
- 统计输出结果的行数
cat test.txt | wc -l
> tar命令
该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件
tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
- 格式:
tar [参数] 打包文件名.tar 要打包的文件
- 常用参数搭配:
参数 | 说明 |
---|---|
-c | 建立新的压缩文件 |
-x | 从压缩包中抽取文件 |
-f | 指定压缩文件,必选 |
-r | 添加文件到已经压缩文件包中 |
-u | 添加改了和现有的文件到压缩包中 |
-t | 显示压缩文件中的内容 |
-z | 支持gzip压缩 |
-j | 支持bzip2压缩 |
-Z | 支持compress解压文件 |
-v | 显示操作过程 |
- 例:
- 将文件全部打包成tar包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
- 将/etc下的所有文件及目录打包到指定目录,并使用gz压缩
tar -zcvf /tmp/etc.tar.gz /etc
- 查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)
tar -ztvf /tmp/etc.tar.gz
- 将指定文件解压到指定/etc目录下
tar -zxvf /tmp/etc.tar.gz -C /etc
注:文件名并不定要以后缀tar.gz结尾,这里主要是为了说明使用的压缩程序为gzip
> time命令
该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个time即可
在程序或命令运行结束后,在最后输出了三个时间,它们分别是:
user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;
real:实际时间,从command命令行开始执行到运行终止的消逝时间;
注:用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。
格式:
time 命令/程序名
例:
- 查看程序运行时间
time ./process
- 查看命令运行时间
time ps aux
> chgrp命令
该命令用于改变文件所属用户组
- 格式:
chgrp groupname [-R] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-R | 进行递归的持续对所有文件和子目录更改 |
- 例:
- 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users
chgrp users -R ./dir
> chown命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符
- 格式:
chown [参数] user[:group] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-c | 显示更改的部分的信息 |
-R | 进行递归的持续对所有文件和子目录更改 |
-f | 忽略错误信息 |
-v | 显示详细的处理信息 |
- 例:
- 改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log
- 改变文件群组
chown -c :mail t.log
- 改变文件夹及子文件目录属主及属组为mail
chown -cR :mail test/
> chmod命令
用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l test.txt查找
以文件log2012.log为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。
- 格式:
chown [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-R | 进行递归的持续对所有文件和子目录更改 |
-c | 当发生改变时,报告处理信息 |
- 权限范围:
u | 目录或者文件的当前的用户 |
g | 目录或者文件的当前的群组 |
o | 除了目录或者文件的当前用户或群组之外的用户或者群组 |
a | 所有的用户及群组 |
- 权限代号:
r | 读权限,用数字4表示 |
w | 写权限,用数字2表示 |
x | 执行权限,用数字1表示 |
s | 特殊权限 |
+ | 表示增加权限 |
- | 删除权限,用数字0表示 |
= | 表示唯一设定权限 |
- 例:
- 增加文件t.log所有用户可执行权限
chmod a+x t.log
- 撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
- 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
- 将test目录及其子目录所有文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c
> ps命令
ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用top
linux上进程有5种状态:
- 运行(正在运行或在运行队列中等待)
- 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
- 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
- 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
- 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
- D 不可中断 uninterruptible sleep (usually IO)
- R 运行 runnable (on run queue)
- S 中断 sleeping
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
- 格式:
ps [参数]
- 常用参数:
参数 | 说明 |
---|---|
-A | 所有的进程均显示出来 |
-a | 不与terminal有关的所有进程 |
-u | 有效用户的相关进程 |
-x | 一般与a参数一起使用,可列出较完整的信息 |
-l | 较长,较详细地将PID的信息列出 |
f | 显示进程间的关系 |
r | 显示当前终端运行的进程 |
e | 显示环境变量 |
- 命令参数搭配:
参数 | 说明 |
---|---|
aux | 查看系统所有的进程数据 |
ax | 查看不与terminal有关的所有进程 |
--lA | 查看系统所有的进程数据 |
axjf | 查看连同一部分进程树状态 |
- 例:
- 显示当前所有进程环境变量及进程间关系
ps -ef
- 与grep联用查找某进程
ps -aux | grep apache
> top命令
该命令用于删除文件或目录,remove之意,如果没有使用 -r 选项,则rm不会删除目录。如果使用 rm 来删除文件, 则无法恢复
- 格式:
rm [参数] 文件名
- 常用参数搭配:
参数 | 说明 |
---|---|
-c | 显示完整的进程命令 |
-s | 保密模式, 将交谈式指令取消,避免潜在的危机 |
-p <进程号> | 指定进程显示 |
-n <次数> | 循环显示次数 |
-d | 改变显示的更新速度 |
-i | 不显示任何闲置 (idle) 或无用 (zombie) 的行程 |
-b | 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 |
- 例:
- 设置信息更新次数
top -n 2
- 显示指定的进程信息
top -p 139
- 将更新显示二次的结果输入到名称为 top.log 的档案里
top -n 2 -b > top.log
> kill命令
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
- 格式:
kill [参数] PID
- 常用参数搭配:
参数 | 说明 |
---|---|
-l | 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称 |
-u | 指定用户 |
signal的常用参数如下:
信号 | 说明 |
---|---|
1 | SIGHUP,启动被终止的进程 |
2 | SIGINT,相当于输入ctrl+c,中断一个程序的进行 |
9 | SIGKILL,强制中断一个进程的进行 |
15 | SIGTERM,以正常的结束进程方式来终止进程 |
17 | SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行 |
- 例:
- 杀死进程
kill 12345
- 强制杀死进程
kill -KILL 12345
- 彻底杀死进程
kill -9 12345
- 杀死指定用户所有进程
kill -9 $(ps -ef | grep shenle)
//方法一 过滤出shenle用户进程
kill -u shenle
//方法二
> file命令
该命令用于判断接在file命令后的文件的基本数据,因为在Linux下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了
- 格式:
file 文件名
- 例:
- 查看文件类型
file ./test.c