鸟哥Linux学习笔记04
1, . 当前目录 ..上层目录
2, 目录的相关操作
1)cd(切换目录)
[root@node1 ~]# cd [相对路径或绝对路径]
[root@node1 ~]# cd : 回到自己的主文件夹
[root@node1 ~]# cd ~ : 也表示回到自己主文件夹
[root@node1 ~]# cd ~ilink : 去ilink这个用户的主文件夹,即/home/ilink
2)pwd(显示目前所在目录) ,即 我在哪
对于连接文件,显示出实际的工作目录,而不是连接文件本身的目录名时, 可以使用 -P 参数
3)mkdir(新建新目录)
[root@node1 test]# mkdir [-mp] 目录名
参数: -m 配置文件案的权限。直接设置,不需要看默认权限(umask)
-p 帮助你直接将所需要的目录(包括上层目录)递归创建起来 (一般不建议常用-p这个参数)
4)rmdir(删除 “空” 的目录)
3, 关于执行文件路径的变量 $PATH
1) echo “ 有显示,打印的意思 ”
[ilink@node1 test]$ echo $PATH
PATH(一定要大写),这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)隔开,每个目录都是有" 顺序 " 之分的
2) 将某个路径加入PATH中
[ilink@node1 test]$ PATH="$PATH":/home/ilink/test
3) 为了安全,不建议将" . "加入PATH中
4, ls 查看文件与目录
[ilink@node1 test]$ ls[-aAdfFhilnrRSt] 目录名称
[ilink@node1 test]$ ls [--color={never,auto,always}] 目录名称
[ilink@node1 test]$ ls [--full-time] 目录名称
参数说明:
-a : 全部的文件,连同隐藏文件一起列出来(常用)
-d : 仅列出目录本身,而不是列出目录内的文件数据(常用)
-l : 列出长数据串,包含文件的属性与权限等数据(常用)
-t : 依时间排序,而不是文件名排序
--color=never : 不要依据文件特性给予颜色显示
--color=always : 显示颜色
--color=auto : 让系统自行依据设置来判断是否给予颜色
--full-time : 以完整时间模式(包含年、月、日 、时、分、秒)输出
5, cp(复制文件或目录)
[ilink@node1 test]$ cp[-adfilprsu] 源文件(source) 目标文件(destination)
[ilink@node1 test]$ cp [options] source1 source2 source3... directory
参数:
-a : 相当于 -pdr的意思 (常用)
-f : 为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试
-i : 若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用)
-p: 连同文件的属性一起复制过去,而非使用默认属性(备份常用)
-r: 递归持续复制,用于目录的复制行为(常用)
-s : 复制成为符号链接文件(symbolic link),即“快捷方式”文件;
-u : 若destination比source旧时才更新destination
由于 cp 有种种的文件属性与权限特性,所以,在复制的时候,必须清楚的了解到:
是否需要完整保留来源文件的信息? 源文件是否为软连接文件(symbolic link file)?
源文件是否为特殊文件,例如 FIFO、Socket等?
源文件是否为目录?
6, rm(移除文件或目录)
参数:
-f : 就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i : 互动模式,在删除之前询问用户是否操作
-r: 递归删除。最常用在目录的删除上。 比较危险的参数
注意:文件名最好不要使用 "-" 号开头,因为 "-" 后面接参数,因此,单纯使用 "rm -aaa-"系统的命令就会误判,所以对于这样的使用 " rm ./-aaa" 。
7, mv(移动文件与目录,或更名)
[root@node1 ~]# mv [-fiu] source destination
[root@node1 ~]# mv [options] source1 source2 source3 .... directory
参数:
-f :就是 force 的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i : 若目标已经存在,就会询问是否覆盖
-u: 若目标文件已经存在,且source比较新,才会更新.
8, 取得路径的文件名与目录名称 basename dirname
9, 文件内容查阅
cat : 由第一行开始显示文件内容
tac : 从最后一行开始显示,可以看出是cat的倒写
nl : 显示的时候,顺便输出行号
more: 一页一页的显示文件内容
less : 与more类似,但是比more更好用,可以往前翻页
head : 只看头几行
tail : 只看结尾几行
od : 以二进制的方式读取文件内容
10,cat (concatenate)
[root@node1 ~]# cat [-AbEnTv] 文件
参数 -A :相当于 -vET的整合参数,可列出一些特殊字符,而不是空白而已;
-b : 列出行号,仅针对非空白行做行号显示,空白行不标行号;
-n : 打印出行号,连同空白行也会有行号,与 -b 不同
11,more 与 less
都是一页一页显示,他们的快捷键基本上与man一样 ,不再解释
12, head(取出前面几行)
[root@node1 ~]# head [-n number] 文件
[root@node1 ~]# head /etc/man.config 默认情况下显示前10行;
[root@node1 ~]# head -n 20 /etc/man.config 显示前20行;
[root@node1 ~]# head -n -100 /etc/man.config 列出前面的所有行,但不包括后面100行
13,tail(取出后面几行)
[root@node1 ~]# tail [-n number] 文件
[root@node1 ~]# tail /etc/man.config 默认情况下显示后10行;
[root@node1 ~]# tail -n 20 /etc/man.config 显示后20行;
[root@node1 ~]# tail -n +100 /etc/man.config 列出100行以后的数据
例如: 我想显示 /etc/man.config的第11行到20行呢?
答案: head -n 20 /ect/man.config | tail -n 10
14, od(非纯文本文件)
[root@node1 ~]# od [-t TYPE] 文件
参数
-t : 后面可以接各种"类型"的输出,例如:
a : 利用默认的字符输出
c : 使用ASCII字符输出
d[size]: 利用十进制(decimal)来输出数据,每个整数占size bytes
f[size]: 利用浮点数(floating)来输出数据,每个数占size bytes
o[size]: 利用八进制(octal)来输出数据,每个整数占size bytes
x[size]: 利用十六进制(hexadecimal)来输出数据,每个整数占size bytes
15, touch(修改文件的时间或创建新文件)
每个文件在linux下面都会记录许多的时间参数,有三个主要的变动时间
modification time(mtime) 当该文件的"内容数据"更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或者权限;
status time(ctime)当该文件的"状态"(status)改变时,就会更新这个时间,举例说明,当权限与属性被更改了,就会更新这个时间;
access time(atime)当该文件的"内容被取用"时,就会更新这个时间(access)。举例说明,使用cat去读取/etc/man.config,就会更新该文件的atime了。
[root@node1 ~]# touch [-acdmt] 文件
参数:
-a : 仅修改访问时间;
-c : 仅修改文件的时间,若该文件不存在则不创建新文件;
-d : 后面可以接欲修改的时间而不用当前的时间,也可以使用 --date="日期或时间";
-m: 仅修改mtime ;
-t : 后面可以接欲修改的时间而不是当前时间,格式[YYMMDDhhmm]
touch这个命令最常被使用的情况是:
创建一个空的文件; 将某个文件日期修改为目前时间(mtime与atime);
16, 文件默认权限:umask
umask就是指定 "目前用户在新建文件或目录时候的权限默认值"
要注意的是:umask的分数指的是"该默认值需要减掉的权限"。因为r、w、x分别是4、2、1,也就是说,要拿掉能写的权限,就输入2,要拿掉读的权限就输入4,那么要拿掉读与写的权限就输入6...
17, 文件的隐藏属性
chattr(设置文件的隐藏属性)
[root@node1 ~]# chattr [+-=] [ASacdistu] 文件或目录名称
参数+,-,= 与权限是一样的,不再说明
a : 当设置a之后,这个文件只能增加数据,而不能删除也不能修改,只有root才能设置这个属性, 一般log file这种的登录文件常用
i : 可以让一个文件" 不能被删除、改名、设置连接也无法写入或添加数据 "。这对于系统的安全性有很大的帮助,只有root能设置此属性.
18, lsattr(显示文件隐藏属性)
[root@node1 ~]# lsattr [-adR] 文件或目录
-a : 将隐藏文件的属性也秀出来
-d : 如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R : 连同子目录的数据也一并列出来
19, 查看文件类型 file
如果想知道某个文件的基本数据,例如属于ASCII或者data文件,或是binary,就可以利用file这个命令查看
20, 文件名的查找
通常find不很常用,因为速度慢!通常先使用whereis或者locate来检查,如果真的找不到,才以find查询。为什么?因为whereis与locate是利用数据库来查找数据,所以相当快速,而且并没有实际查询硬盘,比较节省时间。
[root@node1 ~]# whereis [-bmsu] 文件或目录名
参数:
-b : 只找二进制的文件.
-m : 只找在说明文件manual路径下的问题
-s : 只找source源文件
-u : 查找不在上述三个选项当中的其它特殊文件
[root@node1 ~]# locate [-ir] keyword
参数:
-i : 忽略大小写的差异;
-r : 后面可接正则表达式的显示方式
locate 来寻找数据的时候特别,这是因为locate寻找的数据是由已创建的数据库/var/lib/mlocate里面的数据所查找的,数据库默认是每天执行一次,所以当你新建文件后查找该文件,那么locate会告诉你 "找不到" ,因为必须要更新数据库。
我们可以手动更新数据库,方法很简单直接输入 " updatedb " 即可。
updatedb : 依据 /etc/updatedb.conf 的设置去查找系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件
locate : 依据/var/lib/mlocate 内的数据库记载,找出用户输入的关键字文件名
[root@node1 ~]# 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还要新的文件。
例子: 列出 过去系统上面24小时内有改动的(mtime)的文件
[root@node1 ~]# find / -mtime 0 这个0是重点!0代表目前时间,所以从现在开始到24小时前,有改动的文件都会列出来!
那么如果3天的24小时内? find / -mtime 3
从图中可以看到,越往左则代表越早的时间,
+4 代表大于等于5天前的文件名 : find /var -mtime +4
-4 代表小于等于4天内的文件名 : find /var -mtime -4
4 则代表4~5那一天的文件名 : find /var -mtime 4
2)参数
与用户或用户组有关的参数:
-uid n : n为数字,这个数字是用户对应的账号ID,即UID,这个UID记录在/etc/passwd里面与账号名称对应的数字.
-gid n : n为数字,这个数字是用户组的ID,即GID,这个GID记录在/etc/group中
-user name :name 为用户账号名称。例如ilink
-group name : name为用户组名称
-nouser :寻找文件的所有者不存在 /etc/passwd的人
-nogroup: 寻找文件的所有用户组不存在于/etc/group中的文件
3)参数
与文件权限及名称有关的参数
-name filename :查找文件名为filename的文件
-size [+-]SIZE : 查找比SIZE还要大(+)或小(-)的文件。这个SIZE的规格有: c:代表byte,k:代表1024bytes,
-type TYPE : 查找文件类型为TYPE的 ,类型主要有: 一般正规文件(f)、设备文件(b、c)、目录(d)、连接文件(l)、socket(s)、及FIFO(p)等属性
-perm mode : 查找文件权限“刚好等于”mode的文件。
-perm +mode: 查找文件权限"包含任意mode的权限"的文件,举例说,查找 -rwxr-xr-x,即-perm +755时,但一个文件属性为 -rw-------也会被列出来,因为它有-rw...的属性存在
-perm -mode : 查找文件权限"必须要包含全部mode的权限",举例说,查找-rwxr--r--,即 0744的文件,使用-perm 0744,当一个文件权限为-rwsr-xr-x,即0755时,也会被列出来,因为 -rwsr-xr-x属性包括了-rwxr--r--的属性
4)其他可进行的操作
-exec command : command为其它命令,-exec后面可再接其它的命令来处理查找到的结果
-print :将结果打印到屏幕上,这个操作是默认操作
[root@node1 ~]# find / -perm +7000 -exec ls -l {} \; 注意到,-exec后面的ls -l 就是额外命令,命令不支持命令别名,所以不能使用 ll
find 的特殊功能就是能够进行额外的动作(action)。
{}代表的是 "由find找到的内容",
-exec 一直到"\;"是关键字,代表find额外命令的开始(-exec)到结束(\;),中间是find命令内的额外命令。
因为";"在bash环境下有特殊意义的,因此利用反斜杠来转义。
find还可以利用通配符查找文件名 ,如 find /etc -name 'print*'
未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负