代码改变世界

Linux备忘录

2011-11-29 18:37  夜幕降临  阅读(270)  评论(0编辑  收藏  举报

-------------------------编码转换--------------------------------------------

在Linux中查看文件编码可以通过以下几种方式:
1.在Vim中可以直接查看文件编码
:set fileencoding
即可显示文件编码格式。

 

-------------------------建立字体库--------------------------------------------

先复制字体到对应文件夹
进入文件夹后执行以下命令
#mkfontscale  
#mkfontdir //这两条命令是生成字体的索引信息   
#fc-cache //更新字体缓

 -----------------------正则表达式关键字--------------------------------------

一个句子

grep '^[[:alpha:]]' | wc -l

等价于 grep '^[a-zA-Z]' | wc -l

所以 [:alpha:] 《==》 a-zA-Z

------------------------分区结束之后用命令强制更新分区表--------------

partprobe

mount -a 可以根据 fstab 挂载

-------------------------linux的7种运行等级----------------------------------

Linux系统有7个运行级别(runlevel)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

运行级别的原理:
1。在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)
2。在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别
3。rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。
4。系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件
对于以K开头的文件,系统将终止对应的服务
对于以S开头的文件,系统将启动对应的服务
5。查看运行级别用:runlevel
6。进入其它运行级别用:init N
7。另外init0为关机,init 6为重启系统

---------------------------------查找-------------------------------------------------

查找

which 【-a】command

cd 是‘bash 内建的指令’

查找文件
whereis 或者是 locate 来检查
locate自己维护一个资料库
* updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬碟内的档名,并更新 /var/lib/mlocate 内的资料库档案;
• locate:依据 /var/lib/mlocate 内的资料库记载,找出使用者输入的关键字档名。

find:
find [PATH] [option] [action]

find /var -mtime 4 4天前的那一天
* +4代表大于等于5天前的档名:ex> find /var -mtime +4
* -4代表小于等于4天内的档案档名:ex> find /var -mtime -4
• 4则是代表4-5那一天的档案档名:ex> find /var -mtime 4

选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的‘一天之内’被更动过内容的档案;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的档案档名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的档案档名。
-newer file :file 为一个存在的档案,列出比 file 还要新的档案档名
-------------------------------------------------------------------------------
2. 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找档案的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案!
当你自行安装软体时,很可能该软体的属性当中并没有档案拥有者,
这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
----------------------------------------------------------------------------------
3. 与档案权限及名称有关的参数:
-name filename:搜寻档案名称为 filename 的档案;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
还要大的档案,就是‘ -size +50k ’
-type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f),
装置档案 (b, c), 目录 (d), 连结档 (l), socket (s),
及 FIFO (p) 等属性。
-perm mode :搜寻档案权限‘刚好等于’ mode 的档案,这个 mode 为类似 chmod
的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻档案权限‘必须要全部囊括 mode 的权限’的档案,举例来说,
我们要搜寻 -rwxr--r-- ,亦即 0744 的档案,使用 -perm -0744,
当一个档案的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode :搜寻档案权限‘包含任一 mode 的权限’的档案,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm +755 时,但一个档案属性为 -rw-------
也会被列出来,因为他有 -rw.... 的属性存在!

-----------------------------------------------------------------------------------
4. 额外可进行的动作:
-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到
的结果。
-print :将结果列印到萤幕上,这个动作是预设动作!
例子:
find / -perm +7000 -exec ls -l {} \;
* {} 代表的是‘由 find 找到的内容’,如上图所示,find 的结果会被放置到 {} 位置中;
* -exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 指令内的额外动作。 在本例中就是‘ ls -l {} ’啰!
* 因为‘ ; ’在 bash 环境下是有特殊意义的,因此利用反斜线来跳脱。
---------------------------------------------------------------------------------
find 还可以利用万用字元来找寻档名
-name “*name*”
=================================
例子::
# 找出 /etc 底下,档案容量大于 50K 且档案所属人不是 root 的档名,且将权限完整的列出 (ls -l);
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
find /etc -size +50k -a ! -user root -type f -exec ls -l {} \;
上面两式均可!注意到 ! ,那个 ! 代表的是反向选择,亦即‘不是后面的项目’之意!
# 找出 /etc 底下,容量大于 1500K 以及容量等于 0 的档案:
find /etc -size +1500k -o -size 0
相对于 -a ,那个 -o 就是或 (or) 的意思啰!

 

----------------------------------档案与目录的预设权限与隐藏权限----------------------

umask 就是指定 ‘目前使用者在建立档案或目录时候的权限预设值’

* 若使用者建立为‘档案’则预设‘没有可执行( x )权限’,亦即只有 rw 这两个项目,也就是最大为 666 分,预设权限如下:
-rw-rw-rw-

* 若使用者建立为‘目录’,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分,预设权限如下:
drwxrwxrwx
=======================================
umask 为 003 ,所以拿掉的权限为 --------wx,因此:
档案: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--
目录: (drwxrwxrwx) - (d-------wx) = drwxrwxr--
------------------------------------------------------------------------------------
在预设的情况中, root 的 umask 会拿掉比较多的属性,root 的 umask 预设是 022 , 这是基于安全的考量啦~至于一般身份使用者,通常他们的 umask 为 002 ,亦即保留同群组的写入权力!
=======================================
隐藏属性
chattr 设定 , lsattr 显示

 

---------------------------权限与命令关系-------------------------------------------


一、讓使用者能進入某目錄成為『可工作目錄』的基本權限為何:

* 可使用的指令:例如 cd 等變換工作目錄的指令;
* 目錄所需權限:使用者對這個目錄至少需要具有 x 的權限
* 額外需求:如果使用者想要在這個目錄內利用 ls 查閱檔名,則使用者對此目錄還需要 r 的權限。

二、使用者在某個目錄內讀取一個檔案的基本權限為何?

* 可使用的指令:例如本章談到的 cat, more, less等等
* 目錄所需權限:使用者對這個目錄至少需要具有 x 權限;
* 檔案所需權限:使用者對檔案至少需要具有 r 的權限才行!

三、讓使用者可以修改一個檔案的基本權限為何?

* 可使用的指令:例如 nano 或未來要介紹的 vi 編輯器等;
* 目錄所需權限:使用者在該檔案所在的目錄至少要有 x 權限;
* 檔案所需權限:使用者對該檔案至少要有 r, w 權限

四、讓一個使用者可以建立一個檔案的基本權限為何?

* 目錄所需權限:使用者在該目錄要具有 w,x 的權限,重點在 w 啦!

五、讓使用者進入某目錄並執行該目錄下的某個指令之基本權限為何?

* 目錄所需權限:使用者在該目錄至少要有 x 的權限;
* 檔案所需權限:使用者在該檔案至少需要有 x 的權限

 

-----------------------------------------档案特殊权限 SUID, SGID, SBIT--------------------------

SUID, SGID, SBIT

* SUID 权限仅对二进位程式(binary program)有效;
* 执行者对于该程式需要具有 x 的可执行权限;
* 本权限仅在执行该程式的过程中有效 (run-time);
*执行者将具有该程式拥有者 (owner) 的权限。
*SUID 对于目录也是无效

当 s 标志在档案拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID。。。。SGID 可以针对档案或目录来设定
对于文件:
* SGID 对二进位程式有用;
* 程式执行者对于该程式来说,需具备 x 的权限;
* 执行者在执行的过程中将会获得该程式群组的支援!
对于目录:
* 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;
* 使用者在此目录下的有效群组(effective group)将会变成该目录的群组;
• 用途:若使用者在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
======================================
Sticky Bit(SBIT)目前只针对目录有效,对于档案已经没有效果了
* 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
* 当使用者在该目录下建立档案或目录时,仅有自己与 root 才有权力删除该档案

 

-------------------------档案的三个时间------------------------------------------------------


* modification time (mtime):
当该档案的‘内容资料’变更时,就会更新这个时间!内容资料指的是档案的内容,而不是档案的属性或权限喔!

* status time (ctime):
当该档案的‘状态 (status)’改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。

* access time (atime):
当‘该档案的内容被取用’时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会更新该档案的 atime 了。

 

-----------------------------------一些查看类命令-----------------------------------
* cat 由第一行开始显示档案内容
* tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
* nl 显示的时候,顺道输出行号!
* more 一页一页的显示档案内容
* less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
* head 只看头几行
* tail 只看尾巴几行
* od 以二进位的方式读取档案内容!
* | 管线