Linux shell 常用命令

来源:互联网 发布:淘宝在线客服工作时间 编辑:程序博客网 时间:2024/05/21 00:47

1. Root用户,

a) su 然后键入密码  
su 用于让用户在登录期间变成另外一个用户。后边不带 username 使用时,su 默认会变成超级用户。
b) sudo  -s 然后键入密码

2. 不同的cd

a) cd ..   返回上一级目录
b) cd /   进入根目录
c) cd 或cd ~    进入当前用户的主目录,即/home/hy
d) 当前目录cd .

3. 命令行里的通配符

a) *  匹配任意长度的字符串,比如想显示当前目录下的所有的c++文件名,可以使用如下命令
ls *cpp
b) ?   匹配单个字符。
显示当前目录下以text开头,后跟一个字符的文件
ls text?
c) [] 匹配所有出现在[]内的字符
显示当前目录下以text开头,而仅以1或者A结束的文件名
ls text[1A]
d) – 指定字符集范围
显示当前目录下,以text开头,后接一个大写字母的文件名
ls text[A-Z]

4. ls命令

ls命令是list的简写,作用是列出目录下的文件名
-a, 列出所有文件,包括那些以”.”开头的隐藏文件
-l, 用于查看文件的各种属性,包括所有者、大小、修改时间等
可以同时使用多个选项,比如:
ls –al

5. 查看文本文件内容,cat 或者more 或者less

cat 一次性显示所有文件内容
more 一次显示一页。对于大文件more比cat更好用
more file_name
cat -n file_name可以显示行号
less的功能更加强大,可以支持空格翻页、B返回,输入“/”加关键词搜索

6. grep,搜索文件内容

grep [OPTIONS]PATTERN [FILE……]
搜索关键词PATTERN(可以是正则表达式)在[FILE……]列出的文件里出现的行数,可以是多个文件。
如果是-r选项,则搜索文件夹及其子文件夹,否则是搜索文件。
在-r选项下,如果不给出文件列表则表示搜索当前路径,否则搜索指定路径;
在非-r选项下,如果不给出文件列表,则表示搜索默认输入。
所以-r选项下要给路径名,非-r选项下要给文件名。
例如:
grep -r O_RDONLY/usr/include
表示搜索/usr/include目录及其子目录下,所有包含有O_RDONLY的文件,查找的结果如下:
 
如果要查找的关键字本身是带空格的,好比“a   b”,则必须用单引号扩起它们。
grep -r ‘ab’

7. find,查找满足指定要求的文件或目录。

find [OPTION] [path] [express]
与grep的格式不同,grep是先说搜什么,再说在哪搜
find是先说在哪搜,再说搜什么
可以是按照名字(-name)、时间(-atime)、文件属主(-user)等等来搜索,当然最常用的是-name。
查找的目的可以是文件,也可以是目录或者其他,用-type标示。
-type f   查找普通文件
-type d 查找目录
-type l 查找符号链接(快捷方式)
例如:
查找/usr/include/目录下名为stdlib.h的普通文件
find /usr/include/ -name stdlib.h -type f
查找结果:
/usr/include/stdlib.h
/usr/include/x86_64-linux-gnu/bits/stdlib.h
/usr/include/c++/5/tr1/stdlib.h
如果改成:find /usr/include/ -name stdlib.h -type d
则查找不到任何结果,因为没有名叫“stdlib.h”的文件夹。


查找/usr/include/目录下所有以python开头的文件夹
find /usr/include/ -name python*  -type d
查找结果如下:
/usr/include/python2.7
/usr/include/x86_64-linux-gnu/python2.7
/usr/include/x86_64-linux-gnu/python3.5m
/usr/include/python3.5m


find默认是递归查找,一直找到最底层。如果只想查找当前目录则使用 -maxdepth 1 
疑问:find结果默认就是打印出来的,所以加-print有鸡毛用呢?

8. locate更快速的查找命令

locate stdlib.h
/usr/include/stdlib.h
/usr/include/c++/5/tr1/stdlib.h
/usr/include/freetype2/freetype/config/ftstdlib.h
/usr/include/x86_64-linux-gnu/bits/stdlib.h
/usr/include/x86_64-linux-gnu/freetype2/freetype/config/ftstdlib.h
这个命令并不真正查找文件,只是检索文件名数据库。如果希望更新该数据库,使用命令:
updatedb 
需要root权限

9. 查看用户

who 列出所有登陆的用户信息
whoami  我是谁,列出当前的登录用户

10. 查看操作系统版本

uname –a
输出结果:
Linux ubuntu 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

11. mkdir 创建目录

可以一次创建多个目录,比如:
mkdir doc pic
这种不指定目录的写法,就是在当前目录创建目录。
也可以直接指定路径。相对路径和绝对路径都可以。
mkdir ~/pic/why
这时,如果pic目录已经创建了,则正确执行;如果pic目录尚未创建则执行失败。为了保证能创建成功,应该使用-p选项
mkdir -p movie/China
这时,如果movie目录存在,则在该目录下创建China子目录;如果movie目录不存在,则先创建movie目录,然后再在movie目录下创建China子目录。

12. mv 移动或重命名文件、目录

mv [OPTION] SOURCEDEST
1,移动
将SOURCE移动至DEST目录
SOURCE可以是目录也可以是文件
如果DEST下有与SOURCE重名的文件或目录,则mv会替换掉原有的文件、目录而不给出任何提示。为防止这一情况出现,可以使用-i选项
mv -i test doc/
此时,若doc目录下已经存在test文件,则会给出提示信息:
mv:是否覆盖'doc/test'?
输入n代表no,输入y代表yes
2,重命名
重命名就是在同一个目录下移动
mv AB
就是将A重命名为B
注意:应该是当前目录下不存在B子目录才是重命名否则,是将A移动到B

13. cp 复制文件或目录

cp [OPTION] SOURCEDEST
用法与mv相似,复制与剪切的关系。
与mv一样,cp同样不会为覆盖文件或目录而给出警告信息,想要警告信息,同mv一样,使用-i选项。
注意:如果复制的是目录,cp默认不会复制子目录,而是将子目录跳过只复制问价。如果想复制子目录连同子目录中的文件,应该使用-r选项

14. touch 生成空白文件

15. rm 删除文件或目录

rm filename
删除文件,一般不会给出任何提示,且文件是真的删除,不会进入回收站。
但如果删除的是只读文件,则会进行确认。
如果不想确认,可以使用-f选项,直接替你回答Y
rm同样可以用来删除整个目录,只要使用-r选项
他会递归地删除目录下的所有文件和子目录

16. chmod 修改文件权限

chmod 777 file_name
1代表x
2代表w
4代表r
属主、属组、其他人
0 0