linux常用命令及基础总结

一、挂载

Linux内的所有数据都是以文件的形态来呈现的,所以,整个Linux系统最重要的地方就是目录树架构。所谓目录树架构(directorytree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构。所以,整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方法为一条斜线『/』,所有的文件都与目录树有关。

我们现在知道整个Linux系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分区当中的,现在的问题是『如何结合目录树的架构与磁盘内的数据』呢?这个时候就牵扯到『挂载 (mount)』的问题啦!

所谓的『挂载』就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下;也就是说,进入该目录就可以读取该分区的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区的。至于其他的目录则可依用户自己的需求来给予挂载到不同的分区。

每个filesystem都有独立的inode/block/superblock等信息,这个文件系统要能够链接到目录树才能被我们使用。 将文件系统与目录树结合的动作我们称为『挂载』。重点是:挂载点一定是目录,该目录为进入该文件系统的入口。 因此并不是你有任何文件系统都能使用,必须要『挂载』到目录树的某个目录后,才能够使用该文件系统的。

二、相对路径与绝对路径

绝对路径:路径的写法『 一定由根目录/写起』,例如: /usr/share/doc这个目录。
相对路径:路径的写法『 不是由 /写起』,例如由/usr/share/doc要到 /usr/share/man底下时,可以写成:『 cd ../man』这就是相对路径的写法啦!相对路径意指『相对于目前工作目录的路径!』

注意给的路径要正确,开始都是从根目录下一级级的寻找的,不能跳跃。

三、linux下命令讲解



还有chown、chgrpchmod、tar等常用命令的。


显示当前目录内容(目录清单)(如果按文件改动时间顺序来排序,则可用ls  -lt)ls

显示当前目录下文件的详细信息,包括读写权限,文件大小,文件生成日期等(若想按照更改的时间先后排序,则需加-t参数,ll  -tll -t  |tac,后者为最新修改的时间排在最后。如果只想看某个文件的信息,可用ls -l 文件名)ll

改变当前工作目录位置(若进入系统根目录,可直接使用cd /)cd directory_name,若文件夹有空格,则需用引号括起来,如进入目录名为a b的目录,则为:cd  “a b”

删除当前目录中指定文件,如删除.xxx的所有文件,(对于链接文件,只是删除了链接,原有文件均保持不变;如果没有使用-r选项,则rm不会删除目录;如果想删除前再次获取确认,可使用-i选项,如rm  -i  xxx)rm  *.xxx

删除空目录,一个目录被删除之前必须是空的,删除某目录时也必须具有对父目录的写权限:rmdir  xxx(若是非空则删除不了)

请注意呦!目录需要一层一层的删除才行!而要被删除的目录里面必定不能存在其他的目录或档案!这也是所谓的空目录(empty directory)的意思啊!那如果要将所有目录下的东西都杀掉呢?! 这个时候就必须使用『rm -r test 』啰!不过,还是使用 rmdir 比较不危险!你也可以尝试以 -p 的选项加入,只删除上层的目录喔! 

移动文件(若将文件xx.yy移动到目录tt中,则为mv  xx.yy tt)将文件改名(若将文件名xx.yy改为aa.bb,则为mv  xx.yy aa.bb)mv 源文件或目录 目标文件或目录

复制文件(可同时有多个文件)或目录到指定的目录(若将目录aa复制到bb目录中,则为:cp -a aa  bb)cp 源文件或源目录 目的目录

查看某个指令的详细说明,如查看rm指令:man  rm

建立新目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录,(如果创建权限为777的目录,可用mkdir  -m 777  filename)mkdir filename

查看当前所处路径(完整路径)pwd是 Print WorkingDirectory的缩写,pwd

需要提示权限执行的命令,如果你不是root用户,那么在执行一些命令做一些操作的时候有时是不允许的,此时可以在命令前面加上sudosudo

显示系统日期date

关闭系统(若非root,则shutdown前需加sudo)shutdown  -h  now

重启系统(若非root,则shutdown前需加sudo)shutdown  -r  now

 查看某个系统命令是否存在或者查看某个可执行文件的位置,若查找ls命令的位置,则which  ls会返回/bin/ls,若找不到该命令(或该执行文件),则不会有任何返回结果:which  commandname

chmod命令用于变linux系统文件或目录的访问权限Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读、只写和可执行三种。有三种不同类型的用户可对文件或目录进行访问,文件所有者(一般是文件的创建者),同组用户,其他用户。每一文件或目录的访问权限都有三组,每组用三位来表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls  -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。确定了一个文件的访问权限后,用户可以利用chmod命令来重新设定不同的访问权限。权限代号:r:读权限,用数字4表示;w:写权限,用数字2表示;x:执行权限,用数字1表示;-:删除权限,用数字0表示;s:特殊权限。如对目录test及其子目录所有文件添加可读可写可执行权限,则为:chmod  -R 777  test

passwd命令用来修改账户的登陆密码

su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。

chgrp表示修改一个或多个文件或目录所属的组。

chown更改一个或多个文件或目录的属主和属组。

chattr修改ext2ext3文件系统属性(attribute),使用权限超级用户。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护//dev/tmp/var目录。本命令是重要的,尤其是在系统的安全性上面。由于这些属性是隐藏的性质,所以需要以 lsattr才能看到该属性。其中,最为重要的是属 +i 这个属性了,因为他可以让一个档案无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要 root 才能设定的!此外,如果是 log file 这种的登录档,就更需要 +a 这个可以增加,但不会被杀掉的参数了。

查看文件或目录磁盘使用的空间大小,可以用du命令,如显示test目录大小,则将终端定位到test目录后,输入:du  -s

diff比较单个文件或者目录内容.如果指定比较的是文件,则只有当输入为文本文件时才有效.以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的时候,diff命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。如比较1.txt2.txt两个文本文件,可为:diff  -c 1.txt  2.txt ,会将内容不同的地方在行之前用”!”标出。


grep命令是一种强大的文本搜索工具。如从test.txt文件中查Android关键词,则为:grep  -n  ‘android’  test.txt . 也可以同时从多个文件中查找关键词,如:grep -n  ‘android’  test1.txt test2.txt

wc命令用于统计指定文件中的行数、字数、字节数,并将统计结果显示输出。如:wc  test.txt ,输出为8 9 10  test.txt , 其中8表示行数,9表示字数,10表示字节数,test.txt表示文件名。如果统计当前目录下带有后缀名为frmaspbas的代码行数,则命令为find  . -name  “*.frm”  -or-name “*.bas”  -or -name “*.asp”  | xargs wc  -l> result.txt,执行完此命令后会在当前目录下生成一个result.txt文件,里面包含了每个文件(frm/bas/asp)的代码行数以及总的代码行数。

可以使用apt-get命令来安装/更新一个deb,如安装g++,则:apt-get install g++

ps -ef命令用来查看Linux系统所有进程,如果想查看包含指定名字( test)的进程,则可以执行:$ ps-ef | grep test

最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

注意:ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。

杀死指定的进程可以用kill命令,如杀死进程PID30732的进程,则可以执行:$ kill-9 30732 ,若需要批量杀死进程,则可执行:$ ps aux | grep test | awk ‘{print $2}’ | xargskill -9

查看机子ipMAC地址$ifconfig,ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。

显示文件内容(若显示aa.txt的文件内容,则为cat  aa.txt),或者将几个文件连接起来显示:cat  filename

cat的使用

1cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令:$ cat README
2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把READMEINSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1中:$ cat README INSTALL File1
3cat还有一个重要的功能就是可以对行进行编号。这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。

将输出的文件内容自动的加上行号nl filename

以一页一页的方式显示文件的内容,按空格键(space)为显示下一页;按b键会往回(back)一页显示;按q键退出moremore filename

分页显示文件的内容,类似于more,但比more功能更强大;按q键退出less;若搜索文件中某个字符串xxx,可使用/xxx来做到;通过加入-N参数来显示每行的行号:less  参数  filename

利用符号链接快速访问关键目录:符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用,但由于Linux的文件和目录结构等原因,这个文件或目录在很深的子目录中。并不想每次都要从主目录进入这样一个长的路径之中(实际上,这个路径也非常不容易记忆)为了解决这个问题,可以在主目录中创建一个符号链接,这样在需要进入该目录时,只需进入这个链接即可。


这样每次进入haha目录就可访问。删除haha时,真正的文档并没有删除。

在 Linux 底下也有相当优异的搜寻指令!通常 find 不很常用的!因为速度慢。通常我们都是先使用whereis 或者是locate 来检查,如果真的找不到了, 才以 find 来搜寻! 为什么呢?因为 whereis 与 locate 是利用数据库来搜寻数据,所以相当快速,而且并没有实际的搜寻硬盘,比较省时间啦!

find命令查找文件的几种方法:

(1)根据文件名查找
例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:
find / -namelilo.conf
find命令后的“/”表示搜索整个硬盘。
(2)快速查找文件
根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:
find /etc -namesmb.conf
这样,使用“快速查找文件”方式可以缩短时间。
(3)根据部分文件名查找方法
有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:
find / -name'*abvd*'
输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。
(4) 使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。
find /etc -size +500000c -and -mtime +1

tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。选项f基本是必须的。


我们知道查阅文件属性的指令 ls 完整文件名为:/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:『 为什么我可以在任何地方执行/bin/ls 这个指令呢? 』 为什么我在任何目录下输入 ls 就一定可以显示出一些信息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助。当我们在执行一个指令的时候,举例来说说『 ls』好了,系统会依照 PATH 的设置去每个 PATH 定义的目录下搜寻文件名为 ls 的可执行文件, 如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件, 那么先搜寻到的同名指令先被执行!

现在,请下达『 echo $PATH』指令看看到底有哪些目录被定义出来了? echo 有『显示、印出』的意思,而 PATH 前面加的$ 表示后面接的是变量,所以会显示出目前的 PATH !

 四、文件属性

一个文件有若干个属性, 包括读写执行(r,w, x)等基本权限,以及是否为目录(d) 与文件 (-) 或者是连接文件 (l) 等的属性!

第一个字符表示文件类型,而文件类型主要有:

[d]:目录

[-]:文件

[l]:连接文件

[b]:设备文件里面的可供存储的接口设备

[c]:设备文件里面的串行端口设备

对于用惯了windows的我们来说,并不是每一个文件都是可执行的,它与文件的后缀有关,可执行文件的后缀为.exe,而在Linux下,一个文件是否可执行,与后缀是没有绝对关系的,而是由文件是否具有“x”这个权限来决定的。而“w”代表你具有写入、编辑、新增、修改文件内容的权限,却不具备删除该文件本身的权利。rwx主要针对文件的内容。

在默认权限的属性上,目录与文件是不一样的。我们知道 x 权限对于目录是非常重要的! 但是一般文件的建立则不应该有执行的权限,因为一般文件通常是用于数据记录的!当然不需要执行的权限了。因此,默认的情况如下:
· 若使用者建立为『文件』则默认『没有可执行( x )权限』,亦即只有 rw 这两个选项,也就是最大为 666分,默认权限如下: -rw-rw-rw-
· 若用户建立为『目录』,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,默认权限如下: drwxrwxrwx ,要注意的是,umask 的分数指的是『 该默认值需要减掉的权限!』因为 r、 w、 x 分别是 4、 2、 1 分, 所以啰!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分, 那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分。

然而,从上面的文件类型可知,文件类型也可能是目录,那么对一个目录进行写和执行显然是没有意义的,那么它到底意味着什么呢?它与普通文件类型[-]又有什么不同呢?

我们知道,文件是存放实际数据的所在,目录主要的内容是记录文件名列表,文件名与目录有强烈的关联。

所以,对于目录来说,r表示具有读取目录结构列表的权限,可以查询该目录下的文件名数据,例如你用ls命令显示目录的内容列表。

对于目录来说w可以说是强大的,它表示具有更改该目录结构的权限,如新建新的目录和文件,删除已存在的文件与目录(不论该文件的权限如何),将已存在的文件或目录进行重命名,转移该目录内的文件和目录位置等。

你可能会觉得x对于一个目录来说总是怪怪的,但是它却是非常有用的,目录的x表示用户能否进入该目录成为工作目录,如是否能使用cd命令切换到该目录下。

值得注意的是:如果你对一个目录具有r权限而没有x权限,你能使用ls查看目录下的文件列表,却不能进入到该目录,也就不能对目录里的任何文件进行操作,即使你对目录中的文件具有rwx权限。

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

当我们执行如下的ls命令时,我们可能会看到很奇怪的结果:

在第一列,中我们看到了上面介绍之外的文件权限属性,s和t。

1)SUID

当s这个标志出现在文件所有者的x权限上时,如上面的第二个例子,则被称为Set UID,简称SUID的特殊权限。

基本上SUID具有如下的限制和功能:

a、SUID权限仅对二进制程序有效,不能用在shell script上面,对目录也是无效的;

b、执行者对于该程序需要具有x的可执行权限;

c、本权限在执行该程序的过程中有效;

d、执行者将具有该程序所有者的权限;

看到这里,可能对于SUID还不是很理解,举上面的例子来说,就是passwd这个程序是root这个用户所有的,并属于root用户组,但是我们知道,对于普通用户,他们还是能够改变自己的密码,这是为什么呢?其原因在于:

1、passwd是一个可执行的二进制程序;

2、这个可执行文件在文件所有者的x权限上的标志是s,即设置了SUID;

3、普通用户对于root用户和root用户组来说是其他用户(Others),然而从文件的权限中我们可以知道,它支持其他用户(Others)对其进行读和执行的操作,注意,这点很重要,因为如果Others的权限(后三位)设置为r--,则普通的用户就不能执行passwd这个程序了,即使它在文件所有者的x权限上的标志是s。(注:这个可执行权限要对应用户的角色,在相应的权限中有x的权限,如上面的例子中,无论是文件所有者,用户组,还是Others都具有x的权限。)

4、在执行passwd这个程序时,普通的用户将会获得passwd这个程序的所有者的权限,即root对该程序的权限,而不是Others或用户组的权限;

5、但是这个权限仅在passwd这个程序执行的过程中才有效,程序执行完毕之后,普通用户就不再拥有这种权限了;

2)SGID

相应地,当s出现在用户组的x时则称为Set GID,即SGID。SGID可以针对文件和目录来设置

对于文件来说,SGID有如下限制和功能:

a、SGID对二进制程序有用;

b、程序执行者对于该程序来说,需要具备x的权限;

c、执行者在执行的过程中将会获得该程序用户组的支持。

对于文件的权限和操作来说,基本上与SUID相同,只是它获得的不是程序所有者的权限,而是它的用户组的权限。

而SGID可用于目录,对于目录来说,SGID有如下的限制和功能:

a、用户若对于此目录具有r与x的权限,该用户能够进入此目录;

b、用户在此目录下的有效用户组将会变成该目录的用户组;

c、若用户在此目录下具有w的权限,则用户所创建的新文件的用户组与此目录的用户组相同。

3)SBIT

SBIT只针对目录有效,它对目录的作用是:

当用户对于此目录具有w,x权限,即具有定稿的权限时,用户在该目录下创建文件或目录,只有自己与root才有权利删除该文件。

注:文件的三种特殊权限也可以用数学表示,4为SUID,2为SGID,1为SBIT,如-rwsr-xr-x,按照前面的计算我们知道,原先为755,由于它有SUID特殊权限,所以就变成了4755了。

五、linux文件系统的运作

Linux 最传统的磁盘文件系统(filesystem)使用的是 EXT2 这个啦!所以要了解文件系统就得要由认识 EXT2 开始!

我们都知道磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个分区。为什么需要进行『格式化』呢?这是因为每种操作系统所设定的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的『文件系统格式 (filesystem)』。

那么文件系统是如何运作的呢?这与操作系统的文件数据有关。较新的操作系统的文件数据除了文件实际内容外,通帯含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(拥有者、群组、 时间参数等)。文件系统通常会将这两部分的数据分别存放在不同的区块,权限与属性放置到inode中,至于实际数据则放置到data block区块中。另外,还有一个超级区块 (superblock) 会记彔整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。每个inode与block都有编号,至于这三个数据的意义可以简略说明如下:
· superblock:记彔此filesystem的整体信息,包括 inode/block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
· inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;
· block:实际记录文件的内容,若文件太大时,会占用多个block。由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码。因此,我们可以知道的是,如果能够找到文件的 inode 的话,那么自然就会知道这个文件所放置数据的 block 号码,当然也就能够读出该文件的实际数据了。这是个比较有效率的作法,因为如此一来我们的磁盘就能够在短时间内读取出全部的数据,读写的效能比较好。

如下图所示,文件系统先格式化出 inode 与 block 的区块,假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个 block 内容读出来! 那么数据的读取就如同下图中的箭头所指定的模样了。


这种数据存取的方法我们称为索引式文件系统(indexed allocation)。那有没有其他的惯用文件系统可以比较一下啊? 有的,那就是我们惯用的U盘,U盘使用的文件系统一般为 FAT格式。 FAT 这种格式的文件系统并没有 inode存在,所以 FAT没有办法将这个文件的所有 block在一开始就读取出来。每个 block号码都记录在前一个 block当中, 他的读取方式有点像底下这样:


图中我们假设文件的数据依序写入1->7->4->15 号这四个 block 号码中, 但这个文件系统没有办法一口气就知道四个 block 的号码,他得要一个一个的将 block 读出后,才会知道下一个 block 在何处。如果同一个档案数据写入的 block 分散的太过厉害时,则我们的磁盘读取头将无法在磁盘转一圈就读到所有的数据,因此磁盘就会多转好几圈才能完整的读取到这个文件的内容!

通常会听到所谓的『碎片整理』吧? 需要碎片整理的原因就是文件写入的block 太过于离散了,此时文件读取的效能将会变的很差。这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起,这样数据的读取会比较容易!

Ext2文件系统在格式化的时候基本上是区分为多个区块群组 (blockgroup) 的,每个区块群组都有独立的 inode/block/superblock 系统。感觉上就好像我们在当兵时,一个营里面有分成数个连,每个连有自己的联络系统,但最终都向营部回报连上最正确的信息一般!这样分成一群群的比较好管理啦!整个来说,Ext2 格式化后有点像底下这样:


当我们在Linux下的ext2文件系统建立一个目录时,ext2会分配一个inode与至少一块block给该目录。其中,inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件名占用的inode号码数据。也就是说目录所占用的block内容在记录如下的信息:


由于目录树是由根目录开始读起,因此系统透过挂载的信息可以找到挂载点的inode号码(通常一个filesystem的最顶层inode号码会由2号开始!),此时就能够得到根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层一层的往下读到正确的文件名。


六、下面的内容为转载的一篇写的很好的有关常用命令的文章

原文地址:http://blog.csdn.net/ljianhui/article/details/11100625

1、cd命令

这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:
cd /root/Docements              # 切换到目录/root/Docementscd ./path                       # 切换到当前目录下的path目录中,“.”表示当前目录cd ../path                      # 切换到上层目录中的path目录中,“..”表示上一层目录
2、ls命令
这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多,下面就列出一些我常用的参数吧,如下:
  • -l :列出长数据串,包含文件的属性与权限数据等
  • -a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录的文件数据
  • -h :将文件容量以较易读的方式(GB,kB等)列出来
  • -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
注:这些参数也可以组合使用,下面举两个例子:
$ ls -l           #以长数据串的形式列出当前目录下的数据文件和目录
$ ls -lR          #以长数据串的形式列出当前目录下的所有文件

3、grep命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为
grep [-acinv] [--color=auto] '查找字符串' filename

它的常用参数如下:

  • -a :将binary文件以text文件的方式查找数据
  • -c :计算找到‘查找字符串’的次数
  • -i  :忽略大小写的区别,即把大小写视为相同
  • -v :反向选择,即显示出没有‘查找字符串’内容的那一行

例如,取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色

grep --color=auto 'MANPATH' /etc/man.config

把ls -l的输出中包含字母file(不区分大小写)的内容输出

$ ls -l | grep -i file

4、find命令

find是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:
$ find [PATH] [option] [action]

与时间有关的参数:

  • -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
  • -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
  • -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
  • -newer file : 列出比file还要新的文件名
例如,
$ find /root -mtime 0                    #在当前目录下查找今天之内有改动的文件
# 与用户或用户组名有关的参数:
  • -user name : 列出文件所有者为name的文件
  • -group name : 列出文件所属用户组为name的文件
  • -uid n : 列出文件所有者为用户ID为n的文件
  • -gid n : 列出文件所属用户组为用户组ID为n的文件
例如,
$ find /home/ljianhui -user ljianhui     #在目录/home/ljianhui中找出所有者为ljianhui的文件
与文件权限及名称有关的参数:
  • -name filename :找出文件名为filename的文件
  • -size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
  • -tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、 目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
  • -perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
  • -perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
  • -perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
例如,
$ find / -name passwd                    #查找文件名为passwd的文件
$ find . -perm 0755                      #查找当前目录中文件权限的0755的文件
$ find . -size +12k                      # 查找当前目录中大于12KB的文件,注意c表示byte

5、cp命令

该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下,它的常用参数如下:
  • -a :将文件的特性一起复制
  • -p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
  • -i :若目标文件已经存在时,在覆盖时会先询问操作的进行
  • -r :递归持续复制,用于目录的复制行为
  • -u :目标文件与源文件有差异时才会复制
例如 :
$ cp -a file1 file2              #连同文件的所有特性把文件file1复制成文件file2
$ cp file1 file2 file3 dir       #把文件file1、file2、file3复制到目录dir中

6、mv命令

该命令用于移动文件、目录或更名,move之意,它的常用参数如下:
  • -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件已经存在,就会询问是否覆盖
  • -u :若目标文件已经存在,且比目标文件新,才会更新
注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。
例如:
$ mv file1 file2 file3 dir     # 把文件file1、file2、file3移动到目录dir中
$ mv file1 file2               # 把文件file1重命名为file2

7、rm命令

该命令用于删除文件或目录,remove之间,它的常用参数如下:
  • -f :就是force的意思,忽略不存在的文件,不会出现警告消息
  • -i :互动模式,在删除前会询问用户是否操作
  • -r :递归删除,最常用于目录删除,它是一个非常危险的参数
例如:
$ rm -i file         # 删除文件file,在删除之前会询问是否进行该操作
$ rm -fr dir         # 强制删除目录dir中的所有文件

8、ps命令

该命令用于将某个时间点的进程运行情况选取下来并输出,process之意,它的常用参数如下:
  • -A :所有的进程均显示出来
  • -a :不与terminal有关的所有进程
  • -u :有效用户的相关进程
  • -x :一般与a参数一起使用,可列出较完整的信息
  • -l :较长,较详细地将PID的信息列出
其实我们只要记住ps一般使用的命令参数搭配即可,它们并不多,如下:
$ ps aux       # 查看系统所有的进程数据
$ ps ax        # 查看不与terminal有关的所有进程
$ ps -lA       # 查看系统所有的进程数据
$ ps axjf      # 查看连同一部分进程树状态

9、kill命令

该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,它的基本语法如下:
kill -signal PID

signal的常用参数如下:

注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。
  • 1:SIGHUP,启动被终止的进程
  • 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
  • 9:SIGKILL,强制中断一个进程的进行
  • 15:SIGTERM,以正常的结束进程方式来终止进程
  • 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
例如:
kill -SIGTERM %1    #以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程kill -SIGHUP PID    #重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得

10、killall命令

该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:
$ killall [-iIe] [command name]

它的参数如下:

  • -i :交互式的意思,若需要删除时,会询问用户
  • -e :表示后面接的command name要一致,但command name不能超过15个字符
  • -I :命令名称忽略大小写

例如:

$ killall -SIGHUP syslogd      # 重新启动syslogd

11、file命令

该命令用于判断接在file命令后的文件的基本数据,因为在Linux下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了,它的用法非常简单,基本语法如下:
$ file ./test

12、tar命令

该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。它的常用参数如下:
  • -c :新建打包文件
  • -t :查看打包文件的内容含有哪些文件名
  • -x :解打包或解压缩的功能,可以搭配
  • -C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
  • -j :通过bzip2的支持进行压缩/解压缩
  • -z :通过gzip的支持进行压缩/解压缩
  • -v :在压缩/解压缩过程中,将正在处理的文件名显示出来
  • -f filename :filename为要处理的文件
  • -C dir :指定压缩/解压缩的目录dir
上面的解说可以已经让你晕过去了,但是通常我们只需要记住下面三条命令即可:
$ tar -jcv -f filename.tar.bz2 fileordir          #将fileordir压缩,压缩后文件名为filename.tar.bz2
$ tar -jtv -f filename.tar.bz2                    #查询filename.tar.bz2中的文件
$ tar -jxv -f filename.tar.bz2 -C targetdir       #将filename.tar.bz2解压到targetdir目录
注:文件名并不定要以后缀tar.bz2结尾,这里主要是为了说明使用的压缩程序为bzip2

13、cat命令

该命令用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用,从而可以一页页地查看数据。例如:
$ cat text | less # 查看text文件中的内容

注:这条命令也可以使用less text来代替

14、chgrp命令

该命令用于改变文件所属用户组,它的使用非常简单,它的基本用法如下:
$ chgrp [-R] dirname/filename

-R :进行递归的持续对所有文件和子目录更改
例如:

$ chgrp users -R ./dir        # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users

15、chown命令

该命令用于改变文件的所有者,与chgrp命令的使用方法相同,只是修改的文件属性不同,不再详述。

16、chmod命令

该命令用于改变文件的权限,一般的用法如下:
chmod [-R] xyz 文件或目录

-R:进行递归的持续更改,即连同子目录下的所有文件都会更改

同时,chmod还可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟rwx搭配来对文件的权限进行更改。
例如:
chmod 0755 file      # 把file的文件权限改变为-rxwr-xr-xchmod g+w file       # 向file的文件权限中加入用户组可写权限

18、vim命令

该命令主要用于文本编辑,它接一个或多个文件名作为参数,如果文件存在就打开,如果文件不存在就以该文件名创建一个文件。vim是一个非常好用的文本编辑器,它里面有很多非常好用的命令,在这里不再多说。你可以从这里下载vim常用操作的详细说明。

19、gcc命令

对于一个用Linux开发C程序的人来说,这个命令就非常重要了,它用于把C语言的源程序文件,编译成可执行程序,由于g++的很多参数跟它非常相似,所以这里只介绍gcc的参数,它的常用参数如下:
  • -o :output之意,用于指定生成一个可执行文件的文件名
  • -c :用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序
  • -I :增加编译时搜索头文件的路径
  • -L :增加编译时搜索静态连接库的路径
  • -S :把源文件生成汇编代码文件
  • -lm:表示标准库的目录中名为libm.a的函数库
  • -lpthread :连接NPTL实现的线程库
  • -std= :用于指定把使用的C语言的版本

例如:

$ gcc -o test test.c -lm -std=c99   #把源文件test.c按照c99标准编译成可执行程序test 
$ gcc -S test.c                     #把源文件test.c转换为相应的汇编程序源文件test.s

20、time命令

该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个time即可,例如:
time ./process
$ time ps aux
在程序或命令运行结束后,在最后输出了三个时间,它们分别是:
  • user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
  • system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;
  • real:实际时间,从command命令行开始执行到运行终止的消逝时间;
注:用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值