天天看点

常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

linux常用命令

  • 一、linux目录结构
  • 二、提示行符号
  • 三、常用命令
    • 1.处理目录常用命令
    • 2.文件内容查看常用命令
    • 3.文件查找常用命令
    • 4压缩命令
    • 5.其他命令
  • 四、通配符
  • 五、文件权限
    • 1.改变文件权限
    • 2.改变文件所有权
    • 3.文件连接(软连接相当于win的快捷方式)(硬链接)
  • 六、输出重定向和管道
    • 1.输出重定向
    • 2.管道
  • 七、进程管理
    • 1.查进程
    • 2.杀进程

一、linux目录结构

目录结构部分引用自:https://www.runoob.com/linux/linux-system-contents.html
[[email protected]_0_16_centos home]# ls /
bin(经常使用的命令)  boot(启动时的核心文件)  dev(Linux的外部设备)  etc(配置文件)  
home(用户主目录)  lib(共享库)  lib64()  lost+found()  media(光驱,U盘设备...)  
mnt  opt  proc(虚拟目录,内存映射)  root(管理员目录)  run  sbin(系统管理员使用的系统管理程序)  
srv  sys()  tmp(临时文件)  usr(类似于windows下的program files目录)  var
           
常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

/bin:

bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:

这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :

dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:

这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:

用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:

这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:

这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:

linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:

系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:

这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:

这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
           

/root:

该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:

这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:

该目录存放一些服务启动之后需要提取的数据。

/sys:

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:

这个目录是用来存放一些临时文件的。

/usr:

这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:

系统用户使用的应用程序。

/usr/sbin:

超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:

内核源代码默认的放置目录。

/var:

这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:

是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

二、提示行符号

1.Linux运行页面有一个输入提示行,命令以一个美元符号"$"作为提示符,表示用户可以输入命令了如:

[[email protected]_0_16_centos home]$ 
           

如果正在以root身份执行命令,那么shell提示符将变成"#"如:

[[email protected]_0_16_centos home]#
           

三、常用命令

1.处理目录常用命令

  • ls: 列出目录

    -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)

    -d :仅列出目录本身,而不是列出目录内的文件数据(常用)

    -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

  • cd:切换目录
  • pwd:显示目前的目录

    -P :显示出确实的路径,而非使用连结 (link) 路径。

  • mkdir:创建一个新的目录

    -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~

    -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

  • rmdir:删除一个空的目录

    -p :连同上一级『空的』目录也一起删除

  • cp: 复制文件或目录
  • touch : 创建一个空白文件
    [[email protected] ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
    [[email protected] ~]# cp [options] source1 source2 source3 .... directory
               
    选项与参数:
    -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
     	
     	-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
     	
     	-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
     	
     	-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
     	
     	-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
     	
     	-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
     	
     	-r:递归持续复制,用於目录的复制行为;(常用)
     	
     	-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
     	
     	-u:若 destination 比 source 旧才升级 destination !
               
  • rm: 移除文件或目录
    rm [-fir] 文件或目录
               
    选项与参数
     -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
     -i :互动模式,在删除前会询问使用者是否动作
     -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
               
  • mv: 移动文件与目录,或修改文件与目录的名称

    语法:

    [[email protected] ~]# mv [-fiu] source destination
    [[email protected] ~]# mv [options] source1 source2 source3 .... directory
               

    选项与参数:

    -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

    -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

    -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

  • ln(link)

    语法:ln -s [源文件] [目标文件] (硬链接则不需要-s选项)

    描述:创建软链接文件

    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

    软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。

    软链接就像windows系统中的快捷方式一样,特点也都类似。

    硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。

    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理
    另外:硬链接不能跨文件系统分区,而软连接可以

2.文件内容查看常用命令

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容

    -n 显示文件行号

  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行

    tail -f 实时查看日志文件 tail -f 日志文件log

    tail - 100f 实时查看日志文件 后一百行

    tail -f -n 100 catalina.out linux查看日志后100行

  • 你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

3.文件查找常用命令

  • grep:查找文件内容

    grep [option] pattern [file…]

    在文件t.sh中查找包含do的行

    [[email protected]_0_16_centos baidu]# grep do t.sh
    do
    done
               
  • find: 在指定范围内找到文件

    find [option] [path] [expression]

    find [搜索范围路径] -name 【文件名称】(根据文件名查找)

    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理
    匹配任意字符 *
    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理
    匹配指定字符 ?
    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

    find [搜索范围路径] -size [(±)文件大小] (根据文件大小查找,大于+ 小于-)

    find [搜索范围路径] -user(文件的所有者)

    find [时间查找] [以天为单位]

    [以天为单位] 1 ctime、atime、mtime

    [以分钟为单位] 2 cmin、amin、mmin

    。。。。。

    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

    描述:查找任何文件或目录(所有)

    例如:

    [[email protected]_0_16_centos baidu]# find /usr/bin/ -name zip -print
    /usr/bin/zip
               

    命令:which

    语法:which [命令名称]

    描述:查看命令所在的目录位置

    在linux里面一般只有两种命令,第一种是所有用户都可以使用,第二种则是只允许管理员使用,还有一个命令叫whereis,和which使用类似

    比如: rm命令,其实我们可以使用 which rm查看其命令内容:

    常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

alias就是别名的意思,说明我们使用的rm命令在默认的情况下加了 -i选项,意思是在删除的时候进行询问是否需要删除,那么添加""就使用真正的rm命令而不是别名,直接就可以删除不需要提示询问。

find的连接执行符号:

find … -exec [执行命令] {} ;

注意:“{}“表示find命令查找的结果,而”"表示转义符

命令:locate
语法:locate [文件名称]
描述:查找文件,根据linux数据库内部的索引(updatedb命令,可以手工更新updatedb数据库,一般和locate配合使用)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191120213204559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU4NjMxMA==,size_16,color_FFFFFF,t_70)

注意:locate的查找速度非常快,比find查找快很多,原因是locate查找的是linux系统构建的文件数据库的索引值,所以速度非常快,但是有的时候新创建的文件使用locate命令查找不到,原因是这个文件的索引没有马上更新到linux系统文件数据库里
           

4压缩命令

命令:gzip

语法:gzip [文件名称]

描述:压缩的时候不保留原文件,并且只能压缩文件不能压缩目录

命令:gunzip

语法:gunzip [已压缩的文件]

描述:解压缩文件,不不保留源文件

命令:tar

语法:tar [zcvf] [zxvf] [打包文件名.tar.gz] [源文件]

-c 产生tar打包文件(必选)

-x 产生的解压缩文件(必选)

-v 显示详细信息

-f 指定压缩后的文件名

-z 打包同时压缩

描述:打包目录 生成的后缀名 .tar.gz,或者进行解压

最后配置加-C 表示文件解压后存放的路径

file命令可以查看任何文件的类型

命令:zip

语法:zip 选项[-r] [压缩后文件名称] [源文件]

描述:zip的格式是windows和linux通用的格式,可以压缩文件和目录,压缩目录时需要选项-r。

命令:unzip

语法:unzip [解压缩的文件]

描述:进行解压缩

最后配置加-d 表示文件解压后存放的路径

5.其他命令

过滤:grep,可以将指定内容进行过滤然后输出。

管道:

将一个命令的输出传送给另一个命令,作为另外一个命令的输入。管道可以连接N个命令。

ls -l /etc | more (表示将ls -l /etc的输出,当做more命令的输入,即more命令浏览的内容为前面命令的输出结果)

ls -l /etc | grep init(表示将ls -l /etc的输出结果进行过滤,显示为init的结果)

ls -l /etc | grep init | wc -l (最后进行统计显示的个数)

四、通配符

shell有一套被称作通配符的符号"*","?","[ ]", “-” 这些通配符可以搜索并匹配文件的一部分,从而大大简化输入命令

  • “*”:用于匹配文件名中任意长度的字符串,"?"用于匹配文件名中任意的一个字符
    [[email protected]_0_16_centos baidu]# ls
    shell  test.log  t.sh
    [[email protected]_0_16_centos baidu]# ls *.log
    test.log
               
  • “[]”:用于匹配所有方括号中出现的字符
    [email protected]_0_16_centos baidu]# ls t[ab]
    ta  tb
               
  • “-”:用于指定一个字符集的范围
    [email protected]_0_16_centos baidu]# ls t[a-c]
    ta  tb  tc
               

五、文件权限

1.改变文件权限

命令:chmod

语法:chmod [{ugo}{±=}{rwx}] [文件或目录]

chmod [mode=421] [文件目录]

描述:改变文件或目录的权限

形如:chmod g+w filename

形如:chmod 761 filename

问题示例:新建一个新目录,下面一个新文件,尝试用普通用户去删除新目录下的新文件。

1 尝试修改:新文件的读写权限设置为 777,进行删除文件操作

2 尝试修改:新目录的读写权限设置为 777,进行删除文件操作

文件的rwx权限:

r:可以执行catch、more等读操作。

w:修改文件的内容等写操作,但是不代表你可以把这个文件删除。

x:对文件进行执行操作。

目录的rwx权限:

r:可读操作,可以列出目录的内容,比如ls命令。

w:表示可以在目录下创建或删除文件的权限。

x:表示可以进入这个目录(基本上所以的目录都会有rx权限)。

所以:删除文件的权限,是拥有你当前文件所在的目录的写权限。

常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

2.改变文件所有权

命令:chown

语法:chown user 文件

描述:改变文件的所有者

示例:chown newuser t1.sh

useradd username 添加用户

passwd username 为用户设置密码

命令:chgrp

语法:chgrp group 文件

描述:改变文件的所属组

示例:chgrp adm t1.sh

查看系统默认的权限 :umask -S (umask查看权限掩码值022 使用777-022得到真实权限)

常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

3.文件连接(软连接相当于win的快捷方式)(硬链接)

命令:ln(link)

语法:ln -s [源文件] [目标文件] (硬链接则不需要-s选项)

描述:创建软链接文件

常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。

软链接就像windows系统中的快捷方式一样,特点也都类似。

硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。

另外:硬链接不能跨文件系统分区,而软连接可以。

常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

六、输出重定向和管道

1.输出重定向

大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

重定向命令列表如下:

常用shell命令一、linux目录结构二、提示行符号三、常用命令四、通配符五、文件权限六、输出重定向和管道七、进程管理

命令 说明

command > file 将输出重定向到 file。

command < file 将输入重定向到 file。

command >> file 将输出以追加的方式重定向到 file。

n > file 将文件描述符为 n 的文件重定向到 file。

n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。

n >& m 将输出文件 m 和 n 合并。

n <& m 将输入文件 m 和 n 合并。

<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

2.管道

过滤:grep,可以将指定内容进行过滤然后输出。

将一个命令的输出传送给另一个命令,作为另外一个命令的输入。管道可以连接N个命令。

ls -l /etc | more (表示将ls -l /etc的输出,当做more命令的输入,即more命令浏览的内容为前面命令的输出结果)

ls -l /etc | grep init(表示将ls -l /etc的输出结果进行过滤,显示为init的结果)

ls -l /etc | grep init | wc -l (最后进行统计显示的个数)

七、进程管理

1.查进程

ps命令查找与进程相关的PID号:
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat
           

ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。

2.杀进程

使用kill命令结束进程:kill xxx

常用:kill -9 324

Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME

继续阅读