Linux Shell 命令

写本博客是为了巩固自己的基础加深记忆,为了以后忘记能够通过微博很快的查找Shell命令 。以下都是我从Ubuntu 和centOs版本的Linux系统收集过来的命令方式。两个版本命令会有稍许的差异,但大致命令都相同。在这里我就按照我收集的顺序整理这些命令,也就不细分那条命令是那个系统版本的了。
本人是新手,如有问题可以留言我会及时做出改正

帮助管理

  1. 通配符共有三个:

    "*'、"?“、”[]“
    
  2. 帮助命令 man 在帮助界面上下移动 J、K快捷键 空格键向下翻页 Q键退出帮助(此帮助文档数量庞大,而且都是英文)

    示例:man  ls 
    	 man [...]
    
  3. 帮助命令 --help

    示例: cp --help 
    	 ls --help  
    	 zip --help ---(zip压缩包)
    	 gz --help ---(gz压缩包)
    

目录文件管理

  1. 查看当前目录

    示例:pwd
    
  2. 查看文件属性

    示例:stat 文件名
    
  3. 显示当前目录下所有文件及目录,如果是空目录则什么也不显示

    示例:ls
    	 ls -a ---(列出隐藏文件)
    	 ls -l ---(列出文件属性)
    	 ls -la
    
  4. 创建目录

    示例:mkdir 目录名称
    	 mkdir 目录成名1 目录名称2
    	 mkdir -p 目录名称01/目录名称02/目录名称03---(串行创建)
    
  5. 创建文件

     示例:touch 文件名
     	  touch 文件名1 文件名2
     	  touch 文件名{1..100} --(创建100个文件)
    
  6. 关联文件(新文件名相当于 C++语言里面的引用。是另外一个对象的别名。里面做任何修改,这2个文件都是关联)

    示例:ln 文件名 新文件名
    
  7. .删除目录 (注意点* 删除目录都需要加 -r,因为-r是递归。删除整个目录则里面的子文件也是要删除的),切记在root根目录下千万不要 执行 rm -rf *.这是删除所有的命令。不然root根目录下的系统文件都被删除

    示例:rm -r  目录名
    	 rm -f 目录名
    	 rm -i 目录名---(删除前提示)
    	 rm -rf * --- (删除所有)
    	 rm 文件名{1..100} ---(删除100个文件,注:删除的不是目录名)
    
  8. 重命名(相当于移动文位置)

    示例:mv 文件名 新文件名
    	 mv  文件名 目录名称/---(把文件名移到指定的目录名下)
    	 mv -i 文件名 目录名称/ ---(提示是否有相同名称的文件,y 覆盖 n取消)
    	 mv -b 文件名 目录名称/ ---(如果有同名文件,被覆盖的文件创建副本 以文件名~命名)
    
  9. 复制文件和目录

    示例:cp 文件名 目录名称/
    	  cp -i  文件 目录名称/ ---(提示是否有相同名称的文件,y 覆盖 n取消)
    	  cp -b 文件名 目录名称/ ---(如果有同名文件,被覆盖的文件创建副本 以文件名~命名)
    	  cp  -r 目录名称  目录名称/---(复制目录需添加-r 因为目录下是可能有子文件的)
    

路径管理

  1. 去到上一级目录

    示例:cd ..  或者 cd../../目录名称/
    
  2. 去到指定目录

    示例:cd 目录名称1/目录名称2/
    
  3. 返回最后一次操作cd命令

    示例:cd -
    

改变文件所有权 chown 和 chgrp
在这里插入图片描述

如果是对象是目录
r - 代表可以查看目录内的文件
w - 代表目录里可以创建或删除文件
x - 代表可以切换进目录
	
如果对象是文件
r - 代表可以读文件里面的内容
w - 代表可以修改文件里的内容
x - 代表可以执行文件

d rwx r-x — 这里需要分成4组来看 d代表是的目录没有d的是文件。第一个rwx 是 root对test目录具有读、写和执行的权限,第二个r - x 是 root组内其他用户对test目录具有读和执行权限。第三个 r - x 是 other其他所有用户对test目录没有任何权限。这些分别都是可以修改的。

  1. chown修改属主和属组权限

    示例:chown root:root 文件
    	  chown -R root : root 目录名称 ---(为什么加 -R 就不多介绍了和之前一样)
    
  2. chgrp 用于单独设置文件属组

    示例:chgrp 777 server.out ---(777是用户名,因为用户名直接用的是我的名字,所有用777代替)
    修改结果如下:
    

    在这里插入图片描述

  3. chmod 改变文件权限

    示例:chmod u+x 文件名    -------------(添加用户文件权限 x)
    	  chmod u-x 文件名    -------------(去掉用户文件权限 x)
    	  chmod ug+w 文件名   -------------(添加用户组权限 w)
    	  chmod ug-w 文件名   -------------(去掉用户组权限 w)
    	  chmod u=rwx 文件名  -------------(设置文件名权限 rwx)
    	  chmod ug=r 文件名   -------------(设置用户组权限 r)
    	  chmod a+x 文件名 ----------- (设置所有的都有权限 x)--(a 代表英文: all)
    	  chmod  755  文件名或者目录名 ------(以二进制的方式修改用户组权限 rwx r-x r-x) 举例 7转换二进制 111 等于rwx 
    
  4. acl 改变文件权限 – assecc control list (访问 控制 列表) -m 是modifier(修改的意思)

    示例:getfacl  test/   -------------(查看test目录拥有的acl权限)
    	 setfacl -m u:user01:rwx test ------- (设置用户user01拥有test目录acl权限读、写、执行) -- (m代表英文:modify 修改的意思)
    	 setfacl -x u:user01 test ------- (删除用户user01的acl权限)
    	 setfacl -b test/ -------- (删除test目录上所有设置过的所有acl权限)
    
  5. sudo 权限

    	visudo -----执行这个命令后会打开一个文本,然后在文本最后的一行输入以下内容
    	%用户名   localhost=执行命令的路径
    	给用户user01一个创建用户和删除用户的权限,进入文本后在文本的末尾行输入
    	%user01 localhost=/usr/sbin/useradd,/usr/sbin/userdel
    	
    	给了权限的user01用户使用的方式:
    	sudo /user/sbin/useradd 用户名 --- (不可像root用户那样直接使用)	
    

    配合which命令使用—(查找命令路径)。

阅读文件的头部和尾部:head 和 tail

  1. 查看文本文件:cat 、more 和less*

    cat 命令  ---- 用来一次性查看全部文件的内容,后跟文件名作为参数,也可以带上-n 显示每行的行号。
    如果文件上达几十百页,不建议使用 cat.
    more 命令 ---- 用来分页查看文本文件。空格翻页;回车向下滚动一行;Q键退出。
    less 命令 ---- 更人性化的文本阅读工具
    

编辑器 vim

  1. vim 是Unix 和Linux 上标配的编辑器,功能十分强大

    示例:vim 文件名
    *)插入模式 操作:输入字符,并可以按光标键移动输入字符位置
    	a -- 在光标后插入
    	i -- 在光标所在位置插入
    	o -- 在光标所在的位置的下一行插入
    	Esc -- 进入命令模式
    	: -- 进入命令模式
    	
    *)命令模式 执行除输入字符之外的所有操作,包括保存、搜索、移动光标等。
    vim 启动默认是在命令模式,如果在标记模式,需要按Esc 切回命令模式。
    可以使用光标键控制上下左右移动 或者 h、j、k、l移动
    
    
    保存和退出
    
    	:w -- 保存文件
    	:q -- 退出文件
    	:wq -- 保存并退出文件
    	:q! -- 不保存并退出文件
    	:w filename -- 保存制动的文件名
    	
    *)搜索字符串 前提:必须切换到命令模式,然后输入反斜杠
    	/ 查找的字符串 -- 用于向下搜索一个字符串
    	?查找的字符串 -- 用于向上搜索一个字符串
    	
    *)如果需要启动或者关闭大小写敏感, 执行 (忽略或不忽略)
    	:set ignorecase 或者 :set noignorecase
    	
    *)替换字符串--前提:必须切换到命令模式
    	语法:  :[range]s/pattern/string/[c、e、g、i]         
    	这条命令将pattern所代表的字符串替换成 string。开头的range用于指定替换作用的范围,入"1,10" 表示从第一行到第10行,
    	"1,$“表示从第1行到最后一行,也就是全文。全文也可以用"%”表示。
    	c --- 每次替换前询问
    	e --- 不显示错误信息
    	g --- 替换一行中所有匹配项(这个选项通常需要使用)
    	i --- 不区分大小写
    	示列: 1,$ s/pattern/string/e
    	如果Windows 环境下的源码经常会有"~M“的字符,要清除可以使用下面命令.
    	示列:  %  s/~M$//g
    
    *)删除、复制、粘贴-- 前提需要切换到命令模式
    	x --- 删除光标所在位置的字符
    	dd --- 删除光标所在的行,2dd ---表示删除2行
    	D --- 删除光标所在位置到行尾之间所有的字符
    	d --- 普遍意义的删除命令,和移动命令配合使用. -示列: dw表示删除光标所在位置到下一个单词词头之间所有的字符
    	yy --- 复制光标所在的行
    	y --- 普遍意义上的复制命令,和移动命令配合使用。示列:yw表示复制光标所在位置到下一个单词词头之间所有的字符
    	p --- 在光标所在位置粘贴最近复制 /删除的内容
    
    *)撤销 和 重做 - 前提需要切换到命令模式
    	u --- 撤销一次操作
    	Ctrl +R ---- 重做被撤销的操作
    	fg ---- (编辑文本不小心按到Ctrl + z ,输入fg命令可以切换会文本)
    

查找和定位常用命令

  1. find命令

    示例:find 目录名称/  -name   文件名
    
  2. 常用参数

    -type 查找时指定文件的类型,可使用参数如下
    -atime n 查找最后一次使用在 n 天前的文件 
    -mtime n 查找最后一次修改在 n 天前的文件
    b --- 设备文件		f --- 普通文件
    c --- 字符设备文件  p --- 命名管道
    d --- 目录文件 	   d --- 符号链接
    
    示例: find  目录名称/ -f  -name   文件名称
    	 find  目录名称/   3  -name   文件名称
    	 find  目录名称/   3  -name   文件名称
    
  3. 快速定位查找 locate命令

    示例 : updatedb --- (更新缩影数据库,不更新有时候会差不到文件)
    	  locate 文件名称
    
  4. 查找文件类容grep

    示例:grep 字符串 目录文件名
    	 grep wordl 目录名称/文件名
    	 cat 文件名称 | grep 查找的字符 
    

给命令起别名

  1. alias 别名命令

    示例:alias  别名 = ’命令‘ 
    	 unalias  别名 --- (删除别名)
    	 alias --- (查看所有别名)
    

重启 关机 退出

  1. 重启、关机命令

    示例:shutdown -h now -(立刻关机)
    	 shutdown -r now - (立刻重启)
    	 init 0 - (关机)
    	 init 6 - (重启)
    

用户管理

  1. 添加删除用户命令

    示例:useradd 用户名 --- (添加用户名)
    	 passwd 刚创建的用户名 --- (设置密码)
    	 userdel  -r  用户名
    
  2. 查看用户名

    示例:id  用户名 --- (查看用户名)
    	 cat /etc/passwd -- (查看所有用户名)
    	 cat /etc/passwd | grep 用户名
    

查看历史输入命令行history

	示例:history --- (查看历史输入的命令行)
		 !203 -- (执行历史命令行的第 203 行命令)
		 !h --- (执行历史命令行,最后一次执行已 h 开头的命令

清屏命令 clear

	示例:clear --- (清屏)

压缩包

  1. 压缩包 ZIP

    示例:zip -r Text.zip  Text --- (把Text压缩成Text.zip包)
    	 unzip Text.zip --- ( 解压Text.zip压缩包 )
    	 unzip -l Text.zip --- (查看压缩包)
    
  2. 压缩包 GZ

    示例:tar czf Text.tar.gz  Text --- (把Text压缩成Text.tar.gz包.  czf 译 create gz file)
    	 tar xzf  Text.tar.gz --- ( 解压Text.tar.gz压缩包 )
    	 tar tf Text.tar.gz --- (查看压缩包)
    

网络设置 IP 和端口

  1. ip设置 和查看

    示例:ifconfig --- (查看IP)
    	 ifconfig eth0
    	 ifconfig lo
    	 ifconfig eth0 192.168.0.105 --- ( 临时更改 IP )
    示例:vi   /etc/sysconfig/network-scripts/ifcfg-eth0
    	  IPADDR = 192.168.0.105 --- (更改IP即可 ----永久更改IP)
    
  2. 端口号 — (配置文件家中,找到你要修改的配置文件程序)

    示例:/etc/httpd/conf/httpd.conf --- 修改httpd.conf文件中的 Listen 8800 --(httpd的端口改为了8800)
         netstat -tunpl --- (查看所有端口号)
         netstat -tunpl  | grep 软件名称 --- (查看软件名称的端口号)
    

服务进程

	示例:ps -ef --- (查看所有进程)
		 ps -ef | grep 进程名称 ---(查看指定名称的进程)
		 pstree --- (进程树)
		 pstree -p --- (显示进程号)
		 pstree | grep 进程名 --- (查找进程名称)
		 pkill 进程名称 --- (杀掉进程)

安装、卸载软件

	示例:apt -get install 软件名称 --- (安装)
		 sudo apt -get install 软件名称 --- (安装)
		 sudo apt -get autoremove 软件名称 --- (卸载软件)

防火墙

  1. iptables

    示例:iptables -L --- (查看防火墙)
    	 iptables -F --- (清空)
    	 service iptables save --- (保存)
    
  2. selinux

    示例:vi   /etc/selinux/config
    		  SELINUX = disabled
    

mount 挂载(映射)

	示例:mount /dev/cdrom 空格 /media -- (记得虚拟机右下角的光盘电源要打开)
		 然后cd到根目录下的 media/CentOS --- (里面全都是开源的软件包)
		 df --- (查看挂载列表)

YUM使用 - 首先需要设置开机时就挂载(映射) ---- 在 /etc/rc.d.rc.local 文件内完成开机挂载

	示例:mount /dev/cdrom 空格 /media -- (记得虚拟机右下角的光盘电源要打开)
		 cd /etc/yum.repos.d  ------文件夹 
		 然后删掉里面的CentOS-Base.repo ,因为我们rpm都在光盘里。所以不需要网络源
		 rm -rf CentOS-Base.repo
		 vi CentOS-Media.repo -- ( 打开光盘,把里面的 baseurl = file:///...修改成 baseurl= file:///media 因为光盘就
		 挂载这里的)
		 修改成 gpgcheck = 0 --- (是GPG验证是否开启的选项,1是开启,0是不开启)
		 修改成 enabled = 1 --- (1是开启,0是不开启)
		 保存退出

GPG是加密和数字签名的免费工具,大多用于加密信息的传递。除了仅用密码加密外,GPG最大的不同是提供了“公钥/私钥”对利 用一方 的“公钥”别人加密信息不再需要告诉密码,随时随地都能发送加密信息。

   示例: yum -y install  mysql* --- (安装所有的数据库)
		 yum -y remove mysql* --- (卸载所有的数据库)
		 yum list
		 
		 *-解决rpm安装包的依赖性

which 查看命令文件所在的位置

	示列:which useradd --- (查看执行添加用户的命令的位置)

top 实时观察进程、内存、CPU清空 — 每三秒左右跟新一次

	示列:top
		 q 或者 Ctrl + c --- (两者都是退出top 实时观察)
	     1.top显示的 load average: 0.00,   0.00,   0.00这三组数据分别为 1分钟、5分钟、15分钟平均负载
	     2.top显示的 Cpu数据主要看空闲率的数值 
	     3.top显示Mem:也是看空闲率的数值

uptime 命令 查看服务器工作时间

	示列:uptime

检测安全指令

	示列:who -- (查看在线用户详细信息,可以排除是否有其他人登录你的电脑)
		 last  --- (获取最近系统的重要操作)

任务计划

  1. 一次性任务计划

    示列:date --- (查看当前的时间)
    	 at 18:15 --- (设置时间为18点15分),紧接着输入要执行的任务,输入完成后以Ctrl + d结束
    	 atq --- (查看任务)
    	 atrm --- 2 (删除 2 任务,后面跟任务号)
    
  2. 永久性任务计划

       * * * * * 分时日月周 -- (每一个星号和分时日月周都有着对应关系)
       
       00 03 * * *  /目录/执行文件 ---- (每天3点执行一次任务)
       */5 * * * *  /目录/执行文件 ---- (每隔5分钟执行一次任务)
       59 23 * * 1-5 /目录/执行文件 --- (周一到周五的23点59分执行一次任务)
       59 23 * * 1,3,5 /目录/执行文件 - (周一、周三、周五的23点59分执行一次任务)
    

    	示列:crontab -e --- (进入一个文本页面,输入你要执行的任务)
    		 crontab -l --- (查看任务计划)
    		 crontab -r --- (删除所有任务计划)
    

Shell脚本

  1. 每隔5分钟自动压缩tar.gz包

      	示例:#!/bin/bash -(语言解析)
      	注释: t 相当于变量名 ,date +%Y.%m.%d.%H.%M.%S 命令是获取当前的年月日时分秒
      	t=`date +%Y.%m.%d.%H.%M.%S` --- (注意点1:等于号后的引号是反引号,很容易犯错的点。注意点2:加号后面不要有空格)
      	f="打包名称-${t}.tar.gz" --- (这里需要的是双引号,因为单引号格式符 $ {t}内的 t 没办法解析.)
      	d="/目录01/目录02../文件或者目录名称"
      	tar czf $f $d &>/dev/unll---- (压缩tar.gz包.其中 &>/dev/null 是压缩不显示信息,为了不占用CPU资源)
      	
      	*-可配合任务计划使用
      	*-自己亲自测试过,压缩tar.gz包或解压tar.gz包时会报:tar: Removing leading `/' from member names 问题。其原
      	  因是tar默认为相对路径,使用绝对路径的话就回报这个错,可以使用-P参数(注意大写)解决这个问题就不会报错.
      	  tar czPf... 和 tar xzPf...
    

你可能感兴趣的:(Shell命令)