Linux常用命令

Linux命令终端快捷键

Ctrl+a:光标回到命令行首。 (a:ahead)
Ctrl+e:光标回到命令行尾。 (e:end)
Ctrl+b:光标向行首移动一个字符。 (b:backwards)
Ctrl+f:光标向行尾移动一个字符。 (f:forwards)
Ctrl+w: 删除光标处到行首的字符。
Ctrl+k:删除光标处到行尾的字符。
Ctrl+u:删除整个命令行文本字符。
Ctrl+h:向行首删除一个字符。
Ctrl+d:向行尾删除一个字符。
Ctrl+y::粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本。
Ctrl+p: 上一个使用的历史命令。 (或者直接按向上方向键;p:previous)
Ctrl+n: 下一个使用的历史命令。(或者直接按向下方向键;n:next)
Ctrl+r:快速检索历史命令。(r:retrieve)。
Ctrl+t: 交换光标所在字符和其前的字符。
Ctrl+i:相当于Tab键。
Ctrl+o:相当于Ctrl+m.
Ctrl+m:相当Enter键。
其他控制键:
Ctrl+s:使终端发呆,静止,可以使快速输出的终端屏幕停下来。
Ctrl+q:退出Ctrl+s引起的发呆。
Ctrl+z:使正在运行在终端的任务,运行于后台。 (可用fg恢复)
Ctrl+c:中断终端中正在执行的任务。
Ctrl+d: 在空命令行的情况下可以退出终端。
Ctrl+[ :相当于Esc键。
Esc键:连续按3次显示所有的支持的终端命令。
Tab键:命令、文件名等自动补全命令或目录、文件名。
alt+/:同Tab键

查看系统和硬件相关信息的命令简介

# uname -a # 查看内核/操作系统/CPU信息 
# head -n 1 /etc/issue # 查看操作系统版本 
# cat /etc/redhat-release # 查看操作系统版本(redhat,centos,fedora)
# cat /proc/cpuinfo # 查看CPU信息 
# hostname # 查看计算机名 
# lspci -tv # 列出所有PCI设备 
# lsusb -tv # 列出所有USB设备 
# lsmod # 列出加载的内核模块 
# env # 查看环境变量资源 
# free -m # 查看内存使用量和交换区使用量 
# df -h # 查看各分区使用情况 
# du -sh <目录名> # 查看指定目录的大小 
# grep MemTotal /proc/meminfo # 查看内存总量 
# grep MemFree /proc/meminfo # 查看空闲内存量 
# uptime # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg # 查看系统负载磁盘和分区 
# mount | column -t # 查看挂接的分区状态 
# fdisk -l # 查看所有分区 
# swapon -s # 查看所有交换分区 
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) 
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络 
# ifconfig # 查看所有网络接口的属性 
# iptables -L # 查看防火墙设置 
# route -n # 查看路由表 
# netstat -lntp # 查看所有监听端口 
# netstat -antp # 查看所有已经建立的连接 
# netstat -s # 查看网络统计信息进程 
# ps -ef # 查看所有进程 
# top # 实时显示进程状态用户 
# w # 查看活动用户 
# id <用户名> # 查看指定用户信息 
# last # 查看用户登录日志 
# cut -d: -f1 /etc/passwd # 查看系统所有用户 
# cut -d: -f1 /etc/group # 查看系统所有组 
# crontab -l # 查看当前用户的计划任务服务 
# chkconfig –list # 列出所有系统服务 
# chkconfig –list | grep on # 列出所有启动的系统服务程序 
# rpm -qa # 查看所有安装的软件包

VI模式切换和退出

进入vi编辑文件内容:

vi 文件名
vi 目录/文件名

vi进入编辑模式:
Shift+字母i
从编辑模式返回命令模式:
ESC
从命令模式vi退出:

:w   保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w!   强制保存,不推出vi
:wq  保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q  不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
:set nu 显示行号

注意:千万别将英文冒号":“敲成中文冒号”:"。

VI前进后退操作

在vi中按u可以撤销一次操作
u 撤销上一步的操作
Ctrl+r 恢复上一步被撤销的操作
注意:
如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了。
重做
如果你撤销得太多,你可以输入CTRL-R(redo)回退前一个命令。换句话说,它撤销一个撤销。要看执行的例子,输入CTRL-R两次。字符A和它后面的空格就出现了:
young intelligent turtle
有一个特殊版本的撤销命令:“U”(行撤销)。行撤销命令撤销所有在前一个编辑行
上的操作。 输入这些命令两次取消前一个“U”:
A very intelligent turtle
xxxx 删除very
A intelligent turtle
xxxxxx 删除turtle
A intelligent
用“U”恢复行
A very intelligent turtle
用“u”撤销“U”
A intelligent
“U”命令自己改变自己,“u”命令撤销操作,CTRL-R命令重做操作。这有点乱,但不用
担心,用“u”和CTRL-R命令你可以切换到任何状态。
流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。
相关帮助: :help CTRL-O :help CTRL-I :help jump-motions

VI查找内容

使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容。
这时,使用查找功能尤为重要。
方法如下:
1、命令模式下输入“/字符串”,例如“/Section 3”。
2、如果查找下一个,按“n”即可。
要自当前光标位置向上搜索,请使用以下命令:

/pattern Enter

其中,pattern表示要搜索的特定字符序列。
要自当前光标位置向下搜索,请使用以下命令:

?pattern Enter

Linux文件权限介绍

r:read就是读权限 --数字4表示
w:write就是写权限 --数字2表示
x:excute就是执行权限 --数字1表示
权限表示一共需要占9个字符的:— — —
前三个字符表示用户权限,中间三个表示用户所在的组权限,最后三个表示其他用户权限
例子:rw-r–r–
rw-是说用户有读、写权,没有运行权,接着的r–表示用户组只有读权限,没有写入、运行权,最后的r–指其他用户只有读权限,没有写入、运行权。
用数字表示就是644。
例子:777
777就是rwxrwxrwx,意思是用户、用户组和其他用户都有最高权限。

压缩和解压

zip命令
  解压1:unzip FileName.zip
  解压2:unzip FileName.zip -d TargetDir
  压缩1:zip -r TargetDir/FileName.zip DirName
  压缩2:zip -r TargetDir/FileName.zip DirName/*
  压缩3:zip -r TargetDir/FileName.zip File1 File2 File3
  注意,zip解压适用于解压jar和war文件
tar命令
  解包:tar zxvf FileName.tar
  打包:tar czvf FileName.tar DirName
.tar.gz 和 .tgz
  解压:tar zxvf FileName.tar.gz
  压缩:tar zcvf FileName.tar.gz DirName
.tar.bz
  解压:tar jxvf FileName.tar.bz
.tar.bz2
  解压:tar jxvf FileName.tar.bz2
  压缩:tar jcvf FileName.tar.bz2 DirName
.tar.Z
  解压:tar Zxvf FileName.tar.Z
  压缩:tar Zcvf FileName.tar.Z DirName
gz命令
  解压1:gunzip FileName.gz
  解压2:gzip -d FileName.gz
  压缩:gzip FileName
bz2命令
  解压1:bzip2 -d FileName.bz2
  解压2:bunzip2 FileName.bz2
  压缩: bzip2 -z FileName
bz命令
  解压1:bzip2 -d FileName.bz
  解压2:bunzip2 FileName.bz
Z命令
  解压:uncompress FileName.Z
  压缩:compress FileName
7z命令(如果没有7z命令请先执行“yum install p7zip”)
解压:7z x FileName.7z -o/home/zhichao
//注意,x参数解压会自动生成与压缩文件名相同的目录,-o表示输出目录,其与目录路径之间没有空格,上面命令会解压FileName.7z到home/zhichao/FileName目录中。
压缩:7z a FileName.7z DirName

scp远程文件拷贝命令

格式1(上传):
scp 可选的命令参数 本机文件路径 远程主机用户名@远程主机IP:远程主机文件路径
示例:

# 将本机 /fossdata/iot/temp目录下所有shtml文件上传到192.168.0.198服务器的/fossdata/iot/webapp/fmp-portal/pages目录
scp /fossdata/iot/temp/*.shtml [email protected]:/fossdata/iot/webapp/fmp-portal/pages

格式2(下载):

scp 可选的命令参数 远程主机用户名@远程主机IP:远程主机文件路径 本机文件路径
示例:

# 将192.168.0.198服务器的InternetOfThingsCardController.class文件下载到本机/fossdata/iot/temp/目录
scp [email protected]:/fossdata/iot/webapp/fmp-portal/WEB-INF/classes/com/szwisdom/fmp/portal/web/InternetOfThingsCardController.class /fossdata/iot/temp/

参数:

-1 强制scp命令使用协议ssh1

-2 强制scp命令使用协议ssh2

-4 强制scp命令只使用IPv4寻址

-6 强制scp命令只使用IPv6寻址

-B 使用批处理模式(传输过程中不询问传输口令或短语)

-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)

-p 保留原文件的修改时间,访问时间和访问权限。

-q 不显示传输进度条。

-r 递归复制整个目录。

-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。

-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。

-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。

-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。

-l limit 限定用户所能使用的带宽,以Kbit/s为单位。

-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,

-P port 注意是大写的P, port是指定数据传输用到的端口号

-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

wget下载命令

格式:

wget 参数 url

参数:

-b:后台下载,Wget默认的是把文件下载到当前目录。
-O:将文件下载到指定的目录中。
-P:保存文件之前先创建指定名称的目录。
-t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。
-c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。
-r:使用递归下载

示例:
下载Imaging-1.1.7.tar.gz到命令行当前所在的目录。

wget http://www.pil.com/latest/Imaging-1.1.7.tar.gz

grep命令

grep命令使用正则表达式检索符合条件的内容,一般与其他命令组合使用。
格式:

grep 参数 条件

参数:

-a   --text   #不要忽略二进制的数据。   
-A<显示行数>   --after-context=<显示行数>   #除了显示符合范本样式的那一列之外,并显示该行之后的内容。   
-b   --byte-offset   #在显示符合样式的那一行之前,标示出该行第一个字符的编号。   
-B<显示行数>   --before-context=<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前的内容。   
-c    --count   #计算符合样式的列数。   
-C<显示行数>    --context=<显示行数>或-<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前后的内容。   
-d <动作>      --directories=<动作>   #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。   
-e<范本样式>  --regexp=<范本样式>   #指定字符串做为查找文件内容的样式。   
-E      --extended-regexp   #将样式为延伸的普通表示法来使用。   
-f<规则文件>  --file=<规则文件>   #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。   
-F   --fixed-regexp   #将样式视为固定字符串的列表。   
-G   --basic-regexp   #将样式视为普通的表示法来使用。   
-h   --no-filename   #在显示符合样式的那一行之前,不标示该行所属的文件名称。   
-H   --with-filename   #在显示符合样式的那一行之前,表示该行所属的文件名称。   
-i    --ignore-case   #忽略字符大小写的差别。   
-l    --file-with-matches   #列出文件内容符合指定的样式的文件名称。   
-L   --files-without-match   #列出文件内容不符合指定的样式的文件名称。   
-n   --line-number   #在显示符合样式的那一行之前,标示出该行的列数编号。   
-q   --quiet或--silent   #不显示任何信息。   
-r   --recursive   #此参数的效果和指定“-d recurse”参数相同。   
-s   --no-messages   #不显示错误信息。   
-v   --revert-match   #显示不包含匹配文本的所有行。   
-V   --version   #显示版本信息。   
-w   --word-regexp   #只显示全字符合的列。   
-x    --line-regexp   #只显示全列符合的列。   
-y   #此参数的效果和指定“-i”参数相同。

示例:
从文件info.txt中读取关键词system进行搜索

cat /home/usr/download/info.txt | grep -f system

从文件info.txt中读取关键词system进行搜索并显示行号

cat /home/usr/download/info.txt | grep -nf system

cat命令

cat命令用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
格式:

cat 参数 文件

参数:

-A, --show-all           等价于 -vET
-b, --number-nonblank    对非空输出行编号
-e                       等价于 -vE
-E, --show-ends          在每行结束处显示 $
-n, --number     对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 
-t                       与 -vT 等价
-T, --show-tabs          将跳格字符显示为 ^I
-u                       (被忽略)
-v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

示例:
把 log.php 的文件内容加上行号后输出到new_log.php这个文件中

cat -n /data/www/project/log.php /data/www/project/new_log.php

ps命令

ps命令是process status的缩写,顾名思义就是查看系统中所有进程状态状态。
ps命令查看的程序状态并不是动态连续的,如果想对进程实施监控,请用top命令。
如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。
格式:

ps 参数

参数:

a  显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c  显示进程的真实名称
-N 反向选择
-e 等于“-A”
e  显示环境变量
f  显示程序间的关系
-H 显示树状结构
r  显示当前终端的进程
T  显示当前终端的所有程序
u  指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程 

示例:
显示java相关程序

ps aux|grep java

显示httpd相关程序

ps aux|grep httpd

查看正在使用8080端口的程序

ps -ef|grep 8080

fuser 命令

fuser用于查找正在使用指定的某个文件、挂载点、网络端口的进程的详细信息。
格式:

fuser 参数 文件或挂载点或网络端口

参数:

a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。 
-c 和-m一样,用于POSIX兼容。 
-d 暗示使用了 -c 和 -x 标志。关于任何与文件系统(自父目录删除的)无链接的打开文件的报告。当与 -V 标志一起使用时,它也会报告被删除文件的节点号和大小。
-f 仅对文件的打开实例报告。
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。 
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。 
-l 列出所有已知的信号名称。 
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。 
-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。 
-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。 
-signal 使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。 
-u 在每个PID后面添加进程拥有者的用户名称。 
-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.  -V 输出版本号。 
-x 与 -c 或 -f 连用,报告除标准 fuser 输出以外的可执行的和可载入的对象。
-4 使用IPV4套接字,不能和-6一起应用,只在-n的tcp和udp的命名存在时不被忽略。 
-6 使用IPV6套接字,不能和-4一起应用,只在-n的tcp和udp的命名存在时不被忽略。

示例:
查看和关闭正在使用readme.txt文件的程序

fuser -mv readme.txt
fuser -mk readme.txt

查看和关闭正在使用80端口的程序

fuser -nv tcp 80
fuser -nk tcp 80

chown命令

chown命令将指定文件或文件夹的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。
格式:

chown 参数 用户 文件

参数:

-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身

示例:
将目录/data/www/project/下的所有文件和目录的拥有者都修改为apache账户。

chown -R apache.apache /data/www/project/

chmod命令

chmod命令用于改变linux系统文件或目录的访问权限,用它控制文件或目录的访问权限。
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
格式:

chmod 参数 权限模式 文件  

参数

-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息

权限模式
多个权限模式可用“,”分隔。

<角色>+<权限> 使权限范围内的目录或者文件增加指定的权限
<角色>-<权限> 删除权限范围的目录或者文件的指定权限
<角色>=<权限> 设置权限范围内的目录或者文件的权限为指定的值

角色

u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限

r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
s :特殊权限 
数字0:表示没有权限

示例:
将目录/data/www/project/下的所有文件和目录的访问权限修改为“当前用户、当前用户组和其他用户都可读可写可执行”的权限。

chmod -R 777 /data/www/project/

将/tomcat/bin/目录下所有sh文件增加执行权限。

chmod +x /tomcat/bin/*.sh

kill命令

kill命令用于关闭指定进程。
格式:

kill 参数 信号 进程ID

参数:

-s  指定发送信号
-l  根据信号名显示信号编号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号
-u  指定用户

信号:

信号名 信号编号 信号含义
HUP    1    终端断线
INT     2    中断
QUIT    3    退出
TERM   15    终止
KILL    9    强制终止
CONT   18    继续(与STOP相反)
STOP    19    暂停(

示例:
显示信号KILL的信号编号

kill -l KILL

关闭apache用户下所有进程

kill -u apache.apache

强制关闭进程ID为1937的进程,参数s可以省略。

kill -s 9 1937
kill -9 1937

top命令

top命令查看系统中各个进程的资源占用状况,默认使用cpu占用来排序显示,top命令显示的结果是实时的。
格式:

top 参数

参数:

-b 批处理
-c 显示完整的治命令
-i<时间> 设置间隔时间
-I 忽略失效过程
-p<进程号> 指定进程
-n<次数> 循环显示的次数
-s 保密模式
-S 累积模式
-u<用户名> 指定用户名

示例:
查看所有程序资源占用状况

top

查看apache用户所有程序资源占用状况

top -u apache.apache

find命令

在指定目录中查找指定条件的文件或文件夹。
格式:

find 目录路径 选项 查找条件

选项:

-name   按照文件名查找文件。
-perm   按照文件权限来查找文件。
-prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user   按照文件属主来查找文件。
-group  按照文件所属的组来查找文件。
-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。
-type<类型参数>  查找某一类型的文件,诸如:
	b - 块设备文件。
	d - 目录。
	c - 字符设备文件。
	p - 管道文件。
	l - 符号链接文件。
	f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
-amin n   查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n   查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n   查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件

示例:
查找 "/"目录(Linux系统根目录)下名称为httpd.conf的文件

find / -name httpd.conf

查找 "/data/www/project/"目录下所有php文件

find /data/www/project -name *.php

查找 "."目录(当前目录)下权限为777的文件

find . -perm 777

查找 "/"目录下48小时内修改过的文件

find / -atime -2

查找 "/"目录下所有文件夹

find / -type d

查找 "/"目录下大于1kb的文件

find / -size +1000c

whereis命令

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。
但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
whereis常用于查找安装程序的安装目录。
格式:

whereis 参数 程序名

参数:

-b   定位可执行文件。
-m   定位帮助文件。
-s   定位源代码文件。
-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B   指定搜索可执行文件的路径。
-M   指定搜索帮助文件的路径。
-S   指定搜索源代码文件的路径。

示例:
查找mysql安装目录

whereis mysql

ls命令

ls命令用来查看目标目录中所有的子目录和文件信息。
格式:

ls 参数 目录名

参数:

-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c  配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。   
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
	extension -X status -c
	none -U time -t
	size -S atime -u
	time -t access -u
	version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
	配合 -l:显示访问时间但根据名称排序
	否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开

示例:
显示当前目录下所有文件和子目录(包括隐藏文件和隐藏目录)的详细信息

ls -a -l

显示"/data/www/project"目录下所有文件和子目录(不包括隐藏文件和隐藏目录)的详细信息

ls -l /data/www/project

显示"/data/www/project"目录下所有文件和子目录(包括隐藏文件和隐藏目录)的名称

ls -a /data/www/project

lsof命令

示例:
查看8000端口被哪个程序占用

lsof -i :8000

sudo命令

sudo命令是个管理员分配给一些linux用户执行一些没有权限的命令。
如果发现执行linux命令提示没有权限什么balabala的,不管什么命令,前面先加上sudo试试。
格式:无需了解
参数:无需了解
示例:

sudo yum install xxxx
sudo svn up xxxx
sudo rm -r xxxx

tail命令

tail命令用于显示指定文件的末尾内容,并且使用-f参数可以查看即时的文件内容,常用查看日志文件。
格式:

tail 参数 文件

参数:

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. 
-q, --quiet, --silent 从不输出给出文件名的首部 
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

示例:
及时显示/data/www/project目录下log.php文件的末尾内容

tail -f /data/www/project/log.php

及时显示/data/www/project目录下log.php文件的500行末尾内容

tail -f -n 500 /data/www/project/log.php

cp命令

cp命令用于复制文件或目录。
格式:

 cp 参数 原文件或原目录 目标文件或目录

参数:

-a或--archive  等于-dR或-dpR
--backup  为每个已存在的目标文件创建备份
-b  类似--backup但不接受参数
--copy-contents  在递归处理是复制特殊文件内容
-d或--no-dereference或--preserve=links 若源文件为连接文件属性,则复制连接文件指向的文件而非复制文件本身
-s或--symbolic-link 对源文件建立符号链接,而非复制文件
-f或--force  强制操作,如果目标文件无法打开则将其移除并重试(当-n选项存在时则不需再选此项)
-i或--interactive  覆盖前询问(使前面的-n选项失效)
-H  跟随源文件中的命令行符号链接
-l或--link  链接文件而不复制
-L或--dereference  总是跟随符号链接
-n或--no-clobber  不要覆盖已存在的文件(使前面的-i选项失效)
-P或----parents  保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经存在
-p等于--preserve  保留源文件或目录的属性,包括所有者、所属组、权限与时间
--preserve[=属性列表  保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接等
-R或-r或--recursive  递归处理,复制目录及目录内的所有项目
-u或--update  使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件
-v或--verbose  显示执行过程
-x或--one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件

示例:
强行复制文件index.html到目录/data/www/project

cp -f -v /home/usr/download/index.html /data/www/project
同:cp -fv /home/usr/download/index.html /data/www/project

rm命令

rm命令和cp命令类似。
示例:
删除download目录

rm -rf /home/usr/download

删除download目录下的所有文件和子目录,但保留download目录

rm -rf /home/usr/download/*

mv命令

mv命令和cp命令类似。
示例:
移动download目录中的所有子目录和文件到/data/www/project 目录,但保留download目录

mv -rf /home/usr/download/* /data/www/project 

rpm命令

rpm是RedHat Package Manager(RedHat软件包管理工具)的简称。
.rpm执行安装包分为二进制包(Binary)以及源代码包(Source)两种,二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。

常用参数:
-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
-q samba :查询程序是否安装

常用命令:
install/upgrade/remove:安装/更新/卸载

yum命令

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

常用参数:
-e 静默执行
-t 忽略错误
-R[分钟] 设置等待时间
-y 自动应答yes
–skip-broken 忽略依赖问题
–nogpgcheck 忽略GPG验证

全部命令:
check-update 检查可更新的包
clearn 清除全部
clean packages 清除临时包文件(/var/cache/yum 下文件)
clearn headers 清除rpm头文件
clean oldheaders 清除旧的rpm头文件
deplist 列出包的依赖
list 可安装和可更新的RPM包
list installed 已安装的包
list extras 已安装且不在资源库的包
info 可安装和可更新的RPM包 信息
info installed 已安装包的信息(-qa 参数相似)
install[RPM包] 安装包
localinstall 安装本地的 RPM包
update[RPM包] 更新包
upgrade 升级系统
search[关键词] 搜索包
provides[关键词] 搜索特定包文件名
reinstall[RPM包] 重新安装包
repolist 显示资源库的配置
resolvedep 指定依赖
remove[RPM包] 卸载包

如果要安装指定版本或指定插件,则需要详细文件名称:
[zhichao@localhost ~]$ sudo yum list java*
java-1.8.0-openjdk.x86_64 1:1.8.0.45-36.b13.fc22 @System
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.45-36.b13.fc22 @System
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.45-36.b13.fc22 @System
sudo yum install java-1.8.0-openjdk-devel.x86_64

apt-get命令

apt-get(全称Advanced Package Tool)的作用同于yum,不过使用该命令的操作系统为Ubuntu和Debian。
经过修改后可以使用apt-rpm处理红帽的Package Manager(RPM)文件。

常用命令:
apt-get install packagename
安装一个新软件包
apt-get remove packagename
卸载一个已安装的软件包(保留配置文档)
apt-get remove --purge packagename
卸载一个已安装的软件包(删除配置文档)
apt-get autoremove packagename
删除包及其依赖的软件包
apt-get autoremove --purge packagname
删除包及其依赖的软件包+配置文件,比上面的要删除的彻底一点
dpkg --force-all --purge packagename
有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险。

dnf命令

dnf是fedora22新的用于替换yum和rpm的命令。
在使用yum时,会提示过时,但仍然可用。
详细了解请看一下这篇文章:[http://www.linuxidc.com/Linux/2015-06/118751.htm](http://www.linuxidc.com/Linux/2015-06/118751.htm)

service命令和systemctl命令

在cenos7和fedora22中,systemctl替换了service命令。
写法从以前的:service start mysqld
变成了:systemctl start mysqld.service
详细了解请看一下这篇文章:http://www.linuxidc.com/Linux/2015-07/120833.htm

或者:
https://wiki.archlinux.org/index.php/Systemd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

pwd命令

pwd命令可以获取当前目录的全路径。
示例:
$ pwd
/home/zhichao/下载

su命令

su命令用于切换用户。
示例:
$ su root
Password:输入密码

tree命令(需安装tree命令)

tree -N -L 1
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上”*”,”/”,”=”,”@”,”|”号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I<范本样式> 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-L level_number限制显示文件的层级,如-L 1表示只显示一级子目录结构。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用”?”号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

你可能感兴趣的:(Linux,linux,linux命令,vi,bash)