Linux常用文件操作命令
1 改变目录
要进入相应的目录我们可以使用Linux下的改变目录命令cd (ChangeDirectory)。
下面我要进入到/tmp目录下,如下操作:
[root@bestlinux ~]# cd /tmp/
你会看到有地方变了,是的,就是在PS1那个位置有所改变,由原来的“~”变为了“tmp”。那么 ~ 又是什么意思呢?其实 ~表示的就是家目录的意思,既然表示的是家目录的意思,那如果你用cd ~会出现什么样的结果呢?下面咱们就来看一下。
[root@bestlinux tmp]# cd ~
你会看到变了,又变到了原来的位置了,这就是你的家目录。
在这里再给大家多说一点,你用的是哪个用户你用 cd ~ 就会进入到哪个目录下。因为当前咱们是以root的身份进入的,这时用cd ~进入的目录就是 /root 目录下。还有一个就是这里面的 # ,通常情况下 # 就示的就是超级管理员,如果这个位置是 $符号的话,通常情况下表示的是当前登陆的用户是普通用户。这只是通常情况下,其它情况下就不一定了。
那么我把目录改来改去的不知道当前目录在什么地方了,怎么办啊?
2查看当前路径
当你改变目录后不知道当前所在的路径了,我们可以用pwd命令来查看当前的路径。这个命令就是用来查看当前路径的,没有其它的作用。如下所示:
[root@bestlinux network-scripts]# pwd
我知道了当前路径了,那么怎样创建一个文件夹呢?
3创建目录
在指定目录下要创建一文件夹的话可以用mkdir 命令。比如我要在 /tmp下创建一个test的文件夹。我可以这样去做。
[root@bestlinux ~]# mkdir /tmp/test
这时你用ls /tmp 可以看到在 /tmp目录下创建了一个名为test的文件夹。同样的也可以在当前目录下创建一指定的文件夹,这时直接使用mkdir命令后面加相应的文件名就可以了。
我可以创建目录了,那么我怎么去创建一个文件呢?
4创建文件
创建文件的命令可以说有很多,在这里咱们就先说一下比较简单的命令 touch 。我要在 /tmp/创建一个名为a.txt的文件。如下所示:
[root@bestlinux ~]# touch /tmp/a.txt
创建了文件或文件夹后怎样删除呢?下面咱们来一起看一下。
5删除文件或文件夹
删除文件或文件夹均可以用同一个命令来操作都可以用 rm命令。如我要删除一文件夹 /tmp/a.txt 文件,我可以这样去做。
[root@bestlinux ~]# rm /tmp/a.txt
在删除的过程中,你会看到中间有一段话“rm:是否删除一般空文件‘/tmp/a.txt’?”,这是确认的一句话,这时输入字符“y”回车就可以了。
同样的删除一个文件夹,咱们来看一下操作,同样的我还是删除 /tmp/test 文件夹。如下操作一起来注意看一下。
[root@bestlinux ~]# rm /tmp/test/
你会看到这样的一个信息“rm: 无法删除目录‘/tmp/test/’:是一个目录”,也就是说没有删除掉这个文件,在操作过程中出现了问题,一起来看一下问题所在。咱们一起来 man 一下这个rm命令,查看一下他的操作方式。
[root@bestlinux ~]# man rm
从中你可以看到这样一行,“-r, -R, –recursive remove the contents ofdirectories recursively”,它的意思就是说可以删除文件夹的意思吧。好咱们就在后面加上 –r 的参数。
[root@bestlinux ~]# rm -r /tmp/test/
这时你会看到“rm:是否删除目录‘/tmp/test/’?”,就是确认的意思,输入y就可以将指定的内容删除掉了。
那有没有可以不用确认就可以直接将指定的文件和文件夹删除掉呢?有的,下面看一下我下面的操作。
[root@bestlinux ~]# mkdir/tmp/dir //在 /tmp 下创建dir目录
[root@bestlinux ~]# touch/tmp/dir/a.txt //在 /tmp/dir/ 创建a.txt文件
[root@bestlinux ~]# rm -fr/tmp/dir/ //删除掉/tmp/dir和里面的内容
这样你会看到没有任何的提示信息。
6复制文件
复制文件信息是我们最常用的操作了,在Linux里面也有一个比较好用的命令cp命令。cp命令的格式和前的咱们所提到的命令格式是类似的,这个操作并不只是简单的指定一个文件就可以了,因为复制要有源文件,也要有目标文件,所以这里要有至少二个param 。格式如下:
cp [参数] 源文件 目标文件
之所以前面没有说命令格式,是因为前面命令里面只有一个参数,所以没有什么可以说的,现在咱们看到这个命令至少要有两个参数了。下面我就复制/root/ 目录下的 a.txt 文件到 /tmp 下。如下操作:
[root@bestlinux ~]# cp /root/a.txt /tmp/
您会看到这时没有任何的信息显示出来,重新返回到了命令提示符,这时就证明 cp 命令已经成功完成了。然后你再用 ls –l查看一下 /tm/a.txt 你会看到这个文件已经存在了。
那么我想要复制文件夹呢?也是一样的,不过你还记不记得 rm 命令啊,在用 rm 命令删除文件夹的时候我们用了一个 –r 的参数,同样的cp 命令也是一样的,不信你可以自己用 man 查看一下。好下面咱们就来复制文件夹来看一下。首先我在 /root 目录下我创建一个名为dir 的文件夹,在文件夹里面创建一个名为 test.txt 的文件。然后我再把 dir 文件夹复制到 /tmp目录中。如下操作:
[root@bestlinux ~]# mkdirdir //在当前目录下创建dir 文件夹
[root@bestlinux ~]# touchdir/test.txt //在dir目录下创建test.txt文件
[root@bestlinux ~]# cp -r dir//tmp/ //复制dir目录到/tmp下
[root@bestlinux ~]# ls -l/tmp/dir/ //查看/tmp下的内容是不是有dir目录
这就是怎样去复制文件夹和文件夹中的内容。那么如果我想复制当前目录下的所有文件到指定目录下呢?这时我们就要用到通配符了。下面我们来看一下通配符。
* :表示所有文件和文件夹
?:表示一个字符
知道了上面这二个通配符了就可以做相应的一些操作了。下面我要复制刚才咱们创建的 dir 目录下的所有内容到 /tmp下。dir里面是咱们刚才创建的 a.txt 文件,这时复制过去后在 /tmp 下你会看到 a.txt 文件。如下操作:
[root@bestlinux ~]# cp dir/* /tmp/
[root@bestlinux ~]# ls /tmp/a.txt -l
这样用通配符也可以完成相关的操作。
7移动和改名
如果想要移动文件的话可以用 mv命令格式如下:
mv [参数] 源文件 目地文件
这个操作和cp命令的操作是类似的。
例子:将 /root 下的 dir 移动到 /home下。如下操作:
[root@bestlinux ~]# mv dir/ /home/
[root@bestlinux ~]# ls -l /home/
这样当前目录下的 dir 文件被移动到了 /home 下。
那么改名的格式也是类似的,下面我就把 /home/ 下的dir目录改名为directory。如下操作:
[root@bestlinux ~]# cd /home/
[root@bestlinux home]# mv dir/ directory
[root@bestlinux home]# ls -l
这样 dir 目录就改名为 directory名了。
8查找命令
在我创建了那么多的文件中一不小心忘记放到哪了,这个时候我们就想着要查找一下了,这时我们有这样一个命令叫find 。可以用于查找工作。格式如下:
find [路径] [参数]
参数说明:
1. 时间:
-atimen :在 n*24小时内被 access 即存取过的文件列出来!
-ctimen :在 n*24小时内被 changed 即改变、新增的文件或目录印出
-mtimen :在 n*24小时内被 modified 即修改过的文件印出
-newer file :比 file 还要新的文件就列出来!
使用名称:
-gidn :寻找 群组 ID 为 n 的文件
-group name :寻找群组名称为 name的文件
-uidn :寻找拥有者 ID 为 n 的文件
-user name :寻找使用者名称为 name 的文件
-name file :寻找档名为 file 的文件名称(可以使用万用字符)
-type type :寻找档案属性为 type 的档案,type 包含了 b, c, d, p, l, s,这些与前一章的属性相同!例如 l 为 Link而 d 为路径之意!
如下例:
[root@bestlinux ~]# find / -nametesting //查找名为 testing 的文件
[root@bestlinux ~]# find / -name’test*’ //查找以test开头的文件
[root@bestlinux ~]# find . -ctime1 //查找当前目录下一天内新增的文件
[root@bestlinux ~]# find /home -usertest //查找 /home下拥有者为 test 的文件
有些同学可能有另外的一个想法,我想查找ls命令在什么地方,可以,你可以用find命令去找,不过用find命令查找起来时间比较长,可以用另外一个命令which命令。如下:
[root@bestlinux ~]# which ls
这时你会看到ls命令在/bin/目录里面。用起来很方便吧。
9查看文件内容
对于一个文本文件,我们怎么去查看其中的内容呢?我们可以用到查看文本内容的命令cat 命令,除了这一个还有 tail 、head 命令。
[root@bestlinux ~]# cat /etc/services
/etc/services
Id:services,v1.402004/09/2305:45:18nottingExp
#
Network services, Internet style
#
Note that it is presently the policy of IANA to assign a singlewell-known
port number for both TCP and UDP; hence, most entries here havetwo entries
even if the protocol doesn’t support UDP operations.
Updated from RFC 1700, “Assigned Numbers” (October1994). Not all ports
are included, only the more common ones.
…… //中间省略
binkp 24554/udp # Binkley
asp 27374/tcp # Address Search Protocol
asp 27374/udp # Address Search Protocol
tfido 60177/tcp #Ifmail
tfido 60177/udp # Ifmail
fido 60179/tcp # Ifmail
fido 60179/udp # Ifmail
Local services
同样的还可以用 tail 和 head 这两个命令来查看头和尾一些数据信息。格式如下:
[root@bestlinux ~]# head /etc/services
[root@bestlinux ~]# tail /etc/services
结果会显示 /etc/services 的前十行和后十行内容。
10 管道
在用 cat命令显示文件内容的时候你会发现如果内容过多,他把前面的内容直接翻过去了,你这样就看不到上面的内容了,这时咱们可以这样去做,让文件内容一屏一屏的显示。这时就要用到另外一个命令more 命令。
[root@bestlinux ~]# more /etc/services
这时你会看到文件内容会一屏一屏的显示出来,你只需用空格键就可以下翻了。还有些时候我们也有时会这样去做,就是将 cat显示出来的内容重新输出给 more 命令。这就是管道了。如下例:
[root@bestlinux ~]# cat /etc/services | more
这时你会看到显示出来的内容和单独用more命令是一样的。这就是管道,后面我们会经常用到类似的操作。
11重定向
有时候我们需要将一些文件信息不是输出到屏幕上,而是让其输出到指定的文件或其它位置,这时我们就要用到了输出重定向了。输出重定向只需要加上> 这位一个符号就可以了。下面我要把 /etc/services 文件中的内容输出到当前目录下的a.txt 文件中,如下:
[root@bestlinux ~]# cat /etc/services > a.txt
[root@bestlinux ~]# ls -l a.txt /etc/services
输出完后你再用ls –l 命令查看这二个文件,你会看到二个文件的大小是一样的。同样的你也可以用 cat 命令去查看。