一. 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