http://www.92csz.com/study/linux/
pwd 打印出当前所在目录
su test 切换到test用户,当前目录不变
su - test 切换用户后则到了test的家目录/home/test
su 后不加用户,表示切换到root用户
./ 指的是当前目录
../ 指的是当前目录的上一级目录。
mkdir -p /tmp/test/123/ 在temp/test下创建123目录(-p参数的作用了,就是递归创建目录,即使上级目录不存在。还有一种情况就是如果你想要创建的目录存在的话,会提示报错,然后你加上-p参数后,就不会报错了)
rmdir -p d1/d2/d3 只能删除目录不能删除文件,删除了d1,d1/d2, d1/d2/d3
rm -f /tmp/111 强制删除不存在的文件时加-f
rm -r /tmp/test 递归删除目录时需加-r,否则报错
rm -i 删除前询问
echo $PATH 打印path环境变量。
ls -a 列出全部目录和文件,包括隐藏的。linux文件系统中同样也有隐藏文件。这些隐藏文件的文件名是以.开头的。例如.test, /root/.123, /root/.ssh 等等,隐藏文件可以是目录也可以是普通文件。
ls -l 或者 ll :详细列出文件的属性信息,包括大小、创建日期、所属主所属组等等
Ls -d 列出目录,而不是文件。
ln -s test test1 把test和test1建立连接
cp test1 test2
Cp -i 覆盖前询问
Cp -p 连同文件属性一起复制,而非使用默认属性。用于备份文件。
cp -d test1 test2 拷贝软连接,不拷贝文件本身
cp -r 递归拷贝目录
cat 命令则是读一个文件并显示在屏幕
cat -n 把行号也显示在屏幕
> 在linux中这叫做重定向,即把前面产生的输出写入到后面的文件中,如果后面文件有内容会删除文件中的内容。
>> 即把前面产生的输出追加到到文件最后面
touch 命令,看字面意思就是摸一下,没错,如果有这个文件,则会改变文件的访问时间,如果没有这个文件就会创建这个文件
mv aa cc 如果cc存在,则把aa移到cc下面;如果cc不存在,则把aa重命名cc。
mv -f 强制覆盖
more 也是用来查看一个文件的内容。在 more 这个程序的运行过程中,你有几个按键可以按的:
- 空g格键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less 作用跟more一样。less运行时可以输入的命令有:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
head head后直接跟文件名,则显示文件的前十行。如果加 –n 选项则显示文件前n行
head -n 5 /etc/passwd 显示前5行
tail 显示文件的后十行。如果加 –n 选项则显示文件后n行
通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias :
在bash下,可以使用*来匹配零个或多个字符,而用?匹配一个字符。
管道符”|”,就是把前面的命令运行的结果丢给后面的命令
env命令即可全部列出系统预设的全部系统变量
command1 ; command2 分号,用于多条命令间的分隔符
command1 && command2 只有command1执行成功后,command2才会执行
command1 || command2 command1执行成功后command2 不执行,否则去执行command2
[ ] :中括号,中间为字符组合,代表中间字符中的任意一个。
[0-9] 表示0~9的字符组合,[15]表示只含有1或5
”^”表示行的开始,”$”表示行的结尾,那么空行则表示”^$”,如果你只想筛选出非空行,则可以使用 “grep -v ‘^$’ filename”得到你想要的结果
grep -n ‘root’ /etc/passwd 过滤出带有关键字root的行,并输出行号
grep -v 过滤出不带有关键字的行
grep ‘^c’ /etc/passwd 过滤出c字符开头的行
grep ‘h$’ /etc/passwd 过滤出h字符结尾的行
grep ‘^$’ /etc/passwd 过滤出空行
grep ‘^[^a-zA-Z]’ /etc/passwd 过滤出不以字母开头的行
grep 'r..t' /etc/passwd “.”表示任意一个字符,就是把符合r与o之间有两个任意字符的行过滤出来。
“*”表示零个或多个前面的字符。 ‘.*’表示零个或多个任意字符,空行也包含在内。
sed -n ‘1,4’p test.txt 打印1到4行,打印整个文档用 -n ‘1,$’p
sed -n ‘/^a/’p test.txt 打印a开头的行
sed -n ‘/root/’p test.txt 打印包含root的行
ps -a | less 查看所有进程,可以结合less命令来查看
ps -u username 根据用户过滤进程
ps -f 查看格式化的信息列表
ps -e 显示所有进程信息
ps -ef | grep 1000 查找进程id为1000的信息
ps -aux|grep 服务名 用于查看服务是否启动
ps -aux --sort -pcpu | less 根据 CPU 使用来降序排序
ps -aux --sort -pmem | less 根据 内存 使用来降序排序
ps -aux --sort -pcpu,+pmem | head -n 10 显示前十的cpu、内存使用率的进程
watch -n 1 'ps -aux --sort -pmem | head -n 10' 实时监控进程前10的内存使用率进程
netstat -nltp 查看启动了哪些端口
-a 所有端口
-t tcp端口
-u udp端口
-p 显示进程id
-n 不显示主机,端口和用户名
-l 只显示linsten端口
netstat -an | grep 80 检测80端口是否在监听
netstat -ap | grep ssh 找出ssh进程的端口
tail -100f /APP/web/logs/log.log 实时查看某个服务的日志
vim test.txt 进入一般模式,按i,I,a,A,o,O,r,R进入编辑模式,屏幕最下一行出现INSERT。按ESC退出编辑模式。然后按:进入命令模式,最后输入wq保存退出。
一般模式下移动光标
h或向左方向键 |
光标向左移动一个字符 |
|
j或者向下方向键 |
光标向下移动一个字符 |
|
K或者向上方向键 |
光标向上移动一个字符 |
|
l或者向右方向键 |
光标向右移动一个字符 |
|
Ctrl + f 或者pageUP键 |
屏幕向前移动一页 |
|
Ctrl + b 或者pageDOWN键 |
屏幕向后移动一页 |
|
0(数字0)或者Shift+6 |
移动到本行行首 |
|
Shift+4 |
即’$’移动到本行行尾 |
|
H |
光标移动屏幕顶行 |
|
M |
光标移动到当前屏幕的中央那一行 |
|
L |
光标移动到当前屏幕的最底行 |
|
G |
光标移动到文本的最末行 |
|
nG(n是数字) |
移动到该文本的第n行 |
|
gg |
移动带该文本的首行 |
|
|
一般模式下查找与替换
/word |
向光标之后寻找一个字符串名为word的字符串,当找到第一个word后,按”n”继续搜后一个 |
|
?word |
想光标之前寻找一个字符串名为word的字符串,当找到第一个word后,按”n”继续搜前一个 |
|
:n1,n2s/word1/word2/g |
在n1和n2行间查找word1这个字符串并替换为word2,你也可以把”/”换成”#” |
|
:1,$s/word1/word2/g |
从第一行到最末行,查找word1并替换成word2 |
|
:s/r1/r2/ 替换当前行第一个 r2为 r1 :s/r2/r1/g 替换当前行所有 r2为 r1 |
一般模式下删除、复制粘贴
x,X |
x为向后删除一个字符,X为向前删除一个字符 |
|
nx(n为数字) |
向后删除n个字符 |
|
dd |
删除光标所在的那一行 |
|
ndd(n为数字) |
删除光标所在的向下n行 |
|
d1G |
删除光标所在行到第一行的所有数据 |
|
dG |
删除光标所在行到末行的所有数据 |
|
yy |
复制光标所在的那行 |
|
nyy |
复制从光标所在行起向下n行 |
|
p,P |
p复制的数据从光标下一行粘贴,P则从光标上一行粘贴 |
|
进入编辑模式 |
i |
在当前字符前插入字符 |
|
I |
在当前行行首插入字符 |
|
a |
在当前字符后插入字符 |
|
A |
在当前行行末插入字符 |
|
o |
在当前行下插入新的一行 |
|
O |
在当前行上插入新的一行 |
|
命令模式 |
:w |
将编辑过的文本保存 |
:w! |
若文本属性为只读时,强制保存 |
:q |
退出vim |
:q! |
不管编辑或未编辑都不保存退出 |
:wq |
保存,退出 |
:e! |
将文档还原成最原始状态 |
ZZ |
若文档没有改动,则不储存离开,若文档改动过,则储存后离开,等同于:wq |
:w [filename] |
编辑后的文档另存为filename |
:r [filename] |
在当前光标所在行的下面读入filename文档的内容 |
:set nu |
在每行的行首显示行号 |
:set nonu |
取消行号 |
gzip 压缩文件,不能压缩目录,bzip2用法相似
gzip -d 解压缩, bzip2用法相似
tar [-zjxcvfpP] filename
-z :是否同时用gzip压缩
-j :是否同时用bzip2压缩
-x :解包或者解压缩
-t :查看tar包里面的文件
-c :建立一个tar包或者压缩文件包
-v :可视化
-f :后面跟文件名,压缩时跟-f文件名,意思是压缩后的文件名为filename,解压时跟-f文件名,意思是解压filename。请注意,如果是多个参数组合的情况下带有-f,请把f写到最后面。
rpm filename :安装一个rpm包
-i :安装 --force :强制安装,覆盖其他包的文件
-v :可视化 -h :显示进度
--nodeps :当安装包的依赖其他包时,即使其他包没有安装,也要安装这个包
rpm -Uvh filename -U :升级rpm包
rpm -e filename :卸载rpm包
rpm -q 包名 :查询一个包是否安装
yum list 列出所有可用的rpm包
yum list |grep vim 搜索vim的可用包
yum search vim 搜索vim的rpm包
yum install [-y] [rpm包名] 安装包,不加-y选项,则会以与用户交互的方式安装
yum remove [-y] [rpm包名] 卸载包,不加-y选项,则会以与用户交互的方式卸载
yum update [-y] [rpm包] 升级一个rpm包
chgrp [-R] 属组名文件名 递归更改目录下的所有文件的属组名
chown [–R] 属主名 文件名 更改文件属主
chown [-R] 属主名:属组名 文件名 更改文件属主和属组
chmod [-R] test 修改test文件或目录权限
每种身份(user/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
- user = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
chmod |
u |
+(加入) |
r |
文件或目录 |
a表示all
chmod a-x test 拿掉全部人对test的可执行权限。
df -h /etc 查看etc下的磁盘占用
wc 统计指定文件中的字节数、字数、行数,并将统计结果显示输出
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
more 以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/string 在每个档案显示前搜寻该字串,然后从该字串前两行之后开始显示
常用操作命令:
Enter 向下n行,需要定义。默认为1行
空格键 向下滚动一屏
b 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
v 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
find 查找指定目录或文件
列出当前目录及子目录下所有文件和文件夹
在/home
目录下查找以.txt结尾的文件名
找出/home下不是以.txt结尾的文件
find /home -mtime +7 找出7天前修改的
借助-exec
选项与其他命令结合使用
找出当前目录下所有root的文件,并把所有权更改为用户tom
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
top 实时显示 process 的动态。
往linux服务器上传/下载各种安装包,安装rz/sz一步搞定,执行命令
yum install lrzsz
剩下就简单了,在Xshell:
输入rz,会弹出文件选择框,上传文件到Linux
输入sz文件名,会下载文件到Windows~