首页 > 代码库 > Linux基础一

Linux基础一

:
Linux中所有内容都是以“文件”形式存储的;
压缩包:.gz/bz2/.tar.bz2/.tgz
二进制软件包:.rpm
网页文件:.html/.php
脚本文件:.sh
配置文件:.conf
linux中是不靠扩展名区分文件类型的、是靠权限来区分文件的;

windows下的程序是无法直接安装在linux中的、除非在linux中安装模拟器之后才可以安装windows程序/软件;


linux字符界面的优势:
1.字符界面占用系统资源少(节省系统资源)
2.字符界面减少了出错、被攻击的可能性(容错性高)


1.分区类型:
①主分区:最多只能有4个;
②扩展分区:
最多只能有一个;
主分区加扩展分区最多有4个;
不能写入数据,只能包含逻辑分区;
③逻辑分区:
逻辑分区盘符一定从5开始;

2.格式化:
格式化的根本目的是为了写入文件系统、把分区划分为等大小的数据块;
划分分区列表(分区列表包含了多个数据块):
分区列表包含:ID号、修改时间、权限


文件系统:
FAT16\最大分区支持2G

FAT32\最大分区空间16TB,单个文件不能超过4G;

NTFS\

EXT2\

EXT3\

EXT4\centos6.3默认支持的文件系统;



Linux硬盘分区完整过程:
1分区:为硬盘划分逻辑分区;
2格式化:写入文件系统;
3分区设备文件名:给每个分区定义设备文件名;
4分配盘符:给每个分区分配挂载点;

硬件设备文件名:/dev/目录
IED硬盘 

        /dev/hd[a-d]
SCSI/SATA/USB硬盘   /dev/sd[a-p]
光驱         /dev/cdrom&/dev/hdc
软盘         /dev/fd[0-1]
打印机(25针)      /dev/lp[0-2]
打印机(USB)      /dev/usb/lp[0-15]
鼠标         /dev/mouse
键盘         /dev/stdin


3.分区设备文件名:
设备文件名:
/dev/hda1(IDE硬盘接口)
"a"代表第一块IDE硬盘、"1"代表第一个分区;
IDE硬盘已逐渐被淘汰

/dev/sda1(SCSI硬盘接口、SATA硬盘接口)
"a"代表第一块SCSI/SATA硬盘、"1"代表第一个分区;
SCSI硬盘
SATA硬盘/串口硬盘


4.分配盘符:
主分区:1-4;
逻辑分区:从5开始;

Linux中是用“目录”作为盘符,且称之为“挂载点”
必须分区:
1. /(根分区)
2.swap分区/交换分区/虚拟内存
分配大小:内存≤4GB,swap分区为内存的2倍,当内存>4GB,则swap分区则和内存大小一致即可)
推荐分区:
1./boot(启动分区,200MB)


Linux中的管理员账户为"root",不是"administrator"

在创建用户时,会自动生成一个家目录,超级用户root的家目录就在"/root",其他普通用户的家目录都在"/home"下的二级目录,目录名就是用户名;

命令格式:命令 [选项] [参数] / 个别命令使用不遵循此格式,当有多个选项时,可以写在一起;

Linux中以"."开头的文件是隐藏文件;ls -a可查看隐藏文件;



1.目录/文件处理命令:

a.建立目录:
mkdir (make directories)
   mkdir -p [目录名]
      -p 递归创建

b.删除目录:
   删除空目录:
      rmdir(remove empty directories)
      rmdir [目录名]
   删除文件/目录:
      rm (remove0
      rm -rf [目录名/文件名]
         -r    :删除目录
         -f(force):强制删除

c.切换目录:
   cd(change directory)
      ①cd [目录]
      ②cd ~   :进入当前用户的家目录
      ③cd     :进入当前用户的家目录
      ④cd -   :进入上次目录
      ⑤cd ..   :进入上一级目录
      ⑥cd .   :进入当前目录

d.相对路径和绝对路径:
   ①相对路径:参照当前所在目录,进行查找
   ②绝对路径:从根目录开始指定,一级一级递归查找。

pwd(print working directory):显示当前目录所在位置;

e.复制
   cp(copy)
      cp [选项] [原文件或目录] [目标目录]
         -r复制目录
         -p连带文件属性复制
         -d若原文件是链接文件,则复制链接属性
         -a相当于-pdr

f.剪切/改名
   mv(move)
      mv [原文件或目录] [目标目录]

g.常见目录作用
   ①/:根目录;
   ②/bin:命令保存目录(普通用户就可以读取的命令);
   ③/sbin:命令保存目录(超级用户才能使用的目录);
   ④/usr:系统软件资源目录;
      /usr/bin/系统命令(普通用户);
      /usr/sbin/系统命令(超级用户);
   ⑤/boot:启动目录,系统启动相关文件;
   ⑥/dev:设备文件保存目录;
   ⑦/etc:系统配置文件保存目录;
   ⑧/root:超级用户的家目录;
   ⑨/home:普通用户的家目录;
   ⑩/lib:系统库保存目录;
   /mnt:系统挂载目录;
   /media:挂载目录;
   /tmp:临时目录;
   /proc:直接写入内存的;   
   /sys:直接写入内存的;
      /proc&/sys目录不能直接操作,该目录保存的是内存过载点
   /var:系统相关文档内容;


2.链接:
ln(link):生成链接文件;
   ln -s [原文件] [目标文件]
      -s(soft):创建软链接
      不加-s创建的是硬链接
硬链接和软链接
   硬链接:
      1、拥有相同的i(inode)节点和存储block块,可看做同一个文件;
      2、可通过i节点识别;
      3、不能跨分区;
      4、不能针对目录使用;

   软链接:
      1、类似windows快捷方式;
      2、软件拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据;
      3、lrwxrwxrwx   l 软链接;
         软链接文件权限都为rwxrwxrwx;
      4、修改任意文件,另一个文件都改变;
      5、删除原文件,软链接将不能使用;
      6、创建软链接的时,必须使用绝对路径;



文件搜索命令 locate
   locate 文件名
      在locate数据库中按“文件名”搜索,搜索速度快;

   /var/lib/mlocate
   #locate命令所搜索的后台数据库,每天更新一次;不同版本的linux中的locate数据库名称有差异;

   updatedb
   强制/手动更新locate数据库

locate/whereis/which遵守updatedb.conf文件中的各项条件限制;
   /etc/updatedb.conf配置文件;
      PRUNE_BIND_MOUNTS="yes/no"   //开启/关闭搜索限制
      PRUNEFS="*"   //搜索时,不搜索的文件系统;
      PRUNENAMES="*"   //搜索时,不搜索的文件类型;
      PRUNEPATHS="*"   //搜索时,不搜索的路径;


命令搜索命令 whereis/which
   whereis   命令名   //搜索系统命令所在路径及帮助文档所在位置;
      选项:
         -b:只查找可执行文件;
         -m:只查找帮助文件;

   which   文件名   //搜索系统命令所在位置及别名;

PATH环境变量:定义的是系统搜索命令的路径;



find [搜索范围] [搜索条件]
   #搜索文件
   #避免大范围搜索,会非常耗费系统资源;
   #find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配;

      linux中主要的通配符:
         *   :匹配任意多个内容
         ?   :匹配任意一个字符
         []   :匹配任意一个中括号内的字符

   find选项
      -name:根据文件名进行查找;
      -iname:不区分大小写;
      -user:根据所有者进行查找;
      -nouser:查找没有所有者的文件;

      -atime:文件访问时间;
      -ctime:改变文件属性;
      -mtime:修改文件内容;
         -10/10/+10:十天内/十天当天/10天前
      -size:按照文件大小查找;
         -25k/25k/+25k:小于25k/等于25k/大于25k;         k必须是小写,M必须是大写;
      -inum:根据文件的i节点进行查找;
      -a(and):逻辑与,多个条件同时满足;
      -o(or):逻辑或,多个条件满足其中一个即可;
      -exec命令{}\;   :对搜索接口执行第二次操作;

grep [选项] "字符串" 文件名
   #子文件当中匹配符合条件的字符串;
   选项:
      -i   忽略大小写;
      -v   排除指定字符串/反向查找;


find与grep的区别
   find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配;

   grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配;



帮助命令:man
   man [命令]   :#即可查询某个命令的详细信息

   [命令] --help   :#获取命令选项的帮助;

shell内部命令帮助:

   help shell   :#只能获取shell内部命令的帮助;
确认是否为shell内部命令的方式:

   whereis [命令]   //#查询结果如若没有执行文件则为内部命令;
   help [命令]   //#只能获取内部命令的帮助;

详细命令帮助info:
   info [命令]
      - 回车://进入子帮助页面(带有*号标记)
      - u ://进入上层页面;
      - n ://进入下一个帮助小节;
      - p ://进入上一个帮助小节;
      - q ://退出;


压缩与解压缩命令:

   1、常用压缩格式:   .zip/.gz/.bz2
      (1).zip:
      .zip格式压缩:
         ①zip 压缩文件名.zip 源文件 //压缩文件;
         ②zip -r 压缩文件名 源目录 //压缩目录;

      .zip格式解压缩:
         ①unzip   压缩文件   //解压缩.zip文件;

      (2).gz:
      .gz格式压缩:
         ①gzip 源文件 //压缩为.gz格式的压缩文件,源文件会消失;
         ②gzip -c 源文件 > 压缩文件名.gz //压缩为.gz格式,源文件保留;
         ③gzip -r 目录 //压缩目录下所有的子文件,但不能压缩目录;

      .gz格式解压缩:
         ①gzip -d 压缩文件 //解压缩文件;   
         ②gzip -r 压缩文件 //解压目录;
         ③gunzip 压缩文件 //解压缩文件;

     (3) .bz2:
      .bz2格式压缩:
         !!bzip2命令不能压缩目录
         ①bzip2 源文件 //压缩为.bz2格式,不保留源文件;
         ②bzip2 -k 源文件 //压缩之后保留源文件;
         
      .bz2格式解压缩:
         ①bzip2 -d 压缩文件 //解压缩,-k保留压缩文件;
         ②bunzip2 压缩文件 //解压缩,-k保留压缩文件;


   2、常用压缩格式:   .tar.gz/.tar.bz2

      tar //解/打包命令
         tar -cvf 打包文件名.tar 源文件
            -c:打包;
            -v:显示过程;
            -f:指定打包后的文件名;
         

         tar -xvf 打包文件名
            -x:解包

         tar [参数] 打包文件名.tar.* 源文件 -C [路径]   //指定解压存储路径;
如果需将多个文件打包,则直接在源文件后用空格连接即可;
例:   tar -zcvf 打包文件名 源文件1 源文件2 源文件3
若只查看不解压.tar/.tar.*文件,则使用-t选项即可;
            -t:显示.tar/.tar*文件,不进行解压操作;


其实.tar.gz/.tar.bz2格式是先打包为.tar格式,再压缩为.gz/.bz2格式;

      .tar.gz:
         tar -zcvf 压缩包名.tar.gz 源文件
            -z:压缩为.tar.gz格式

         tar -zxvf 压缩包名.tar.gz
            -x:解压缩.tar.gz格式

      .tar.bz2:

         tar -jcvf 压缩包名.tar.bz2 源文件
            -j:压缩为.tar.bz2格式

         tar -jxvf 压缩包名.tar.bz2
            -x:解压缩.tar.bz2格式

linux最常用的压缩格式:.tar.gz/.tar.bz2


推荐关机使用shutdown!!!!!!!
shutdown [选项] 时间

   选项:
      ①-c:取消前一个关机命令;
      ②-h:关机
      ③-r:重启

   时间:
      ①now   //现在
      ②时:分
其他关机命令:
   ①halt
   ②poweroff
   ③init 0
以上三个关机命令不建议使用,相对shutdown,shutdown更为安全;
其他重启命令:
   ①reboot
   ②init 6


系统运行级别:
   0   //关机
   1   //单用户(类似windows安全模式)
   2   //不完全多用户,不含NFS服务(字符界面,不包含文件共享服务)
   3   //完全多用户(字符界面)
   4   //未分配
   5   //图形界面
   6   //重启

   runlevel   //查询上次及当前的系统级别;

   vim   /etc/inittab      //系统级别配置文件;
         id:3:initdefault:   //修改系统默认运行级别(id后的数字则为系统级别)

logout   //退出登录命令(每次使用后,建议退出当前用户,避免他人因账户占用无法使用!与windows中的注销相似!)



挂载命令:
   mount      //查询系统中已挂载的设备;
   mount -a   //根据配置文件/etc/fstab内容,自动重新再挂载;
      外接设备不建议设为自动挂载;

挂载命令格式:
   mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点;
      /dev/sr0是linux中光盘的设备文件名,而/dev/cdrom则是/dev/sr0的软链接,建议挂载时使用/dev/sr0;

      -t 文件系统   //加入文件系统该类型来指定挂载的类型,可以为ext3、ext4、iso9660等文件系统;
         linux标准文件系统ext3/ext4,centos6.0以后默认文件系统都是ext4、光盘的默认文件系统为:iso9660;
         
      -o 特殊选项   //可以指定挂载的额外选项;

   umount 设备文件名或挂载点   //取消挂载/卸载 命令;
      当在linux中,挂载U盘/光盘/移动硬盘类似的外接设备后,当不使用时、需要将挂载点卸载掉!

 挂载U盘:
   fdisk -l   //查看系统当前已识别的硬盘;
   mount -t vfat 设备文件名 挂载点      //文件系统vfat其实就是windows中的FAT32(此种文件系统类型几乎已经淘汰,因为该文件系统最多识别4G;linux默认是 支持NTFS文件系统的(如果需要linux系统识别NTFS,要么重新编译系统内核,要么下载安装“NTFS-3G”该软件安装之后系统则可识别 NTFS文件系统;


用户登录查看:
   1、查看登录信息:
      w [用户名]
         命令输出:
            ①USER   //登陆的用户名;
            ②TTY   //登录终端;tty1是本地登陆,不会有登录的IP地址;pts/0则是第一个远程登陆,会存在登录的IP地址;            
            ③FROM   //从哪个IP地址登录;
            ④LOGIN@   //登陆时间;
            ⑤IDLE   //用户闲置时间;
            ⑥JCPU   //指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间;
            ⑦PCPU   //是指当前进程所占用的时间;
            ⑧WHAT   //当前正在运行的命令;

      who [用户名]
         命令输出:
            ①- 用户名;
            ②- 登陆终端;
            ③-登录时间(登录来源IP地址);

   2、查询当前登录和过去登录的用户信息:
      last
         last命令默认是读取/var/log/wtmp文件数据;
         命令输出:
            ①- 用户名;
            ②- 登录终端;
            ③- 登录IP;
            ④- 登录时间;
            ⑤- 退出时间(在线时间);

   3、查看所有所有用户的最后一次登录时间:
      lastlog
         lastlog命令默认是读取/var/log/lastlog文件内容;
         命令输出:
            ①- 用户名;
            ②- 登陆终端;
            ③- 登录IP;
            ④- 最后一次登录时间;

bandicam

Shell概述:
   echo $shell
   /etc/shells   //shell配置文件;



echo输出命令
   echo [选项] [输出内容]
      -e   //支持反斜线控制的字符转换;
   控制字符:
      \a   //输出警告音;
      \b   //退格键,也就是向左删除键;
      \n   //换行符;
      \r   //回车键;
      \t   //制表符,也就是Tab键;
      \v   //垂直制表符;
      \0nnn   //按照八进制ASCLL码表输出字符。其中0位数字零,nnn是三位八进制数;
      \xhh   //按照十六进制ASCLL码表输出字符。其中nn是两位十六进制数;
      \e[1;31m   //开启颜色显示;
         30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色;
      \e[0m      //结束颜色显示;

shell脚本执行:
   赋予执行权限,直接运行:
      chmod 755 *.sh
      ./*.sh
   通过Bash调用执行脚本
      bash *.sh


Bash的基本功能:
   1、别名:
      ①alias         //查看系统中所有的命令别名;
      ②alias 别名 = ‘原命令‘   //设定命令别名(临时生效,一旦重启则失效;
      ③vim ~/.bashrc      //将别名写入环境变量配置文件(永久生效)
      ④source ~/.bashrc   //立即调用该文件,使其立即生效;
      ⑤unalias   别名      //删除别名;

   2、常用快捷键:
      ①ctrl+c   //强制终止当前命令
      ②ctrl+l   //清屏
      ③ctrl+a   //光标移动到命令行首
      ④ctrl+e   //光标移动到命令行尾
      ⑤ctrl+u   //从光标所在位置删除到行首
      ⑥ctrl+z   //把命令放入后台
      ⑦ctrl+r   //在历史命令中搜索


历史命令:
   history [选项] [历史命令保存文件]
      ①-c   //清空历史命令;
      ②-w   //把缓存中的历史命令写入历史命令保存文件~/.bash_history
      ③历史命令默认会保存1000条,可在环境变量配置文件/etc/profile内HISTSIZE=1000处进行修改;

   历史命令的调用:
      ①使用   ↑↓   调用以前的历史命令;
      ②使用    !n    重复执行第n条历史命令;
      ③使用    !!    重复执行上一条命令;
      ④使用    !字   串 重复执行最后一条以该字串开头的命令;



1、输出重定向:
   标准输出重定向:
      ①[命令] > [文件]      //以覆盖的方式,把命令的正确输出 输出到指定的文件或设备当中;

      ②[命令] >> [文件]   //以追加的方式,把命令的正确输出 输出到指定的文件或设备当中;

   标准错误输出重定向:
      ①[错误命令] 2>[文件]   //以覆盖的方式,把命令的错误输出 输出到指定的文件或设备当中;(>后没有空格)

      ②[错误命令] 2>>[文件]   //以追加的方式,把命令的错误输出 输出到指定的文件或设备当中;(>>后没有空格)

   正确输出和错误输出同时保存:
      ①[命令] > [文件] 2>&1   //以覆盖的方式,把命令的正确和错误输出都保存到指定的文件当中;

      ②[命令] >> [文件] 2>&1   //以追加的方式,把命令的正确和错误输出都保存到指定的文件当中;

      ③[命令] &>[文件]   //以覆盖的方式,把命令的正确和错误输出都保存到指定的文件当中;(>后没有空格)

      ④[命令] &>>[文件]   //以追加的方式,把命令的正确和错误输出都保存到指定的文件当中;(>>后没有空格)

      ⑤[命令] >> [文件1] 2>>[文件2]   //把正确的输出追加到文件1中,把错误的输出追加到文件2中;(2>>后没有空格)

2、输入重定向:
   [命令]<[文件]      //把文件作为命令的输入;
   [命令]<<[标识符]   //标识符把标识符质检内容作为命令的输入;
   wc [选项] [文件名]
      选项:
      ①-c   //统计字节数;
      ②-w   //统计单词数;
      ③-l   //统计行数;



1、多命令顺序执行:   
   ;(命令1 ;命令2)   //多个命令顺序执行,命令之间没有任何逻辑联系;
   &&(命令1&&命令2)   //逻辑与;当命令1正确执行,则命令2才会执行。当命令1执行不正确,则命令2不会执行;
   ||(命令1||命令2)   //逻辑或;当命令1执行不正确,则命令2才会执行。当命令1正确执行,则命令2不会执行;

2、管道符:
   |(命令1 | 命令2)   //命令1的正确输出作为命令2的操作对象;



1、通配符:
   ?   //匹配一个任意字符;
   *   //匹配0个或任意多个任意字符,也就是可以匹配任何内容;
   []   //匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c;
   [-]   //匹配中括号中任意一个字符,-代表一个范围,例如:[a-z]代表匹配一个小写字符。
   [^]   //逻辑非;表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符。

2、Bash中其他特殊符号:

   ‘‘   //单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。

   ""   //双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令
”和“转义符”的特殊含义。

   ``   //反引号。反引号括起来的内容是系统命令,在Bash中会先运行它、和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。

   $()   //和反引号作用一样,用来引用系统命令;

   #   //在Shell脚本中,#开头的行代表注释;

   $   //用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。

   \   //转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量使用;

:
Linux中所有内容都是以“文件”形式存储的;
压缩包:.gz/bz2/.tar.bz2/.tgz
二进制软件包:.rpm
网页文件:.html/.php
脚本文件:.sh
配置文件:.conf
linux中是不靠扩展名区分文件类型的、是靠权限来区分文件的;

windows下的程序是无法直接安装在linux中的、除非在linux中安装模拟器之后才可以安装windows程序/软件;


linux字符界面的优势:
1.字符界面占用系统资源少(节省系统资源)
2.字符界面减少了出错、被攻击的可能性(容错性高)


1.分区类型:
①主分区:最多只能有4个;
②扩展分区:
最多只能有一个;
主分区加扩展分区最多有4个;
不能写入数据,只能包含逻辑分区;
③逻辑分区:
逻辑分区盘符一定从5开始;

2.格式化:
格式化的根本目的是为了写入文件系统、把分区划分为等大小的数据块;
划分分区列表(分区列表包含了多个数据块):
分区列表包含:ID号、修改时间、权限


文件系统:
FAT16\最大分区支持2G

FAT32\最大分区空间16TB,单个文件不能超过4G;

NTFS\

EXT2\

EXT3\

EXT4\centos6.3默认支持的文件系统;



Linux硬盘分区完整过程:
1分区:为硬盘划分逻辑分区;
2格式化:写入文件系统;
3分区设备文件名:给每个分区定义设备文件名;
4分配盘符:给每个分区分配挂载点;

硬件设备文件名:/dev/目录
IED硬盘 

        /dev/hd[a-d]
SCSI/SATA/USB硬盘   /dev/sd[a-p]
光驱         /dev/cdrom&/dev/hdc
软盘         /dev/fd[0-1]
打印机(25针)      /dev/lp[0-2]
打印机(USB)      /dev/usb/lp[0-15]
鼠标         /dev/mouse
键盘         /dev/stdin


3.分区设备文件名:
设备文件名:
/dev/hda1(IDE硬盘接口)
"a"代表第一块IDE硬盘、"1"代表第一个分区;
IDE硬盘已逐渐被淘汰

/dev/sda1(SCSI硬盘接口、SATA硬盘接口)
"a"代表第一块SCSI/SATA硬盘、"1"代表第一个分区;
SCSI硬盘
SATA硬盘/串口硬盘


4.分配盘符:
主分区:1-4;
逻辑分区:从5开始;

Linux中是用“目录”作为盘符,且称之为“挂载点”
必须分区:
1. /(根分区)
2.swap分区/交换分区/虚拟内存
分配大小:内存≤4GB,swap分区为内存的2倍,当内存>4GB,则swap分区则和内存大小一致即可)
推荐分区:
1./boot(启动分区,200MB)


Linux中的管理员账户为"root",不是"administrator"

在创建用户时,会自动生成一个家目录,超级用户root的家目录就在"/root",其他普通用户的家目录都在"/home"下的二级目录,目录名就是用户名;

命令格式:命令 [选项] [参数] / 个别命令使用不遵循此格式,当有多个选项时,可以写在一起;

Linux中以"."开头的文件是隐藏文件;ls -a可查看隐藏文件;



1.目录/文件处理命令:

a.建立目录:
mkdir (make directories)
   mkdir -p [目录名]
      -p 递归创建

b.删除目录:
   删除空目录:
      rmdir(remove empty directories)
      rmdir [目录名]
   删除文件/目录:
      rm (remove0
      rm -rf [目录名/文件名]
         -r    :删除目录
         -f(force):强制删除

c.切换目录:
   cd(change directory)
      ①cd [目录]
      ②cd ~   :进入当前用户的家目录
      ③cd     :进入当前用户的家目录
      ④cd -   :进入上次目录
      ⑤cd ..   :进入上一级目录
      ⑥cd .   :进入当前目录

d.相对路径和绝对路径:
   ①相对路径:参照当前所在目录,进行查找
   ②绝对路径:从根目录开始指定,一级一级递归查找。

pwd(print working directory):显示当前目录所在位置;

e.复制
   cp(copy)
      cp [选项] [原文件或目录] [目标目录]
         -r复制目录
         -p连带文件属性复制
         -d若原文件是链接文件,则复制链接属性
         -a相当于-pdr

f.剪切/改名
   mv(move)
      mv [原文件或目录] [目标目录]

g.常见目录作用
   ①/:根目录;
   ②/bin:命令保存目录(普通用户就可以读取的命令);
   ③/sbin:命令保存目录(超级用户才能使用的目录);
   ④/usr:系统软件资源目录;
      /usr/bin/系统命令(普通用户);
      /usr/sbin/系统命令(超级用户);
   ⑤/boot:启动目录,系统启动相关文件;
   ⑥/dev:设备文件保存目录;
   ⑦/etc:系统配置文件保存目录;
   ⑧/root:超级用户的家目录;
   ⑨/home:普通用户的家目录;
   ⑩/lib:系统库保存目录;
   /mnt:系统挂载目录;
   /media:挂载目录;
   /tmp:临时目录;
   /proc:直接写入内存的;   
   /sys:直接写入内存的;
      /proc&/sys目录不能直接操作,该目录保存的是内存过载点
   /var:系统相关文档内容;


2.链接:
ln(link):生成链接文件;
   ln -s [原文件] [目标文件]
      -s(soft):创建软链接
      不加-s创建的是硬链接
硬链接和软链接
   硬链接:
      1、拥有相同的i(inode)节点和存储block块,可看做同一个文件;
      2、可通过i节点识别;
      3、不能跨分区;
      4、不能针对目录使用;

   软链接:
      1、类似windows快捷方式;
      2、软件拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据;
      3、lrwxrwxrwx   l 软链接;
         软链接文件权限都为rwxrwxrwx;
      4、修改任意文件,另一个文件都改变;
      5、删除原文件,软链接将不能使用;
      6、创建软链接的时,必须使用绝对路径;



文件搜索命令 locate
   locate 文件名
      在locate数据库中按“文件名”搜索,搜索速度快;

   /var/lib/mlocate
   #locate命令所搜索的后台数据库,每天更新一次;不同版本的linux中的locate数据库名称有差异;

   updatedb
   强制/手动更新locate数据库

locate/whereis/which遵守updatedb.conf文件中的各项条件限制;
   /etc/updatedb.conf配置文件;
      PRUNE_BIND_MOUNTS="yes/no"   //开启/关闭搜索限制
      PRUNEFS="*"   //搜索时,不搜索的文件系统;
      PRUNENAMES="*"   //搜索时,不搜索的文件类型;
      PRUNEPATHS="*"   //搜索时,不搜索的路径;


命令搜索命令 whereis/which
   whereis   命令名   //搜索系统命令所在路径及帮助文档所在位置;
      选项:
         -b:只查找可执行文件;
         -m:只查找帮助文件;

   which   文件名   //搜索系统命令所在位置及别名;

PATH环境变量:定义的是系统搜索命令的路径;



find [搜索范围] [搜索条件]
   #搜索文件
   #避免大范围搜索,会非常耗费系统资源;
   #find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配;

      linux中主要的通配符:
           :匹配任意多个内容
 
        ?   :匹配任意一个字符
 
        []   :匹配任意一个中括号内的字符

 
  find选项
 
     -name:根据文件名进行查找;
 
     -iname:不区分大小写;
 
     -user:根据所有者进行查找;
 
     -nouser:查找没有所有者的文件;

 
     -atime:文件访问时间;
 
     -ctime:改变文件属性;
 
     -mtime:修改文件内容;
 
        -10/10/+10:十天内/十天当天/10天前
 
     -size:按照文件大小查找;
 
        -25k/25k/+25k:小于25k/等于25k/大于25k;         k必须是小写,M必须是大写;
 
     -inum:根据文件的i节点进行查找;
 
     -a(and):逻辑与,多个条件同时满足;
 
     -o(or):逻辑或,多个条件满足其中一个即可;
 
     -exec命令{}\;   :对搜索接口执行第二次操作;

grep [选项] "字符串" 文件名
 
  #子文件当中匹配符合条件的字符串;
 
  选项:
 
     -i   忽略大小写;
 
     -v   排除指定字符串/反向查找;


find与grep的区别
 
  find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配;

 
  grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配;



帮助命令:man
 
  man [命令]   :#即可查询某个命令的详细信息

 
  [命令] --help   :#获取命令选项的帮助;

shell内部命令帮助:

 
  help shell   :#只能获取shell内部命令的帮助;
确认是否为shell内部命令的方式:

 
  whereis [命令]   //#查询结果如若没有执行文件则为内部命令;
 
  help [命令]   //#只能获取内部命令的帮助;

详细命令帮助info:
 
  info [命令]
 
     - 回车://进入子帮助页面(带有*号标记)
 
     - u ://进入上层页面;
 
     - n ://进入下一个帮助小节;
 
     - p ://进入上一个帮助小节;
 
     - q ://退出;


压缩与解压缩命令:

 
  1、常用压缩格式:   .zip/.gz/.bz2
 
     (1).zip:
 
     .zip格式压缩:
 
        ①zip 压缩文件名.zip 源文件 //压缩文件;
 
        ②zip -r 压缩文件名 源目录 //压缩目录;

 
     .zip格式解压缩:
 
        ①unzip   压缩文件   //解压缩.zip文件;

 
     (2).gz:
 
     .gz格式压缩:
 
        ①gzip 源文件 //压缩为.gz格式的压缩文件,源文件会消失;
 
        ②gzip -c 源文件 > 压缩文件名.gz //压缩为.gz格式,源文件保留;
 
        ③gzip -r 目录 //压缩目录下所有的子文件,但不能压缩目录;

 
     .gz格式解压缩:
 
        ①gzip -d 压缩文件 //解压缩文件;   
         ②gzip -r 压缩文件 //解压目录;
 
        ③gunzip 压缩文件 //解压缩文件;

 
    (3) .bz2:
 
     .bz2格式压缩:
 
        !!bzip2命令不能压缩目录
 
        ①bzip2 源文件 //压缩为.bz2格式,不保留源文件;
 
        ②bzip2 -k 源文件 //压缩之后保留源文件;
 
        
      .bz2格式解压缩:
 
        ①bzip2 -d 压缩文件 //解压缩,-k保留压缩文件;
 
        ②bunzip2 压缩文件 //解压缩,-k保留压缩文件;


 
  2、常用压缩格式:   .tar.gz/.tar.bz2

 
     tar //解/打包命令
 
        tar -cvf 打包文件名.tar 源文件
 
           -c:打包;
 
           -v:显示过程;
 
           -f:指定打包后的文件名;
 
        

         tar -xvf 打包文件名
 
           -x:解包

 
        tar [参数] 打包文件名.tar.* 源文件 -C [路径]   //指定解压存储路径;
如果需将多个文件打包,则直接在源文件后用空格连接即可;
例: 
  tar -zcvf 打包文件名 源文件1 源文件2 源文件3
若只查看不解压.tar/.tar.*文件,则使用-t选项即可;
 
           -t:显示.tar/.tar*文件,不进行解压操作;


其实.tar.gz/.tar.bz2格式是先打包为.tar格式,再压缩为.gz/.bz2格式;

 
     .tar.gz:
 
        tar -zcvf 压缩包名.tar.gz 源文件
 
           -z:压缩为.tar.gz格式

 
        tar -zxvf 压缩包名.tar.gz
 
           -x:解压缩.tar.gz格式

 
     .tar.bz2:

 
        tar -jcvf 压缩包名.tar.bz2 源文件
 
          -j:压缩为.tar.bz2格式

         tar -jxvf 压缩包名.tar.bz2
            -x:解压缩.tar.bz2格式

linux最常用的压缩格式:.tar.gz/.tar.bz2


推荐关机使用shutdown!!!!!!!
shutdown [选项] 时间

   选项:
      ①-c:取消前一个关机命令;
      ②-h:关机
      ③-r:重启

   时间:
      ①now   //现在
      ②时:分
其他关机命令:
   ①halt
   ②poweroff
   ③init 0
以上三个关机命令不建议使用,相对shutdown,shutdown更为安全;
其他重启命令:
   ①reboot
   ②init 6


系统运行级别:
   0   //关机
   1   //单用户(类似windows安全模式)
   2   //不完全多用户,不含NFS服务(字符界面,不包含文件共享服务)
   3   //完全多用户(字符界面)
   4   //未分配
   5   //图形界面
   6   //重启

   runlevel   //查询上次及当前的系统级别;

   vim   /etc/inittab      //系统级别配置文件;
         id:3:initdefault:   //修改系统默认运行级别(id后的数字则为系统级别)

logout   //退出登录命令(每次使用后,建议退出当前用户,避免他人因账户占用无法使用!与windows中的注销相似!)



挂载命令:
   mount      //查询系统中已挂载的设备;
   mount -a   //根据配置文件/etc/fstab内容,自动重新再挂载;
      外接设备不建议设为自动挂载;

挂载命令格式:
   mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点;
      /dev/sr0是linux中光盘的设备文件名,而/dev/cdrom则是/dev/sr0的软链接,建议挂载时使用/dev/sr0;

      -t 文件系统   //加入文件系统该类型来指定挂载的类型,可以为ext3、ext4、iso9660等文件系统;
         linux标准文件系统ext3/ext4,centos6.0以后默认文件系统都是ext4、光盘的默认文件系统为:iso9660;
         
      -o 特殊选项   //可以指定挂载的额外选项;

   umount 设备文件名或挂载点   //取消挂载/卸载 命令;
      当在linux中,挂载U盘/光盘/移动硬盘类似的外接设备后,当不使用时、需要将挂载点卸载掉!

 挂载U盘:
   fdisk -l   //查看系统当前已识别的硬盘;
   mount -t vfat 设备文件名 挂载点      //文件系统vfat其实就是windows中的FAT32(此种文件系统类型几乎已经淘汰,因为该文件系统最多识别4G;linux默认是 支持NTFS文件系统的(如果需要linux系统识别NTFS,要么重新编译系统内核,要么下载安装“NTFS-3G”该软件安装之后系统则可识别 NTFS文件系统;


用户登录查看:
   1、查看登录信息:
      w [用户名]
         命令输出:
            ①USER   //登陆的用户名;
            ②TTY   //登录终端;tty1是本地登陆,不会有登录的IP地址;pts/0则是第一个远程登陆,会存在登录的IP地址;            
            ③FROM   //从哪个IP地址登录;
            ④LOGIN@   //登陆时间;
            ⑤IDLE   //用户闲置时间;
            ⑥JCPU   //指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间;
            ⑦PCPU   //是指当前进程所占用的时间;
            ⑧WHAT   //当前正在运行的命令;

      who [用户名]
         命令输出:
            ①- 用户名;
            ②- 登陆终端;
            ③-登录时间(登录来源IP地址);

   2、查询当前登录和过去登录的用户信息:
      last
         last命令默认是读取/var/log/wtmp文件数据;
         命令输出:
            ①- 用户名;
            ②- 登录终端;
            ③- 登录IP;
            ④- 登录时间;
            ⑤- 退出时间(在线时间);

   3、查看所有所有用户的最后一次登录时间:
      lastlog
         lastlog命令默认是读取/var/log/lastlog文件内容;
         命令输出:
            ①- 用户名;
            ②- 登陆终端;
            ③- 登录IP;
            ④- 最后一次登录时间;

bandicam

Shell概述:
   echo $shell
   /etc/shells   //shell配置文件;



echo输出命令
   echo [选项] [输出内容]
      -e   //支持反斜线控制的字符转换;
   控制字符:
      \a   //输出警告音;
      \b   //退格键,也就是向左删除键;
      \n   //换行符;
      \r   //回车键;
      \t   //制表符,也就是Tab键;
      \v   //垂直制表符;
      \0nnn   //按照八进制ASCLL码表输出字符。其中0位数字零,nnn是三位八进制数;
      \xhh   //按照十六进制ASCLL码表输出字符。其中nn是两位十六进制数;
      \e[1;31m   //开启颜色显示;
         30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色;
      \e[0m      //结束颜色显示;

shell脚本执行:
   赋予执行权限,直接运行:
      chmod 755 *.sh
      ./*.sh
   通过Bash调用执行脚本
      bash *.sh


Bash的基本功能:
   1、别名:
      ①alias         //查看系统中所有的命令别名;
      ②alias 别名 = ‘原命令‘   //设定命令别名(临时生效,一旦重启则失效;
      ③vim ~/.bashrc      //将别名写入环境变量配置文件(永久生效)
      ④source ~/.bashrc   //立即调用该文件,使其立即生效;
      ⑤unalias   别名      //删除别名;

   2、常用快捷键:
      ①ctrl+c   //强制终止当前命令
      ②ctrl+l   //清屏
      ③ctrl+a   //光标移动到命令行首
      ④ctrl+e   //光标移动到命令行尾
      ⑤ctrl+u   //从光标所在位置删除到行首
      ⑥ctrl+z   //把命令放入后台
      ⑦ctrl+r   //在历史命令中搜索


历史命令:
   history [选项] [历史命令保存文件]
      ①-c   //清空历史命令;
      ②-w   //把缓存中的历史命令写入历史命令保存文件~/.bash_history
      ③历史命令默认会保存1000条,可在环境变量配置文件/etc/profile内HISTSIZE=1000处进行修改;

   历史命令的调用:
      ①使用   ↑↓   调用以前的历史命令;
      ②使用    !n    重复执行第n条历史命令;
      ③使用    !!    重复执行上一条命令;
      ④使用    !字   串 重复执行最后一条以该字串开头的命令;



1、输出重定向:
   标准输出重定向:
      ①[命令] > [文件]      //以覆盖的方式,把命令的正确输出 输出到指定的文件或设备当中;

      ②[命令] >> [文件]   //以追加的方式,把命令的正确输出 输出到指定的文件或设备当中;

   标准错误输出重定向:
      ①[错误命令] 2>[文件]   //以覆盖的方式,把命令的错误输出 输出到指定的文件或设备当中;(>后没有空格)

      ②[错误命令] 2>>[文件]   //以追加的方式,把命令的错误输出 输出到指定的文件或设备当中;(>>后没有空格)

   正确输出和错误输出同时保存:
      ①[命令] > [文件] 2>&1   //以覆盖的方式,把命令的正确和错误输出都保存到指定的文件当中;

      ②[命令] >> [文件] 2>&1   //以追加的方式,把命令的正确和错误输出都保存到指定的文件当中;

      ③[命令] &>[文件]   //以覆盖的方式,把命令的正确和错误输出都保存到指定的文件当中;(>后没有空格)

      ④[命令] &>>[文件]   //以追加的方式,把命令的正确和错误输出都保存到指定的文件当中;(>>后没有空格)

      ⑤[命令] >> [文件1] 2>>[文件2]   //把正确的输出追加到文件1中,把错误的输出追加到文件2中;(2>>后没有空格)

2、输入重定向:
   [命令]<[文件]      //把文件作为命令的输入;
   [命令]<<[标识符]   //标识符把标识符质检内容作为命令的输入;
   wc [选项] [文件名]
      选项:
      ①-c   //统计字节数;
      ②-w   //统计单词数;
      ③-l   //统计行数;



1、多命令顺序执行:   
   ;(命令1 ;命令2)   //多个命令顺序执行,命令之间没有任何逻辑联系;
   &&(命令1&&命令2)   //逻辑与;当命令1正确执行,则命令2才会执行。当命令1执行不正确,则命令2不会执行;
   ||(命令1||命令2)   //逻辑或;当命令1执行不正确,则命令2才会执行。当命令1正确执行,则命令2不会执行;

2、管道符:
   |(命令1 | 命令2)   //命令1的正确输出作为命令2的操作对象;



1、通配符:
   ?   //匹配一个任意字符;
   *   //匹配0个或任意多个任意字符,也就是可以匹配任何内容;
   []   //匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c;
   [-]   //匹配中括号中任意一个字符,-代表一个范围,例如:[a-z]代表匹配一个小写字符。
   [^]   //逻辑非;表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符。

2、Bash中其他特殊符号:

   ‘‘   //单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。

   ""   //双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令
”和“转义符”的特殊含义。

   ``   //反引号。反引号括起来的内容是系统命令,在Bash中会先运行它、和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。

   $()   //和反引号作用一样,用来引用系统命令;

   #   //在Shell脚本中,#开头的行代表注释;

   $   //用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。

   \   //转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量使用;


本文出自 “IT_Boomer” 博客,请务必保留此出处http://liangjing.blog.51cto.com/8582041/1844420

Linux基础一