linux 基础命令
1、ls:
ls命令是linux下最常用的命令,是list的缩写。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
命令格式:ls [选项] [目录名]
命令实例:
①列出/home/test文件夹下的所有文件和目录的详细资料:ls -lR /home/test
②列出当前目录中所有以 “p” 开头的目录的详细内容:ls -l t*
③只列出文件下的子目录,列出 /opt/soft 文件下面的子目录:ls -F /opt/soft/ | grep /$
列出 /opt/soft 文件下面的子目录:ls -l /opt/soft | grep "^d"
④列出当前目录下所有名称 s 开头的文件,时间正序排列:ls -ltr s*
⑤计算当前目录下文件和目录数:
ls -l * |grep “^-“|wc -l —文件个数
ls -l * |grep “^d”|wc -l —目录个数
⑥在 ls 中列出文件的绝对路径:ls | sed "s:^:`pwd`/:"
⑦递归列出当前目录下的所有文件(包括隐藏文件)的绝对路径:find $PWD | xargs ls -ld
2、cd:目录切换
命令格式:cd [目录名]
3、pwd:查看”当前工作目录“的完整路径
4、mkdir :
用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
命令格式:mkdir [选项] 目录…
命令实例:①递归创建多个目录:mkdir -p test2/test22
②创建权限为777的目录:mkdir -m 777 test3
③一个命令创建项目的目录结构: mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}
输出:
mkdir: 已创建目录 “scf”
mkdir: 已创建目录 “scf/lib”
mkdir: 已创建目录 “scf/bin”
mkdir: 已创建目录 “scf/doc”
mkdir: 已创建目录 “scf/doc/info”
mkdir: 已创建目录 “scf/doc/product”
mkdir: 已创建目录 “scf/logs”
......
5、rm:
删除一个目录中的一个或多个文件或目录,对于链接文件,只是删除了链接,原有文件均保持不变。
命令格式:rm [选项] 文件…
部分常用命令:
①删除test目录及子目录中的所有文件,且不用一一确认:rm -rf test2
②删除以 -f 开头的文件:rm -- -f
6、rmdir:
删除空目录,一个目录被删除之前必须是空的。(注意,rm – r dir命令可代替rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。
命令格式:rmdir [选项]… 目录…
命令实例:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除,删除logs包含的空目录:rmdir -p logs
7、mv:
可以用来移动文件或者将文件改名,视mv命令中第二个参数类型的不同(是目标文件还是目标目录)
命令格式:mv [选项] 源文件或目录 目标文件或目录
命令参数:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
8、cp:
将源文件复制至目标文件,或将多个源文件复制至目标目录。
命令格式:cp [选项]… [-T] 源 目的 或 :cp [选项]… 源… 目录 或:cp [选项]… -t 目录 源…
部分常用命令:
①复制整个目录(目标目录存在与否结果是不一样的):cp -a test test1
②复制一个log.log 建立一个log_link.log(log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』): cp -s log.log log_link.log
9、touch:
更改文档或目录的日期时间,包括存取时间和更改时间
命令格式:touch [选项]... 文件...
命令实例:
①创建不存在的文件:touch log2012.log log2013.log
②更新log.log 时间 和 log2.log时间戳相同:touch -r log.log log2.log
③设定文件的时间戳:touch -t 201211142234.50 log.log
10、cat:
连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
其他功能:
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file
命令格式:cat [选项] [文件]...
命令实例:
①把log1文件内容加上行号输入到log2文件:cat -n log1.log log2.log
②把log1和log2文件内容加上行号(空白行除外),输入到log文件:cat -b log1.log log2.log log.log
注:tac:是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
11、nl:
计算文件中行号,nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。nl 命令读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl 命令根据您在命令行中指定的标志来计算左边的行。 输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。 除非使用 -p 标志,nl 命令在每个逻辑页开始的地方重新设置行号。 可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。
命令格式:nl [选项]... [文件]...
命令实例:
①用nl 列出log.log的内容:nl log.log
②用nl 列出log.log的内容,包括空行:nl -b a log.log
③用nl 列出log.log的内容,行号前面自动补0,统一输出格式:nl -b a log.log;nl -b a -n rz -w 3 log.log
nl -b a -n rz 命令行号默认为六位,要调整位数可以加上参数 -w 3 调整为3位。
12、more:
功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
命令格式:more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
命令实例:
①从文件第三行读取:more +3 log.log
②从文件中找出第一次出现“day3”字符串的行,并从该处前两行显示输出: more +/day3 log2012.log
③设定每屏显示行数:more -5 log2012.log
④结合ls 显示目录:ls -l | more -5
13、less:
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
命令格式:less [参数] 文件
命令实例:
①ps 查看进程信息,并通过less分页显示:ps -ef |less
②查看命令历史,并通过less分页显示: history | less
③浏览多个文件:Less log1.log log2.log
注:
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
14、head:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
命令格式:head [参数]... [文件]...
命令实例:
①显示前 n 行文件:head -n 5 log.log
②显示文件前 n 个字节:head -c 20 log.log
③显示文件除了最后n个字节以外的内容:head -c -32 log.log
④显示文件除最后 n 行的全部内容:head -n -6 log.log
15、tail:
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新
命令格式:tail[必要参数][选择参数][文件]
命令实例:
①显示文件后几行的信息:tail -n 5 log2014.log
②循环查看文件内容:tail -f test.log
③从第五行开始显示文件:tail -n +5 log.log
16、which:
在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
命令格式:which 可执行文件名称
命令参数:
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同,但此处的包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息
命令实例:
①查找文件,显示命令路径:which lsmod
which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令不一样
17、whereis:
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置,只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis 和 locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名
命令参数:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
命令实例:
①查找所有和 ** 相关的文件:whereis svn
②只将二进制文件查找出来:whereis -b svn
18、locate:
locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)。locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等)来指定范本样式。locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
命令格式:Locate [选择参数] [样式]
命令实例:
①查找和pwd相关的所有文件:locate pwd
②搜索etc 目录下所有以sh开头的文件:locate /etc/sh
19、find:
在目录结构中搜索文件,并执行指定的操作
命令格式:find pathname -options [-print -exec -ok ...]
特殊命令选项:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
命令实例:
①查找48小时内修改过的文件:find -atime -2
②在当前目录查找 以.log结尾的文件:find . -name "*.log"
③查找/opt/soft/test/目录下 权限为 777的文件:find /opt/soft/test/ -perm 777
④查找当目录,以.log结尾的普通文件:find . -type f -name "*.log"
⑤查找当前所有目录并排序:find . -type d | sort
⑥查找当前目录大于1K的文件:find . -size +1000c -print
注:find命令之exec:
find命令之xargs:
20、chmod:
用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
命令实例:
①增加文件所有用户组可执行权限(设定文件log.log的属性为:文件属主(u) 增加执行权限;与文件属主同组用户(g) 增加执行权限;其他用户(o) 增加执行权限):chmod a+x log.log
②同时修改不同用户权限(设定文件text的属性为:文件属主(u) 增加写权限;与文件属主同组用户(g) 增加写权限;其他用户(o) 删除执行权限):chmod ug+w,o-x log.log
③删除文件权限(删除所有用户的可执行权限):chmod a-x log.log
④使用“=”设置权限(撤销原来所有的权限,然后使拥有者具有可读权限):chmod u=x log.log
⑤对一个目录及其子目录添加权限(递归地给test目录下所有文件和子目录的属主分配权限 ):chmod -R u+x test
21、df:
用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示
22、du:
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是查看当前指定文件或目录(会递归显示子目录)占用磁盘空间大小
命令实例:
①显示指定文件所占空间:du log.log
②以 M 单位展示文件大小:du -h test
③按照空间大小排序:du|sort -nr|more
23、chgrp:
在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以。Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。
命令格式:chgrp [选项] [组] [文件]
命令实例:
①改变文件群组属性:chgrp -v bin log.log
②根据指定文件改变文件的群组属性(改变文件log1.log 的群组属性,使得文件log1.log的群组属性和参考文件log2.log的群组属性相同):chgrp --reference=log2.log log1.log
③通过群组识别码改变文件群组属性(通过群组识别码改变文件群组属性,100为users群组的识别码,具体群组和群组识别码可以去/etc/group文件中查看):chgrp -R 100 test6
24、chown:
将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
命令格式:chown [选项]... [所有者][:[组]] 文件...
命令实例:
①更改文件拥有者和群组:chown mail:mail log.log;chown mail: log2.log
②更改文件群组:chown :mail log2.log
③改变指定目录以及其子目录下的所有文件的拥有者和群组:chown -R -v root:mail test6
25、/etc/group:
/etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件。/etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中 /etc/gshadow是/etc/group的加密信息文件。
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段:组名:口令:组标识号:组内用户列表
组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*
组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
26、in:
为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
命令实例:
①给文件创建软链接:ln -s log2.log link2
②给文件创建硬链接:ln log2.log ln2
③给目录创建软链接:ln -sv /opt/soft/test/test3 /opt/soft/test/test5