目录
一.Linux树型目录结构
在详解常用命令之前,先对Linux的树型目录结构做个简单的了解,如下所示:
简单说明:
- / #根目录
- /bin #基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, cd等等。这个目录中的文件都是可执行的,一般的用户都可以使用。
- /dev #设备文件,比如声卡、磁盘、鼠标、键盘等。
- /etc #系统管理和配置文件
- /etc/init.d #启动配置文件和脚本,可在这里添加启动脚本。
- /etc/rc.local #用户添加启动项
- /home #用户主目录,比如用户user的主目录就是/home/user,可以用~user表示
- /lib #标准程序设计库存放路径,又叫动态链接共享库,作用类似windows里的.dll文件
- /sbin #超级管理命令,这里存放的是系统管理员使用的管理程序。
- /tmp #临时文件目录,有时用户运行程序的时候,会产生临时文件。 /tmp就用来存放临时文件的。
- /root #系统管理员的主目录
- /mnt #用来临时挂载其他的文件系统
- /lost+found #这个目录平时是空的,系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。
- /media #即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录
- /proc #虚拟文件目录,可直接访问这个目录来获取系统信息。
- /var #所有服务的登录文件或错误讯息档案(log files)都在 /var/log 里面
- /boot #包含Linux内核及系统引导程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一 般情况下,GRUB或LILO系统引导管理器也位于这个目录;
- /usr #最庞大的目录,要用到的应用程序和文件几乎都在这个目录,其中包含:
- usr/bin #众多的应用程序
- /usr/sbin #超级用户的一些管理程序
- /usr/include #Linux下开发和编译应用程序所需要的头文件
- /usr/lib #常用的动态链接库
- /usr/share/man #帮助文档
- /usr/src #源代码,Linux内核的源代码就放在/usr/src/Linux里
- /usr/local/bin #本地增加的命令
- /usr/local/lib #本地增加的库根文件系统
. :代表当前路径
.. :代表上一级目录
~ :代表用户目录路径
二.常用命令详解
2.1 ls 命令
ls是英文单词list的缩写.用来查看文件目录的属性。
- 例如直接输入ls按回车,查看根目录的文件以及目录。
2.1.1 ls -l命令
- ls -l l参数代表以列表的方式显示。
- #第一个字符d 代表这是一个目录文件。
- # ‐ 代表普通文件
- # c 字符设备文件
- # b 块设备文件
- # p 管道文件
- # l 链接文件
- # s socket文件
- #后面的rwxr‐xr‐x字符,代表user、group、other对文件所拥有的权限,rwx代表该用户拥有读写执行的权限。r‐x
- 代表同一组的用户拥有的读和执行权限,后一个r‐x代表其他用户拥有读和执行权限。
- # 2代表文件硬链接的计数,表示该文件有两个硬链接。
- # where 文件所属的用户名。
- # where 文件所属的用户组。
- # 4096 文件大小,单位字节。
- # 6月 25 16:53 文件最后被修改的日期。
- # Videos 文件名
2.1.2 ls -a命令
- ls -a a参数代表all的意思,表示把所有的文件都罗列出来,包括隐藏文件,点号开头的在Linux中都表示隐藏文件。
ls ‐ld [filename] 代表只列出目录文件的属性。
2.2 stat命令
查看文件的访问时间,修改时间等
访问时间,是指通过指令如cat、vi等来查看的文件的最近一次时间。更改时间,是指修改文件内容的最近一次时间。
改动时间,是指修改文件属性的最近一次时间。
注意:访问时间是内容更改后,第一次访问的时间,后面再次访问的时候访问时间不会改变
2.3 cd命令
cd 是 change directory的缩写,表示改变当前所在路径。
2.4 pwd命令
pwd 是英文print working directory 显示当前所在路径。
2.5 which命令
寻找可执行文件 ,并在PATH环境变量里面寻找
2.6 touch命令
将每个文件的访问及修改时间都更新为目前的时间。
如果文件不存在,则创建一个字节数为0的文件。
‐a #只更新访问时间,不改变修改时间
‐c #不创建不存在的文件
‐m #只更新修改时间,不改变访问时间
‐r file #使用文件file的时间更新文件的时间
‐t #将时间修改为参数指定的日期,如:07081556代表7月8号15点56分
2.7 mkdir 命令
mkdir 是make directory的英文缩写。
创建目录DIRECTORY,可以一次创建多个。OPTION如果是p,表示可以连同父目录一起创建。
2.8 rmdir 命令
rmdir是remove directory的英文缩写。
删除空目录,可以一次删除多个。OPTION如果是p,表示可以连同空的父目录一起删除。但是一旦父目录中还包含其他文件,则删除失败。
2.9 rm 命令
rm是remove的英文缩写。
可以用来删除普通文件,也可以用来删除目录,特别用来删除目录中嵌套有子目录的目录文件。
常用参数:‐f ‐‐force #强制删除,不询问是否要删除。
‐r ‐‐recursive #递归删除,包括文件夹中的内容。
2.10 mv命令
mv是英文单词move的缩写。可以用来移动文件夹或者文件,也可以用来更改文件名。
mv file / #把文件file移动到根目录中
mv file file_bak #把文件file重命名为file_bak。
2.11 cp命令
cp是英文单词copy的缩写,表示拷贝文件。
- 可以用来拷贝普通文件:
cp file file_bak #拷贝一份file为file_bak
- 可以用来拷贝目录
cp dir dir_bak ‐r #拷贝一个目录dir为dir_bak, ‐r参数代表递归拷贝,把dir目录中的文件也拷贝过去
2.12 cat命令
cat英文单词concatenate连锁的缩写,用来查看文件内容,以及将几个文件连成一个文件,
- 不填文件参数,默认的情况下是从标准输入中获取内容:
- 查看文件: cat fileName
- 将文件file1 file2连成file3文件
cat file1 file2 > file3
2.13 more命令
more 是我们最常用的工具之一,最常用的就是显示输出的内容,然后根据窗口的大小进行分页显示,并且提示文件的百分比。
参数如下:
+num #从第num行开始显示;
‐num #定义每屏显示num行;
打开之后的动作:
2.14 less命令
less工具也是对文件或其它输出进行分页显示的工具
参数如下:
‐f #强制打开文件,二进制文件显示时,不提示警告;
‐N #在每行前输出行号;
打开之后的动作:
2.15 locate 命令
全盘寻找文件,文件名部分匹配,只要有包含该字符串的都罗列出来,这个指令查找速度很快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来更新。当我们建立好这个数据库后,就可以方便地来搜寻
所需文件了。
马上创建的文件没办法使用locate查找到:如果想马上更新可以使用一下指令:updatedb
2.16 find 命令
直接在全文件系统上搜寻,功能强大,速度慢。
格式:
find [path] [‐option] [ ‐print ‐exec ‐ok command ] {} \;
path: #要执行查找的目录。
‐option: #查找的具体方法。
‐print: #find命令将匹配的文件输出到标准输出。
‐exec: #find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和
\;之间的空格。
‐ok: #和‐exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令
之前,都会给出提示,让用户来确定是否执行。
find / ‐name filename #在根目录里面搜索文件名为filename的文件
find /etc ‐name *s* #在目录里面搜索带有s的文件
find /etc ‐name *S #在目录里面搜索以s结尾的文件
find /etc ‐name s* #在目录里面搜索以s开头的文件
find / ‐amin ‐10 #在系统中搜索最后10分钟访问的文件
find / ‐atime ‐2 #查找在系统中最后48小时访问的文件
find / ‐mmin ‐5 #查找在系统中最后5分钟修改过的文件
find / ‐mtime ‐1 #查找在系统中最后24小时修改过的文件
find / ‐ctime ‐1 #查找在系统中最后24小时被改变状态的文件
find / ‐user username #查找在系统中属于用户username的文件
find / ‐group groupname #groupname 查找在系统中属于groupname的文件
find / ‐empty #查找在系统中为空的文件或者是文件夹
find / ‐inum 3 #查找inode号为3的文件
find / ‐type d #查找为文件类型为文件夹的文件d为文件夹
f #普通文件
d #目录文件
l #链接文件
b #块设备文件
c #字符设备文件
p #管道文件
s #socket文件
2.17 grep 命令
搜索内容中是否包含指定的字符串,并打印出该行。
常用参数有:
‐i ‐‐ignore‐case #忽略字符大小写的差别。
‐v #输出没有指定字符串的文件
‐c #只输出匹配行的计数。
‐R #连同子目录中所有文件一起查找。
2.18 ln命令
ln是英文单词link的缩写,用来创建链接的命令。
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
【硬链接】
硬链接指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点,一般这种链接就是硬链接。
硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”。
如果有多个硬链接,只删除一个链接并不影响本身和其它的链接,只有当最后一个链接被删除后,文件的才会被正在删除。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。
【软链接】
另外一种链接称之为符号链接(Symbolic Link),也叫软链接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。符号链接文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
- 给flie文件创建一个硬链接
touch file
ln file file_hard
- 给file文件创建一个软链接
touch file
ln ‐s file flie_soft
注意: 软链接的时候尽量使用绝对路径,避免由于链接文件移动后,造成文件失效。
2.19 wc 命令
Linux系统中的wc为英文Word Count的缩写,命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
- 命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
- 命令参数:
‐c #统计字节数。
‐l #统计行数。
‐m #统计字符数。这个标志不能与 ‐c 标志一起使用。
‐w #统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
‐L #打印最长行的长度。
2.20 od命令
od是英文octal dump的缩写,功能是把文件用8进制或者其他的格式显示出来,通常用于查看特殊格式文件的内容,可以用来查看不可见字符。
2.21 du命令
du是英文Disk usage的缩写,表示计算某个目录在硬盘中所占的空间大小,默认情况下以kb为单位。通过递归统计每一个目录中所占用的空间大小。
常用参数如下:
2.22 df命令
df是英文Disk free的缩写,用来统计磁盘是使用情况。
2.23 gedit命令
gedit全称 GNU edit 是一个文本编辑器,类似windows里面的txt文本编辑器。编辑file文本。
2.24 管道命令
用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command 2的输入。管道命令操作符是:”|”它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力.
2.25 重定向
在shell中,标准输入是0,标准输出是1,标准错误是2.
使用>表示重定向。1>表示标准输出重定向,2>表示标准错误重定向。默认情况下>表示输出重定向。
例如:
ls > list.txt #ls的输出重定向到文件list.txt中。
find / ‐name "*.c" 2>/dev/null #标准错误重定向到无底洞文件。
find / ‐name "*.c" 2>/dev/null #标准错误重定向到无底洞文件。
find / ‐name "*.c" >/dev/null 2>&1 #标准输出、标准错误重定向到无底洞文件。
2.26 后台运行
Linux中可以使用&,让程序在后台运行。如:cat &
2.27 awk命令
awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
格式:awk [‐F field‐separator] 'commands' [input‐file(s)]
其中,commands 是真正awk命令,[F 域分隔符]是可选的。 inputfile(s) 是待处理的文件。
print 是awk打印指定内容的主要命令, $1 分割出来的第一段,$2分割出来的第二段,依次类推,$0代表所有
字段例如:
ls ‐l | awk '{print $1 "\t" $2 "\t" $3 "\t" $4}'
将/proc/meminfo文件中的字段提取出来,并且在每个字段前面添加meminfo:
awk ‐F ':' '{print "meminfo:" $1}' /proc/meminfo