1 [wang@localhost etc]$
那个 ~ 符号代表的是『用户的家目录』的意思,他是个『变量!』 。举例来说,root 的家目录在/root, 所以 ~ 就代表
/root 的意思。而 wang 的家目录在/home/wang, 所以如果你以 wang 登入时,
他看到的 ~ 就会等亍/home/wang 喔!
至于提示字符方面,在Linux当中,默认root的提示字符为#,而一般身份用户的提示字符为$。
2 重要的几个热键[Tab], [ctrl]-c, [ctrl]-d
这个[Tab]热键算是 Linux 的 Bash shell 最棒的功能之一了!他具有『命令补全』不『档案补齐』
的功能。
- [Tab] 接在一串指令的第一个字的后面,则为命令补全;
- [Tab] 接在一串指令的第二个字以后时,则为『档案补齐』!
[Ctrl]-c 按键 中断目前程序
[Ctrl]-d 按键 键盘输入结束
3 Linux 系统的在线求助 man page 与 info page
man page:man 是 manual(操作说明)的简写。
迚入 man 挃令的功能后,你可以挄下『空格键』往下翻页,可以按下『q 』按键来离开 man 的环境。 如果你知道某些关键词的话, 那你可以在任何时候输入『/word』,来主动搜寻关键词,?/word是向上搜寻
info page:info page 则是将文件数据拆成一个一个的段落,每个段落用自
己的页面来撰写, 幵且在各个页面中还有类似网页的『超链接』来跳到各个同的页面中,每个独立的
页面也被称为一个节点(node)。 所以,你可以将 info page 想成是文本模式的网页显示数据。
丌过你要查询的目标数据的说明文件必须要以 info 的格式来写成才能够使用 info 的特殊功能(例如赸链
接)。
/usr/share/doc/:你只要到这个目录底下,就会发现好多好多的说明文件档。
4 超简单文书编辑器: nano
- [ctrl]-G:取得联机帮助(help),径有用的!
- [ctrl]-X:离开 naon 软件,若有修改过档案会提示是否需要储存喔!
- [ctrl]-O:储存档案,若你有权限的话就能够储存档案了;
- [ctrl]-R:从其他档案读入资料,可以将某个档案的内容贴在本档案中;
- [ctrl]-W:搜寻字符串,这个也是径有帮助的指令喔!
- [ctrl]-C:说明目前光标所在处的行数与列数等信息;
- [ctrl]-_:可以直接输入行号,让光标忚速移动到该行;
- [alt]-Y:校正语法功能开启或关闭(单击开、再单击关)
- [alt]-M:可以支持鼠标来移动光标的功能
5 正确的关机方法
- 观察系统的使用状态:如果要看目前有谁在在线,可以下达『 who』这个指令,而如果要看网络的联机状态,可以下达
『netstat -a 』这个指令,而要看背景执行的程序可以执行『ps -aux 』这个指令。 - 关机/重新启动相关的指令:将内存中的数据同步写入硬盘中的指令: sync;惯用的关机指令: shutdown;重新启劢,关机: reboot, halt, poweroff;
6 (1)使用者及(2)群组不(3)非本群组外的其他人
在 Linux 里面,任何一个档案都具有『 User, Group 及 Others』三
种身份的个别权限。
用户记录在/etc/passwd,个人的密码则是记录在/etc/shadow,Linux 所有的组名都纪录在/etc/group 内。
7 Linux 档案权限概念
使用ll查看文件属性
[root@localhost kencery]# ll
total 8
drwxr-xr-x. 8 root root 4096 May 22 08:30 jdk1.8
drwxr-xr-x. 9 root root 4096 May 22 18:17 tomcat
r可读,w可写,x可执行,如果没有x权限就不能cd到该目录下,d表示文件属性。可以看出来rwxr-xr-x有三组权限,第一种为用户自己,第二组为同群组的,第三组为其他非本群组的权限。
删除文件的权限需要上级文件夹的权限w,可以不需要对文件有任何权限就可删除文件、
后面两个root,一个代表文件的所属用户,一个代表文件的所属群组。
1 如何改变文件属性与权限
- chgrp :改变档案所属群组。chgrp wang test
- chown :改变档案拥有者,也能改变群组。chown wang:root test;
- chmod :改变档案的权限, SUID, SGID, SBIT 等等的特性。权限的设定方法有两种, 分别可以使用数字或者是
符号来进行权限的变更,r:4,w:2,x:1。chmod 777 test;chmod u=rwx,g=rx,o=r test,chmod a-x test,chmod a+x test。
你想要教一个朋友如何让一个程序可以拥有执行的权限, 但你又不知道该档案原本的权限为何,此时,利用
『 chmod a+x filename』 ,就可以让该程序拥有执行的权限了。是否很方便?
基本上,Linux 系统上的文件名真的只是让你了解该档案可能的用途而已, 真正的执行与否仍然需要权限的规范才行。
2 Linux 目录配置
亊实上,FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已:
- / (root, 根目录):与开机系统有关;
- /usr (unix software resource):与软件安装/执行有关;
FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目彔。
- /var (variable):与系统运作过程有关。
- /bin:在/bin 底下的指令可以被 root 与一般账号所使用
/bin 主要放置在开机时,以及进入单人维护模式后还能够被使用的指令,至于/usr/bin 则是大部分软件提供的指令放置处。
- /home:这是系统默认的用户家目录(home directory)。
- /etc:系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、 各种服务的启始档等等。
- /proc:他放置的数据都是在内存当中,例如系统核心、行程信息(process)、周边装置的状态及网络状态等等。
另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。/etc:配置文件,/bin:重要执行档,/dev:所需要的装置档案,/lib:执行档所需的函式库不核心所需的模块,/sbin:重要的系统执行文件;这五个目录千万不可与根目录分开在不同的分割槽!
3 绝对路径与相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名称,例如/home/dmtsai/.bashrc;
相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
. :代表当前的目录,也可以使用 ./ 来表示;
若你的执行文件放置在本目录,并且本目录并非正规的执行文件目录(/bin, /usr/bin等为正规),则需要如『./run.sh』指定执行档,『./run.sh』代表『执行本目录下, 名为 run.sh 的档案』
- .. :代表上一层目录,也可以 ../ 来代表。
- : 代表前一个工作目录。
- ~ :代表『目前用户身份』所在的家目录。
- ~account 代表 account 这个用户的家目录(account 是个账号名称)
4 关于执行文件路径的变量: $PATH
PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)分隔开, 每个目录是有『顺序』之分的。
- 不同身份使用者预设的 PATH 不同,默认能够随意执行的指令也不同
- PATH 是可以修改的,所以一般使用者还是可以透过修改 PATH 来执行某些位于/sbin 或/usr/sbin 下的指令来查询;
- 使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻 PATH 来的正确;
- 指令应该要放置到正确的目录下,执行才会比较方便;
- 本目录(.)最好不要放到 PATH 当中。
5 目录的相关操作:
- cd:变换目录
- pwd:显示当前目录
- mkdir:建立一个新的目录
- rmdir:删除一个空的目录
- ls:档案与目录的查看。如ll
- cp: (复制档案或目录)。如cp -p(复制属性);cp -s(符号链接)
- rm:移除档案与目录。如rm -i test;rm -r test;
- mv:移劢档案与目录,或更名。mv test cache;mv cache cache2;
- 文档查阅:cat,由第一行开始显示档案内容;tac,从最后一行开始显示,可以看出 tac 是 cat 是倒着写!less 与 more 类似,一页一页的显示档案内容,空格翻页,less可以往前翻页。
- touch:修改档案时间或新建。touch test,修改mtime与atime为当前时间,如果文件不存在则创建。
6 档案与目录的默认权限与隐藏权限
- 档案预设权限:umask。下面代表其他人默认权限没有w
[wang@localhost test]$ umask
0002
要注意的是,umask 的分数指的是『该默认值需要减掉的权限!』因为 r、 w、 x 分别是 4、 2、 1 分。这样新建的目录默认是drwxrwxr-x ,文档是-rw-rw-r--。
- 档案隐藏属性:chattr 指令只能在 Ext2/Ext3 的
文件系统上面生效, 其他的文件系统可能就无法支持这个指令了。+i 可以让一个档案无能被删除、改名、设定连结也无法,+a设定后,这个档案将只能增加数据,而不能删除也不能修改数据,叧有root才能设定这个属性。 - Set UID:当 s 这个标志出现在档案拥有者的 x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个档案的权限状
忞:『-rwsr-xr-x』,此时就被称为 Set UID,简称为 SUID 癿特殊权限。 passwd 的拥有者是 root 这个账号,当普通用户运行它时会暂时拥有root权限,从而可以修改/etc/shadow。
SUID 权限仅对二进制程序(binary program)有效;执行者对于该程序需要具有 x 的可执行权限;本权限仅在执行该程序的过程中有效 (run-time);执行者将具有该程序拥有者 (owner) 的权限。
- Set GID:当 s 标志在档案拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID 。对于二进制档案来说,用户会获得它群组的权限;对于目录来说,若用户在此目录下具有w的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
用户若对于此目录具有 r 不 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
Sticky Bit:目前只针对目录有效,对于档案已经没有效果了。当甲这个用户于 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限,甲只能够针对自己建立的档案或目录进行删除/更名/移动等动作,而无法删除他人的档案。
SUID/SGID/SBIT 权限设定:4 为 SUID,2 为 SGID,1 为 SBIT。
chmod 4664 test1
-rwSrw-r--. 1 wang wang 0 Jul 13 23:20 test1
大写S表示用户没有x权限,无法执行也就无法给别人用了。
7 指令与档案的搜寻
- 脚本文件名的搜寻:which。which 是根据用户所规定的 PATH 变量内的目录去搜寻可执行文件的。
[wang@localhost test]$ which ll
alias ll='ls -l --color=auto'
/bin/ls
- 档案档名的搜寻:通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻。因为 whereis 与 locate 是利用数据库来搜寻数据,而且并没有实际的搜寻硬盘。
[wang@localhost test]$ whereis test
test: /usr/bin/test /usr/share/man/man1/test.1.gz /usr/share/man/man1p/test.1p.gz
locate 的使用更简单,直接在后面输入部分文件名。但它是通过数据库查询,而数据库的建立默认是在每天执行一次,如果查找的档案新建在更新之后,则查找不到。这是需要执行
updatedb
updatedb 指令会去读取 /etc/updatedb.conf 这个配置文件的设定,然
后再去硬盘里面进行搜寻文件名的动作,最后就更新整个数据库档案。
- find。
查找4天内,+4代表5天前的,4代表4天前那天的
[wang@localhost test]$ find ./ -mtime -4
./
./cache2
./test1
查找当前目录下属于wang的档案
[wang@localhost test]$ find . -user wang
查找当前目录下名为test1的文件
[wang@localhost test]$ find ./ -name test1
./test1
找出 /var 目录下,文件类型为 Socket 的文件有哪些?
find /var -type s
找出 当前目录下拥有SGID 或 SUID 或 SBIT 属性的文件,并用ll指令列出来。find 额外动作的开始 (-exec) 到结束 (\;)
[wang@localhost test]$ find . perm +7000 -exec ls -l {} \;
8 权限与指令间的关系:
- 进入目录的权限:使用cd进入目录时,一定要有x权限才能进入目录;ls查阅文件还需要目录的r权限。
- 读取目录里的文件:使用cat等查看文件时,目录至少要有x权限,档案要有r权限。
- 对档案进行修改:使用nano等进行修改时,所在目录至少要x权限,档案要r,w权限。