本文概述linux命令,着重讲述一些常用的命令;
linux命令大概可以分为一下十一个种类,以一个简单的思维导图来说明:
这个图简单的概括了Linux命令的分类,下边我将对一些常用的命令进行解释并示例说明,如想全面的了解linux命令,
请点击以下网址:https://www.runoob.com/linux/linux-command-manual.html
权限中各字母代表的含义
u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
下边简单介绍一下常用的Linux20个命令:往下看
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
1. chmod:变更文件或目录的权限
语法:
chmod [OPTION]... [FILE]...
参数:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
示例:
chmod abc file
上边也介绍了a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
所以 chmod 777 file为最高权限
chmod 771 file
chmod 772 file
chmod 774 file
等等一系列的权限
2. cat:正向查看文本内容
语法:
cat [OPTION]... [FILE]...
参数:
-n:给显示的文本行编号
-E:显示行结束符号$
示例:
cat -n /etc/zy --查看/etc/zy内容并显示行号
3. ls:列出指定目录下的内容
语法:
ls [OPTION]... [FILE]...
参数:
-a:显示所有文件包括隐藏文件
-A:显示除.和..之外的所有文件
-l,--long:显示文件的详细属性信息
-h:对文件大小进行单位换算,可能影响精度
-d:查看目录本身而非其内部的文件
-r:逆序显示文件
-R:递归显示文件
示例:
ls -lah --详细显示/目录下的所有文件(包括隐藏文件)
ls -ldh /etc --详细显示/etc目录本身
ls -lhv --倒序显示/目录下所有文件(包括隐藏文件)
ls -R /etc --递归显示/etc下所有文件
4. pwd:显示当前目录
5. cp:复制
语法:
单源复制:cp [OPTION]... [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
多源复制:cp [OPTION]... SOURCE... DIRECTORY(DEST必须为directory)
参数:
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
-r,-R:递归复制目录
示例:
cp -if /data/[1-3].txt /data/zy zy必须为目录,把三个文件一起复制到zy中
cp -r /data /test 把data目录及目录下的内容一起复制到tset中
6. mv:剪切
语法:
单源复制:mv [OPTION]... [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
多源复制:mv [OPTION]... SOURCE... DIRECTORY(DEST必须为directory)
参数:
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
示例:
mv -i /data/[1-3].txt /zy 把/data目录下三个txt文件剪切到/zy下
7. rm:删除
语法:
rm [OPTION]... FILE...
参数:
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
-r,-R:递归处理,将制定目录下的所有文件包括目录一并删除
示例:
rm -rf /zy 递归删除/zy目录
注意:rm -rf /*一定要慎用,没用对的话,敲完回车立马跑路;
8. mkdir:创建目录
语法:
mkdir [OPTION]... DIRECTORY...
参数:
-p:自动按需创建父目录
-m:创建目录时给定权限
示例:
mkdir -p /data/zy/usr/test --在/data目录下递归创建/zy/usr/test三个目录
mkdir -m 711 -p /data/zy/usr --在/data目录下递归创建/zy/usr两个目录同时指定目录usr的权限为711
9. cd:切换目录
示例:
cd ..:切换到上级目录
cd ~:切换回自己的家目录
cd -:在上一次目录与当前目录直接来回切换
10.grep命令:查找文件里符合条件的字符
语法:
grep [-acinv] [--color=auto] '查找字符串' filename
参数:
-a 或 --text : 不要忽略二进制的数据。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-c 或 --count : 计算符合样式的列数。
-i 或 --ignore-case : 忽略字符大小写的差别。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-s 或 --no-messages : 不显示错误信息。
-v 或 --revert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
示例:
grep -r update /home/usr 以递归的方式查找符合条件的文件
11. find:在指定目录下查找文件
语法:
find path -option [ -print ] [ -exec -ok command ] {} \;
参数:
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
示例:
将目前目录及其子目录下所有延伸档名是 c 的文件列出来:find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出:# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出:find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
12. ps:显示当前进程 (process) 的状态
语法:
ps [options] [--help]
参数:
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
示例:
ps -A 显示进程信息
ps -u root //显示root进程用户信息
ps -ef //显示所有命令,连带命令行
13. kill:删除执行中的程序或工作
语法:
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数:
-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-s <信息名称或编号> 指定要送出的信息。
示例:
杀死进程: kill 12345
强制杀死进程:kill -KILL 123456
发送SIGHUP信号,可以使用一下信号:kill -HUP pid
彻底杀死进程:kill -9 123456
14. file:辨识文件类型
语法:
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数:
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。
-m<魔法数字文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
示例:
file install.log 显示所有信息
file -b install.log 不显示文件名称
file -i install.log 显示MIME类别
15. tar:创建目录
语法:
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
参数:
-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir
示例:
压缩 a.c文件为test.tar.gz tar -czvf test.tar.gz a.c
列出压缩文件内容 tar -tzvf test.tar.gz
解压文件 tar -xzvf test.tar.gz
16. unzip:解压文件
语法:
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
参数:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d<目录> 指定文件解压缩后所要存储的目录。
-x<文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
示例:
查看压缩文件中包含的文件:unzip -l abc.zip
查看压缩文件目录信息,但是不解压该文件:unzip -v abc.zip
17. chgrp:变更文件或目录的所属群组
语法:
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参数:
-c或--changes 效果类似"-v"参数,但仅回报更改的部分。
-f或--quiet或--silent 不显示错误信息。
-h或--no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose 显示指令执行过程。
--help 在线帮助。
--reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
--version 显示版本信息。
示例:
改变文件的群组属性:chgrp -v bin log2012.log
根据指定文件改变文件的群组属性:chgrp --reference=log2012.log log2013.log
18. tail:查看文件的内容
语法:
tail [参数] [文件]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
示例:
tail -n 100 /etc/cron #显示最后100行数据
tail -n -100 /etc/cron #除了前99行不显示外,显示第100行到末尾行
19. vi/vim:文本编辑
语法:mkdir [OPTION]... DIRECTORY...
参数:
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
示例:
vim /usr/local/nginx/conf/nginx.conf 查看nginx
20. time:量测特定指令执行时所需消耗的时间及系统资源
语法:time [options] COMMAND [arguments]
参数:
-o 或 --output=FILE:设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
-a 或 --append:配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
-f FORMAT 或 --format=FORMAT:以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如此一来就不必每次登入系统都要设定一次。
示例:
time date 获取当前时间
参考资料来源于菜鸟手册;