前言:
这段时间都没有写博客,写文章。因为开学了事情很多,加上最近做做算法题,也没有找到特别的题目。作为一个合格的程序员,Linux感觉是一定要学习的!最近博主学习整理了一份Linux常用的基本命令,可以作为参考手册和复习使用!如果你是初学,建议自己敲一下命令,看看效果~
目录
文件处理命令
命令格式与目录处理命令
命令格式:命令 【-选项】【参数】
例如:ls -la /etc
用中括号括起来表示可选,意思是如果我只输入ls也能够执行命令,不一定都要选项才能够执行
-
个别的命令使用不遵循这个格式
-
当有多个选项的时候,可以写在一起,例如:-a -l等价于-a-l,就是说可以连着写
-
简化选项和完整选项,例如:-a等价于--all
目录处理命令:ls
命令名称:ls
英文原意:list
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项【-ald】
-
-a 显示所有文件,包括隐藏文件
-
-l 详细信息显示
-
-d 查看目录属性
什么参数没写,表示在当先目录下执行,最开始是根目录
输入-a,可以看到隐藏文件,用-a查看隐藏文件时,文件名前面有“.”的文件是隐藏文件,即以点开头的文件为隐藏文件
输入-l表示表示长格式,就是long,表示以长的格式显示
对于文件,用户有三种类型:所有者,所属组,其他人(user,group,others)
所有者是文件的创建人,但是它是可以转换或者被赋予的,所有者只能有一个;所属组也是只能有一个,只有指定的特定一组人才能作用为用户组成员;剩下的用户就是其他人;
第一个用户名是所有者,第二个用户名是所属组名称
所属组后面的数字是文件大小(字节),如果输入:ls -lh ,这里的h表示human,表示长格式人性化显示,表示单位不再是默认字节,而是自动进行单位换算,该多大显示就多大,比如MB就显示MB;同时注意到这里的-lh是把-l和-h合在一起,它们的先后关系无所谓。再后面是文件的最后一次修改时间。
-rw-r--r-- 这样的字串表示文件类型,后面那个数字是文件数目
最开始一个字符表示文件类型:“-”是二进制文件,d表示目录directory,l表示软链接link
u g o 分别表示:所有者u(user),所属组g(group),其他人o(others)
r读 w写 x执行,头一个字符表示文件类型,后面九个字符分别表示u g o 的r w x 权限状态,有就写上,没有就用“-”代替
参数 -d显示当下或者指定路径目录的信息,通常使用:ls -ld 来查看当下目录的信息
参数 -i 表示 id ,表示查看给定路径下的目录或文件的id
目录处理命令:mkdir
命令名称:mkdir
命令英文原意:make directories
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p 【目录名】
功能描述:创建新目录 -p表示递归创建
范例:$ mkdir -p /tmp/Japan/boduo
$ mkdir /tmp/Japan/longze /tmp/Japan/cangjing
一个目录本身不存在,还要在它里面创建文件夹,这会报错,但是用 -p 就会递归的创建目录直到你最终要创建的目录被创建为止
目录处理命令:cd
命令名称:cd
命令英文:change directory
命令所在路径:shell内置命令
执行权限:所有用户
语法:cd 【目录】
功能描述:切换目录
范例:$ cd /tem/Japan/boduo 切换到指定的目录
$ cd .. 回到上一级目录
目录处理命令:pwd
命令名称:pwd
命令英文:print working directory
命令所在路径:/bin/pwd
执行权限:所有用户
语法:$ pwd
功能描述:显示当前目录
范例:$ pwd
假如当下目录是Japan,系统会输出 /tmp/Japan 这样的详细工作目录路径
注意 . 表示当前目录,.. 表示当前目录的上一级目录
目录处理命令:rmdir
命令名称:rmdir
命令英文:remove empty directories
命令所在路径:/bin/rmdir
执行权限:所有用户
语法:rmdir 【目录名】
功能描述:删除空目录
范例:$ rmdir /tmp/Japan/boduo
注意这个命令功能只能删除一个空目录,所以实际用不多
目录处理命令:cp
命令名称:cp
命令英文:copy
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp 【原文件或目录】【目标目录】
-r 复制目录
-p 保留文件属性
功能描述:复制文件或目录
范例:
$ cp -r /tmp/Japan/cangjing /root
将目录/tmp/Japan/cangjing复制到目录/root下
$ cp -rp /tmp/Japan/boduo /tmp/Japan/longze /root
将/tmp/Japan目录下的boduo和longze目录复制到/root下,保持目录属性,时间仍然是原来的,而不是复制时候的时间
如果在复制到的目录后面再加上文件名称,就会在复制之后将复制后的文件改名为你要的名字,例如:
$ cp /tmp/xxx.log /root/yyy.log
目录处理命令:mv
命令名称:mv
英文原意:move
命令所在路径:/bin/mv
执行权限:所有用户
语法:mv【原文件或者目录】【目标目录】
功能描述:剪切文件、改名
范例:
$ mv /tmp/Japan/cangjing /root
如果已经在Japan目录下可以:$ mv cangjing /root
也可以在剪切的同时改名:$ mv /tmp/Japan/longze /root/nvshen
在当前目录下要改名:$ mv cangjing canglaoshi
补充功能:ctrl+l或者clear命令,可以清空命令行; ctrl+c终止命令;
目录处理命令:rm
命令名称:rm
命令英文愿意:remove
命令所在路径:/bin/rm
执行权限:所有用户
语法:
rm -rf 【文件或目录】
-r 删除目录
-f 强制执行 force
功能描述:删除文件或者删除目录
在删除操作的时候一定要谨慎,linux无回收站的概念,所以删除就是删除了,恢复数据的代价非常大,通常不容易实现;在老版本的rm操作中没有 -f 操作的 rm 命令会询问你是否删除,输入 y 或 n ,但是新版本中移除询问,这意味着你需要更加小心谨慎了。
不要尝试:rm -rf /*
这会删除你系统根目录下的所有文件,嗯~ o( ̄▽ ̄)o,你细品~
rm -rf * 表示删除当前目录下所有文件
文件处理命令:touch
命令名称:touch
命令路径:/bin/touch
执行权限:所有用户
语法:touch【文件名】
功能描述:创建空文件
范例:$ touch Japanlovestory.list
表示在当前目录下创建这样一个文件,指明特定路径下,就会在特定路径下创建文件;同时注意这个“.list”不是后缀名而是文件名的一部分,这不推荐使用。
注意在linux中touch一个文件时,文件名中最好不要使用空格如
$ touch aaa bbb
这会创建两个文件,分别是aaa 和 bbb
你可以这样:$ touch “aaa bbb”
但是这不推荐使用,因为每次使用都要打双引号,很麻烦,所以不建议使用含有空格的文件名
文件处理命令:cat
命令名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat【文件名】
功能描述:显示文件内容
-n 显示行号 number
范例:$ cat /etc/issue
$ cat -n /etc/services
把cat倒过来写tac 那么文件就会倒过来显示,这里的倒过来是一行一行地从最后一行输出到第一行
文件处理命令:more
命令名称:more
命令所在路径:/bin/more
执行权限:所有用户
语法:more【文件名】
(空格)或 f 翻页
(Enter) 换行
q或Q 退出
功能描述:分页显示文件内容
范例:$ more /etc/services
注意 b 可以向回翻页
文件处理命令:less
命令名称:less
命令所在路径:/usr/bin/less
执行权限:所有用户
语法:less【文件名】
功能描述:分页显示文件内容(可向上翻页)
范例:$ less /etc/services
它除了拥有more的查看功能,它还可以进行查找
在浏览状态下按 “/”,然后输入搜索关键词,回车可以搜索,它搜索到的就可以高亮标记~查找后按n,可以跳跃到,下一个高亮标记的地方。
所以more相较于less的最大不同点是有显示进度条,可以看到浏览到哪里
文件处理命令:head
命令名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
语法:head【文件名】
功能描述:显示文件前面几行
-n 指定行数
范例:$ head -n 20 /etc/services
如果不加 -n 指定前几行,他会默认指定前10行
文件处理命令:tail
命令名称:tail
命令所在路径:tail【文件名】
功能描述:显示文件后面几行
-n 指定行数
-f 动态显示文件末尾内容
范例:$ tail -n 18 /etc/services
不指定 -n 默认是10行
动态显示指的是,假如你用这个命令查看服务器的日志,服务器日志如果发生变化,你所显示的内容也会跟着发生变化。
链接命令:ln
命令名称:ln
命令英文原意:link
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s【原文件】【目标文件】
-s 创建软连接 soft
功能描述:生成链接文件
范例:
$ ln -s /etc/issue /tem/issue.soft
创建文件/etc/issue的软连接/tem/issue.soft
$ ln /etc/issue /tmp/issue.hard
创建文件/etc/issue的硬链接/tmp/issue.hard
-
软连接特征:
-
类似windows的快捷方式,它的文件类型是 lrwxrwxrwx 它只是表示可以有所有对这个软连接操作的权限,但是对原文件仍然取决于原文件的权限属性
-
文件很小,因为只是一个链接,连到原文件
-
/tmp/issue.soft -> /etc/issue
箭头指向原文件
-
硬链接特点
-
它是cp -p 同时 还有同步更新
-
文件完全相同于原文件,大小和时间或文件类型都一致
-
通过id识别,或是说通过i结点识别,硬链接的i结点或是id与原文件相同
-
不能分区(内存)
-
不能针对目录使用
当原文件被删除时,软连接会失效,但是硬链接仍然存在并有效。
权限管理命令
权限管理命令:chmod
命令名称:chmod
命令英文:change the permissions mode of a file
命令所在路径:/bin/chmod
执行权限:所有用户
语法:chmod【{ugoa}{+-=}{rwx}】【文件或目录】
【mode=421】【文件或目录】
-R 递归修改
功能描述:改变文件或目录权限
能够更改权限的用户只有文件所有者或root
ugoa 代表user group others all
不同用户改权限使用逗号隔开,如:chmod u+w,o-r Japanlovestory.list
等号是直接赋予:chmod g=rwx Japanlovestory.list
权限的数字表示:
r | w | x |
---|---|---|
4 | 2 | 1 |
rwxrw-r--
7 6 4
所以要把文件的权限改成rwxrw-r-- ,只要输入命令:
chmod 640 Japanlovestory.list
另外,修改目录testfile 及 其目录下文件为所有用户具有全部权限
命令为:$ chmod -R 777 testdir
权限管理命令:chown
命令名称:chown
命令英文:change file ownership
命令所在路径:/bin/chown
执行权限:所有用户
语法:chown【用户】【文件或目录】
功能描述:改变文件或目录的所有者
范例:$ chown shenchao fengjie
改变文件fengjie的所有者为shenchao
注意:能够改变所有者的人只有管理员root!
要改变文件的所有者,这个改变后的所有者用户必须存在
可以用useradd xxxx,添加用户名
添加组 groupadd xxxx
权限管理命令:chgrp
同样只有root可以执行
命令名称:chgrp
英文:change file group ownership
命令所在路径:/bin/chgrp
执行权限:所有用户
语法:chgrp【用户组】【文件或目录】
功能:改变文件或目录的所属组
范例:$ chgrp lampbrother fengjie
注意:在创建一个文件时,若不改变缺省值,那么创建者就是当前用户,而当前用户的所属组就是该文件的默认所属组
权限管理命令:umask
命令名称:umask
命令英文:the user file-creation mask
命令所在路径:shell内置命令
执行权限:所有用户
语法:umask【-S】
-S 以rwx形式显示新建文件缺省权限
功能描述:显示、设置文件的缺省权限
范例:$ umask -S
就会显示新建文件的默认权限
但是注意新建文件夹和信件文件的默认权限值不同
可以看到aaa就是按照默认权限来创建的,但是当我们touch一个文件之后,它并没按照默认权限来创建,但仔细观察后发现只有执行权限,即x权限没有,这是由于linux规定文件默认不赋予执行权力,这也降低了木马病毒的危害,体现了linux的安全性~
如果你只是键入umask而没有-S,你会发现返回给你0022
第一个0 表示一类特殊权限
022 并不是表示 --- -w- -w-
而是利用下面的逻辑算出
先写出完整权限 rwx rwx rwx
022最直观写出 --- -w- -w-
这两个写一个逻辑异或的关系,就是上下两个都有反而是-
所以结果就是 rwx r-x r-x
也就是 7 5 5
但如果对于文件,则没有执行权限x
所以要的到022,则是反过来异或运算,就是你要修改的权限和完整权限取异或,就是022;输入命令:
umask 022 就是把默认权限设置成 rwx r-x r-x
注意:尽管如此,不建议更改权限,除非你真的需要
文件搜索命令
文件搜索命令:find
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法:find【搜索范围】【匹配条件】
功能描述:文件搜索
-
$ find /etc -name init
在目录/etc中查找文件init,注意这是精准搜索,不是含关键字都搜出来
-
$ find /etc -name *init*
这两个*是通配符,表示包含init的文件都会搜索出来
-
$ find /etc -name init*
这表示搜出init开头的文件
-
$ find /etc -name init???
这表示搜出以init开头后面紧跟着三个字符的文件
“*”匹配任意字符,“?”匹配单个字符
-
$ find -iname xxx
这是按文件名查找,且不区分大小写
-
$ find / -size 【+n大于 -n小于 n等于】
这里按文件大小查找,n的单位是数据块,一个数据块是512字节即0.5K;100MB=102400KB=204800个数据块
-
$ find /home -user shenchao
按照所有者查找,根据所属组查找是 -group
-
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性更改 change
-mmin 文件内容 modify
加号表示超过多少分钟,减号表示在几分钟之内
-
$ find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件
-a 两个条件同时满足 and
-o 两个条件有一个满足即可 or
-
$ find /etc -name inittab -exec ls -l {} \;
在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令 {} \; 表示对搜索结果执行操作
就是在 -exec 和 {} \; 之间是你要对查找到文件执行的命令
-ok 也会对查找到的对象进行操作,但是不同的是,他会有一个询问过程,问你是否确认要对查找到的对象执行操作命令
-
-type 根据文件类型查找
f 文件 d 目录 l 链接文件
-
-inum 根据i节点查找,根据inumber查找
其他文件搜索命令
文件搜索命令:locate
命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件
范例:$ locate inittab
这是快速查找,这是由于它把文件的为止建立一个库,并且实时更新,它是在这个库中搜索,所以搜索非常快;但是由于要更新库,但是可能库还没更新,那就找不到了。不区分大小写使用 -i
第一次使用或者需要更新库的时候,使用命令:updatedb
文件搜索命令:which
注意这个命令只有管理员root才能用
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which 命令
功能描述:搜索命令所在的目录和它的别名信息
范例:$which ls
文件搜索命令:whereis
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis【命令名称】
功能描述:搜索命令所在的目录以及帮助文档路径
范例:$ whereis ls
文件搜索命令:grep
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv【指定字串】【文件】
功能描述:在文件中搜索字串匹配的行并输出
-i 不区分大小写
-v 排除指定字符串
范例:# grep mysql /root/install.log
linux的文件以井号开头是注释行
# grep -v ^# /etc/inittab 是排除掉以井号开头的行
帮助命令
帮助命令:man
命令名称:man
命令英文:manual
命令所在路径:/usr/bin/man
命令权限:所有用户
语法:man【命令或配置文件】
功能描述:获得帮助信息
范例:$ man ls
查看命令ls命令的帮助信息
$ man services
查看配置文件services的帮助信息
打开帮助信息的时候,/+关键字,系统会帮助你定位到关键字的位置
文件名 1 一般表示命令帮助 5 一般表示配置文件帮助
如果你想只查看命令 用 whatis
如果你想只查看配置文件 用 apropos
每一个命令加上--help,都会列出这个命令的选项信息,例如:
touch --help
就会把touch常见的选项列出来
有一个类似的命令info,功能和man相似
帮助命令:help
命令名称:help
命令所在路径:shell内置命令
执行权限:所有用户
语法:help 命令
功能描述:获得shell内置命令的帮助信息
范例:$ help umask
查看umask命令的帮助信息
shell命令是一种找不到路径的内置的命令,它们不能用man来查看,也不能用which来查找,
用户管理命令
用户管理命令:useradd
命令名称:useradd
命令所在路径:/usr/sbin/useradd
执行权限:root
语法:useradd 用户名
功能描述:添加新用户
范例:$ useradd yangmi
用户管理命令:passwd
命令名称:passwd
民工所在路径:/user/sbin/passwd
执行权限:所有用户
root可以更改所有人的密码,用户只能更改自己的密码
语法:passwd 用户名
功能描述:设置用户密码
范例:$ passwd yangmi
用户管理命令:who
命令名称:who
命令所在路径:/usr/bin/who
执行权限:所有用户
语法:who
功能描述:查看登录用户的信息
范例:$ who
可以帮助我们查看当前这台linux服务器的用户登入信息,有多少人登入
用户管理命令:w
命令名称:w
命令所在路径:/usr/bin/w
执行权限:所有用户
语法:w
功能描述:查看登入用户详细信息
范例:$ w
up 指的是 uptime 是服务器运行的时间
可以了解服务器的具体情况和用户使用的具体情况
压缩解压命令
压缩解压命令:gzip
命令名称:gzip
命令英文:GNU zip
命令路径:/bin/gzip
执行权限:所有用户
语法:gzip【文件】
功能描述:压缩文件
压缩后文件格式:.gz
注意!linux压缩文件后不保留原文件
压缩解压命令:gunzip
命令名称:gunzip
命令英文:GNU unzip
命令所在路径:/bin/gunzip
执行权限:所有用户
语法:gunzip【压缩文件】
功能描述:解压.gz的压缩文件
范例:$ gunzip boduo.gz
压缩解压命令:tar
命令名称:tar
命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项【-zcf】【压缩后文件名】【目录】
-c 打包
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩
这种方法,把目录做了一个备份,还可以对备份进行压缩
tar命令的解压语法为:
-x 解包
-v 显示详细信息
-f 指定解压文件
-z 解压缩
范例:$ tar -zxvf Japan.tar.gz
解包后,原文件就变成了解包后的文件~而压缩文件包就没了
压缩解压命令:zip
命令名称:zip
命令所在路径:/usr/bin/zip
执行权限:所有用户
语法:
zip 选项【-r】【压缩后的文件名】【文件或目录】
-r 压缩目录
功能描述:压缩文件或目录
压缩后文件格式:.zip
zip是windows和linux都支持的一种压缩格式
该命令可以保留原文件
压缩解压缩命令:unzip
命令名称:unzip
命令所在路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip【压缩文件】
功能描述:解压.zip的压缩文件
范例:$ unzip test.zip
压缩解压命令:bzip2
这是zip的升级版,保留原文件,压缩比也更加客观,常用于压缩容量比较大的文件
命令名称:bzip2
命令路径:/usr/bin/bzip2
执行权限:所有用户
语法:bzip2 选项【-k】【文件】
-k 产生压缩文件后保留原文件
功能描述:压缩文件
压缩后文件格式:.bz2
范例:$ bzip2 -k boduo
$ tar -cjf Japan.tar.bz2 Japan
网络命令
网络命令:write
指令名称:write
指令路径:/usr/bin/write
执行权限:所有用户
语法:write <用户名>
功能描述:给用户发送信息,以ctrl+D保存结束
范例:# write linzhiling
网络命令:wall
指令名称:wall
命令英文:write all
指令路径:/usr/bin/wall
执行权限:所有用户
语法:wall【message】
功能:发送广播信息
范例:# wall ShenChao is a honest man
网络命令:ping
命令名称:ping
命令路径:/bin/ping
执行权限:所有用户
语法:ping 选项 IP地址
-c 指定发送次数
功能描述:测试网络连通性
范例:# ping 192.168.1.156
网络命令:ifconfig
命令名称:ifconfig
英文:interface configure
命令所在路径:/sbin/ifconfig
执行权限:root
语法:ifconfig 网卡名称 IP地址
功能描述:查看和设置网卡信息
范例:# ifconfig eth0 192.168.8.250
网络命令:mail
命令名称:mail
命令路径:/bin/mail
执行权限:所有用户
语法:mail【用户名】
功能描述:查看发送电子邮件
范例:# mail root
ctrl+D 保存和发送
单输一个mail,查看自己的收件箱
网络命令:last
命令名称:last
命令路径:/usr/bin/last
执行权限:所有用户
语法:last
功能描述:列出目前与过去登入系统的用户信息
范例:# last
提示:reboot是重启
网络命令:lastlog
命令名称:lastlog
命令路径:/usr/bin/lastlog
执行权限:所有用户
语法:lastlog
功能描述:检查某特定用户上次登入的时间
范例:# lastlog
# lastlog -u 502
网络命令:traceroute
命令名称:traceroute
命令路径:/bin/traceroute
执行权限:所有用户
语法:traceroute
功能描述:显示数据包到主机间的路径
范例:# traceroute url
网络命令:netstat
命令名称:netstat
命令路径:/bin/bestat
执行权限:netstat【选项】
功能描述:显示网络相关信息
选项:
-t TCP协议
-u UDP协议
-l 监听
-r 路由
-n 显示IP地址和端口号
范例:
# netstat -tlun 查看本机监听的端口
# netstat -an 查看本机所有网络连接
# netstat -rn 查看本机路由表
网络命令:setup
命令名称:setup
命令路径:/usr/bin/setup
执行权限:root
语法:setup
功能描述:配置网络
范例:# setup
补充挂载命令:mount
命令名称:mount
命令位置:/bin/mount
执行权限:所有用户
命令语法:mount【-t 文件系统】设备文件名挂载点
范例:# mount -t iso /dev/sr0 /mnt/cdrom
umount 卸载挂载
关机重启命令
shutdown
# shutdown【选项】时间
选项:
-c 取消前一个关机命令
-h 关机
-r 重启
shutdown -h now或指定时间
其他关机命令
-
halt
-
poweroff
-
init 0
其他重启命令
-
reboot
-
init 6
系统运行级别:
0 关机
1 单用户
2 不完全多用户,不含NFS服务 Network File System
3 完全多用户
4 未分配
5 图形界面
6 重启
cat /etc/inittab 可以打开查看各数字的说明
runlevel 查看系统运行级别
退出登录命令
logout