1. 目录与路径
1) 目录的相关操作
比较特殊目录:
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表『目前使用者身份』所在的家目录
~account 代表 account 这个使用者的家目录(account是个帐号名称)
cd (变换目录,Change Directory的缩写)
cd [相对路径或绝对路径]
例:cd ~vbird # 代表去到 vbird 这个使用者的家目录,亦即 /home/vbird
pwd (显示目前所在的目录,Print Working Directory的缩写)
pwd [-P]
-P :显示出确实的路径,而非使用连结 (link) 路径。
mkdir (创建新目录)
mkdir [-mp] 目录名称
-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!
例:
mkdir -p test1/test2/test3/test4 # 加了这个 -p 的选项,可以自行帮你创建多层目录!
mkdir -m 711 test2 范例:创建权限为rwx--x--x的目录
rmdir (删除『空』的目录)
rmdir [-p] 目录名称
-p :连同上一级『空的』目录也一起删除
注:如果要将所有目录下的东西都杀掉呢?! 这个时候就必须使用『 rm -r test 』罗!
2) 关於运行档路径的变量: $PATH
使用命令『echo $PATH』来看看到底有哪些目录被定义出来了? echo有『显示、印出』的意思,而 PATH 前面加的 $ 表示后面接的是变量,所以会显示出目前的 PATH !PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)来隔开, 每个目录是有『顺序』之分的。
当我们在运行一个命令的时候,举例来说『ls』好了,系统会依照PATH的配置去每个PATH定义的目录下搜寻档名为ls的可运行档, 如果在PATH定义的目录中含有多个档名为ls的可运行档,那么先搜寻到的同名命令先被运行!
如果想要让root在任何目录均可运行/root底下的ls,那么就将/root加入PATH当中即可。 加入的方法很简单,就像底下这样: 『PATH="$PATH":/root』
2. 文件与目录管理
1) 文件与目录的检视: ls
只有下达ls时,默认显示的只有:非隐藏档的档名、以档名进行排序及档名代表的颜色显示如此而已。
无论如何, ls最常被使用到的功能还是那个-l的选项,为此,很多distribution在默认的情况中,已经将ll (L的小写)配置成为ls -l的意思了!
2) 复制、删除与移动: cp, rm, mv
cp (复制文件或目录)
在默认的条件中, cp的来源档与目的档的权限是不同的,目的档的拥有者通常会是命令操作者本身。
rm (移除文件或目录)
mv (移动文件与目录,或更名)
注:另外一个用途就是『变更档名!』
3)取得路径的文件名称与目录名称
basename 与 dirname 取得路径的文件名称与目录名称
例:
[root@www ~]# basename /etc/sysconfig/network
network <== 很简单!就取得最后的档名~
[root@www ~]# dirname /etc/sysconfig/network
/etc/sysconfig <== 取得的变成目录名了!
3.文件内容查阅
1) 直接检视文件内容: cat, tac, nl
cat (concatenate)
cat 由第一行开始显示文件内容
tac (反向列示)
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl (添加行号列印)
nl 显示的时候,顺道输出行号!
2) 可翻页检视: more, less
more (一页一页翻动)
在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less (一页一页翻动)
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
3) 数据撷取: head, tail
head (取出前面几行)
tail (取出后面几行)
4) 非纯文字档: od
5) 修改文件时间与建置新档: touch
在 ls 这个命令的介绍时,有稍微提到每个文件在linux底下都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢?
modification time (mtime):当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!
status time (ctime):当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。
access time (atime):当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的 atime 了。
在默认的情况下,ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次被更动的时间。
万一我发现了一个文件来自未来,该如何让该文件的时间变成『现在』的时刻呢? 很简单啊!就用『touch』这个命令即可!
4.文件与目录的默认权限与隐藏权限
1) 文件默认权限:umask
umask 就是查看或指定 『目前使用者在创建文件或目录时候的权限默认值』
[root@www ~]# umask
[root@www ~]# umask -S
查阅的方式有两种,一种可以直接输入 umask,就可以看到数字型态的权限配置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了!
修改默认权限:
umask [权限编号]
注:权限编号指的是『该默认值需要减掉的权限!』
2) 文件隐藏属性: chattr, lsattr
在Linux的Ext2/Ext3文件系统下,我们还可以配置其他的系统隐藏属性, 这部份可使用 chattr 来配置,而以 lsattr 来查看。
chattr (配置文件隐藏属性)
lsattr (显示文件隐藏属性)
3) 文件特殊权限:SUID, SGID, SBIT, 权限配置
SUID(Set UID)
当 s 这个标志出现在文件拥有者的 x 权限上时,就被称为 Set UID,简称为 SUID 的特殊权限。 基本上SUID有这样的限制与功能:
SUID 权限仅对二进位程序(binary program)有效;
运行者对於该程序需要具有 x 的可运行权限;
本权限仅在运行该程序的过程中有效 (run-time);
运行者将具有该程序拥有者 (owner) 的权限。
SGID(Set GID)
当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID 罗!
与 SUID 不同的是,SGID 可以针对文件或目录来配置!如果是对文件来说, SGID 有如下的功能:
SGID 也能够用在目录上,这也是非常常见的一种用途! 当一个目录配置了 SGID 的权限后,他将具有如下的功能:
SGID 对二进位程序有用;
程序运行者对於该程序来说,需具备 x 的权限;
运行者在运行的过程中将会获得该程序群组的支持!
SGIT(Sticky Bit)
t 标志。SBIT 目前只针对目录有效,对於文件已经没有效果了。 SBIT 对於目录的作用是:
当使用者对於此目录具有 w, x 权限,亦即具有写入的权限时;
当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
SUID/SGID/SBIT 权限配置
chmod [权限数字] [文件名]
在三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限了,其中:
注:user, group 以及 others 都没有 x 这个可运行的标志( 因为 666 嘛 ),所以,这个 S, T 代表的就是『空的』啦!
而除了数字法之外,你也可以透过符号法来处理喔!其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 罗!
4) 观察文件类型:file
想要知道某个文件的基本数据,例如是属於 ASCII 或者是 data 文件,或者是 binary , 且其中有没有使用到动态函式库 (share library) 等等的资讯,就可以利用 file 这个命令来检阅喔!
file [文件名]
5.命令与文件的搜寻
命令档名的搜寻
which (寻找『运行档』)
注:bash 内建的命令找不到! which 默认是找 PATH 内所规范的目录!
文件档名的搜寻
通常 find 不很常用的!因为速度慢之外, 也很操硬盘!通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 因为 whereis 与 locate 是利用数据库来搜寻数据,所以相当的快速。
当使用 whereis 或者是底下要说的 locate 时,都会以此数据库文件的内容为准, 因此,有的时后你还会发现使用这两个运行档时,会找到已经被杀掉的文件! 而且也找不到最新的刚刚创建的文件呢!
whereis (寻找特定文件)
locate
locate 的使用更简单,直接在后面输入『文件的部分名称』后,就能够得到结果。
注:locate寻找的数据是由『已创建的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的<而数据库的创建默认是在每天运行一次。那能否手动升级数据库哪?升级 locate 数据库的方法非常简单,直接输入『 updatedb 』就可以了!当你运行 updatedb 时,可能会等待数分钟的时间喔!
find
参考自:http://cn.linux.vbird.org/linux_basic/linux_basic.php