首先说明一下吧,Shell命令和Linux的关系就像SQL和数据库的关系一样。
自动补全命令的快捷键
Tab键
方向键的上下键是历史命令
方向键的左右键是移动光标
显示当前所在的路径
Pwd
显示当前路径下的所有文件
Ls
蓝色为文件夹,没有颜色的是文件
进入文件夹(切换路径)
Cd
Cd后面可以是绝对路径,也可以是相对路径
进入上级目录
Cd ..
清空当前的窗口信息
Clear
回到根目录
Cd ~
以列表的形式显示当前路径下的所有文件
Ls –l
也可以ll
显示包括隐藏文件在内的所有文件
Ls –a
(扩展:其实在Linux中,要标注这个文件为隐藏文件的话只需要在名字的最前面加上一个“.”就表示它是个隐藏文件了,也就是说隐藏文件和文件夹都是“.”开头的)
显示文件,而且文件大小按KB展示
Ls –l –h
也可以ls –lh或者ls –hl或者ls –hal(注意,这里有a,,所以也显示了隐藏文件)
显示任何以.txt结尾的文件
Ls *.txt
显示所有以1开头的文件
Ls 1*
显示所有以1开头,.txt结尾的文件
Ls 1*.txt
显示只有任意两个字符的文件
Ls ??
显示命名为3个字符且以.txt结尾的文件
Ls ???.txt
?仅代表一个字符,*代表多个字符
显示出给定选项中的一个文件
比如:ls [1234]23.txt
则只能显示123.txt或者223.txt或者323.txt或者423.txt文件
也就是说[]内只能选择一个(像极了正则表达式对吧)
当然,如果是连续的,向上面这样,则也可以写成ls [1-4]23.txt
Cd是用来打开文件夹,或者说切换路径的,不能打开文件
打开当前目录
Cd .
是不是发现没反应?废话
打开上一级目录
Cd ..
打开上一级的上一级目录
Cd ../..
注意到了吗,和Window不一样,Linux的路径是/,但是Window的是用\
打开家目录
Cd ~
或者直接就 cd也可以
打开根目录
Cd /
上一级目录和当前目录来回横跳
Cd –
意思也就是说,我们现在是在当前目录中,我们cd –之后就会到上一级目录,在上一级目录cd –之后就又回到了当前目录,这样来回横跳。
创建文件
Touch 文件名.文件后缀名
比如: touch a.txt
创建了a.txt文件
(注意,只能创建文件,不能创建文件夹)
创建文件夹
Mkdir 文件夹名字
比如 mkdir aa
创建了名为aa的文件夹
(注意:只能创建文件夹)
创建隐藏文件
Touch .隐藏文件名.隐藏文件后缀名
比如: toucho .b.txt
(关键点:文件名前面那个“.”)
移除文件
Remove a.txt
移除了a.txt文件
还可以缩写为rm a.txt
移除文件夹
Remove –d aa或者
Remove –r aa
当然,上面两个的remove也可以换成rm
移除隐藏文件
Rm .b.txt
剪切
move test.txt aa
将test.txt文件移到aa文件夹里。
如果没有指定名字就用原来的,比如这里移除到aa文件夹里的依然是test.txt这个名字。
但是可以修改名字的,比如:
Move test.txt aa/test1.txt
这样,剪切到aa文件夹中的test.txt文件就是test1.txt文件名了。
它也可以剪切文件夹。
复制
Cp test.txt aa
复制test.txt文件到aa文件夹
将aa文件夹下的bb文件夹复制到当前目录中
Cp –r aa/bb
将1.txt文件移到a文件夹下并修改名字为2.txt
Cp 1.txt aa/2.txt
将1.txt复制到当前目录并修改名字为2.txt
Cp 1.txt 2.txt
查找ls命令所在的位置
Which ls
为什么有查看LS命令所在位置这一说法呢?因为我们看到的只是我们敲了代码就运行了,但是其实后台是有根据我们敲入的代码去调用相应的程序的,所以其实每一个命令都对应一个程序。
但是注意,cd是Shell内置的命令,没有对应的程序,所以我们查不到。
搜索当前目录下名字为125.txt的文件
Find / -name 125.txt
Ctrl+C停止
搜索home文件夹下名字为125.txt的文件
Find /home –name 125.txt
搜索以125开头的所有文件
Find / -name 125*
搜索以125开头的后面有3个字符的文件
Find / -name 125???
搜索以125开头的所有文件(忽略大小写)
Find / -i –name 125*
其实也可以写成find / -iname 125*
按照文件大小来搜索
Find / -size +1
后面的1其实是块,1块=512B
+1表示大于512B的,-1表示小于512B的
所以这里的意思是搜索当前目录下文件大小大于512B 的文件
按照文件所属人搜索
Find / -user me
搜索当前目录下文件所属人是me的所有文件
5分钟前被修改的文件
Find / -mmin +5
表示5分钟前修改的
如果是-5表示5分钟内修改的
按文件类型搜索
Find / -type f
其中f表示文件,d表示文件夹,l表示软连接
以上的条件可以联合使用,比如
文件以a开头而且类型是文件夹的文件
Find / -name a* -a –type d
其中-a表示且的关系,如果是-o则表示或的关系
显示文件的Id(唯一的)
Ls –i
根据文件Id查找文件
Find / -inum 123
搜索当前目录下文件Id为123的文件
搜索文件(路径中包含也算)
Locate me
搜索文件名为me的文件,注意,可能搜索出来的和me无关,但是一定是因为它的路径中有me,比如显示出a.txt,那么可能是因为a.txt的路径为/home/me/…什么的
速度非常快,因为它有自己的索引库
查看文件中的内容(不分页)
Cat 123.txt
查看123.txt文件中内容,不会分页
查看文件中的内容(分页)
More 123.txt
显示文件内容并给出行号
Cat –n 123.txt
More –n 123.txt
在指定文件中搜索指定内容
例如grep user 123.txt
则在123.txt文件中,含有user的行都会被打印出来
不仅显示内容,还显示行号
Grep –n user 123.txt
反向搜索
Grep –v user 123.txt
抓取文件中以#开头的行
Grep ^# 123.txt
抓取文件中以s结尾的行
Grep s$ 123.txt
忽略大小写
Grep -I(不是L,是i) abd 123.txt
在控制台输出语句
Echo hello
输出hello
将内容输入到文件中,如果文件存在,则会覆盖内容,不存在则创建
Echo hello > 123.txt
如果原本就存在123.txt文件并且里面有内容的话,会被清空然后变为hello,如果不存在123.txt则会创建后在写入。
追加的方式写入
Echo hello >> 123.txt
将ls得到的结果输入到文件中
比如:ls > 123.txt就是将ls本来输出到控制台的内容输入到了123.txt文件中
追加的方式写入
Ls >> 123.txt
注意,任何有输出结果的都可以这样
管道(一个命令的输出相当于另一个命令的输入)
比如:ls –lh | grep 123.txt相当于ls –lh (grep 123.txt)
也就是说:grep 123.txt输出的作为ls –lh的查询条件。
添加用户
Useradd 用户名
设置密码
Passwd 用户名 密码
查看系统中的进程状态
Ps
查看文本的前20行
Head –n 20 某个文件
查看后n行或刷新
Tail –f m.txt
将a.txt文本的小写换成大写
Cat a.txt | tr [a-z] [A-Z]
统计a.txt的数
Wc a.txt
比较两个文件是否相等
Diff –brief a b
查看a文件的类型
File a
定义一个变量
PRICE=5
输出这个变量
Echo “Hei $PRICE”
输出Hei 5
注意,如果写成两个$$的话就会输出当前进程的Id
Vim操作
打开文件
Vim 文件
显示行号
Set nu
光标跳到最后
Shift+g
光标跳到开头
Gg
光标跳转到指定行数
行数+g
保存
:w
退出
:q
粘贴
P
删除
Dd
撤销
U
文件权限
以d开头的是十进制(文件夹),以-开头的是二进制(文件)
文件权限有9个部分,每三个为一组:
第一组表示文件所有者对他的权限
第二组表示文件所属组对他的权限
第三组表示其他人对他的权限
其中:
R:可读权限
W:可写权限
X:可运行权限
r—表示只可读
-w-表示只可写
--x表示只可运行
Rw-表示可读写
Rwx表示都可以
一般默认的权限为:rw-r—r—(所有者可读写,所有组可读,其他人可读)
用数字表示权限,则:r:4 w:2 x:1
故而:
r--:4+0+0=4
rw-:4+2+0=6
rwx:4+2+1=7
故而:r—rw-rwx:467
修改文件权限
格式:chmod [agon] [+-=] [rwx] 文件或目录
给所有者添加一个可执行的权限
Chmod u+x 123.txt
消除所有者的可执行权限
Chmod u-x 123.txt
除去所有者的可读写权限和所属组的可读权限
Chmod u-rx,g-r 123.txt
给所有者添加权限
Chmod u=rwx 123.txt
所有者所属组和其他人的权限均为可读
Chmod 444 123.txt
修改文件的所有者和所属组
将123.txt文件的所属者改为user1
Chown 123.txt user1
将123.txt文件的所属组改为group1
Chgrp group1 123.txt
可以在这两个命令中加上-r参数表示递归的修改文件夹下所有的文件的所有者或者所属组。