linux文件和目录基本常用命令
linux
命令是什么,就是一个可执行的二进制程序
linux命令
是对Linux
系统进行管理的命令。对于Linux
系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux
系统管理的命令是它正常运行的核心,与之前的DOS
命令类似。linux
命令在系统中有两种类型:内置Shell
命令和Linux
命令。
目录树架构示意图
以下是对这些目录的解释:
**
/bin
**:
bin是Binary
的缩写, 这个目录存放着最经常使用的命令。/boot
:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev
:dev
是Device
(设备)的缩写, 该目录下存放的是Linux
的外部设备,在Linux
中访问设备的方式和访问文件的方式是相同的。/etc
:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。**
/home
**:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。**
/lib
**:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows
里的DLL
文件。几乎所有的应用程序都需要用到这些共享库。**
/lost+found
**:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。**
/media
**:linux
系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux
会把识别的设备挂载到这个目录下。**
/mnt
**:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/
上,然后进入该目录就可以查看光驱里的内容了。**
/opt
**:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE
数据库则就可以放到这个目录下。默认是空的。**
/proc
**:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:1
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
**
/root
**:
该目录为系统管理员,也称作超级权限者的用户主目录。**
/sbin
**:s
就是Super User
的意思,这里存放的是系统管理员使用的系统管理程序。**
/selinux
**:
这个目录是Redhat/CentOS
所特有的目录,Selinux
是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux
相关的文件的。**
/srv
**:
该目录存放一些服务启动之后需要提取的数据。**
/sys
**:
这是linux2.6
内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
。sysfs
文件系统集成了下面3种文件系统的信息:针对进程信息的proc
文件系统、针对设备的devfs
文件系统以及针对伪终端的devpts
文件系统。该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
**
/tmp
**:
这个目录是用来存放一些临时文件的。**
/usr
**:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows
下的program files
目录。/usr/bin
:
系统用户使用的应用程序。/usr/sbin
:
超级用户使用的比较高级的管理程序和系统守护程序。/usr/src
:内核源代码默认的放置目录。**
/var
**:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
在linux
系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc
: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin
, /sbin
, /usr/bin
, /usr/sbin
: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls
目录下的。
值得提出的是,/bin
, /usr/bin
是给系统用户使用的指令(除root
外的通用户),而/sbin
, /usr/sbin
则是给root
使用的指令。
/var
: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log
目录下,另外mail
的预设放置也是在这里。
文件和目录管理
增
mkdir
mkdir
命令用来创建目录。该命令创建由dirname
命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname
指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。
在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。
语法
1 | mkdir (选项)(参数) |
选项
1 | -Z:设置安全上下文,当使用SELinux时有效; |
参数
目录:指定要创建的目录列表,多个目录之间用空格隔开。
实例
在/media/tony/数据,使用绝对路径创建子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
1 | mkdir -m 700 /media/tony/数据/test |
在当前目录中创建parent/child目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
1 | mkdir -p -m 750 parent/child |
touch
touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
语法
1 | touch(选项)(参数) |
选项
1 | -a:或--time=atime或--time=access或--time=use 只更改存取时间; |
参数
文件:指定要设置时间属性的文件列表。
实例
1 | touch tests |
在当前目录下建立一个空文件tests
,然后,利用ls -l
命令可以发现文件tests
的大小为0,表示它是空文件。
删
rm
rm
命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
语法
1 | rm (选项)(参数) |
选项
1 | -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录; |
参数
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r
或者-R
选项。
实例
交互式删除当前目录下的文件tests
和tests1
文件
1 | rm -i tests tests1 |
删除当前目录下除隐含文件外的所有文件和子目录
1 | # rm -r * |
应注意,这样做是非常危险的!
改
mv
**mv命令
**用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source
表示源文件或目录,target
表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv
命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
- 如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
- 如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,
mv
的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv
与cp
的结果不同,mv
好像文件“搬家”,文件个数并未增加。而cp
对文件进行复制,文件个数增加了。
语法
1 | mv(选项)(参数) |
选项
1 | -b:当文件存在时,覆盖前,为其创建一个备份; |
参数
- 源文件:源文件列表。
- 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
实例
将文件ex3
改名为new1
1 | mv ex3 new1 |
将目录/usr/men
中的所有文件移到当前目录(用.
表示)中:
1 | mv /usr/men/* . |
cd
**cd命令
**用来切换工作目录至dirname
。 其中dirName
表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory
(也就是刚login
时所在的目录)。另外,~
也表示为home directory
的意思,.
则是表示目前所在的目录,..
则表示目前目录位置的上一层目录。
语法
1 | cd (选项) (参数) |
选项
1 | -p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录 |
实例
1 | cd 进入用户主目录; |
查
ls
**ls命令
**用来显示目标列表,在Linux
中是使用率较高的命令。ls
命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
语法
1 | ls(选项)(参数) |
选项
1 | -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出); |
参数
目录:指定要显示列表的目录,也可以是具体的文件。
实例
显示当前目录下非影藏文件与目录
1 | tony@tony-PC:~$ ls |
显示当前目录下包括影藏文件在内的所有文件列表
1 | tony@tony-PC:~$ ls -a |
输出长格式列表
1 | tony@tony-PC:~$ ls -1 |
显示文件的inode
信息
索引节点(index inode
简称为“inode
”)是Linux
中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。
1 | tony@tony-PC:/media/tony/数据/bbb$ ls -i -l hello hello~ |
水平输出文件列表
1 | tony@tony-PC:~$ ls -m |
修改最后一次编辑的文件
最近修改的文件显示在最上面。
1 | tony@tony-PC:~$ ls -t |
显示递归文件
1 | tony@tony-PC:~$ ls -R |
打印文件的UID和GID
1 | tony@tony-PC:~$ ls -n |
列出文件和文件夹的详细信息
1 | tony@tony-PC:~$ ls -l |
列出可读文件和文件夹详细信息
1 | tony@tony-PC:~$ ls -lh |
显示文件夹信息
1 | tony@tony-PC:/media/tony/数据$ ls -ld /media/ |
按时间列出文件和文件夹详细信息
1 | tony@tony-PC:~$ ls -lt |
按修改时间列出文件和文件夹详细信息
1 | tony@tony-PC:~$ ls -ltr |
按照特殊字符对文件进行分类
1 | tony@tony-PC:~$ ls -F |
列出文件并标记颜色分类
1 | tony@tony-PC:~$ ls --color=auto |
cat
cat命令连接文件并打印到标准输出设备上,cat
经常用来显示文件的内容,类似于下的type
命令。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more
等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
语法
1 | cat(选项)(参数) |
选项
1 | -n或-number:有1开始对所有输出的行数编号; |
参数
文件列表:指定要连接的文件列表。
实例
设ml
和m2
是当前目录下的两个文件
1 | cat m1 (在屏幕上显示文件ml的内容) |
pwd
pwd
命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/
分隔。第一个/
表示根目录,最后一个目录是当前目录。执行pwd
命令可立刻得知您目前所在的工作目录的绝对路径名称。
语法
1 | pwd(选项) |
选项
1 | --help:显示帮助信息; |
实例
1 | [root@localhost ~]# pwd |
Linux的文件系统
用户在硬件存储设备中执行的文件建立,写入,读取,修改,转存与控制等操作都是依赖文件系统完成的。文件系统的作用是合理规划硬盘,保证用户正常使用。
Linux系统支持数十种文件系统,常见文件系统如下。
Ext3
是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能 自动修复数据的不一致与错误。Ext4
Ext3
的改进版本,作为RHEL 6
系统中的默认文件管理系统,它支持的存储容 量高达1EB
(1EB
=1,073,741,824GB
),且能够有无限多的子目录。另外,Ext4
文件系统能够批量分配block
块,从而极大地提高了读写效率。XFS
是一种高性能的日志文件系统,而且是RHEL 7
中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB
, 这几乎满足了所有需求。
1 | /etc/fstab是用来存放文件系统的静态信息的文件 |