Liunx学习笔记 - 01 - Linux常用命令
1 文件处理命令
1.1 目录处理命令ls
命令名称:ls
英文原意:list
所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald] [文件或目录]
-a 显示所有文件,包含隐藏文件(以“.”开头的为隐藏文件,还一并显示了当前目录“.”和上级目录“…”)
-l 显示详细信息
-d 查看目录属性
-i 显示ID号
-h 人性化显示大小
还有一个用得较多的简化的目录查看命令叫做ll,其等效于ls -al。
实际上ls -l显示的东西比较长,其显示了文件和目录的详细信息,比如:
drwxr-xr-x 2 meiguanhua meiguanhua 4096 12月 17 10:27 a1/
-rwxr-xr-x 1 meiguanhua meiguanhua 107 12月 17 10:12 helloworld.cpp
第一字段共10位字符:
第1位:d表示目录,-表示文件,l表示链接文件linkfile
第2-4位:所有者权限,r为read,w为write,x为execute,-表示没有该权限
第5-7位:所属组权限,同上
第8-10位:其他人权限,同上
第二字段:链接数
第三字段:所有者的用户名
第四字段:所属组的组名
第五字段:文件大小,用字节Byte表示,若要让它人性化显示,可用-h选项,会自动用K,M等显示大小
第六字段:创建日期或最近的修改日期
第七字段:文件名或目录名,目录后面有斜杠/
1.2 目录处理命令cd、pwd、mkdir、rmdir、cp、rm、mv
命令名称:cd
英文原意:change directory
所在路径:shell内置命令
执行权限:所有用户
功能描述:切换目录
语法:cd [目录]
示例 | 功能 |
---|---|
cd / | 切换到根目录 |
cd … | 切换到上一级目录 |
命令名称:pwd
英文原意:print working directory
所在路径:/bin/pwd
执行权限:所有用户
功能描述:显示当前所在的工作目录
语法:pwd
命令名称:mkdir
英文原意:make directories
所在路径:/bin/mkdir
执行权限:所有用户
功能描述:创建新目录
语法:mkdir [目录名]
示例 | 功能 |
---|---|
mkdir newdir | 在当前目录下创建名为newdir的新目录 |
mkdir -p /a/a0 a/a1 a/a2 | 递归创建多层目录,即在根目录/下创建名为a的空目录,再在a中创建a0、a1、a2三个新目录 |
命令名称:rmdir
英文原意:remove directories
所在路径:/bin/rmdir
执行权限:所有用户
功能描述:删除空目录(只能删除空的目录,若要删除非空目录,用rm)
语法:rmdir [目录名]
命令名称:cp
英文原意:copy
所在路径:/bin/cp
执行权限:所有用户
功能描述:复制文件或目录
语法:
cp [源文件] [目标目录]
cp -r [源目录] [目标目录]
复制目录时,用选项-r表示递归复制
若加上-p选项,则会保存复制文件的属性
命令名称:rm
英文原意:remove
所在路径:/bin/rm
执行权限:所有用户
功能描述:删除文件或目录(-r选项)
语法:rm -r [文件或目录]
示例 | 功能 |
---|---|
rm file1 | 删除文件file1 |
rm -r dir1 | 删除目录dir1极其下面的子目录(递归删除) |
注意:
- Linux没有windows那样的回收站,删掉了就没有了!
- 在根目录/下切勿执行rm -rf *操作,这是极其危险的操作,会删除/下的所有目录和文件,导致系统崩溃!
命令名称:mv
英文原意:move
所在路径:/bin/mv
执行权限:所有用户
功能描述:移动文件、更名
语法:mv [源文件或目录] [目标目录]
示例 | 功能 |
---|---|
mv file1 file2 | 把当前目录下的文件file1改名为file2 |
mv file3 dir1 | 把文件file3移动到目录dir1中 |
1.3 文件处理命令touch、cat、tac、more、less、head、tail
命令名称:touch
英文原意:
所在路径:/bin/touch
执行权限:所有用户
功能描述:创建空文件
语法:touch [文件名]
示例 | 功能 |
---|---|
touch newfile1 | 创建名为newfile1的空文件 |
touch newfile2.abc | 创建名为newfile2扩展名为abc的空文件 |
命令名称:cat
英文原意:concatenate and display files
所在路径:/bin/cat
执行权限:所有用户
功能描述:显示文件内容
语法:cat [-n] [文件名]
示例 | 功能 |
---|---|
cat file1 | 显示file1文件的内容 |
cat -n file2 | 显示file2文件的内容,并每行开头标出行号来 |
注意:
- 与cat相反的tac命令,可以把文件的内容倒过来显示(逆序显示),即最后一行放在第一行,而第一行放在最后一行来显示。
由于cat命令不支持翻页,所以只适合查看较为简短的小文件,想要能翻页和换行显示文件内容,就要用到下面的命令more了。
命令名称:more
英文原意:
所在路径:/bin/more
执行权限:所有用户
功能描述:分页显示文件内容
语法:more [文件名]
在显示的过程中,可以:
空格或f,来显示下一页;
回车,来显示下一行;
q或Q,来退出显示。
然而,more只能向下翻页,无法向上翻页,这时候就要用到命令less了。
命令名称:less
语法:less [文件名]
在显示过程中,可以:
空格或f,来显示下一页;
回车,来显示下一行;
q或Q,来退出显示。
pageup,朝上翻页;
pagedown,朝下翻页;
向上箭头,一行行往上翻;
/abc,搜索“abc”,并按n来查看下个匹配的关键词。
如果只想看文件的开头几行,那么用命令head是再好不过的了。
命令名称:head
所在路径:/bin/head
执行权限:所有用户
功能描述:显示文件内容的前几行
语法:head -num [文件名]
示例:head -20 /etc/services
查看/etc/目录下services文件的前20行内容。
与head对应,可以用tail来查看文件的末尾内容。
命令名称:tail
所在路径:/bin/tail
执行权限:所有用户
功能描述:显示文件内容的后几行
语法:tail -num [文件名]
tail -f 动态(实时监控)显示文件内容,按下ctrl+c退出实时监控状态。
示例 | 功能 |
---|---|
tail -30 /etc/services | 查看/etc/目录下services文件的后30行内容 |
tail -10f /etc/services | 动态查看/etc/目录下services文件的末尾10行的内容 |
还有一个清屏的命令叫做clear,当然如果嫌输入太慢的话,可以直接用快捷方式ctrl+l来清屏。
1.4 链接命令ln
命令名称:ln
英文原意:link
所在路径:/bin/ln
执行权限:所有用户
功能描述:产生链接文件
语法:tail -s [源文件] [目标文件]
示例 | 功能 |
---|---|
ln -s /etc/issue /issue.soft | 创建文件/etc/issue的软链接/issue.soft |
ln /etc/issue /issue.hard | 创建文件/etc/issue的硬链接/issue.hard |
软链接类似于windows的快捷方式,用ls -l查看可见其用“软链接->源文件”表示其为软链接;
而硬链接则类似于cp -p,但两者会同步更新,且删掉源文件后,硬链接依旧可以访问,若用ls -i查看,可见硬链接和源文件的id是一样的,这也是判断一个文件是否为硬链接的方法。
硬链接相当于实时的备份,但是其不能跨越硬盘分区存在,而软链接可以,此外,硬链接不可针对目录使用,而软链接可以。
2 权限管理命令chmod、chown、chgrp、umask
命令名称:chmod
英文原意:change the permissions mode of a file
所在路径:/bin/chmod
执行权限:所有用户
功能描述:改变文件或目录权限
语法:
chmod [{ugoa}{±=}{rwx}] [文件或目录]
或
chmod [mode=421] [文件或目录]
其中:
u、g、o、a分别表示user所有者,group所属组,other其他人,all所有人;
+、-、=则分别表示添加、删除、赋予相应权限;
r、w、x分别对应read读、write写和execute执行权限。
而421方式则用三位数来分别表示u、g、o的权限,其中r对应数字4,w对应数字2,x对应数字1,那么1,2,3,4,5,6,7分别对应的是–x、-w-、-wx、r–、r-x、rw-、rwx类型的权限(这里只是举例,实际上有些权限类型虽然可以赋予,但没有实际意义,几乎不会被使用),比如常见的755则表示对于所有者u,其有rwx权限,对于所属组g,有r-x权限,对于其他人o,有r-x权限。
示例 | 功能 |
---|---|
chmod g+w file1 | 将file1文件的所属组添加写权限 |
chmod 777 dir1 | 将文件夹dir1的所有用户权限全部开放 |
文件和目录的权限是不同的,应有所区分
代表字符 | 权限 | 对文件的意义 | 对目录的意义 |
---|---|---|---|
r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
w | 写权限 | 可以修改文件内容 | 可以在目录中创建、删除文件和目录 |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
文件r权限,可查看文件内容,即可使用cat、tac、more、less、head、tail、vi、vim等命令查看文件。
文件w权限,可修改文件内容,即可使用vi或vim等文本编辑器来修改文件内容。
文件x权限,可执行文件,即可以像windows中的exe文件那样子来执行,比如用vi写一个Helloworld.cpp的C++文件如下
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
然后用g++ -o Helloworld Helloworld.cpp将其编译生成可执行文件Helloworld,这时用ll Helloworld便可发现其有执行权限x,接下来直接./Helloworld来运行该执行文件,即可发现命令终端输出了Hello world!的字符了。
目录的读权限r表示可以列出目录中的内容,即可用ls将该目录的内容列表显示出来。
目录的写权限w表示可以更改该目录结构列表的权限,即在目录中创建新文件和新目录、删除旧文件(不管该文件权限如何)和旧目录、重命名文件和目录、移动文件和目录的位置。即可用touch、mkdir、rmdir、mv等命令。但cp命令不一定受此限制(复制操作并不该变源文件的位置和名字,只要保证目标目录有w权限即可完成cp操作,一言以蔽之,将文件或目录从没有w权限的源目录中复制出来是OK的,但是把文件复制到没有w权限的目录中是万万不行的!)
目录的执行权限x表示可以进入到该目录中进行操作,即可用cd命令进到该目录中去。
这也就是为什么很多目录的属性为755,即rwxr-xr-x,这样子,所有者拥有所有权限,而用户组和其他人只能ls查看该目录内容列表和cd进入该目录,而无法在该目录中篡改文件和目录架构,即保持该目录中结构列表的不变性。
命令名称:chown
英文原意:change file ownership
所在路径:/bin/chown
执行权限:管理员root
功能描述:改变文件或目录的所有者
语法:chown [用户] [文件或目录]
示例 | 功能 |
---|---|
chown zhangsan file1 | 将文件file1的所有者改变为zhangsan |
命令名称:chgrp
英文原意:change file group ownership
所在路径:/bin/chgrp
执行权限:管理员root
功能描述:改变文件或目录的所属组
语法:chgrp [用户组] [文件或目录]
示例 | 功能 |
---|---|
chgrp grp1 file1 | 将文件file1的所属组改变为grp1 |
命令名称:umask
英文原意:
所在路径:
执行权限:所有用户
功能描述:显示、设置文件或目录的缺省(默认)权限
语法:umask [-S]
示例 | 功能 |
---|---|
umask | 显示0022,首0表示特殊权限,后面022表示缺失权限,用777减去该022得到755才是真正的默认权限 |
umask -S | 显示“u=rwx,g=rx,o=rx”,表明默认的权限 |
umask 077 | 将默认权限设置为777和该077相减的值700,这只是临时设置,重启失效,永久设置需更改配置文件 |
注意:
- 由于默认的文件是不具有x执行权限的(想想也知道,如果随便一个文件都能执行,那病毒岂不是太容易感染了),所以实际上文件的默认权限还要在umask中再减掉x权限(-1),这样子umask如果是0022的话,那么文件的权限就应该是777-022-111=644,即rw-r–r--。这也就是说,如果后面写shell脚本文件的话,是要手动将其权限改为755,对应rwxr-xr-x,赋予执行权限,这样才能运行该脚本,不然是没办法执行的。
- 目录的默认权限依旧是777-022=755,即rwxr-xr-x,如果目录没有x权限,那么就没办法cd到目录里面去了,哈哈,所以目录的r和x权限一般都是同时赋予的,不然只能看不能进去,就只能干瞪眼了。
3 文件搜索命令which、whereis、find、grep
命令名称:which
英文原意:
所在路径:/usr/bin/which
执行权限:所有用户
功能描述:显示系统命令所在目录
语法:which [系统命令]
示例 | 功能 |
---|---|
which ls | 显示“/bin/ls” |
which which | 显示“/usr/bin/which” |
whereis与which相同,只是它还给出了命令的帮助文档放在哪儿。
命令名称:find
英文原意:
所在路径:/usr/bin/find
执行权限:所有用户
功能描述:查找文件或目录(注意查找的是文件名和目录名,不是文件内容)
语法:find [搜索路径] [关键字]
示例 | 功能 |
---|---|
find /etc -name init | 在目录/etc中查找文件init |
find /etc -name “init?” | 在目录/etc中查找init开头的后面跟一个字符的文件(?) |
find /etc -name “init*” | 在目录/etc中查找init开头的后面跟任意字符的文件(*) |
find /etc -iname init | 加了i表示不区分大小写,即忽略大小写的搜索 |
find / -size +204800 | 在根目录下查找大于100MB的文件, |
+n、-n、n分别指定大于、小于、等于n个数据块, | |
一个数据块为512字节即0.5KB大小 | |
find /home -user zhangsan | 在根目录下查找所有者为zhangsan的文件 |
find /home -group goodmen | 在根目录下查找所属组为goodmen的文件 |
find /etc -cmin -5 | 查找5分钟之内被修改过属性的文件和目录 |
-a为access文件被访问过, | |
-c为change文件属性更改过, | |
-m为modify文件内容修改过 | |
-min为分钟,-time为小时 | |
5整好5分钟,+5超过5分钟,-5为五分钟之内 | |
find /etc -size +163840 -a -size -204800 | 在/etc目录下查找大于80MB小于100MB的文件 |
-a 表示两个条件同时满足,逻辑与 | |
-o 表示两个条件满足一个即可,逻辑或 | |
-type | 根据文件类型查找,f文件,d目录,l为链接文件 |
-exec | 查找后执行后续命令 |
-inum | 根据i节点查找 |
注意:
- find查找过程比较消耗资源,除非万不得已,否则不建议使用,话说回来,如果自己规划较为合理,应该非常清楚文件放在哪里了,也用不着find了。
命令名称:grep
英文原意:
所在路径:/bin/grep
执行权限:所有用户
功能描述:在文件内容中搜索与字符串匹配的行并输出(注意查找的是文件内容,不是文件名)
语法:grep [指定字符串] [源文件]
示例 | 功能 |
---|---|
grep Hello ./helloworld.cpp | 在文件./helloworld.cpp中查找含有字符串Hello的行 |
grep -i hello ./helloworld.cpp | -i表示不区分大小写的查找 |
grep -v ^// ./helloworld.cpp | -v表示排出指定字符串,此例中把cpp文件以//起始的注释行排除掉 |
也可以用 grep -v ^# XX 来排除掉shell脚本中以#开始的注释行 |
4 帮助命令man、whatis、help
命令名称:man
英文原意:manual
所在路径:/usr/bin/man
执行权限:所有用户
功能描述:获得帮助信息
语法:man [命令或配置文件]
示例 | 功能 |
---|---|
man ls | 查看ls命令的帮助信息 |
man services | 查看配置文件services的帮助信息,注意只写配置文件,不写绝对路径/etc/services |
注意:
- 对于既是命令,又是配置文件的,比如passwd而言,用man passwd或man 1 passwd看到的是命令帮助,若想看到配置文件的帮助信息,用man 5 passwd,即可。
whatis命令用于查看命令的简短说明,如whatis ls。
help命令则用于查看shell内置命令的帮助信息,如help umask,help cd,help if,help while等。
5 用户管理命令useradd、passwd、who、w、uptime、userdel
useradd用于添加新用户,如:useradd zhangsan添加新用户zhangsan
passwd用于设置用户密码,如:passwd zhangsan给用户张三设置密码,注意普通用户只能给自己更改密码,而root可以给所有人设置密码。
Linux的单机上也提供了tty1-tty6的6种纯命令行终端界面供不同用户登录,tty7就是图形界面,分别用ctrl+alt+F1~F7就可以切换这些界面了,可以尝试在不同终端登录不同用户,并查询那些用户登录了系统,还可以让这些用户互发消息邮件等。
who用来查看登陆用户的信息,其显示登陆用户名、登陆终端、登陆时间、登陆主机的ip地址等信息。
w用来查看登陆用户的详细信息。
uptime显示系统持续运行时间,负载大小等信息,其实就是w查看的第一行内容。
userdel用来删除已有用户,如:userdel zhangsan删除用户zhangsan。
6 压缩解压命令gzip、gunzip、tar、zip、bzip2
命令名称:gzip
英文原意:GNU zip
所在路径:/bin/gzip
执行权限:所有用户
功能描述:压缩文件
语法:gzip 选项 [文件]
压缩后文件格式:.gz
示例 | 功能 |
---|---|
gzip Helloworld | 将Helloworld文件进行压缩,压缩后的文件名为Helloworld.gz |
注意:
- 与windows不同,Linux本身并无后缀名的说法,这里的后缀名只是为了便于他人理解该文件的类型;
- gzip只能压缩文件,不能压缩目录,压缩目录的话用tar命令;
- gzip压缩后将不保留源文件。
命令名称:gunzip
英文原意:GNU unzip
所在路径:/bin/gunzip
执行权限:所有用户
功能描述:解压缩.gz的压缩文件
语法:gunzip 选项 [压缩文件]
示例 | 功能 |
---|---|
gunzip Helloworld.gz | 将Helloworld.gz文件进行解压缩,解压缩后的文件名为Helloworld |
gzip -d Helloworld.gz | 同上 |
注意:
- 解压缩后不保留原压缩文件。
命令名称:tar
英文原意:
所在路径:/bin/tar
执行权限:所有用户
功能描述:打包目录
语法:tar 选项[cvfz] [目录]
-c 打包(文件格式.tar)
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩(文件格式.tar.gz)
示例 | 功能 |
---|---|
tar -zcvf dir1.tar.gz dir1 | 将目录dir1打包并压缩为dir1.tar.gz文件 |
注:
- tar -zcvf dir1.tar.gz dir1等效于如下的两步操作,先tar -cvf dir1.tar dir1将目录dir1打包为文件dir1.tar,再gzip dir1.tar将文件dir1.tar压缩为dir1.tar.gz文件。
- 打包的过程是保留原目录的(自然而然地,一般你也不希望被打包的目录被卡掉~)。
tar命令的解压操作(将选项中的c换成x即可)
-x 解包.tar文件
-v 显示详细信息
-f 指定解压文件名
-z 解压缩
示例 | 功能 |
---|---|
tar -zxvf dir1.tar.gz | 解压缩并解包dir1.tar.gz文件 |
注:
- 同样是完成了两步操作,先解压,再解包;同样也是保留原压缩文件的。
命令名称:zip
英文原意:
所在路径:/usr/bin/zip
执行权限:所有用户
功能描述:压缩文件或目录
压缩后文件格式:.zip(zip压缩文件Windows和Linux都能识别的)
语法:zip 选项[-r] [压缩后文件名称] [文件或目录]
-r 压缩目录
示例 | 功能 |
---|---|
zip Helloworld.zip Helloworld | 压缩文件Helloworld为Helloworld.zip |
zip -r dir1.zip dir1 | 压缩目录dir1为dir1.zip文件 |
与zip对应的解压缩命令为unzip,直接unzip [压缩文件]即可,不用区分文件和目录。
命令名称:bzip2
英文原意:
所在路径:/usr/bin/bzip2
执行权限:所有用户
功能描述:压缩文件
压缩后文件格式:.bz2
语法:bzip2 选项[-k] [文件]
-k 产生压缩文件后保留源文件
示例 | 功能 |
---|---|
bzip2 -k file1 | 压缩文件file1为file1.bz2 |
与bzip2对应的解压缩命令为bunzip2,直接bunzip2 -k file1.bz2即可解压同时保留原压缩文件。
7 网络命令write、wall、ping、ifconfig、mail、last、traceroute、netstat
write 用户名
给用户发信息,用ctrl+D结束
例:
write meiguanhua回车
Hello!按下ctrl+D
即给meiguanhua用户发送了Hello!的信息
wall 信息
给所有人发信息(广播信息,write to all)
ping测试网络是否通畅
ping -c n IP地址或网址,即给该IP地址或网址敲n次门,并显示是否通畅和延时等信息。
例如:
ping -c 5 www.baidu.com给百度网站ping5次看看通不通
ping 202.117.13.666给这个IP地址不断地ping下去,按下ctrl+c终止该ping操作
ifconfig查询网络配置信息,直接ifconfig回车就好了。
会显示有一块lo的本地环回网卡,这是一个虚拟的网卡,并不与真实外部网络连接,它有一个IP地址,你即便不连接外网,也可以ping通这个IP。
还会显示和外部连接的以太网网卡一块,可以看到IP地址、子网掩码、默认网关等信息。
mail 用户名
用来给指定用户发送邮件,输入字符后,用ctrl+D保存和发送。
last
显示目前和过去登陆系统的用户信息
traceroute IP地址或网址
这是查询本机到该IP或网址的中间所有IP节点。
netstat
显示网络相关信息。
8 关机重启命令shutdown、reboot
命令名称:shutdown
英文原意:
所在路径:/usr/sbin/shutdown
执行权限:root
功能描述:关机
语法:shutdown 选项[-hrc] [时间]
-h 关机
-r 重启
-c 取消前一个定时关机/重启命令
示例 | 功能 |
---|---|
shutdown -h now | 立即关机 |
shutdown -h 20:30 | 在20:30时刻关机 |
shutdown -r now | 立即重启 |
shutdown -r 4:00 | 在4:00 重启 |
shutdown -c | 取消前一个定时关机/重启命令 |
注意:
- 对于远程登录操作的服务器,尽量不要关机(关机后再开就不得不大老远地跑过去按电源了),可以重启。
- 其他的关机命令,如halt、poweroff、init 0等,不建议使用。
- 其他的重启命令,如reboot、init 6等,不建议使用。
- 关于init命令,其后面跟0-6中7个数字中的一个,用来表示系统的运行级别,具体如下:
标号 | 系统运行级别 |
---|---|
0 | 关机 |
1 | 单用户,类似windows的安全模式,仅启动最少的核心程序,用作修复,无图形界面 |
2 | 不完全用户,不含NFS服务(Network File System) |
3 | 完全多用户 |
4 | 未分配 |
5 | 图形界面 |
6 | 重启 |
-
其中1-3无图形界面,/etc/inittab为init的默认配置文件,可以修改系统默认运行级别,注意,不能把0和6设置为系统的默认运行级别。
-
用runlevel命令可以查看系统的当前和前一个运行级别。
-
登陆服务器后用logout来退出登录状态。