Linux,不过是从头再来(一)
该笔记参考《鸟哥的Linux私房菜-基础学习篇 第四版》,结合Docker下载Center OS镜像进行学习。
书 第四章 首次登入与在线求助
图形界面与终端界面的切换
由于Docker容器不需要图形界面,此处指针对VM虚拟机或直装Linux系统而讲。
Linux 预设的情况下会提供六个Terminal(终端,即命令行界面)来让使用者登入,切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮。
系统会将这六个终端分别命名为tty1 ~ tty6,一般而言,完整安装的centos系统,tty1会是图形界面。
当然,也可是使用 == startx== 命令,在当前的终端启动图形界面(前提是没有图形界面在其他终端启用)。
登入linux
显然,不管是打开图形界面还是终端界面,都需要首先登陆系统,登陆系统需要输入用户名和密码
[主机名] login: [输入用户名]
Password: <==这里输入你的密码(不显示)
Last login: [上次登入的时间]
[用户名@主机名 ~]$ _<==光标闪烁,等待你的指令输入
登入系统后,可以通过 exit退出系统
指令下达
Linux的指令一般由一下几方面组成
$ command [-options] parameter1 parameter2 ...指令 选项 参数(1) 参数(2)
- 当一个指令有多个选项是,如 ls 可以有 -a 和 -l 参数,可以分开写,也可以写在一起,如 -al
- 指令太长的时候,可以使用反斜杠 \ 来换行[Enter]符号,使指令连续到下一行。注意!反斜杠后就立刻接特殊字符,才能换行
- Linux的命令需要注意大小写!
基础指令的操作
以下指令大部分在Docker容器中进行
日期指令 date
该指令用于显示目前Linux的系统时间
[root@aa4293387437 /]# date
Sat Aug 17 06:29:22 UTC 2019
也可以对date的结果进行格式化输出
- 年 Y
- 月 m
- 日 d
- 时 H
- 分 M
- 秒 S
[root@43cdeb1be227 /]# date +%Y/%m/%d
2019/08/17
[root@43cdeb1be227 /]# date +%H:%M:%S
06:35:40
日历指令 cal
该指令用于显示目前月的日历
[root@43cdeb1be227 /]# calAugust 2019
Su Mo Tu We Th Fr Sa1 2 34 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
也可以输入相应参数,显示某年日历(略)、某年某月日历
[root@43cdeb1be227 /]# cal 12 2019December 2019
Su Mo Tu We Th Fr Sa1 2 3 4 5 6 78 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
计算器指令 bc
Docker镜像不带这个功能
功能热键[Tab], [ctrl]-c, [ctrl]-d
[Tab] 具有『命令补全』与『文件补齐』的功能,
- 当在终端输入一个指令时,会在下方显示补全的命令
- 当输入一个目录路径时,会显示该目录的子目录和文件
- 当跟在–之后,会显示该命令的相关参数
Centos 7.X中不一定会主动补齐档名
[root@43cdeb1be227 /]# ca
ca-legacy cal caller capsh captoinfo case cat catchsegv
[root@43cdeb1be227 /]# ls -al ~/.bash
.bash_logout .bash_profile .bashrc
[Ctrl]-c 可以中断目前程序(如果目前程序需要很长时间的输出)
[Ctrl]-d 相当于 exit 并换行,直接退出当前终端
[shift]+{[PageUP]|[Page Down]} 换页
Linux系统助手
[Tab]补全
–help指令
显示某一个指令的用法(非常长,略)
man page
man 是 manual(操作说明)的简写,而不是找男人:)
Docker不提供在线求助支持
info page
info 与man 的用途其实差不多,都是用来查询指令的用法或者是文件的格式,且Docker支持info指令
info page 则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写,并且在各个页面中还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)
但Docker镜像似乎没有节点
[root@0dc3464804cd /]# info info
File: dir, Node: Top This is the top of the INFO treeThis (the Directory node) gives a menu of major topics.Typing "q" exits, "?" lists all Info commands, "d" returns here,"h" gives a primer for first-timers,"mEmacs<Return>" visits the Emacs manual, etc.In Emacs, you can click mouse button 2 on a menu item or cross referenceto select it.* Menu:-----Info: (dir)Top, 11 lines --All-------------------------------------------------------------------------------------------------------------------------------------------------------------No menu in node `(dir)Top'.
/usr/share/doc/文件
一般而言,在/usr/share/doc/这个目录下,会存放部分指令或者软件的说明文件
[root@3fb7b46fc03e /]# ls /usr/share/doc/
coreutils-8.22 gnupg2-2.0.22 pam-1.1.8 python-kitchen-1.1.1
dbus-1.10.24 krb5-libs-1.15.1 pygpgme-0.3 python-pycurl-7.19.0
关机指令
有些Linux版本需要root权限
- 数据同步:sync
- 常用关机指令:shutdown
- 重新启动,关机:reboot,halt,poweroff
书 第五章 Linux的文件权限与目录配置
使用者和群组概念
- 文件拥有者(owner)
- 群组(group)
- 其他人(ohter)
以上3种使用者,与相应的权限相搭配,可以操控不同文件在不同用户情况下的可读可写关系
这类使用者的相关信息都被记录在 /etc/passwd 这个文件内
,个人密码记录在 /etc/shadow 文件下,组名记录在 /etc/group 内
文件权限
文件属性
通过 ls 指令可以查看文件,例如通过 ls -al 查看到一下信息
[root@3fb7b46fc03e ~]# ls -al
total 32
dr-xr-x--- 2 root root 4096 Mar 5 17:36 .
drwxr-xr-x 1 root root 4096 Aug 17 07:49 ..
-rw-r--r-- 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r-- 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r-- 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r-- 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r-- 1 root root 129 Dec 29 2013 .tcshrc
-rw------- 1 root root 3415 Mar 5 17:36 anaconda-ks.cfg
这其中分为7个部分,包括 权限、连接数、拥有者、群组、文件大小、修改日期和档名
权限说明
以 -rwxrwx— 这个权限来说明
第一栏代表这个文件的类型与权限
第一个字符代表这个文件是 目录、文件或链接文件中的一种
- d代表目录
- -代表文件
- l代表连接档(link file),类似于快捷方式
接下来的字符,以三个为一组,且均为 rwx形式的组合
- r代表可读
- w代表可写
- x代表可执行(execute)
三组分别表示,文件拥有者可具备的权限、该群组用户的权限、非本人且没有加入该群组用户的权限
第二栏表示有多少档名连结到此节点(i-node)
这个属性记录的,就是有多少不同的档名连结到相同的一个i-node 号码去就是了。(原话)
第七栏为这个文件的档名
档名之前如果有 . ,则表示该档为一个隐藏档,隐藏档会在 ls -al 指令中显示,不会在 ls 中显示
若需要root 的权限时,可以使用su - 这个指令来切换身份。处理完毕则使用exit 离开su 的指令环境。
文件属性、权限的改变
- chgrp :改变文件所属群组
- chown :改变文件拥有者
- chmod :改变文件的权限, SUID, SGID, SBIT 等等的特
改变所属群组,chgrp
使用方式为
chgrp [-R] 组名 文件或目录 ...
其中,-R 参数可以对目录进行递归,使该目录下的所有文件、目录的群组都相应改变
可以记忆为ch为change改变的前缀,grp是group的缩写
改变拥有者,chown
使用方式为
chgrp [-R] 账号名称 文件或目录
chgrp [-R] 账号名称:组名 文件或目录
同样地,-R 属性可以递归
以上的账号名称和组名必须已在系统中进行注册
chgrp、chown可以实现用户文件复制给其他用户,由于复制指令会连带文件属性一同复制,因此需要更改相应的使用者和群组
改变权限,chmod
数字类型改变文件权限
有一个小技巧,前面提到过的三个为一组的文件权限r、w、x可以理解为2进制位数,
通过
chmod [-R] xyz 文件或目录如
chmod 777 .bashrc
修改文件权限,其中xyz分别是三组2进制数字的值
符号类型改变文件权限
同样地,文件权限为三个一组,分别为user(u),group(g),other(o)以及all(a),可以使用+、-、=来直接设定相应的权限,设定相同权限的组可以连写,如
# 设定
chmod u=rwx,go=rx .bashrc
# 添加
chmod a+w .bashrc
# 移除
chmod a-x .bashrc
权限的意义
权限对文件的重要性
- r:读取文件内容
- w:可以编辑、修改文件(但不能删除文件)
- x:可以执行文件
权限对目录的重要性
- r:可以读取目录(体现在 ls 指令上),但不能进入目录
- w:可以新建、删除、移动、重命名文件和目录(实现了文件的w权限不能实现的功能)
- x:可以进入该目录(体现在 cd 指令上)
对
文件种类与拓展名
连接档(link)
连接档类似于Windows系统的快捷方式,文件属性中以l表示
拓展名
Linux文件的拓展名和Windows的不同,它没有明显的拓展名显示,文件能否被执行,与文件属性第一栏第10个值有关,只要权限中具有x的话,文件有能被执行。
但能被执行与能执行成功不同,海域文件内容有关。
为了方便起见,文件还是会有适当的拓展名,如.sh表示脚本、.tar、.zip表示压缩文件、.html、.php表示网页文件等
单一文件或目录的最大允许文件名为255bytes,以每个中文字占用2bytes 来说, 最大档名就是大约在128个中文字
Linux目录配置
Filesystem Hierarchy Standard (FHS) 让使用者可以了解到已安装软件通常放置于哪个目录
- / (root, 根目录):与开机系统有关;
- /usr (unix software resource):与软件安装/执行有关;
- /var (variable):与系统运作过程有关。
/usr
/usr 不是指user的缩写,是指 Unix Software Resource 的缩写,FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。
/var
var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL 数据库的文件
绝对路径与相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。例如./home/dmtsai 或…/…/home/dmtsai/ 等等。反正开头不是/就属于相对路径的写法
特别注意两个.的用法的区别 - . :代表当前的目录,也可以使用 ./ 来表示;
- … :代表上一层目录,也可以 …/ 来代表。
书 第六章 Linux文件与目录管理
目录的相关操作
- . 代表此层目录
- … 代表上一层目录
- 代表前一个工作目录
- ~ 代表『目前用户身份』所在的家目录
- ~account 代表 account 这个用户的家目录(account 是个账号名称)
几个常见的处理目录的指令 - cd:变换目录
- pwd:显示当前目录
- mkdir:建立一个新的目录
- rmdir:删除一个空的目录
cd (change directory,变换目录)
cd [相对路径或绝对路径]
cd ~username # 代表去到 username用户的家目录
cd .. # 表示去到目前的上层目录
cd - # 表示回到刚刚的那个目录
pwd (显示目前所在的目录)
pwd [-P]
# -P :显示出确实的路径,而非使用链接 (link) 路径。
mkdir (建立新目录)
mkdir [-mp] 目录名称
# -m :配置文件案的权限喔!直接设定,不需要看预设权限 (umask) 的脸色~
# -p :帮助你直接将所需要的目录(包含上层目录)递归建立起来!
- 如果没有加上 -m 来强制设定属性,系统会使用默认属性
- 一般情况下,目录需要一层层才能建立,如果需要建立多个递归子目录,在没有中间层目录的情况下,需要使用 -p 参数,逐层建立目录
rmdir (删除『空』的目录)
被删除的目录里面必定不能存在其他的目录或文件
rmdir [-p] 目录名称
# -p :连同『上层』『空的』目录也一起删除
文件与目录管理
检视文件与目录
ls [-aAdfFhilnrRSt] 文件名或目录名称..
ls [--color={never,auto,always}] 文件名或目录名称..
ls [--full-time] 文件名或目录名称..
# -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
# -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
# -l :长数据串行出,包含文件的属性与权限等等数据;(常用)
复制、删除与移动: cp, rm, mv
cp (复制文件或目录)
cp [-adfilprsu] 来源文件(source) 目标文件(destination)
cp [options] source1 source2 source3 .... directory # 可同时复制多个文件
# -a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
# -i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
# -p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
# -r :递归持续复制,用于目录的复制行为;(常用)
复制文件并不能完整复制权限,并且复制文件需要考虑到
- 是否需要完整的保留来源文件的信息?
- 来源文件是否为连结档(symbolic link file)?
- 来源档是否为特殊的文件,例如FIFO, socket 等?
- 来源文件是否为目录?
rm (移除文件或目录)
rm [-fir] 文件或目录
# -f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
# -i :互动模式,在删除前会询问使用者是否动作
# -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
mv (移动文件与目录,或更名)
mv [-fiu] source destinationmv [options] source1 source2 source3 .... directory # 同样,移动也可以对多个档进行
# -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
# -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
# -u :若目标文件已经存在,且 source 比较新,才会更新 (update)
使用 mv 指令也可以对档进行重命名,
如
mv mvtest mvtest2 <== 这样就更名了!简单~
# 其实在 Linux 底下还有rename指令,进行多个档名的同时更名,并非针对单一档名变更
取得路径的文件名与目录名称
当目录与最终的文件名过长时,需要知道该文件或目录的档名或目录名,可以采用以下指令
basename /etc/sysconfig/network
network <== 很简单!就取得最后的档名~
dirname /etc/sysconfig/network
/etc/sysconfig <== 取得的变成目录名了!
文件内容查阅
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示
- nl 显示的时候,顺道输出行号
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页
- head 只看头几行
- tail 只看末尾几行
- od 以二进制的方式读取文件内容
直接检视文件内容
cat (concatenate)
cat [-AbEnTv]
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号
# -n :打印出行号,连同空白行也会有行号,与 -b 的选项不同
当文件内容的行数超过40行以上时,不建议使用cat,配合 more 或 less 来执行比较好
tac (反向列示)
tac 的输出结果是由最后一行到第一行反向在屏幕上显示
nl (添加行号打印)
nl [-bnw] 文件
# -b :指定行号指定的方式,主要有两种:
# -b a :表示不论是否为空行,也同样列出行号(类似 # cat -n);
# -b t :如果有空行,空的那一行不要列出行号(默认值);
# -n :列出行号表示的方法,主要有三种:
# -n ln :行号在屏幕的最左方显示;
# -n rn :行号在自己字段的最右方显示,且不加 0 ;
# -n rz :行号在自己字段的最右方显示,且加 0 ;
# -w :行号字段的占用的字符数。
nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐0等功能
翻页检视
more (一页一页翻动)
在more的状态下,最后一行会显示目前显示的百分比,同事还可以在最后一行输入一些有用的指令
- 空格键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
- :f :立刻显示出文件名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
输入了 / 只收,输入字符串病按下 [enter]进行搜索,more 开始向下搜索该字符串,直接按下 n 可以重复搜寻同一个字符串,按下 q 离开 more
less (一页一页翻动)
less 的用法比 more 更加有弹性,可以通过[pageup] [pagedown] 等按键的功能来往前往后翻看文件
除此之外,在less 里头可以拥有更多的『搜寻』功能喔!不止可以向下搜寻,也可以向上搜寻
- 空格键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字符串 :向下搜寻『字符串』的功能;
- ?字符串 :向上搜寻『字符串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- g :前进到这个资料的第一行去;
- G :前进到这个数据的最后一行去 (注意大小写);
- q :离开 less 这个程序;
资料撷取
head (取出前面几行)
head [-n number] 文件
# -n :后面接数字,代表显示几行的意思
# -n 20表示显示前20行
# -n -100表示除后面100行外,其余的从第一行开始显示
tail (取出后面几行)
tail [-n number] 文件
# -n :后面接数字,代表显示几行的意思
# -n 20表示显示后20行
# -n +100表示只列出100行以后的数据
# -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c 才会结束tail 的侦测
# 由于某文件随时会有数据写入,可以用 -f 来一直侦测该文件
非纯文本档: od
od [-t TYPE] 文件
#-t :后面可以接各种『类型 (TYPE)』的输出,例如:
# a :利用默认的字符来输出;
# c :使用 ASCII 字符来输出
# d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;
# f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes ;
# o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes ;
# x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ;
修改文件时间或建置新档: touch
Linux文件会记录许多的时间参数,其中有三个主要的变动时间
- modification time (mtime):[内容数据]变更更新的时间
- status time(ctime):[状态]改变更新的时间
- access time (atime):[文件被读取]是更新的时间
touch [-acdmt] 文件
# -a :仅修订 access time;
# -c :仅修改文件的时间,若该文件不存在则不建立新文件;
# -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
# -m :仅修改 mtime ;
# -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
# 上述的时间都可以按照相应的格式输出
# 若该文件不存在,则会主动的建立一个新的空的文件
touch 通常在下面两种情况中用到
- 建立一个空的文件;
- 将某个文件日期修订为目前(mtime 与atime)
文件与目录的默认权限与隐藏权限
文件的预设权限:umask
预设权限只目前用户在建立文件或目录时的权限默认值
可以通过 umask 查看
[root@5bbc663a8330 etc]# umask
0022
[root@5bbc663a8330 etc]# umask -S
u=rwx,g=rx,o=rx
umask 的分数指的是『该默认值需要减掉的权限!』,且使用者建立为『文件』则预设『没有可执行( x )权限』
[root@5bbc663a8330 etc]# touch test1
[root@5bbc663a8330 etc]# mkdir test2
[root@5bbc663a8330 etc]# ll -d test*
-rw-r--r-- 1 root root 0 Aug 20 11:13 test1
drwxr-xr-x 2 root root 4096 Aug 20 11:13 test2
可以通过 umask 数字 来制定预设权限的值
文件隐藏属性
隐藏属性不能在Docker 镜像中使用
chattr (配置文件案隐藏属性)
chattr [+-=][ASacdistu] 文件或目录名称
# a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设定这属性
# i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』对于系统安全性有相当大的帮助!只有 root 能设定此属性
lsattr (显示文件隐藏属性)
lsattr [-adR] 文件或目录
# -a :将隐藏文件的属性也秀出来;
# -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
# -R :连同子目录的数据也一并列出来!
文件特殊权限: SUID, SGID, SBIT
[root@5bbc663a8330 tmp]# ls -ld /tmp ;ls -l /usr/bin/passwd
drwxrwxrwt 1 root root 4096 Aug 20 11:30 /tmp
-rwsr-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd
Set UID
SUID是指s在文件拥有者(U指user)的x权限,基本上SUID 有这样的限制与功能:
- SUID 权限仅对二进制程序(binary program)有效;
- 执行者对于该程序需要具有x 的可执行权限;
- 本权限仅在执行该程序的过程中有效(run-time);
- 执行者将具有该程序拥有者(owner) 的权限。
该权限的作用是,若我使用某用户账号去执行文件时,那这个用户账号将会取得root的支持,比如在 /usr/bin/passwd 中,单用户可以修改自己账号的密码,虽然 /usr/bin/passwd 的拥有者是roo用户;但不能对 /usr/bin/passwd 读取,因为没有 SUID 权限
另外,SUID 仅可用在binary program 上, 不能够用在shell script 上面!
Set GID
SGID指s在群组的x权限,SGID 有如下的功能:
- SGID 对二进制程序有用;
- 程序执行者对于该程序来说,需具备x 的权限;
- 执行者在执行的过程中将会获得该程序群组的支持
与SUID 非常的类似,若我使用某用户账号去执行文件时,那这个用户账号将会取得所属群组的支持
Sticky Bit
SBIT 目前只针对目录有效,对于文件已经没有效果了。SBIT 对于目录的作用是:
- 当用户对于此目录具有w, x 权限,亦即具有写入的权限时;
- 当用户在该目录下建立文件或目录时,仅有自己与root 才有权力删除该文件
当甲这个用户于A 目录是具有群组或其他人的身份,并且拥有该目录w 的权限, 这表示『甲用户对该目录内任何人建立的目录或文件均可进行"删除/更名/搬移" 等动作。』不过,如果将A 目录加上了SBIT 的权限项目时,则甲只能够针对自己建立的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。
SUID/SGID/SBIT 权限设定
同样地,视SUID、SGID、SBIT为2进制位数,分别表示
- 4 为SUID
- 2 为SGID
- 1 为SBIT
在使用 chmod 权限值 设定文件权限时,这些隐藏权限由4个数字中的第1个来设定;当然也可以通过 chmod [ugo][±=]权限 来具体设定
观察文件类型:file
可以利用 **file== 这个指令来检阅文件(Docker 镜像不支持)
指令与文件的搜寻
脚本文件名的搜寻
which (寻找『执行档』)
which [-a] command
# -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
这个指令是根据『PATH』这个环境变量所规范的路径,去搜寻『执行档』的档名
(Docker 镜像不支持)
文件档名的搜寻
whereis (由一些特定的目录中寻找文件文件名)
whereis [-bmsu] 文件或目录名
# -l :可以列出 whereis 会去查询的几个主要目录而已
# -b :只找 binary 格式的文件
# -m :只找在说明文件 manual 路径下的文件
# -s :只找 source 来源文件
# -u :搜寻不在上述三个项目当中的其他特殊文件
whereis 的查询速度会比较快相比find),因为whereis 只找几个特定的目录,并没有全系统去查询
locate / updatedb
locate [-ir] keyword
# -i :忽略大小写的差异;
# -c :不输出档名,仅计算找到的文件数量
# -l :仅输出几行的意思,例如输出五行则是 -l 5
# -S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
# -r :后面可接正规表示法的显示方式
locate 的使用更简单,直接在后面输入『文件的部分名称』后,就能够得到结果。但该指令的限制在于需要从『已建立的数据库/var/lib/mlocate/』搜寻得到结果,该数据库会每天更新一次,也可以手动更新,直接输入 updatedb 进行更新。
- updatedb:根据/etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新/var/lib/mlocate 内的数据库
文件; - locate:依据/var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。
find
find [PATH] [option] [action]
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
# 例:搜索一天内的文件
find / -mtime 0
# 例:在/etc下搜索比、etc/passwd较新的文件
find /etc -newer /etc/passwd
其中,时间参数有正负之分,如
- +4 代表大于等于5 天前的檔名:ex> find /var -mtime +4
- -4 代表小于等于4 天内的文件档名:ex> find /var -mtime -4
- 4 则是代表4-5 那一天的文件档名:ex> find /var -mtime 4
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 搜寻。
# 例:搜索不属于任何人的文件,用于查找那些账户被删除的用户遗留文件
find / -nouser
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.... 的属性存在!
# 例:搜索文件类型为Socker的档名
find / -type s
# 例:搜索文件包含SGID 或 SUID 或 SBIT的属性
find / -perm /7000
并且,find后面可以接多个目录来进行搜寻
4. 额外可进行的动作:
-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
-print :将结果打印到屏幕上,这个动作是预设动作!
find 的特殊功能就是能够进行额外的动作(action),如
find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
# 可以在之后将找到的文件使用 ls -l 列出来
极其重要的复习!
一、让用户能进入某目录成为『可工作目录』的基本权限为何:
- 可使用的指令:例如cd 等变换工作目录的指令;
- 目录所需权限:用户对这个目录至少需要具有x 的权限
- 额外需求:如果用户想要在这个目录内利用ls 查阅文件名,则用户对此目录还需要r 的权限。
二、用户在某个目录内读取一个文件的基本权限为何?
- 可使用的指令:例如本章谈到的cat, more, less 等等
- 目录所需权限:用户对这个目录至少需要具有x 权限;
- 文件所需权限:使用者对文件至少需要具有r 的权限才行!
三、让使用者可以修改一个文件的基本权限为何?
- 可使用的指令:例如nano 或未来要介绍的vi 编辑器等;
- 目录所需权限:用户在该文件所在的目录至少要有x 权限;
- 文件所需权限:使用者对该文件至少要有r, w 权限
四、让一个使用者可以建立一个文件的基本权限为何?
- 目录所需权限:用户在该目录要具有w,x 的权限,重点在w 啦!
五、让用户进入某目录并执行该目录下的某个指令之基本权限为何?
- 目录所需权限:用户在该目录至少要有x 的权限;
- 文件所需权限:使用者在该文件至少需要有x 的权限
Linux,不过是从头再来(一)相关推荐
- java从头再来--java
java从头再来–java语言 第一站 java语言 一起学习进步,欢迎留言指正 文章目录 java从头再来--java语言 一.java是什么? 1.面向对象 2.强类型编程语言 3.跨平台 二.j ...
- 虚拟机Ubuntu崩了?只不过是从头再来罢了。
今天运行虚拟机,电脑不知道为什么就卡了,如愿以偿,它崩了.我能怎么办嫩,只不过是从头再来罢了. 安装虚拟机,首先就是需要有软件VMware,其次还需要有Ubuntu系统镜像.这里安装的系统镜像是ubu ...
- 我的2021年终总结:初为人父,从头再来
[年终总结]| 作者/Edison 最近公司开始一股年终总结浪潮,看着同事们写大作文式的"内卷"总结,我不禁在想我这一年做了什么,那么也就有了这篇总结推文,当然它也是我每年的习惯. ...
- 不再年轻,仍从头再来
近日我的两个宝贝相继过生日,给我很多感触,被生命和生活所感动,被各种爱和各种细节所激动,我是一个可怕可恨的工科男,有时敏感,有时性情,有时忧郁,有时愤青,有时假装文艺,有时也很装,这些五花八门乱七八糟 ...
- 从头再来博客_免费课程:从头开始构建博客吗?
从头再来博客 by ZAYDEK 由ZAYDEK 瓷砖... (TIL-) 免费课程:从头开始构建博客吗? (Free Course: Build A Blog From Scratch ??) 可 ...
- 不过是从头再来(下)
休学回来后,我便想转专业到计算机.奈何虽然转专业的成绩够了,但是申请时间已经过了(我们学校是大一下学期提交申请),无缘转专业.当时经过学长介绍,我花了一万块钱报了一个编程班,想系统的学习编程. 机缘巧 ...
- JavaSE从头再来(七)——增强IO流
JavaSE从头再来(七)--增强IO流 从头再来第七弹,主要涉及到缓冲流.转换流.序列化流和打印流 一.缓冲流 能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等.这些功能 ...
- JavaSE从头再来(一):面向对象、常用API
JavaSE从头再来(一) 一.数组 case1 数组反转 int[] array = {10,20,30,40,50};for (int min = 0,max = array.length-1;m ...
- 2012 从头再来
今天是2012年 第一天 所有的一切从头再来 加油~ 相信你是最棒的~ 转载于:https://blog.51cto.com/pchome/756088
- 遭散伙危机,他掏家底结清百名员工工资,从头再来又成淘宝销量王
从年营收5000万一下子跌入谷底,带着7个仍愿意追随他的员工,他从头再来,连续三年蝉联淘宝双12智能门锁销量冠军. 文|宁函夏 王震背水一战的故事从一栋3层高的居民楼开始.2014年,王震和合作5年的 ...
最新文章
- nyoj——297(期望)
- 《JavaScript权威指南》笔记(一)
- 8.Deep Interest Evolution Network for Click-Through Rate Prediction论文详解
- 微信小程序code 换取 session_key
- 置顶java[常用]-[语法]-[基础操作]
- PL/SQL编程基本概念
- tcpcopy使用方法
- Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法
- php中数据类型、数组排序、循环语句、混编、操作本地文件流程、常用API、函数、魔术常量
- 华为云新加坡峰会发布CloudAI创新实验室,四大核心优势助力智能化升级
- 怎么解决VMware“该虚拟机似乎正在使用中”问题
- Openlayer:学习笔记之图标与提示信息
- 华为freebuds pro和airpods pro降噪对比 华为freebuds pro和airpods pro参数对比
- google手机等相关产品{时间不同步}最简解决方法
- tns:无监听 解决之一:由于 linstener.log 贮存过满导致
- AG9311/AG9310 Type-C转HDMI设计方案|替代AG9310/AG9311芯片|GSV2201可完全替代兼容AG9310/AG9311
- 图片搜索引擎 - WebCrawler
- PINQ-查询数据集-简介
- 从代码角度看CAN网络层协议 ISO 15765-2 (二)
- 关于SpringCloud Alibaba,动力节点的这份笔记教程真香