Linux入门级需要掌握的命令

**1.目录的相关操作: cd, pwd, mkdir, rmdir

2.文件与目录的检视: ls

3.复制、删除与移动: cp, rm, mv

4. 取得路径的名称与目录名称

5.直接检视文件内容: cat, tac, nl

6. 可翻页检视: more, less

7. 资料撷取: head, tail

8. 非纯文字档: od

9. 修改文件时间与建置新档: touch

10. 文件预设权限:umask

11. 文件隐藏属性: chattr, lsattr

12. 文件特殊权限:SUID, SGID, SBIT, 权限设定

13.观察文件类型:file

14.文件查找which,whereis, locate / updatedb, find**

下面是常用命令解析

1。文件与目录的检视: ls

[[email protected] ~]# ls [-aAdfFhilnrRSt] 档名或目录名称..

[[email protected] ~]# ls [–color={never,auto,always}] 档名或目录名称..

[[email protected] ~]# ls [–full-time] 档名或目录名称..选项与参数:

-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)

-A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录

-d :仅列出目录本身,而不是列出目录内的文件资料(常用)

-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)

-F :根据文件、目录等资讯,给予附加资料结构,例如:

*:代表可执行档; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件;

-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来;

-i :列出 inode 号码,inode 的意义下一章将会介绍;

-l :长资料串列出,包含文件的属性与权限等等资料;(常用)

-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)

-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;

-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;

-S :以文件容量大小排序,而不是用档名排序;

-t :依时间排序,而不是用档名。

–color=never :不要依据文件特性给予颜色显示;

–color=always :显示颜色

–color=auto :让系统自行依据设定来判断是否给予颜色

–full-time :以完整时间模式 (包含年、月、日、时、分) 输出

–time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime)

而非内容变更时间 (modification time)

2。cp (复制文件或目录)

[[email protected] ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)

[[email protected] ~]# cp [options] source1 source2 source3 …. directory

选项与参数:

-a :相当于 -dr –preserve=all 的意思,至于 dr 请参考下列说明;(常用)

-d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

-i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-l :进行硬式连结(hard link)的连结档建立,而非复制文件本身;

-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用预设属性(备份常用);-r :递迴持续复制,用于目录的复制行为;(常用)

-s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;

-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。

–preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。

最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是『目录』才行!

3。rm (移除文件或目录)

[[email protected] ~]# rm [-fir] 文件或目录

选项与参数:

-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;

-i :互动模式,在删除前会询问使用者是否动作

-r :递迴删除啊!最常用在目录的删除了!这是非常危险的选项!!!范例一:将刚刚在 cp 的范例中建立的 bashrc 删除掉!

[[email protected] ~]# cd /tmp

[[email protected] tmp]# rm -i bashrc

rm: remove regular file bashrc‘? y# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!范例二:透过万用字元*的帮忙,将/tmp底下开头为bashrc的档名通通删除:

[[email protected] tmp]# rm -i bashrc*# 注意那个星号,代表的是 0 到无穷多个任意字元喔!很好用的东西!范例三:将 cp 范例中所建立的 /tmp/etc/ 这个目录删除掉!

[[email protected] tmp]# rmdir /tmp/etc

rmdir: failed to remove ‘/tmp/etc‘: Directory not empty <== 删不掉啊!因为这不是空的目录!

[[email protected] tmp]# rm -r /tmp/etc

rm: descend into directory/tmp/etc’? y

rm: remove regular file /tmp/etc/fstab‘? y

rm: remove regular empty file/tmp/etc/crypttab’?

^C <== 按下 [ctrl]+c 中断…..(中间省略)…..

因为身份是 root ,预设已经加入了 -i 的选项,所以你要一直按 y 才会删除!

如果不想要继续按 y ,可以按下『 [ctrl]-c 』来结束 rm 的工作。

这是一种保护的动作,如果确定要删除掉此目录而不要询问,可以这样做:

[[email protected] tmp]# \rm -r /tmp/etc# 在指令前加上反斜线,可以忽略掉 alias 的指定选项喔!至于 alias 我们在bash再谈!

拜託!这个范例很可怕!你不要删错了!删除 /etc 系统是会挂掉的!范例四:删除一个带有 - 开头的文件

[[email protected] tmp]# touch ./-aaa- <==touch这个指令可以建立空文件!

[[email protected] tmp]# ls -l

-rw-r–r–. 1 root root 0 Jun 11 19:22 -aaa- <==文件大小为0,所以是空文件

[[email protected] tmp]# rm -aaa-

rm: invalid option – ‘a’ <== 因为 “-” 是选项嘛!所以系统误判了!

Try ‘rm ./-aaa-’ to remove the file `-aaa-‘. <== 新的 bash 有给建议的

Try ‘rm –help’ for more information.

[[email protected] tmp]# rm ./-aaa-

4。mv (移动文件与目录,或更名)

[[email protected] ~]# mv [-fiu] source destination

[[email protected] ~]# mv [options] source1 source2 source3 …. directory

选项与参数: -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新 (update)

范例一:复制一文件,建立一目录,将文件移动到目录中

[[email protected] ~]# cd /tmp

[[email protected] tmp]# cp ~/.bashrc bashrc

[[email protected] tmp]# mkdir mvtest

[[email protected] tmp]# mv bashrc mvtest

将某个文件移动到某个目录去,就是这样做!

范例二:将刚刚的目录名称更名为 mvtest2

[[email protected] tmp]# mv mvtest mvtest2 <== 这样就更名了!简单~

其实在 Linux 底下还有个有趣的指令,名称为 rename ,

# 该指令专职进行多个档名的同时更名,并非针对单一档名变更,与mv不同。请man rename。

范例三:再建立两个文件,再全部移动到 /tmp/mvtest2 当中

[[email protected] tmp]# cp ~/.bashrc bashrc1

[[email protected] tmp]# cp ~/.bashrc bashrc2

[[email protected] tmp]# mv bashrc1 bashrc2 mvtest2

注意到这边,如果有多个来源文件或目录,则最后一个目标档一定是『目录!』

意思是说,将所有的资料移动到该目录的意思!

5。cat (concatenate) 查看文件内容

[[email protected] ~]# cat [-AbEnTv]

选项与参数:-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;

-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!

-E :将结尾的断行字元 $ 显示出来;

-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;

-T :将 [tab] 按键以 ^I 显示出来;

-v :列出一些看不出来的特殊字符

范例一:检阅 /etc/issue 这个文件的内容

[[email protected] ~]# cat /etc/issue\SKernel \r on an \m

范例二:承上题,如果还要加印行号呢?

[[email protected] ~]# cat -n /etc/issue

1 \S

2 Kernel \r on an \m

3

所以这个文件有三行!看到了吧!可以印出行号呢!这对于大文件要找某个特定的行时,有点用处!

如果不想要编排空白行的行号,可以使用『cat -b /etc/issue』,自己测试看看:

范例三:将 /etc/man_db.conf 的内容完整的显示出来(包含特殊字元)

[[email protected] ~]# cat -A /etc/man_db.conf

....(中间省略)....MANPATH_MAP^I/bin^I^I^I/usr/share/manMANPATH_MAP^I/usr/bin^I^I/usr/share/manMANPATH_MAP^I/sbin^I^I^I/usr/share/manMANPATH_MAP^I/usr/sbin^I^I/usr/share/man$…..(底下省略)…..

上面的结果限于篇幅,删除掉很多资料了。另外,输出的结果并不会有特殊字体,

上面的特殊字体是要让您发现差异点在哪里就是了。基本上,在一般的环境中,

使用 [tab] 与空白键的效果差不多,都是一堆空白啊!我们无法知道两者的差别。

此时使用 cat -A 就能够发现那些空白的地方是啥鬼东西了![tab]会以 ^I 表示,

断行字元则是以 表示,所以你可以发现每一行后面都是 啊!不过断行字元# 在Windows/Linux则不太相同,Windows的断行字元是 ^M$ 啰。

6。tac (反向显示文件内容,和cat相反)

[[email protected] ~]# tac /etc/issueKernel

\r on an \m\S

嘿嘿!与刚刚上面的范例一比较,是由最后一行先显示喔!

7。nl (添加行号列印)

[[email protected] ~]# nl [-bnw]

文件选项与参数:

-b :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(预设值);

-n :列出行号表示的方法,主要有三种:

-n ln :行号在萤幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w :行号栏位的占用的字元数。

范例一:用 nl 列出 /etc/issue 的内容

[[email protected] ~]# nl /etc/issue

1 \S

2 Kernel \r on an \m

注意看,这个文件其实有三行,第三行为空白(没有任何字元),

[[email protected] ~]# nl -b a /etc/issue

1 \S

2 Kernel \r on an \m

3

嗬嗬!行号加上来啰~那么如果要让行号前面自动补上 0 呢?可这样

[[email protected] ~]# nl -b a -n rz /etc/issue

000001 \S

000002 Kernel \r on an \m

000003

嘿嘿!自动在自己栏位的地方补上 0 了~预设栏位是六位数,如果想要改成 3 位数?[[email protected] ~]# nl -b a -n rz -w 3 /etc/issue

001 \S

002 Kernel \r on an \m

003

变成仅有 3 位数啰~

8。head (取出文件前面几行),tail和head相反。

[[email protected] ~]# head [-n number] 文件

选项与参数:-n :后面接数字,代表显示几行的意思

[[email protected] ~]# head /etc/man_db.conf

预设的情况中,显示前面十行!若要显示前 20 行,就得要这样:

[[email protected] ~]# head -n 20 /etc/man_db.conf

范例:如果后面100行的资料都不列印,只列印/etc/man_db.conf的前面几行,该如何是好?

[[email protected] ~]# head -n -100 /etc/man_db.conf

9。非纯文字档(二进制文档查看器): od

我们上面提到的,都是在查阅纯文字档的内容。那么万一我们想要查阅非文字档,举例来说,例如 /usr/bin/passwd 这个执行档的内容时, 又该如何去读出资讯呢?事实上,由于执行档通常是 binary file ,使用上头提到的指令来读取他的内容时, 确实会产生类似乱码的资料啊!那怎么办?没关係,我们可以利用 od 这个指令来读取喔![[email protected] ~]# 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 ;

范例一:请将/usr/bin/passwd的内容使用ASCII方式来展现!

[[email protected] ~]# od -t c /usr/bin/passwd

0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \00000020 003 \0 > \0 001 \0 \0 \0 364 3 \0 \0 \0 \0 \0 \00000040 @ \0 \0 \0 \0 \0 \0 \0 x e \0 \0 \0 \0 \0 \00000060 \0 \0 \0 \0 @ \0 8 \0 \t \0 @ \0 035 \0 034 \00000100 006 \0 \0 \0 005 \0 \0 \0 @ \0 \0 \0 \0 \0 \0 \0…..(后面省略)….

最左边第一栏是以 8 进位来表示bytes数。以上面范例来说,第二栏0000020代表开头是

第 16 个 byes (2x8) 的内容之意。

范例二:请将/etc/issue这个文件的内容以8进位列出储存值与ASCII的对照表[[email protected] ~]# od -t oCc /etc/issue

0000000 134 123 012 113 145 162 156 145 154 040 134 162 040 157 156 040 \ S \n K e r n e l \ r o n0000020 141 156 040 134 155 012 012 a n \ m \n \n0000027

如上所示,可以发现每个字元可以对应到的数值为何!要注意的是,该数值是 8 进位喔!

例如 S 对应的记录数值为 123 ,转成十进位:1x8^2+2x8+3=83。

10。修改文件时间或创建新文档: touch

我们在 ls 这个指令的介绍时,有稍微提到每个文件在linux底下都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢?modification time (mtime):当该文件的『内容资料』变更时,就会更新这个时间!内容资料指的是文件的内容,而不是文件的属性或权限喔!status time (ctime):当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。 access time (atime):当『该文件的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的 atime 了。

[[email protected] ~]# touch [-acdmt]

文件选项与参数:

-a :仅修订 access time;

-c :仅修改文件的时间,若该文件不存在则不建立新文件;

-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 –date=”日期或时间”

-m :仅修改 mtime ;

-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]

范例一:新建一个空的文件并观察时间

[[email protected] ~]# cd /tmp

[[email protected] tmp]# touch testtouch

[[email protected] tmp]# ls -l testtouch

-rw-rw-r–. 1 dmtsai dmtsai 0 Jun 16 00:45 testtouch

注意到,这个文件的大小是 0 呢!在预设的状态下,如果 touch 后面有接文件,

则该文件的三个时间 (atime/ctime/mtime) 都会更新为目前的时间。若该文件不存在,# 则会主动的建立一个新的空的文件喔!例如上面这个例子!

范例二:将 ~/.bashrc 复制成为 bashrc,假设复制完全的属性,检查其日期[[email protected] tmp]# cp -a ~/.bashrc bashrc

[[email protected] tmp]# date; ll bashrc; ll –time=atime bashrc; ll –time=ctime bashrc

Tue Jun 16 00:49:24 CST 2015 <==这是目前的时间

-rw-r–r–. 1 dmtsai dmtsai 231 Mar 6 06:06 bashrc <==这是 mtime

-rw-r–r–. 1 dmtsai dmtsai 231 Jun 15 23:44 bashrc <==这是 atime

-rw-r–r–. 1 dmtsai dmtsai 231 Jun 16 00:47 bashrc <==这是 ctime

11。chattr (设定文件隐藏属性,区别于文件的rxw属性),lsattr (显示文件隐藏属性)[[email protected] ~]# chattr [+-=][ASacdistu] 文件或目录名称

选项与参数:

+ :增加某一个特殊参数,其他原本存在参数则不动。

- :移除某一个特殊参数,其他原本存在参数则不动。

= :设定一定,

且仅有后面接的参数

A :当设定了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime 将不会被修改, 可避免 I/O 较慢的机器过度的存取磁碟。(目前建议使用文件系统挂载参数处理这个项目)

S :一般文件是非同步写入磁碟的(原理请参考前一章sync的说明),如果加上 S 这个属性时, 当你进行任何文件的修改,该更动会『同步』写入磁碟中。

a :当设定 a 之后,这个文件将只能增加资料,而不能删除也不能修改资料,只有root 才能设定这属性

c :这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)

d :当 dump 程序被执行的时候,设定 d 属性将可使该文件(或目录)不会被 dump 备份i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增资料!』 对于系统安全性有相当大的助益!只有 root 能设定此属性

s :当文件设定了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬碟空间, 所以如果误删了,完全无法救回来了喔!

u :与 s 相反的,当使用 u 来设定文件时,如果该文件被删除了,则资料内容其实还存在磁碟中, 可以使用来救援该文件喔!

注意1:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定注意

2:xfs 文件系统仅支援 AadiS 而已

范例:请尝试到/tmp底下建立文件,并加入 i 的参数,尝试删除看看。

[[email protected] ~]# cd /tmp

[[email protected] tmp]# touch attrtest <==建立一个空文件

[[email protected] tmp]# chattr +i attrtest <==给予 i 的属性

[[email protected] tmp]# rm attrtest <==尝试删除看看rm: remove regular empty file attrtest‘? yrm: cannot removeattrtest’: Operation not permitted

看到了吗?呼呼!连 root 也没有办法将这个文件删除呢!赶紧解除设定!范例:请将该文件的 i 属性取消!

[[email protected] tmp]# chattr -i attrtest

[[email protected] ~]# lsattr [-adR] 文件或目录选项与参数:

-a :将隐藏档的属性也秀出来;

-d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;

-R :连同子目录的资料也一并列出来!

[[email protected] tmp]# chattr +aiS attrtest

[[email protected] tmp]# lsattr attrtest

–S-ia———- attrtest

使用 chattr 设定后,可以利用 lsattr 来查阅隐藏的属性。不过, 这两个指令在使用上必须要特别小心,否则会造成很大的困扰。例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录文件给他设定成为具有 i 的属性,那么过了若干天之后, 你突然要新增使用者,却一直无法新增!别怀疑,赶快去将 i 的属性拿掉吧!

12。文件特殊权限: SUID, SGID, SBIT

SUID/SGID/SBIT 权限设定

前面介绍过 SUID 与 SGID 的功能,那么如何设定文件使成为具有 SUID 与 SGID 的权限呢? 这就需要第五章的数字更改权限的方法了! 现在你应该已经知道数字型态更改权限的方式为『三个数字』的组合, 那么如果在这三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限了!

4 为 SUID

2 为 SGID

1 为 SBIT

假设要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在使用者权限中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来设定!此外,还有大 S 与大 T 的产生喔!参考底下的范例啦!

13。文件档名的搜寻

再来谈一谈怎么搜寻文件吧!在 Linux 底下也有相当优异的搜寻指令呦!通常 find 不很常用的!因为速度慢之外, 也很操硬碟!一般我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 为什么呢?因为 whereis 只找系统中某些特定目录底下的文件而已,locate 则是利用资料库来搜寻档名,当然两者就相当的快速, 并且没有实际的搜寻硬碟内的文件系统状态,比较省时间啦!

whereis (由一些特定的目录中寻找文件档名)

[[email protected] ~]# whereis [-bmsu] 文件或目录名选项与参数:

-l :可以列出 whereis 会去查询的几个主要目录而已

-b :只找 binary 格式的文件

-m :只找在说明档 manual 路径下的文件

-s :只找 source 来源文件

-u :搜寻不在上述三个项目当中的其他特殊文件

范例一:请找出 ifconfig 这个档名

[[email protected] ~]# whereis ifconfig

ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

范例二:只找出跟 passwd 有关的『说明文件』档名(man page)

[[email protected] ~]# whereis passwd # 全部的档名通通列出来!

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

[[email protected] ~]# whereis -m passwd # 只有在 man 里面的档名才抓出来!

passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

locate 和 updatedb

[[email protected] ~]# locate [-ir] keyword

选项与参数:

-i :忽略大小写的差异;

-c :不输出档名,仅计算找到的文件数量

-l :仅输出几行的意思,例如输出五行则是 -l 5

-S :输出 locate 所使用的资料库文件的相关资讯,包括该资料库纪录的文件/目录数量等

-r :后面可接正规表示法的显示方式

范例一:找出系统中所有与 passwd 相关的档名,且只列出 5 个

[[email protected] ~]# locate -l 5 passwd

/etc/passwd

/etc/passwd-

/etc/pam.d/passwd

/etc/security/opasswd

/usr/bin/gpasswd

范例二:列出 locate 查询所使用的资料库文件之档名与各资料数量

[[email protected] ~]# locate -S

Database /var/lib/mlocate/mlocate.db:

8,086 directories # 总纪录目录数

109,605 files # 总纪录文件数

5,190,295 bytes in file names

2,349,150 bytes used to store database

find命令详解

[[email protected] ~]# 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) 的文件列出

[[email protected] ~]# find / -mtime 0

那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,

有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?

find / -mtime 3 有变动过的文件都被列出的意思!

范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出

[[email protected] ~]# find /etc -newer /etc/passwd

-newer 用在分辨两个文件之间的新旧关係是很有用的!

  1. 与使用者或群组名称有关的参数:

    -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 搜寻。

    范例三:搜寻 /home 底下属于 dmtsai 的文件

    [[email protected] ~]# find /home -user dmtsai

这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,

就可以利用这个指令将属于某个使用者的所有文件都找出来喔!

范例四:搜寻系统中不属于任何人的文件

[[email protected] ~]# find / -nouser

透过这个指令,可以轻易的就找出那些不太正常的文件。如果有找到不属于系统任何人的文件时,

不要太紧张,那有时候是正常的~尤其是你曾经以原始码自行编译软体时。

  1. 与文件权限及名称有关的参数:

    -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…. 的属性存在!范例五:找出档名为 passwd 这个文件

[[email protected] ~]# find / -name passwd

范例五-1:找出档名包含了 passwd 这个关键字的文件

[[email protected] ~]# find / -name “passwd

利用这个 -name 可以搜寻档名啊!预设是完整档名,如果想要找关键字,

可以使用类似 * 的任意字元来处理

范例六:找出 /run 目录下,文件类型为 Socket 的档名有哪些?

[[email protected] ~]# find /run -type s

这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,

例如 socket 与 FIFO 文件,可以用 find /run -type p 或 -type s 来找!

范例七:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性

[[email protected] ~]# find / -perm /7000

所谓的 7000 就是 —s–s–t ,那么只要含有 s 或 t 的就列出,所以当然要使用 /7000,

使用 -7000 表示要同时含有 —s–s–t 的所有三个权限。而只需要任意一个,就是 /7000 ~瞭乎?

  1. 额外可进行的动作:

    -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。

    -print :将结果列印到萤幕上,这个动作是预设动作!范例八:将上个范例找到的文件使用 ls -l 列出来~

[[email protected] ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;

注意到,那个 -exec 后面的 ls -l 就是额外的指令,指令不支援命令别名,

所以仅能使用 ls -l 不可以使用 ll 喔!注意注意!范例九:找出系统中,大于 1MB 的文件

[[email protected] ~]# find / -size +1M

find 的特殊功能就是能够进行额外的动作(action)。

find 相关的额外动作

该范例中特殊的地方有 {} 以及 \; 还有 -exec 这个关键字,这些东西的意义为:

{} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;

-exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 指令内的额外动作。 在本例中就是『 ls -l {} 』啰!

因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜线来跳脱。

时间: 2024-10-27 12:55:46

Linux入门级需要掌握的命令的相关文章

&#8203;查看Linux系统的所有配置命令

查看Linux系统的所有配置命令     1.查看主板的序列号: dmidecode | grep -i 'serial number'     2.查看CPU信息: cat /proc/cpuinfo dmesg | grep -i 'cpu' dmidecode -t processor     3.查看内存信息: cat /proc/meminfo free -m vmstat     5.查看网卡信息: dmesg | grep -i 'eth' cat /etc/sysconfig/h

Linux系统下的shutdown命令用于安全的关闭/重启计算机

Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提示关机操作.定时关机只需要一个简单的参数,既可以是倒计时,也可以是确切的时间. 命令格式 1 shutdown [选项] [时间] [消息] 并有如下选项: - k 不执行任何关机操作,只发出警告信息给所有用户 - r 重新启动计算机 - h 关机并彻底断电 - f 快速关机且重启动时跳过fsck

Linux服务器开发常用的命令以及遇到的问题

1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多.参考资料:http://en.wikipedia.org/wiki/Load_average 2. 如何查看linux服务器负载 可以通过w,top,uptime,procinfo命令,也可以通过/proc/loadavg文件查看. 3. 服务器负载高怎么办? 服务器负载(load/load average)是根据进程队列的

linux下oralcle11g使用edit命令默认调用vi编辑器

linux下oralcle11g使用edit命令默认调用vi编辑器: 在        $ORACLE_HOME/sqlplus/admin/glogin.sql   最后一行添加   define_editor=vi  即可. linux下oralcle11g使用edit命令默认调用vi编辑器,布布扣,bubuko.com

Linux的chattr与lsattr命令介绍

Linux的chattr与lsattr命令介绍 命令lsattr是用来查看文件.目录属性的,命令chattr是用来对其做更改的.与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. chattr命令语法: chattr [+-=][Asaci][文件或者目录名] 注:+表示增加,-表示减少,=表示设定. A:增加该属性后,表示文件或者目录的atime将不可修改. s:增加该属性后,会将数据同步写入磁盘中. a:增加该属性后,表示只能追加不能

Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示(待补全)

目录管理类命令: cd,, ls,mkdir, rmdir, tree cd cd命令用来切换工作目录至dirname.其中dirName表示法可为绝对路径或相对路径. 命令格式:cd [目录名] 命令选项: -p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录 -L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录. - 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"

Linux下静态路由配置命令

linux下静态路由修改命令 方法一: 添加路由 route add -net 192.168.1.0/24 gw 192.168.1.1 route add -host 192.168.1.8 dev 192.168.1.1 删除路由 route del -net 192.168.0.0/24 gw 192.168.0.1 add 增加路由 del 删除路由 -net 设置到某个网段的路由 -host 设置到某台主机的路由 gw 出口网关 IP地址 dev 出口网关 物理设备名 增加默认路由

备起来!Linux安全运维常见命令小贴士

备起来!Linux安全运维常见命令小贴士 常用命令 1. 查找关键词并统计行数 cat 2015_7_25_test_access.log | grep "sqlmap" | wc -l 2. 删除含有匹配字符的行 sed -i '/Indy Library/d' 2015_7_25_test_access.log 3. 查找所有日志中的关键词 find ./ -name "*.log" |xargs grep "sqlmap" |wc -l 4

Linux基础--进程管理相关命令介绍(2)

本文主要介绍了Linux中进程管理的相关命令,涉及到的主要命令有top,vmstat等. (1)top ①功能:用来查看CPU,内存以及进程的状态. ②用例: ③相关注释: load average表示负载,三个数值分别表示第1分钟,第5分钟,第10分钟 Cpu中us表示用户空间程序占用百分比,sy表示内核模式占用百分比,ni表示调整NICE值所占用的    CPU百分比,id表示CPU的空闲比例,wa表示等待磁盘IO完成所占用的时间比例,hi表示硬件中断占     据的百分比,si表示软中断所