linux基础知识1

1. 硬盘分区
  分区类型:主分区,扩展分区。逻辑分区;
  分区规则:
    一个硬盘仅仅能有1到4个主分区;
    一个硬盘仅仅能有1个扩展分区;
    一个硬盘的主分区和扩展分区最多仅仅能有4个。
    扩展分区仅仅能用来包括逻辑分区;
    一个硬盘主分区和扩展分区的分区号为1~4,逻辑分区的分区号从5開始。
  必须分区:
    / (根分区)
    swap (交换分区,此分区没有挂载点。其作用相当于虚拟内存,供操作系统进行使用)
  推荐分区:
    /boot (启动分区,当此分区空间不足时,系统将无法启动。推荐200M)
  相关链接:
    https://code.csdn.net/snippets/592005/master/linux-挂载新硬盘及分区设置/raw
    https://code.csdn.net/snippets/593828/master/linux-将多个硬盘合并到一个挂载点下/raw

2. 经常使用文件夹
/bin,  /usr/bin  普通用户能够运行的系统命令
/sbin, /usr/sbin 仅仅有root才干运行的系统命令
/boot  存放启动文件
/dev   存放设备文件
/etc   存放配置文件
/home  普通用户家文件夹
/lib   存放系统库文件
/mnt   挂载文件夹(U盘, 文件server等)
/media 挂载文件夹(光盘)
/proc, /sys 系统内存信息
/tmp   暂时文件夹
/var   系统文档

3. 经常使用命令
3.1 文件夹和文件
3.1.1 查询当前文件夹
  pwd
3.1.2 切换当前文件夹
  cd [文件夹]
  # cd   进入当前用户的家文件夹
  # cd ~ 进入当前用户的家文件夹
  # cd - 进入上次切换前的文件夹
  # cd .. 进入上级文件夹
3.1.3 查询文件夹中的内容
  ls [选项] [文件或文件夹]
  # -a 显示全部文件,包括隐藏文件
  # -l 显示具体信息
  # -h 人性化显示文件大小
  # -i 显示文件索引號
  # -d 查看文件夹属性
  # ls -l 等价于 ll
  演示样例:
  my_suse:/disk1 # ll -ih
  total 12K
  137014 -rw-r--r-- 1 root users 5.8K Feb  5 00:54 a.txt
  137018 drwxr-xr-x 2 root users 4.0K Feb  5 00:40 logs
  # 137014, 137018 表示文件的索引號
  # -rw-r--r-- 里面的第一个 '-' 表示文件
  # -rw-r--r-- 里面的前面三个 rw- 表示所属用户可读、可写、可运行
  # -rw-r--r-- 里面的中间三个 r-- 表示同组用户可读
  # -rw-r--r-- 里面的后面三个 r-- 表示其它用户可读
  # drwxr-xr-x 里面的第一个 'd' 表示文件夹
  # 1, 2 表示文件被引用的次数(文件默认是1,文件夹默认是2)
  # root 表示所属用户
  # users 表示所属组
  # 5.8K 表示文件大小
3.1.4 创建文件夹
  mkdir [-p] 文件夹名
  # -p 递归创建
3.1.5 创建文件
  touch 文件名称称      # 文件大小为0
  echo "" > 文件名称称  # 文件大小不为0
3.1.6 创建链接文件
  ln [-s] 原文件 链接文件
  # 默认硬链接,仅仅能用于链接文件
  # -s  软链接。用于链接文件或文件夹
  演示样例:
  # /disk2 须要已存在。否则运行失败
  # /disk2/logs_link 存在时,  会创建一个链接文件 /disk2/logs_link/logs,并指向 /disk1/logs
  # /disk2/logs_link 不存在时,会创建一个链接文件 /disk2/logs_link,并指向 /disk1/logs
  ln -s /disk1/logs /disk2/logs_link
3.1.7 拷贝文件或文件夹
  cp [选项] [原文件或文件夹] [目标文件或文件夹]
  # -r 递归拷贝文件夹及其内容
  # -p 连带文件属性复制
  # -d 若原文件是链接文件。则复制链接属性
  # -a 相当于 -pdr
  演示样例:
  # /disk2 须要已存在,否则运行失败
  # /disk2/a.txt 存在时,复制时会直接覆盖此文件
  cp -r /disk1/a.txt /disk2/a.txt
  # /disk2 须要已存在。否则运行失败
  # /disk2/logs 存在时,  会将/disk1/logs 复制为 /disk2/logs/logs
  # /disk2/logs 不存在时,会将/disk1/logs 复制为 /disk2/logs
  cp -r /disk1/logs /disk2/logs
3.1.8 移动文件或文件夹
  mv [原文件或文件夹] [目标文件或文件夹]
  演示样例:
  # /disk2 须要已存在。否则运行失败
  # /disk2/logs 存在时。  会将 /disk1/logs 移动为 /disk2/logs/logs
  # /disk2/logs 不存在时,会将 /disk1/logs 移动为 /disk2/logs
  mv /disk1/logs /disk2/logs
3.1.9 删除文件或文件夹
  rm [选项] [文件或文件夹]
  # -r 删除文件夹
  # -f 强制删除
  # rmdir 这个命令仅仅能删除空白文件夹
  rmdir [文件夹名]
3.2 搜索命令
3.2.1 搜索命令所在路径及帮助文档所在位置
  whereis [选项] 命令名
  # -b 仅仅查找可运行文件
  # -m 仅仅查找帮助文件
  演示样例:
  whereis ls    # 查找 ls 命令所在路径及帮助文档所在位置
  whereis -b ls # 查找 ls 命令所在路径
  whereis -m ls # 查询 ls 命令帮助文档所在位置
3.2.2 搜索命令所在路径
  which 命令名
3.2.3 在系统中搜索文件
  find [搜索范围] [搜索条件]
  # 缺点:避免大范围搜索,会很耗费系统资源
  # 通配符
  *  # 匹配0个或多个随意字符
  ?

# 匹配1个随意字符 [] # 匹配1个中括号内的随意字符 # 逻辑关系 ! expr # 逻辑非。True if expr is false. expr1 -a expr2 # 逻辑与。等价于 expr1 expr2 expr1 -o expr2 # 逻辑或 # 搜索条件 # -type 按文件类型进行搜索(-type d 表示文件夹, -type f 表示文件) # -name 按文件名称搜索,大写和小写敏感 # -iname 按文件名称搜索,大写和小写不敏感 # -user 按文件全部者搜索 # -size 按文件大小搜索 -10M 表示小于10M的文件 10M 表示等于10M的文件 +10M 表示大于10M的文件 # -mtime [+-]n 查找最后一次被改动时的时间在 n 天前的文件 -10 表示10天以内被改动的文件 10 表示10天当天被改动的文件 +10 表示10天之前被改动的文件 # -inum 按文件索引號进行搜索 # -exec command '{}' \; 对搜索结果运行 command 命令 演示样例: # 搜索 /disk1 文件夹中以 test 开头的日志文件 find /disk1 -name "test*.log" # 搜索 /disk1 文件夹中除 test3.log 之外的全部文件 find /disk1 -type f -a ! -name test3.log # 使用正則表達式进行搜索 find /disk1 -regextype posix-egrep -regex '.*\.(xml|log)' # 搜索 /disk1 下的文件夹。同一时候排除 work, logs 文件夹本身 find /disk1 -mindepth 1 -type d -a ! \( -path /disk1/work -o -path /disk1/logs \) # 搜索 /disk1 下的文件夹,同一时候排除 work, logs 文件夹本身及子文件 find /disk1 -mindepth 1 \( -path /disk1/work -o -path /disk1/logs \) -prune -o \( -type d -print \) # 搜索 /disk1 下的文件,同一时候排除 work, logs 文件夹本身及子文件 find /disk1 \( -path /disk1/work -o -path /disk1/logs \) -prune -o \( -type f -print \) # 搜索 /disk1 下的文件夹和文件,同一时候排除 work, logs 文件夹本身及子文件 find /disk1 -mindepth 1 \( -path /disk1/work -o -path /disk1/logs \) -prune -o -print 3.2.4 在文件里搜索字符串 grep [选项] 字符串 文件名称 # -i 忽略大写和小写 # -v 排除指定字符串 3.3 帮助命令 man 命令 # 查看命令的帮助文档 命令 --help # 查看命令选项的帮助 help shell内部命令 # 查看 shell 内部命令的帮助(比如:help cd) 3.4 压缩与解压缩 3.4.1 .zip 格式 zip 压缩文件名称 源文件 # 压缩文件 zip -r 压缩文件名称 源文件夹 # 压缩文件夹 unzip 压缩文件名称 [-d exdir] # 解压缩 3.4.2 .gz 格式 # 不能压缩文件夹本身,仅仅能压缩文件夹中的子文件 gzip 源文件 # 压缩为.gz格式。不保留源文件 gzip -c 源文件 > 压缩文件 # 压缩为.gz格式。保留源文件 gzip -r 文件夹 # 压缩文件夹下的全部子文件,不压缩文件夹 gzip -d 压缩文件 # 解压缩文件,不保留压缩文件 gunzip 压缩文件 # 解压缩文件,不保留压缩文件 gzip -c -d 压缩文件 > 源文件 # 解压缩文件,保留压缩文件 gunzip -c 压缩文件 > 源文件 # 解压缩文件。保留压缩文件 gunzip -d 文件夹 # 解压缩文件夹中的全部压缩文件 3.4.3 .bz2 格式 # 不能压缩文件夹 bzip2 源文件 # 压缩为.bz2格式,不保留源文件 bzip2 -k 源文件 # 压缩为.bz2格式,保留源文件 bzip2 -d 压缩文件 # 解压缩文件,不保留压缩文件 bunzip2 压缩文件 # 解压缩文件,不保留压缩文件 bzip2 -k -d 压缩文件 # 解压缩文件,保留压缩文件 bunzip2 -k 压缩文件 # 解压缩文件,保留压缩文件 3.4.4 tar打包 tar -cvf 打包文件名称 源文件1 源文件2 ... # -c 打包 # -v 显示过程 # -f 指定打包后的文件名称 tar -tvf 打包文件名称 # -t表示查看tar包中内容。但不解包 tar -xvf 打包文件名称 # -x表示解开tar包 tar -xvf 打包文件名称 -C /tmp/ # -C 表示解包到指定文件夹 3.4.5 .tar.gz 格式 tar -zcvf 压缩包名.tar.gz 源文件 # 压缩, -z 表示压缩为.tar.gz格式 tar -zxvf 压缩包名.tar.gz # 解压缩,-x 表示解压缩 3.4.6 .tar.bz2 格式 tar -jcvf 压缩包名.tar.bz2 源文件 # 压缩。 -j 表示压缩为.tar.bz2格式 tar -jxvf 压缩包名.tar.bz2 # 解压缩,-x 表示解压缩 3.5 关机和重新启动 3.5.1 shutdown命令 shutdown [选项] 时间 # -h 关机,同一时候关闭电源 # -r 重新启动 # -c 取消前一个关机/重新启动命令 shutdown -r +10 # 10分钟后重新启动 shutdown -c # 取消前一个关机/重新启动命令 3.5.2 其它命令 logout # 注销当前用户 reboot # 马上重新启动 init 6 # 马上重新启动,不安全(不会保存正在运行的程序) poweroff # 马上关机。同一时候关闭电源,不安全(不会保存正在运行的程序) init 0 # 马上关机,同一时候关闭电源,不安全(不会保存正在运行的程序) halt -p # 马上关机,同一时候关闭电源。不安全(不会保存正在运行的程序) # init n 表示调用系统级别,linux有下面7个系统级别 0 关机 1 单用户 2 不全然多用户。不含NFS服务 3 全然多用户 4 未分配 5 图形界面 6 重新启动 # runlevel 查看当前系统级别 3.6 挂载命令 3.6.1 查询与自己主动挂载 mount # 查询系统中已挂载的设备 mount -a # 依据/etc/fstab文件里的内容,自己主动挂载 3.6.2 mount 命令 mount [-t 文件系统] [-o 特殊选项] 设备文件名称 挂载点 特殊选项有例如以下几种: rw/ro # 读写/仅仅读。默认rw suid/nosuid # 是否具有suid权限,默认suid dev/nodev # 可读/不可读文件系统上的字符或块设备 exec/noexec # 是否同意运行文件系统中的可运行文件。默认exec auto/noauto # 运行mount -a命令时。是否依照/etc/fstab文件内容自己主动挂载。默认auto user/nouser # 是否同意普通用户挂载,默认nouser async/sync # 异步/同步,默认async default # 相当于rw,suid,dev,exec,auto,nouser,async atime/noatime # 訪问分区文件时,是否更新文件的訪问时间,默认atime remount # 又一次挂载已经挂载的设备 3.6.3 挂载光盘 # 创建挂载点 mkdir /mnt/cdrom # 挂载光盘(/dev/cdrom是/dev/sr0的软链接) mount /dev/sr0 /mnt/cdrom 或者 mount /dev/cdrom /mnt/cdrom # 查看光盘中的内容 ll /mnt/cdrom # 卸载光盘 umount /dev/sr0 或者 umount /mnt/cdrom 3.7 查看登录用户信息 3.7.1 w命令,查看当前登录用户信息 w [username] # 命令输出: USER 登录username TTY 登录终端 FROM 登录ip LOGIN@ 登录时间 IDLE 闲置时间 JCPU 和该终端连接的全部进程占用的时间 PCPU 当前进程所占用的时间 WHAT 当前正在运行的命令 3.7.2 who命令,查看当前登录用户信息 who # 命令输出:username,登录终端,登录时间(登录ip) 3.7.3 last命令。查看当前登录和过去登录的用户信息 last # 命令输出:username,登录终端,登录ip,登录时间,退出时间(在线时长) last | tac # 将last命令的输出倒序显示 3.7.4 lastlog命令,查看全部用户的最后一次登录信息 lastlog 4. Shell 基础 cat /etc/shells # 查看系统支持的shell类型 echo $SHELL # 查看当前用户的shell类型 4.1 echo 命令 echo "Hello world" # 输出字符串 echo -e "Hello\nworld" # -e 表示支持控制字符(比如:\r\n\t\b\v) echo -e "\e[1;31m Hello world \e[0m" # 带颜色的输出 # 有例如以下几种经常使用颜色 30m = 黑色, 31m = 红色, 32m = 绿色, 33m = 黄色 34m = 蓝色, 35m = 粉红, 36m = 青色, 37m = 白色 4.2 编写并运行脚本 my_suse:~ # vi hello.sh ---------- 文件内容例如以下 ------------ #!/bin/bash #This is the first comment. echo "Hello world." ------------------------------------ my_suse:~ # chmod 700 hello.sh my_suse:~ # ./hello.sh Hello world. my_suse:~ # /root/hello.sh Hello world. my_suse:~ # sh hello.sh Hello world. my_suse:~ # 备注: 1. shell脚本中#表示凝视; 2. 但第一行的 #!/bin/bash 不是凝视。表示当前文件的shell类型 4.3 别名 alias # 查看系统中全部别名 alias 别名='原命令' # 设置新的别名 unalias 别名 # 删除别名 比如: my_suse:~ # alias hello='echo "Hello world"' my_suse:~ # hello Hello world my_suse:~ # # 命令运行顺序 1. 用绝对路径或相对路径运行的命令 2. 别名 3. Bash的内部命令 4. 依照$PATH环境变量定义的文件夹匹配到的第一个命令 4.4 快捷键 Ctrl + l # 清屏 = clear Ctrl + c # 强制终止当前命令 Ctrl + a # 光标移动到行首 Ctrl + e # 光标移动到行尾 Ctrl + u # 从光标所在位置删除到行首 Ctrl + z # 把命令放入后台 Ctrl + r # 从历史命令中搜索 Tab # 自己主动补全命令或文件 # 假设仅仅有一个候选命令时。按一下Tab键自己主动补全 # 假设存在多个候选命令时,按两下Tab键自己主动列出候选命令 4.5 历史命令 history [选项] # -c 清空历史命令 # -w 把缓存中的历史命令马上写入~/.bash_history文件 默认是在当前用户退出时才将缓存中的历史命令写入~/.bash_history文件 # 历史命令默认保存数量为1000。可通过下面命令查询 cat /etc/profile | grep HISTSIZE # 历史命令有下面几种调用方式 1. 使用上下箭头调用历史命令 2. 使用 !n 反复运行第 n 条历史命令 3. 使用 !! 反复运行上一条历史命令 4. 使用 !字符串 反复运行最后一条以该字符串开头的历史命令 4.6 重定向 4.6.1 标准输入输出 设备 | 设备文件名称 | 文件描写叙述符 | 类型 键盘 | /dev/stdin | 0 | 标准输入 显示器 | /dev/stdout | 1 | 标准输出 显示器 | /dev/stderr | 2 | 标准错误输出 4.6.2 输出重定向 # 标准输出重定向 命令 > 文件 # 覆盖方式。将命令正确输出重定向到文件里 命令 >> 文件 # 追加方式,将命令正确输出重定向到文件里 演示样例:date > test.log # 标准错误输出重定向(注意:'>'前后都没有空格) 错误命令 2>文件 # 覆盖方式。将命令错误输出重定向到文件里 错误命令 2>>文件 # 追加方式,将命令错误输出重定向到文件里 演示样例:cat /home 2>test.log # 标准输出和标准错误输出同一时候重定向 命令 > 文件 2>&1 # 覆盖方式 命令 >> 文件 2>&1 # 追加方式 命令 &>文件 # 覆盖方式 命令 &>>文件 # 追加方式 命令 >> 文件1 2>>文件2 # 追加方式 # 假设不想要不论什么输出,能够使用下面的命令(/dev/null代表linux中的黑洞) 命令 &>/dev/null 4.6.3 输入重定向 # wc 命令 wc [选项] [文件名称] # -c 统计字节数 # -w 统计单词数 # -l 统计行数 # 把文件内容作为输入 命令 < 文件名称 # 演示样例:wc -l < /etc/passwd 命令 <<标识符 # 起始标识符 ... 标识符 # 结束标识符,要处于最后一行的行首。前面没有空格 演示样例: my_suse:~ # wc -l <<END > a > b > END 2 my_suse:~ # 4.7 管道符 4.7.1 多命令顺序运行 命令1; 命令2 # 多个命令顺序运行。命令之间没有逻辑关系 命令1 && 命令2 # 逻辑与。命令1运行成功时,命令2才会被运行 命令1 || 命令2 # 逻辑或。命令1运行失败时,命令2才会被运行 4.7.2 管道符 命令1 | 命令2 # 命令1的正确输出作为命令2的操作对象 # 命令2须要能够操作命令1的正确输出 演示样例: ll /etc | more netstat -an | grep ESTABLISHED | wc -l 4.8 通配符 4.8.1 通配符 ? # 匹配1个随意字符 * # 匹配0个或多个随意字符 [] # 匹配1个中括号里的随意字符,[a-z]表示随意一个字母。[0-9]表示随意一个数字 [^] # 匹配1个不在中括号里的随意字符,[^0-9]匹配一个非数字的字符 4.8.2 特殊符号 ' # 单引號,在单引號中的全部特殊符号都没有特殊含义(比如:$ 和 `) " # 双引號,在双引號中的全部特殊符号都没有特殊含义,但下面3个例外: # $ 表示调用变量的值, ` 表示引用命令, \ 表示转义符 ` # 反引號,反引號括起来的内容是系统命令,在Bash中会先运行它。 # 和$()作用一样,推荐使用$(),由于反引號很easy看错 $() # 和反引號作用一样。用来引用系统命令 # # 在Shell脚本中,#开头的行代表凝视 $ # 用于调用变量的值,比如 $name 表示调用变量name的值 \ # 转义符。跟在\之后的特殊符号将失去特殊含义,变为普通字符 演示样例: name=100 ; echo $name name=200 ; echo '$name' name=300 ; echo "$name" name=400 ; echo "\$name" name=`pwd` ; echo $name name=$(pwd) ; echo $name ---------------------------------------------------------------- 相关链接 http://www.imooc.com/learn/175 --END


版权声明:本文博客原创文章,博客,未经同意,不得转载。

posted @ 2015-08-18 09:39  lcchuguo  阅读(175)  评论(0编辑  收藏  举报