您的位置:首页 > 运维架构 > Linux

linux基础知识1

2015-08-18 09:39 453 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: