大学毕业以后偶然之间我接触到了linux,通过一段时间的自习对linux有了初步的了解以后便对linux产生了兴趣。与此同时也萌生了系统学习linux的想法。后来通过朋友的介绍我来到了马哥教育。
今天距离我来到马哥教育开课已经过去了一周时间,来到马哥教育以后我最大的感想就是意外。首先就是这里的学习氛围。感觉来到这儿的同学都太拼了,我过来以后基本上每天睡觉时间没有超过七个小时的,每天除了一些基本的日常其他时间都在班里对着屏幕。可是即便这样还是有大把同学平时走的比我晚,来的比我早,佩服这些同学的同时同时也警示了我,本来基础就相比别人比较差再不努力好好学肯定是不能学好的啊。其次,令我意外的是我在这为期四个半月学习当中所需要掌握的知识量。开课一周以后我们正式上了三天的课,听老师介绍过课程以后才发现课程好多啊,并且老师每节课讲的内容也非常大量。突然感觉有点压力了,害怕自己基础差一时间接受不了这么多知识。
虽然有压力但是我还是有信心学好的,有压力属于正常现象啊。第一周课程只是学习了一些关于linux的基础知识,内容不多加上之前没有写过博客所以先写这样一片练练手,同时再附上我这周课堂上使用MARKDOWN所记下的笔记啦。因为第一次接触博客而且之前使用MARKDOW也不够熟练所以这篇博客的质量不好。但是我会尽快学习。
一、计算机基础知识概览
冯诺依曼体系:
冯诺依曼体系结构:1946年数学家冯诺依曼提出运算器、控制器、存储器、输入设备、输出设备
机架式服务器 Rack 几种服务器当中最普遍的。
-
精简指令集
-
功能单一 稳定
-
复杂指令集
-
功能丰富 但是不稳定
-
主板 内存 memory
-
内存介于CPU和外部内存之间
-
内存断电之后不保
-
dd if=/dve/zero of=f1 bs=1M count=500
-
linux 通过文件的magic 来识别文件的格式。
分区方案
/boot 1G exit
/ 50G
/app 50G
/swap 虚拟内存 2G
/dve/sda4 99G
/dev/sda5 10G
二、Linux入门
用户登录:
linnux中的管理员叫root,UID是0,windows中管理员是administrater,UID是500
terminal:终端
shell :
是一个翻译器
系统默认是ls /bin/bash
/bin/bash 不是一个文件是一个系统程序
别名定义:
alias :显示系统所有定义的别名
alias cmd="cmd alias"
unalias [-a] name 取消别名
-a 取消所有别名
如果别名与原命令相同执行原命令:
“COMMAND”
'COMMAND'
/PATH/COMMAND: 外部命令
优先级:alias>内存>hash>PATH外部路径
'别名命令' 加单引号 或者加 暂时禁用别名
多条命令一起执行中间加;
定义别名的新方法:
hash -p /path/to/file name
命令格式:
多条命令一起执行中间加 ;
一个命令可以用分成多行
简单命令:
date:显示系统时间
date -u 查看零时区时间
clock查看硬件时间
hwclock,clock:显示硬件时间
-s,以硬件时间为准,校正系统时间
-w,以系统时间为准,校正硬件时间
统一参考系统时间:ntpdate 172.18.0.1
[root@CentOS6 ~]#ntpdate 172.18.0.1
17 Jul 09:35:29 ntpdate[3120]: step time server 172.18.0.1 offset 31.434409 sec
查看时区:
[root@CentOS6 ~]#ll /etc/localtime
-rw-r--r--. 6 root root 388 Dec 1 2016 /etc/localtime
调整时区:
[root@CentOS6 ~]#timedatectl set-timezone Asia/Shanghai
查看时区:
[root@CentOS6 ~]#timedatectl list-timezone Asia/Shanghai
查看日历:
[root@CentOS6 ~]#cal
July 2017
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
定时关机、重启:
[root@CentOS6 ~]#s hutdown -r +5 'systom will reboot'
Broadcast message from root@CentOS6.Ronaldo
(/dev/pts/0) at 9:49 ...
The system is going down for reboot in 5 minutes!
systom will reboot
安装系统软件:
[root@CentOS6 Packages]#rpm -ivh screen-4.0.3-19.el6.x86_64.rpm
warning: screen-4.0.3-19.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
package screen-4.0.3-19.el6.x86_64 is already installed
有时候会出现文件的依赖,就换图形界面安装。
screen:
会话命令 两个人登录同一台机器同一个用户
screen -S 会话名称 创建会话
screen -x 加入会话
ctrl+a+d 剥离会话
screen -r 恢复会话
exit 解除会话
screen -ls 查看所有会话
输入screen命令 再执行命令 不怕断网
echo:
双引号 单引号 反响单引号的区别
[root@CentOS6 ~]#echo $USER
root
[root@CentOS6 ~]#echo "echo $UID"
echo 0
[root@CentOS6 ~]#echo 'echo $UID'
echo $UID
[root@CentOS6 ~]#echo `echo $UID`
0
反向双引号的用法=$()的用法
`>">' 单引号最傻 反向双引号最聪明
反向单引号的命令调用:
[root@CentOS6 ~]#> `whoami`.log;ls
aaa.txt Downloads Music Templates
anaconda-ks.cfg f1 Pictures tr
Desktop install.log Public Videos
Documents install.log.syslog root.log windowfile.txt
批量创建文件:
[root@CentOS6 ~]#touch /app/{1..10}.log
[root@CentOS6 ~]#cd /app/
[root@CentOS6 app]#ls
10.log 2.log 4.log 6.log 8.log linkfile
1.log 3.log 5.log 7.log 9.log lost+found
命令行历史:
ctrl +r来在命令历史中搜索命令:
(reverse-i-search)`':
ctrl+g:从命令历史搜索中退出。
调用前一命令种的最后一个参数:!$
Esc,. (点击Esc松开然后点击.键)
Alt+.(按住Alt键的同时点击.间)
调用参数:
command !$:利用上一个命令的最后一个参数做cmd的参数
command!*:利用上一个命令的所有参数做cmd的参数
bash的快捷键:
Ctrl +a :光标一道命令行首
Ctrl +e:光标移到命令行尾
Alt +f :光标向右移动一个单词未
Alt +b :光标向左移动一个单词尾
三、使用帮助
获取帮助的途径:
-
whatis
-
command --help
-
man and info
-
/usr/share/doc/
-
Red Hat documentation
-
其他网站和搜索
命令帮助:
内部命令:help COMMAND
man bash
外部命令:1.COMMAND -help COMMAND -h
2.使用手册(manual) man COMMAND
3.信息页 info COMMAND
4.自身帮助文档 README INSTALL Changelog
5.程序官方文档 官方站点:Documentation
6.发行版的官方文档
7.Google
man 帮助使用思路典型例题:
在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间?
思路:
1.whatis keyword
[root@CentOS6 ~]#whatis issue
issue (5) - pre-login message and identification file
2.man 5 issue 得出issue文件路径并查看
[root@CentOS6 ~]#man 5 issue
ISSUE(5) Linux Programmer’s Manual ISSUE(5)
NAME
issue - pre-login message and identification file
DESCRIPTION
The file /etc/issue is a text file which contains a
message or system identification to be printed before
the login prompt. It may contain various @char and
char sequences, if supported by the getty-type pro-
gram employed on the system.
FILES
/etc/issue
SEE ALSO
motd(5), agetty(8), mingetty(8)
3.通过man -5 issue文档中的seealso查询issue的转义:
[root@CentOS6 ~]#man 8 mingetty
MINGETTY(8) Linux Programmer’s Manual MINGETTY(8)
NAME
mingetty - minimal getty for consoles
........
ISSUE ESCAPES
mingetty recognizes the following escapes sequences
which might be embedded in the /etc/issue file:
d insert current day (localtime),
l insert line on which mingetty is running,
m inserts machine architecture (uname -m),
inserts machine’s network node hostname (uname-n),
o inserts domain name,
inserts operating system release (uname -r),
insert current time (localtime),
4.编辑issue文档:
[root@CentOS6 ~]#vim /etc/issue
CentOS release 6.9 (Final)
Kernel
on an m
5.重启注销生效.
man 章节:
1:用户名令章节,所有用户都可以使用
2:系统调用
3:C库调用
4:设备文件以及特殊文件
5:配置文件格式以及相关参数
6:游戏
7:杂项
8:系统管理员所用的管理类的命令
9:linux内核API
man搜索:
/keyword:以keyword指定的字符串为关键字,从当前位置向文件尾部搜索;不区分大小写;
n:下一个
N:上一个
四、文件管理
基本目录
/opt: 第三方软件存放路径
/tmp:临时文件
/srv:服务器的系统服务数据
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/proc:用于输出内核御锦城相关的虚拟文件系统
/var:可变数据
/usr:第二分层
/run:内存 进程信息
/boot:引导文件存放目录,内核文件(vmlinuz)、引导减速器 (bootlader,group)都存放在此目录。
/bin:工作由用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类基本命令;不能关联至独立分区,OS启动即会用到的程序。
/lib:启动程序依赖的基本共享库文件以及内核模块文件
(lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/UsERNAME:用户家目录
/root:管理员的家目录
/media:便携式移动目录挂载点
/mnt:临时文件挂载点
文件名规则
文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色-----》目录
绿色-----》可执行文件
红色-----》压缩文件
浅蓝的---》链接文件
灰色-----》其他文件
黄色------》设备文件
出了斜杠和NUL,所有的字符都有效。但使用特殊字符的目录名和文件不推荐使用
有些字符需要用引导号来引用他们。
标准的Linux文件系统(如ext4),文件名称大小写敏感。
linux 上的应用程序的组成部分:
二进制程序:/ban, /sbin, /usr/bin, /usr/sbin,
/usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64,
/usr/local/lib, /usr/local/lib64
配置文件:/etc, /etcDIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc,
/usr/local/share/man, /usr/local/share/doc
linux下的文件类型:
-:普通文件
d:目录文件
c:字符设备
l:符号链接文件
p:管道文件pipe
s:套接字文件socket
常用命令:
ls:
列出当前目录的内容或指定目录:
Ls [optiaons][file_or_dirs]
例子
ls -a 包含隐藏文件
ls -l 显示额外的信息
la -R 目录递归通过
ls -ld 目录和符号连接信息
ls -1 文件分行显示
ls -S 按从大到小排序
ls -t 按mtime 排序
ls -u 配合-t选项,显示并按atime从新到旧排序
ls -U 按目录存放顺序显示
ls -X按文件后缀排序
pwd:
显示当前工作目录
显示当前shell CWD的绝对路径
pwd:printing working dirctory
-P:显示真实物理路径
-L:显示连接路径(默认)
rename
批量修改文件名
lsof
查看目标文件正在被谁访问
lsof /phth/to/file
删除
rm:
[root@CentOS6 app]#ll
total 8
drwxr-xr-x. 3 root root 4096 Jul 19 16:38 f1
-rw-r--r--. 1 root root 23 Jul 19 21:00 f2
[root@CentOS6 app]#rm /app/f2
rm: remove regular file `/app/f2'? y
[root@CentOS6 app]#ll
total 4
drwxr-xr-x. 3 root root 4096 Jul 19 16:38 f1
>:
**用户通过下达命令删除文件,实质上是删除了文件的元信息,在物理磁盘中文件实质上没有被立即清除,相应的空间可以被覆盖。**
立即删除大批量文件,立即清空磁盘空间
> /poth/to/file
shred:
shred -zuvn5 /path/to/file
安全删除,反复填充文件
cd
改变路径,使用绝对或者相对路径:
cd /home/wang
cd home/wang
切换至当且用户主目录:cd
切换至父目录:cd。。
切换至以前的工作目录:
相关环境变量:
PWD: 当前目录路径
OLDPWD:上一次目录路径
stat
查看文件状态。
[root@CentOS6 ~]#stat f1
File: `f1'
Size: 91 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 2098593 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-07-16 17:00:32.779001103 +0800
Modify: 2017-07-16 16:53:14.550997432 +0800
Change: 2017-07-16 17:00:25.533997712 +0800
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time:修改时间,mtime,改变文件时间
change time:改变时间,ctime,元数据发生改变
mv
移动重命名文件:
[root@CentOS6 ~]#mv f2 /app/
[root@CentOS6 ~]#cd /app/
[root@CentOS6 app]#ll
total 8
drwxr-xr-x. 3 root root 4096 Jul 19 16:38 f1
-rw-r--r--. 1 root root 23 Jul 19 21:00 f2
mkdir
创建目录:
参数:-p 若所要创建的新目录的上层目录不存在,则一并创建。
后边加路径则将目录创建至目标目录,如果命令之后不指定目录则将目录创建至当前工作目录。
例题:
1,如何创建/testdir/dir1/x, /testdir/dir1/y,
/testdir/dir1/x/a, /testdir/dir1/x/b
/testdir/dir1/y/a, /testdir/dir1/y/b
[root@CentOS6 ~]#mkdir -p /testdir/dir1/{x,y}/{a,b}
[root@CentOS6 ~]#tree /testdir/
/testdir/
└── dir1
├── x
│ ├── a
│ └── b
└── y
├── a
└── b
2,如何创建/testdir/dir2/x, /testdir/dir2/y,
/testdir/dir2/x/a , /testdir/dir2/x/b
[root@CentOS6 ~]#mkdir -p /testdir/dir2/{x/{a,b},y}
[root@CentOS6 ~]#tree /testdir/
/testdir/
└── dir2
├── x
│ ├── a
│ └── b
└── y
5 directories, 0 files
rmdir
删除空目录
-p:递归删除父空目录
rm -r :递归删除目录树
touch
touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
cp
复制:
不存在的 | 存在且为文件 | 存在且为目录 | |
---|---|---|---|
一个文件 | 新建DEST并将SRC内容填充至DEST中 | 将SRC中的内容覆盖至DEST中 | 在DEST下新与源文件同名的文件,并将SRC中内容填充在新文件中 |
多个文件 | 提示错误 | 提示错误 | 在DEST下新建于源文件同名的文件,并将原文件内容复制进新文件中 |
目录-r | 创建指定DEST同名目录,复制SRC目录中左右文件至DEST下 | 提示错误 | 在DEST下新建于源文件同名的目录,并将SRC中内容复制到新目录中 |
例题:
1.定义别名命令abketc,每天将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为backupyyyy-mm-dd,备份过程可见:
[root@CentOS6 ~]#mkdir testdir
[root@CentOS6 ~]#alias "baketc=cp -av /etc testdir/backup`date +%F`"[root@CentOS6 ~]#baketc
`/etc' -> `testdir/backup2017-07-20'
`/etc/auto.master' -> `testdir/backup2017-07-20/auto.master'
`/etc/ImageMagick' -> `testdir/backup2017-07-20/ImageMagick'
`/etc/ImageMagick/mime.xml' -> `testdir/backup2017-07-20/ImageMagick/mime.xml'
`/etc/ImageMagick/colors.xml' -> `testdir/backup2017-07-20/ImageMagick/colors.xml'
......
2.创建/testdir/rootdir目录,并复制/root下所有文件到该目录中,要求保留原有权限。
mkdir -p 创建不存在上层目录的目标
cp -a 备份该文件,保留文件所有信息
文件通配符
- *:匹配任意字符
- ?:匹配任意单个字符
- [wang] :匹配括号内任何一个字符
- [^wang] : 匹配括号内所有字符以外的字符
- [:digit:] :任意数字,等于0-9
- [:lower:] :任意小写字母
- [:upper:] :任意大写字母
- [:alpha:] :任意大小写字母
例题:
1,显示/var目录下所有以字母l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
[root@CentOS6 ~]#ll -ad /var/l*[[:digit:]]*[a-z]
-rw-r--r--. 1 root root 0 Jul 20 10:07 /var/lost1111a
-rw-r--r--. 1 root root 0 Jul 20 10:07 /var/lost1111aaa
-rw-r--r--. 1 root root 0 Jul 20 10:06 /var/lost1a
drwxr-xr-x. 2 root root 4096 Jul 20 10:12 /var/lost2dircd
2,显示/etc目录下以任意一位数字开头,且以非数字结尾的目录或文件
[root@CentOS6 ~]#ls /etc/[0-9]*[^[:digit:]]
/etc/720day
[root@CentOS6 ~]#ls /etc/[0-9]*[^0-9]
/etc/720day
3,只显示/root下的隐藏文件和目录
[root@CentOS6 ~]#ls -ad /root/.*
/root/. /root/.dbus /root/.kde
/root/.. /root/.esd_auth /root/.lesshst
/root/.abrt /root/.gconf /root/.local
/root/.bash_history /root/.gnome2 /root/.nautilus
/root/.bash_logout /root/.gnote /root/.pulse
/root/.bash_profile /root/.gnupg /root/.pulse-cookie
/root/.bashrc /root/.gtk-bookmarks /root/.ssh
/root/.cache /root/.gvfs /root/.tcshrc
/root/.config /root/.ICEauthority /root/.viminfo
/root/.cshrc /root/.imsettings.log
4,只显示/etc下的非隐藏目录
[root@CentOS6 ~]#ls -d /etc/*/
/etc/abrt/ /etc/ntp/
/etc/acpi/ /etc/obex-data-server/
/etc/akonadi/ /etc/oddjob/
/etc/alsa/ /etc/oddjobd.conf.d/
/etc/alternatives/ /etc/openldap/
/etc/audisp/ /etc/opt/
/etc/audit/ /etc/PackageKit/
...
软硬链接:
创建硬链接:
ln filename [linkname]
特性:
- 不能跨分区跨设备建立
- 不支持对目录创建
- 创建硬链接以后连接数会加一
为什么创建硬链接?
作用与windows里边的快捷方式比较相似。
对于硬链接来讲路径可以是相对路径或绝对路径。 其中相对路径可以是
相对于当前工作目录的相对路径,也可以是相对于硬链接的相对路径。
ln -s filename [linkname]
软链接本质上与源文件不是同一个文件 两个文件的节点号不同
如果删除原始文件那么软链接不能访问原因是路径被删除。
可以跨设备、跨分区建立。
可以对目录创建软链接。
软链接依赖于原始文件,如果删除原始文件那么软链接不能访问。
其中路径必须是绝对路径或者是相对于新文件名的相对目录。
命令当中最后的文件名称之后加不加/ 在软链接当中产生差异。查看软连接时如果目标文件是一个目录,那么文件名之后加/将进入该目录当中。如果不加/则仅仅查看该目标文件。
链接命令和复制命令不针对特殊文件(设备文件)。
file
file 命令查看文件类型。
linux操作系统不依靠文件后缀分辨文件。
file命令依靠文件的magic number来分辨文件。
file命令实质上已经读了文件,所以文件的Atime会发生改变。
reset 命令重置工作环境。
五、I/O重定向和管道
程序: 指令+数据
读入数据:Input
读出数据:Output
标准输出重定向用法:
COMMAND > /path/to/file.out
COMMAND > /path/to/file.out
错误输出重定向用法:
COMMAND 2> /path/to/file.out
STDOUT和STDERR可以被重定向到文件:
命令 操作符号 文件名
支持的操作符号包括:
把 STDOUT重定向到文件
2>把STDERR重定向到文件
&>把所有输出重定向到文件
>:文件内容会被覆盖
#set -C:禁止将内容覆盖到已有文件,
但是可以追加强制覆盖 :>|
# set +C允许覆盖
>>:原有内容上追加覆盖
2>:覆盖重定向错误输出数据流;
2>>:追加重定向错误数据流;
标准输出和错误输出各自定向至不同位置:
COMMAND > /path/to/file.out 2> /path/to/error.out
合并标准和错误输出各自为同一个数据流进行重新定向:
COMMAND > /path/to/file. 2>&1 (顺序很正要)
(): 合并多个程序的STDOUT
(cal 2007 ; cal 2008) > all.txt (">"的优先级大于“;”)
标准输入重定向用法
COMMAND < /path/to/file
管道的用法:
COMMAND1 | COMMAND2 将第一个命令的正确结果作为第二个命令的标准输入
cmd1 |& cmd2 或者 cmd1 2>&1 | cmd2
linux用户管理
安全3A:linux的安全模型:
Authentication:确认当前用户身份(通过用户名配合密码)
Authozation:授予权限
Accouting|Audition:审计,记录监控
用户:
管理员:root , UID =0
普通用户 的UID=1-65535
- 系统用户:1-499,1-999(CENTOS7)
- 登录用户:500+,1000+(CENTOS7)
组:建立用户的意义在于便于分配权限。
- 管理员组:root,GID=0
- 普通组:
系统组:1-499,1-999(CENTOS7)
普通组:500+,1000+(CENTOS7)
用户和组的主要配置文件:
/etc/passwd:用户及属性信息(名称、UID、主的ID)
/etc/group:组以及属性信息
/etc/shadow:用户密码及相关属性
/etc/gshadow:组密码以及相关属性