Linux目录与路径
特殊的目录
. 代表当前目录
.. 代表上级目录
- 代表前一个工作目录
~ 代表(目前登录用户)home目录 如当前登录人为master则代表(/home/master)
常见的处理目录的指令
- cd 切换目录
- pwd 显示当前目录
- mkdir 建立一个新目录
- rmdir 删除一个空的目录
cd (Change Directory)
cd ~master 进入master的home目录; cd 回到登录人员home目录
pwd (Print Working Directory) [-P] 显示当前路径
pwd -P(P是大写)显示实际路径而不是链接路径
mkdir [-mp] 新建目录
mkdir [-mp] 目录名称 -m:设置目录权限 -p:建立递归目录(包括所需上层目录)
rmdir [-p] 删除目录
mkdir[-p] 目录名称 -p 连同上级空目录一起删除
复制、删除和移动
- cp(copy)
- rm(remove)
- mv(move)
cp [-adfilprsu] 源文件 目标文件
cp [-options] source1 source2 source3 source4 ... directory
rm [-fir] 文件或目录
mv [-fiu] source directory
mv [-option] source1 source2 source3 source4 ... directory
另外,获取文件的文件名,或者路径名还有两个命令:basename filename 和 dirname filename
查看文件内容
查看文件内容有以下这些常用命令
cat 由第一行开始显示档案内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巳几行
od 以二进制的方式读取文件内容!
cat(concatenate)[-ABeNTV]
nl [-bnw] 文件
more 和 less 命令能提供一页一页的翻页查看功能
more filename
1、空格键 (space):代表向下翻一页;
2、Enter :代表向下翻『一行』;
3、/字符串 :代表在这个显示癿内容弼中,向下搜寻『字符串』这个关键词;
4、:f :立刻显示出文件名以及目前显示的行数;
5、q :代表立刻离开 more ,不再显示该档案内容。
6、b 或 [ctrl]-b :代表往回翻页,不过过这个命令对文件有用,对管线无用。
3、/字符串 :代表在这个显示癿内容弼中,向下搜寻『字符串』这个关键词;
4、:f :立刻显示出文件名以及目前显示的行数;
5、q :代表立刻离开 more ,不再显示该档案内容。
6、b 或 [ctrl]-b :代表往回翻页,不过过这个命令对文件有用,对管线无用。
less filename(逐页翻动)
1、空格键 :向下翻一页;
2、[pagedown]:向下翻一页;
3、[pageup] :向上翻一页;
4、/字符串 :向下搜寻『字符串』
5、?字符串 :向上搜寻『字符串』
6、n :重复前一个搜寻 (与 / 或 ? 有关!)
7、N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
8、q :离开 less 这个程序;
2、[pagedown]:向下翻一页;
3、[pageup] :向上翻一页;
4、/字符串 :向下搜寻『字符串』
5、?字符串 :向上搜寻『字符串』
6、n :重复前一个搜寻 (与 / 或 ? 有关!)
7、N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
8、q :离开 less 这个程序;
9、j :向下一行
10、k :向上一行
修改文档时间或创建新文档:touch
在使用ls命令时 可以看到很多时间,其实主要的就是以下三个:默认显示的是mtime
- modification time (mtime)在修改文件内容时改变
- status time (ctime)在文档状态发生改变时变化,例如修改文档权限
- access time (atime)在文档内容被读取时修改,例如cat 文件
touch [-acdmt] 文件
-a :修改access time;
-c :修改文件时间,若该文件不存在则不建立新文件;
-d :后面可以接要修订的日期而不是使用当前时间,也可以用 --date="日期或时间"
-m:修改mtime;
-t :后面可以接需要修改的时间,格式为[YYMMDDhhmm]
文件和目录的默认权限和隐藏权限
除了基本 r, w, x权限外,在 Linux的Ext2/Ext3 文件系统下,我们还可以设定其他的系统隐藏属性,
这部份可使用 chattr 来设定,而以 lsattr 来查看,最重要的属性就是可以设定其不可修改的特性!
这部份可使用 chattr 来设定,而以 lsattr 来查看,最重要的属性就是可以设定其不可修改的特性!
就连文件的拥有者都不能进行修改!
这个属性是相当重要的,尤其是在安全机制上面 (security)!
文件预设权限:umask
umask 就是指定[目前用户在建立文件或目录时候的权限默认值]。
查看的方式有两种,一种是直接输入umask可以产看到数字形态的权限设定分数,一种是加入-S(Symbolic),就会以符号的形式显示出权限。但是可以看到umask有四组数字,这里的第一个就是特殊权限的权限,后三个就是user group 和other了。
需要注意的是,在默认权限的属性上,目录与文件是不一样的,x对于目录来说是很重要的,但是一般的文件是不需要x的,因此默认情况下:
如果是文件,则预设的是没有X权限的,只有rw,因此最大值为666 默认的是 -rw-rw-rw-
如果是目录的话,则是可以进入的,有X权限,因此默认为777 drwxrwxrwx
但是需要注意的是!!!umask的分数指的是[该默认权限需要扣除的权限!]因为r、w、x分别是4、2、1.
所以当要去除掉写的权限时,就是输入2.
拿上面的例子来说,因为umask为022,所以user并没有去除任何权限,不过group 和 other都拿掉了2权限,那么,当用户
创建文件时:(-rw-rw-rw-) - (-----w--w-) == > -rw-r--r--
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
下面来试一下
修改umask
例如想让group中拥有w权限
关于umask的设定可以在 /etc/bashrc 查看
文件隐藏属性
chattr (配置文件隐藏属性)
chattr [+-=] [ASacdistu] 文件或目录 i 和 a会比较常使用
lsattr [-adR] 文件或目录
文件的特殊权限 SUID、SGID、SBIT
Set UID
当s标志在文件拥有着(user)的执行位置x上时
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。
SUID 仅可用在binary program 上, 不能够用在 shell script 上面
Set GID
当s标志在文件或者目录的(group)的执行位置x上时
SUID可以针对文件和目录设置
SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持。
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持。
目录设定了 SGID 的权限后,他将具有如下的功能:
用户若对亍此目录具有 r 和 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若用户在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
用户若对亍此目录具有 r 和 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若用户在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
Sticky Bit
SBIT仅对于目录有效:
当用户对于此目录具有 w, x 权限,亦具有写入的权限时;
当用户在该目录下建立档案或目录时,仅有自己和 root 才有权力删除该档案 。
当用户在该目录下建立档案或目录时,仅有自己和 root 才有权力删除该档案 。
SUID/SGID/SBIT 权限设定
在权限数字前再添加一个数字就可以了
4 为 SUID
2 为 SGID
1 为 SBIT
4 为 SUID
2 为 SGID
1 为 SBIT
例如要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在用户权力中,所以是 SUID ,因此, 在原先癿
755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来设定!
755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来设定!
也可以通过符号法来处理,其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t。
查看文件类型:file
如果想知道文件是什么类型,例如是属亍 ASCII 或者是 data 文件,或者是 binary , 且其中
有没有使用动态函数库 (share library) 等等的信息,就可以利用 file 这个命令来查看。
有没有使用动态函数库 (share library) 等等的信息,就可以利用 file 这个命令来查看。
搜索可执行命令 which [-a] command
搜索文件 whereis或者是locate 如果找不到了再用find
whereis和locate使用数据库来查询的,比较快
whereis [-bmsu] 文件或目录
-b 只查找binary类型文件
-m 只找在说明文件manual路径下的文件
-s 只找source来源文件
-u 搜索不在上面三个目录中的文件
locate [-ir] keyword
-i :忽略大小写差异
-r :后面可以接正则表达式
locate是使用自己的数据库进行查询,因此速度很快。locate数据库建立在/var/lib/mlocate.db
但是数据库是需要更新的,centos 默认的是一天更新一次,如果需要更新数据库可以使用updatedb命令
find
find [PATH] [option] [action]
find /home -size +500k -exec ls -l {} \;
-exec后面可以接要执行的操作 {}表示find的结果 \;表示结束。 ;千万不能漏掉,不然会提示find: 遗漏“-exec”的参数