博客首发

大学毕业以后偶然之间我接触到了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:组密码以及相关属性

原文地址:https://www.cnblogs.com/qige2017/p/7212317.html