Linux命令学习2—文件与目录管

一. Linux中特殊的目录

.   代表此层目录

..  代表上一层目录

-  代表前一个工作目录

~  代表当前用户所在目录

~account  代表account这个用户的家目录


二. 常见目录指令

    2.1 cd(变换目录)


    2.2 pwd(显示当前所在目录)

参数 -P:显示出真是的路径,而不是链接(link)路径。

例如 # cd /var/mail,该目录为一个链接目录:# ls -ld /var/mail显示:lrwxrwxrwx 1 root root 10 Mar  1  2011 /var/mail -> spool/mail,执行

# pwd,显示的是/var/mail,执行

# pwd -P,显示的是/var/spool/mail


    2.3 mkdir(建立新目录)

2.3.1 参数 -p:递归建立目录

例如:# mkdir -p  a/b/c

否则需要逐层进行建立,即先建立mkdir a,然后mkdir a/b,最后mkdir a/b/c


2.3.2 参数-m:配置目录权限

例如:建立权限为rwx--x--x的目录a:#mkdir -m 711 a

如果不使用该参数,则系统创建目录使用默认权限,该权限又umask控制,

例如:mkdir a,则使用命令ls -ld 查看权限为:drwxr-xr-x 2 root     root 4096 May 14 19:14 a


    2.4 rmdir(删除目录)

2.4.1 直接使用该命令可以删除空目录

# mkdir a

# rmdir a

添加参数-p可以连通上层空目录一同删除

# mkdir -p a/aa/aaa

# rmdir -p a/aa/aaa

2.4.2 删除非空目录,需要添加参数-r


三. 执行文件路径的变量:$PATH

当我们在执行命令例如ls、mkdir时,系统是根据PATH变量搜寻该命令进行执行的,该变量指定了这些命令的路径。可以使用“echo $PATH"查看当前系统的PATH路径,命令echo用于显示信息,$表示后面为变量。

临时更改PATH的方法:例如添加/root为PATH路径:# PATH="$PATH":/root

永久修改需要修改方法:

对指定用户生效:.#vi ~/.bash_profile修改PATH行,例如将目录/etc/apache/bin添加进去,~代表了当前用户

对整个系统所有用户生效:#vi /etc/profile,在适当位置添加PATH=$PATH:/etc/apache/bin


四. 文件与目录管理命令

    4.1 ls (文件与目录查看)

格式:

# ls [-aAdfFhilnrRSt] 目录名称

# ls [--color={never,auto,always}] 目录名称

# ls [--full-time]目录名称    

常用参数:

-a:列出全部档案,连通隐藏档案(以.开头档案)

-d:仅列出目录本身,而不是列出目录内的档案数据

-l:列出档案的完整信息,通常"ll"即为"ls -l"


    4.2 cp(复制文件或目录)

格式:cp [-adfilprsu] 来源文件  目标文件

常用参数:

-a:相当于-pdr

-d: 若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身

-i:若目标文件已经存在时,在覆盖时会先询问动作的进行

-p:连通档案的属性一起复制过去,而非食用默认属性

-r:递归持续复制,用于目录的复制行为

-s:复制成为符号链接文件(symbolic link),即快捷方式

-l:进行硬式链接(hard link)的连接档建立,而非复制档案本身

可同时复制多个文件到一个目录,例如将a,b复制到c:# cp a b c


    4.3 rm(删除文件或目录)

格式:rm [-fir]  档案或目录

常用参数:

-f:强制删除,忽略不存在的文件,无警告信息

-i:删除前进行确认提示

-r:递归删除,在删除目录时使用

示例:使用通配符*删除/tmp目录下以bc开头文件:#rm -i bc*

删除目录/tmp/etc:#rm -r /tmp/etc,执行该命令后,由于是root身法,默认加入"-i"选项,所以需要一直按"y"确认删除该目录下文件,如果确认删除该目录不需要询问,可以使用命令# \rm -r /tmp/etc

-->删除带-开头的文件

使用touch指令创建空文件:# touch ./-aa-

由于-代表选项,故如果使用rm -aaa-,会导致系统误判,需要添加目录信息:

# rm ./-aa-

或者使用命令:#rm -- -aa-


    4.4 mv(移动文件、目录或更名

格式:

# mv [-fiu] source destination

# mv [options] source1 source2 source3 ... directory

常用参数:

-f:强制执行,如果目标文件已存在,直接覆盖

-i:若目标文件已存在,会询问是否覆盖

-u:若目标文件已存在,且source比较新,才会进行更新

示例:

1.复制一文件,新建一目录,将文件移动到目录中

# cd /tmp

# cp ~/.bashrc bashrc

# mkdir mvtest

# mv bashrc mvtest

2. 将目录mvtest改名为mvtest1

# mv mvtest mvtest1

3. 多文件移动,将文件test1,test2移动到mvtest1中

# mv test1  test2  mvtest1

注意,最后的目的地一定是一个目录


    4.5 获取文件名与目录名指令

4.5.1 basename:获取文件名

示例:basename /etc/sysconfig/network 输出结果:network


4.5.2 dirname:获取目录名

示例:dirname /ets/sysconfig/network 输出结果:etc/sysconfig


    4.6 档案内容查询命令

4.6.1 cat(由第一行开始显示文件内容)

格式:cat [-AbEnTv]

常用参数:

-A:相当于-vET整合选项,可列出一些特殊字符而不是空白而已

-b:列出行号,仅针对非空白行,空白行不列

-E:将结尾的断行字符$显示出来

-n:打印行号,连通空白行也打印行号

-T:将“tab”键以"^I"显示

-v:列出一些看不出的特殊字符

示例:

# cat /etc/issue

# cat -n /etc/issue 

  

4.6.2 tac(反向显示)

    tac显示和cat正好想反,是将文件从最后一行到第一行在屏幕上显示


4.6.3 nl(添加行号进行显示)

格式:nl  [-bnw] 文件

选项与参数:

-b:指定行号方式:

-b a:不论是否为空行,都列出行号

-b t:空行不列出行号

-n:行号显示方式

-n ln:行号在屏幕最左方显示

-n rm:行号在字段的最右方显示,且不加0

-n rz:行号在自己字段最右方显示,且加0

-w:行号字段占用的位数


4.6.4  可翻页查看命令

4.6.4.1 more(按页查看)

格式:more  文件名

常用按键:

空格键:向下翻一页

Enter:向下翻一行

/字符串:在当前文档向下搜索字符串,可按n继续搜索

:f:显示出文件名以及目前显示的行数

q:离开离开more

b或ctrl+b:往回翻页


4.6.4.2 less(比more更强大的按页查看)

格式:less 文件名

常用按键:

空格键:向下翻一页

pagedown:向下翻一页

pageup:向上翻一页

/字符串:向下搜寻字符串,使用n搜索下一个

?字符串:向上搜寻字符串,使用N搜索下一个

q:离开less


4.6.5 文件的部分显示

4.6.5.1 head(显示头几行)

格式:head [-n number] 文件

参数:-n:后面接数字,代表显示几行的意思,不添加默认为10行,负数表示显示全部但不包括后面的n行

4.6.5.2 tail(显示后面几行)

格式:tail [-n number] 文件

选项与参数:

-n:后面接数字,代表显示几行的意思,缺省默认显示10行

-f:持续侦测后面的文件,等到按下ctrl+c才结束tail的侦测

示例:

#tail -n 20  /etc/install.log    显示尾部20行

如果不懂文件共几行,想列出100行以后的数据,使用:

#tail - n +100  /etc/install.log

对于一个随时可能被修改的文件,若想即时显示可对该文件进行持续侦测:

#tail -f  /var/log/messages

想要显示文档的第10行到第20行:

#head -n 10 message | tail -n 20 


4.6.6 od(非纯文本文档的显示)

格式:od [-t TYPE] 文件

选项或参数:

-t:后面可接各种类型的输出,例如:

a:利用默认的字符输出

c:使用ASCII字符输出

d[size]:利用十进制输出数据,每个整数占用size bytes

f[size]:利用浮点数输出,每个数占用size bytes

o[size]:利用八进制输出,每个整数占用size bytes

x[size]:利用十六进制输出,每个整数占用size bytes


4.6.7 touch(修改档案时间或新建空文档)

Linux记录档案时间的种类:

·modification time(mtime):当档案数据改变时会更新该时间

·status time(ctime):当档案状态改变时,例如权限或属性改变,会更新该时间

·access time (atime):当档案的内容被取用时,会更新这个读取时间,例如使用cat读取了内容

使用命令ls -l默认显示的是档案的mtime,想要显示其他时间如下:

#ls -l -time=atime install.log

4.6.7.1 使用touch修改档案时间

格式:touch [-acdmt] 档案

选项与参数:

-a:修改access time;

-c:修改ctime,若档案不存在则不建立新档案

-d:后面添加修改时间而不使用当前系统时间,也可使用--date="日期或时间",同时修改mtime和atime

-m:修改mtime

-t:后面添加修改时间而不使用当前系统时间,格式为[YYMMDDhhmm]


4.6.7.2 使用touch建立空文件

格式:touch 文件名

示例:# touch a.c

#ls -l a.c显示-rw-r--r-- 1 root root 0 May  9 19:02 a.c

其中大小为0


五. 档案预设权限:umask

5.1 显示当前umask的方法是:

#umask

显示"0022",注意第一个数字是特殊权限,后三个是所有者、组群、其他用户的权限

或使用:

#umaks -S

显示"u=rwx,g=rx,o=rx"

因此系统的预设权限为:

·建立文件:(-rw-rw-rw-)-(-----w--w-)==>-rw-r--r--

·建立目录:(drwxrwxrwx)-(d----w--w-)==>drwxr-xr-x


5.2 修改umask

#umask 002


5.3 档案隐藏属性

5.3.1 chattr(配置档案隐藏属性)

5.3.2 lsattr(显示档案隐藏属性)


5.4 观察文件类型命令-file

# file /usr/bin/pass
# file /etc/bashrc 
/etc/bashrc: ASCII English text 
# file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped


6. 指令与档案查询

6.1 脚本文件名的查询

6.1.1 which (寻找命令)

格式:which [-a] command

选项和参数:-a:将所有由PATH目录中可以找到的指令均列出,而不止第一个被找到的指令名称


6.2 文件或目录查询

6.2.1 whereis (查找特定档案)

格式:whereis [-bmsu] 档案或目录名

选项与参数:

-b:只找binary格式的档案

-m:只找在说明文件manual路径下的档案

-s:只找source来源档案

-u:搜寻不再上述三个项目当中的其他特殊档案


6.2.2 locate

格式:locate [-ir] keyword

选项与参数:

-i:忽略大小写

-r:后接显示方式

示例:找出系统中所有与passwd相关的档名

# locate passwd

-->说明:

whereis和locate命令执行快速,因为这两个是查询系统档案数据库(/var/lib/mlocate)进行显示的,由于各个发行版本数据库更新时间不一定,会造成有些数据无法搜索到,手动更新数据库的方法是使用命令:

# updatedb

该命令读取/etc/updatedb.conf这个配置文件的设定,然后在硬盘中进行文件更新动作,并更新数据库文件/var/lib/mlocate


6.2.3 find 

格式:find [PATH] [ option] [action]

选项与参数:

第一类:与时间相关的选项:包括 -atime,-ctime,-mtime,以-mtime说明:

-mtime  n:n为数字,寻找在第n天被更改过的档案

-mtime +n:列出在n天之前(不含n天本身)被更改过的档案

-mtime  -n:列出在n天之内(包含n天本身)被更改过的档案

-newer file:file为一个存在的档案,列出比file还要新的档案

示例:

列出系统24小时之内有更新的档案

# find / -mtime 0  其中0代表当前时间

寻找/etc下档案日期比/etc/passwd新的档案

# find /etc -newer /etc/passwd


第二类:与使用者或组名相关的参数

-uid  n:n为数字,这个数字是用户的账号ID(UID),记录在/etc/passwd中与账号名称对应的数字

-gid n:n为数字,这个数字是组名的ID(GID),记录在/etc/group中

-user name:name为使用者账号名称

-group name:name为组名

-nouser:寻找档案的拥有者不存在/etc/passwd的档案

-nogroup:寻找档案的拥有组群不在/etc/group的档案

示例:

寻找/home下属于wha的档案

#find /home -user wha

寻找系统中不属于任何人的档案

#find / -nouser


第三类:与档案权限及名称有关的参数

-name filename:搜索文件名为filename的档案

-size [+-] SIZE:搜寻比SIZE还要大(+)或小(-)的档案,c代表byte;k代表1024bytes

-type TYPE:搜寻档案的类型为TYPE档案,类型包括:一般档案(f),装置档案(b,c),目录(d),连接档(l),socket(s),FIFO(p)

-perm mode:搜寻档案权限为mode的档案,这个mode值为:r-4,w-2,x-1,SUID-4,SGID-2

示例:

寻找/home文件夹下名为a.c的文件:

#find /home  -name  a.c

寻找/var目录下,文件类型为Socket的档案:

#find /var  -type  s

寻找/etc下,大小大于50k到60k之间,且档案所有人不是root的档案,且将权限完整列出:

# find /etc -size +50k -a -size -60k -exce ls -l {} \;

-->可使用'!'进行反向选择,例如寻找/etc下,大小大于50k,且档案所有人不是root的档案,且将权限完整列出:

#find /etc -size +50k ! -user root -exce ls -l {} \;

-->找出/etc下,容量大于50k或容量等于0的档案:

#find /etc -size +1500k -o size 0  

其中-o表示(or)即为或者的意思。

第四类:额外可使用的参数

-exec command:command为其他指令,-exec后面可接命令在处理搜索到的结果

示例:寻找/home文件夹下名为a.c的文件,并使用ls -l命令列出来:

# find /home -name a.c ls -l {} \;

其中,{}将自动填入查询到的结果,执行到;为止,其中\为转义字符

-find还支持通配符查找,例如搜索包含mall的档案,使用:

#find /home -name '*mall*'


注意:需要搜索包含特殊属性的例如SUID、档案拥有者,档案大小等,使用locate无法搜寻,需要使用find












  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值