Linux 学习第一周
1.Linux登录
在开机后的登录界面有虚拟终端与图形化终端
虚拟终端:
centos6 : ctrl + alt + F2~F6 可对应分别进入 /dev/tty2-6 的虚拟终端登录界面
centos7: ctrl + alt + F2~F6 可对应分别进入 /dev/tty2-6 的虚拟终端登录界面
图型化终端:
centos6: ctrl + alt + F1 可进入/dev/tty1 的图形化终端登录界面
centos7: ctrl + alt + F1 可进入/dev/tty1 的图形化终端登录界面
使用用户名及密码登录以上终端。
2. Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。
它接收用户输入的命令并把它送入内核去执行。 shell也被称为LINUX的命令解释器(command interpreter)
同时shell也是一种高级程序设计语言。
查看当前系统所安装的shell :cat /etc/shells
[root@centos7 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
查看当前使用的何种shell:echo $SHELL
[root@centos7 ~]# echo $SHELL
/bin/bash
3.type命令:查看命令类型
type + 命令
[root@centos7 ~]# type echo
echo is a shell builtin (查看命令echo的类型)
4.which 命令:查看命令的路径
which + 命令
[root@centos7 ~]# which echo
/usr/bin/echo (查看命令echo的路径)
5.enable 查看所有已启用的内部命令
enable (+选项) (+命令)
(默认)查看所有已启用的内部命令
[root@centos7 ~]# enable
enable .
enable :
enable [
enable alias
。。。。。。(省略)
-n 查看所有已禁用的内部命令
-a 查看所有的内部命令
enable command 启用指定的内部命令
enable -n command 禁用指定的内部命令
[root@centos7 ~]# enable -n alias (禁用 alias命令)
[root@centos7 ~]# enable -n (查看已禁用的命令)
enable -n alias
命令执行的优先顺序 : alias > 内部 > 外部(hash > PATH)
6.hash 显示已缓存的外部命令的路径
hash (默认)显示已缓存的外部命令的路径
[root@centos7 ~]# hash
hits command
2 /usr/bin/cat
hash -d command 删除指定命令的hash缓存
hash -r 删除所有缓存
7.alias 别名命令
可直接设置别名:如 alias copy=cp ;alias copy='cp -p -r' 等
alias 查看已有的别名
[root@centos7 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
unalias 删除别名
unalias -a 取消所有别名
*使用alias直接设置别名:如 alias copy=cp ,在重新开机后会丢失,
若要每次开机都可直接使用此别名,可将其写入~/.bashrc文件中
*若要临时使用某一条命令不受别名影响,可使用以下方法:
> /bin/ls 使用路径执行命令
> \ls 命令前加反斜杠
> 'ls' 命令上加单引号
> "ls" 命令上加双引号
8.date 命令 :显示/设置系统的时间与日期
[root@centos7 ~]# date "+%F %T" (显示系统时间)
2018-05-28 21:49:05
[root@centos7 ~]# date "+%Y-%m-%d" (显示系统日期)
2018-05-28
[root@centos7 ~]# date -d '-2 days' (表示前天是星期几)
Sat May 26 21:54:08 CST 2018
其它显示内容可参考 man date
clock/hwclock 查看/设置时间
-s 将硬时间写入软时间
-w 将软时间写入硬时间
9.history 显示历史记录
history 查看当前的历史记录
可使用上下键查看之前的历史命令,并可以再次回车执行
-c 清空历史
-a 将当前终端的新命令追加到历史文件
-w /path/filename 将当前终端的新命令追加到指定文件
-r 读取历史文件中的所有历史到当前终端的历史缓存
-n 仅读取未读过的历史到当前终端的历史缓存
!XX 执行某条历史记录
[root@instructor_v6(nanyibo) ~]# service postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@instructor_v6(nanyibo) ~]# !ser
service postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
!!重复执行上一条历史
ctrl+R 在历史记录中搜索使用过的命令
搜索到后,回车可直接运行
ctrl+g退出当前搜索
tab退出搜索,但保留查到的结果,可修改后再运行
10. whatis 查看帮助
查找方式:基于数据库的查找命令
优点:查找速度快
缺点:不具有实时性
centos6:
数据库存放位置:/var/cache/man/whatis
更新数据库:makewhatis
centos7:
数据库存放位置:/var/cache/man/index.db
更新数据库:mandb
[root@centos7 ~]# whatis cp
cp (1) - copy files and directories
cp (1p) - copy files
11.man 帮助命令
man + 命令 可查看关于此命令的帮助
在man界面翻页的快捷方式:
f:向下翻一屏
b:向上翻一屏
d:向下翻半屏
u:向上翻半屏
j:向下翻一行
k:向上翻一行
g:跳至首页
G:跳至尾页
在man界面中搜索:
/ 关键字 自上而下 n 向下找 N向上找
? 关键字 自下而上 n 向上找 N向下找
12.文件系统结构
> /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
> /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
> /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
> /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
> /lib64:专用于x86_64系统上的辅助共享库文件存放位置
> /etc:配置文件目录
> /home/USERNAME:普通用户家目录
> /root:管理员的家目录
> /media:便携式移动设备挂载点
> /mnt:临时文件系统挂载点
> /dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
> /opt:第三方应用程序的安装位置
> /srv:系统上运行的服务用到的数据
> /tmp:临时文件存储位置
> /usr 存放软件的执行程序,库文件及文档
> /var 存放软件可变的数据
> /proc 内核与存放进程信息的虚拟文件系统 (/proc/cpuinfo)
> /sys 存放硬件信息的虚拟文件系统
13.Linux下的文件类型
-:普通文件
d: 目录文件
• b: 块设备
• c: 字符设备
• l: 符号链接文件
• p: 管道文件pipe
• s: 套接字文件socket
14.pwd:查看当前所在的绝对路径
[root@centos7 ~]# pwd
/root
-P 如果当前所在位置是软链接目录,则显示源路径
-L 显示链接路径(默认)
[root@centos7 bin]# pwd -P
/usr/bin
[root@centos7 bin]# pwd -L
/bin
绝对路径与相对路径
绝对:从根开始的路径
相对:相对于当前的路径
目录名与基名
[root@instructor_v7(nanyibo) ~]# dirname '/etc/sysconfig/network-scripts/ifcfg-eth0'
/etc/sysconfig/network-scripts (取出目录名)
[root@instructor_v7(nanyibo) ~]# basename '/etc/sysconfig/network-scripts/ifcfg-eth0'
ifcfg-eth0 (取出基名)
15.cd:改变目录
cd + 路径 按相对路径或绝对路径进入对应的目录
cd 进入家目录
[root@centos7 bin]# cd
[root@centos7 ~]#
cd ~ 进入家目录
[root@centos7 bin]# cd ~
[root@centos7 ~]#
cd - 进入上一次的工作目录,反复执行会在两个目录间来回切换
cd .. 切换至当前目录的父目录
16.ls:列出目录内容
ls + [options][fils or directories]
-a 显示所有文件,包含隐藏文件
-A 显示所有文件,包含隐藏文件,除了. and ..
-l 长列出,显示属性信息。如
[root@centos7 ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 1495 May 15 11:23 anaconda-ks.cfg
列出的文件的属性信息为如下内容:
-/d/l/s/b/c/p 表示文件的类型
rw- --- --- 表示owner,group,other的权限
. 表示该文件有selinux的context标签,可用-Z 详细查看
1 表示硬链接数
root 表示该文件的owner
root 表示该文件的group
1495 表示该文件的大小,默认bytes -h以人类可读性显示,则显示具体的单位
May 15 11:23 默认显示为mtime,可使用u或--time=atime来显示atime
可使用--time=ctime来显示ctime
anaconda-ks.cfg 文件名
-dl 详细指定目录自己的属性信息,而不是显示子文件,子目录信息
-R 递归
-1 (数字1)以一列显示
-S 按文件大小从大到小排序
-tl 默认以修改时间从新到旧排序,而如果使用--time=a[c]time,则按所指定的时间从新到旧排序
-utl 以atime从新到旧排序 也可以用--time=atime -tl
不加t只有ul存在时,表示以atime来显示详细信息
-rS 按文件大小从小到大 -rt 按时间从旧到新
-U 按文件的存放顺序显示
-X 按文件后缀排序
-i 显示文件的inode号
-Z 显示context
17.stat:显示文件或文件系统状态(metadata元数据, data元数据)
[root@centos7 app]# stat file
File: ‘file’
Size: 20 Blocks: 8 IO Block: 4096 regular file
Device: 805h/2053d Inode: 71 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2018-05-29 09:57:58.980666458 +0800
Modify: 2018-05-29 09:57:58.982666458 +0800
Change: 2018-05-29 09:57:58.982666458 +0800
Birth: -
18.时间戳
access time(atime): 访问时间,当文件被读取时才更新
modify time(mtime): 数据修改时间,当文件的数据被修改时才更新
change time(ctime): 元数据修改时间,当文件的元数据(权限,大小,owner,group,mtime等)更新时则更新
查看时间:stat + 文件名:显示文件的三个时间
ls + 文件名 ls -l 默认查看mtime
ls --time=atime -l 查看atime
ls --time=ctime -l 查看ctime
19. touch 创建新文件
touch + [OPTION] + FILE
若文件不存在,则创建一个空文件
若文件存在,则更新三个时间戳
-a 更新atime和ctime
-m 更新mtime和ctime
-c 若文件存在,则更新三个时间戳,若不在,不会创建新文件,无作为。
20.文件通配符
*:匹配零或多个任意字符
?:匹配任意一个单一字符
0-9:表示任何数字
a-Z:表示所有字母,包括大小写
[linux]:表示包含l或i或n或u或x
[^linux]:表示不包含l和i和n和u和x
[:digit:]:表示任意数字
[:lower:]:表示小写字母
[:upper:]:表示大写字母
[:alpha:]:表示大小写字母
[:alnum:]:表示任意字母或数字
[:blank:]:表示空格(水平制表符)及TAB
[:space:]:表示空格(水平制表符)、回车(垂直制表符)及TAB
[:punct:]:表示符号
[:print:]:表示可打印字符
目前使用的编码:UTF-8 (ASCII的扩展)
21.cp:复制文件
cp + [OPTION] + 源文件/目录 + 目标文件/目录
当源是一个文件时; 当目标文件不存时,则新建文件,并填充内容
当目标文件存在,且为一个文件时,则覆盖该文件
且为一个目录时,则将该文件放置入该目录
当源是多个文件时; 当目标文件不存时,报错
当目标文件存在,且为一个文件时,报错
且为一个目录时,则将所有源目文件放置入该目录
当源是一个目录时, 要配合-r;
当目标不存在时,则创建指定名称的目录,并将源目录当中的文件复制到新目录当中
当目标文件存在,且为一个文件时,报错
且为一个目录时,则两个目录内容合并,如有同名文件,则源目录下的文件覆盖目标目录的文件。
-i 覆盖时交互式提示
-r 递归,可以复制目录
-d 默认不加-d时,cp复制软链接会将源复制过去,加上-d保留链接属性,把软链接复制过去
--preserv=
mode 权限不变
owner[ship] 权限及owner,group 不变
time 三个时间戳不变
xattr acl权限不变
links 链接不变
context 文件的selinux上下文关系不变
all
-p 等于 --preserv=mode,owner,time
-a 等于 -rdp
-v 显示复制过程
-f 强制覆盖: 当普通用户对目标文件不可更改时,但对该目标文件所在的目录有创建及删除文件的权限,则使用-f可以强制覆盖,实际上是先删除文件,再创建
-u 只覆盖源比目标文件新的文件
--backup-numbered 覆盖前,先将旧文件改名为 文件名.~数字~
22.mv : 移动和重命名文件
mv + [OPTION] + 源文件/目录 + 目标文件/目录
源为文件,目标为目录时,将文件移到目录内,若目标目录不存在时则新建目录
源和目标同时为文件或目录时,若目标存在则覆盖,若不存在则新建目标(相当于修改源文件的名字)
常用选项:
-i: 交互式
-f: 强制 直接覆盖,不交互式,抵消i的作用
若要批量修改文件名可使用rename命令
rename +a +b +c 把名称a改成名称b,c为需要修改的文件列表,如果一个文件就直接指定文件名
[root@centos7 b]# ls
1.doc 3.doc 5.doc 7.doc a.xls c.xls e.xls g.xls
2.doc 4.doc 6.doc 8.doc b.xls d.xls f.xls h.xls
[root@centos7 b]# rename doc txt *.doc
[root@centos7 b]# ls
1.txt 3.txt 5.txt 7.txt a.xls c.xls e.xls g.xls
2.txt 4.txt 6.txt 8.txt b.xls d.xls f.xls h.xls
23.rm : 删除
-i交互式提示(rm默认不提示,因别名中有cp=cp -i,所有提示要删除)
(在rm命令前加上路径,可直接执行,跳过别名,如:/bin/rm 命令。或在命令前加反斜杠也可,如:\rm)
-f 直接删除,不提示(与i相反)
-r 递归删除(目录与内容,直接rm只能删除文件,不能删除目录,与rf组合后可删除直接删除全部
rm dir2/* -rf 删除dir2目录下的全部文件
rm rf * 删除本目录下的全部内容
rm -rf / --no-preserve-root
rm 目录和文件的连接数递减删除,当链接数由1删到0时,对应的inode在位图中由占用变为空闲。
此时实际数据不会被马上删除,但当另一个文件使用此数据块时会被覆盖
bitmap 位图:inode bitmap block bitmap
24.tree : 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目(可与d组合使用)
[root@centos7 app]# tree -L 1
.
├── test
└── test2
-P pattern: 只显示由指定pattern匹配到的路径
tree 安装:
[root@centos7 test2]# mount /dev/cdrom /media/
[root@centos7 test2]# rpm -ivh /media/Packages/tree-1.6.0- 10.el7.x86_64.rpm
25.mkdir : 删除目录
-p 可以同时创建多级目录
-v 在创建目录时显示详细信息
-m xxx 创建同时指定权限
手工创建家目录
mkdir /home/magetest
cp -r /etc/skel/.[^.]* /home/magetest
chown -R magetest.magetest /home/magetest
chmod -R 700 /home/matgtest
26.硬链接与软链接
创建硬链接
ln + 源路径 + 目的路径 (注意:源与目的要在同一文件系统下)
创建硬链接会增加额外的记录项以引用文件 ,创建时链接数递增
每个目录引用相同的inode号
删除硬连接 rm
文件要存在,至少有一个链接数
当删除硬链接,链接数会递减删除,从而释放的inode号。
释放的inode号可以被重用;数据块也会被放在空闲列表中
当链接数为零时,该文件被删除
实际是删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
创建软链接:一个符号链接指向另一个文件
ln -s + 源路径 + 目的路径
软链接可以对目录进行也 可以跨分区
软链接指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的
引用计数
27.file 确定文件类型
file [options] <filename>
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
[root@centos7 app]# file testfile
testfile: ASCII text
常用快捷键及命令
清屏命令:clear 或 ctrl + l
ctrl+a 光标移至行首(命令输入行)
ctrl+e 光标移至行尾(命令输入行)
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行 (注意:Alt组合快捷键经常和其它软件冲突)
stty -echoctl 可取消ctri+c的显示 ^C
stty echoctl 可恢复ctri+c的显示 ^C