初识Linux

说明:初学Linux,在这里总结好,顺便分享下,以便之后笔记太多又找不到了。个人感觉:还是很容易入手的,关键就是命令太多,经常用的话还好,放一段时间就生了,但平时常用Windows,感觉很心累。

一、Linux操作系统的构成

总结起来三部分:Kernel、Shell、文件系统

1. Kernel
意思就是内核,是操作系统的核心组成部分。管理硬件、设备、内存、进程、控制系统程序和硬件系统、管理交换空间,守护进程(精灵),文件系统。
总之,很重要!
2. Shell
用户和Kernel之间的接口,起到翻译作用。也就是用户输入的命令,Shell负责翻译成二进制代码给内核,让其运行。
3. 文件系统
将硬件和软件都映射成文件,统一管理。跟Windows系统不同的是Linux系统有一个根目录'/',所有的文件都在根目录下,没有C盘、D盘那些的了,
根目录下有这么几个目录是装好系统后就有的(不同的版本可能或有不同,但主要的都会有):


opt:用于存放第三方软件,不是说不可以放别的地方,习惯性的都在这个下面    
etc:系统配置    
dev:计算机设备文件(用一些计算机编程语言打开文件,就可以对外围设备进行操作)
usr:操作系统中自带的对所有用户都用的软件
kernel(boot):内核程序
var:针对管理员使用的东西
export(home):用户专有的东西

二、Linux常用命令

要知道Linux系统一般都是用做服务器的,安装的东西很少,甚至没有图形界面,而且都是远程操作,所以只能通过命令行的方式来实现想要的功能,可以说学Linux就是学它的命令。

命令的格式:Command [option(s)] [argument[s]]
command:命令关键字
options:可以有多个选项
arguments:可以有多个参数

注意:中间用空格隔开
    单行命令一般不超过256个字符
    大小写敏感
    不同的命令提示

注意:Linux系统一般都是在Windows上安装一个虚拟机,然后在虚拟机配置好Linux系统,进行操作,虚拟机的话在网上都有下载和教程,但如果你的电脑平常连打开一个word都很卡的话,建议你还是不要用了,否则安上了你会有砸电脑的冲动!当然,任性的话你可以买一台新电脑安Linux系统,那样的话绝对不卡。

1. 修改普通用户密码: passwd
a.密码随意定,但也有一些规则,这个就不说了

b.第一次设置超级用户密码: 
    $> sudo passwd root
    $> 输入当前密码
    #> 输入修改密码
    #> 再次输入修改密码

c.超级用户的名字就是root

d.普通用户切换到超级用户:
    $> su
    $> 输入超级用户的密码

e.超级用户切换到普通用户:
    #> exit

f.普通用户的标识:$    
g.超级用户的标识:# 
2. 查看用户信息:more
可以查看文件的内容,例如

查看根目录下的etc目录下的passwd文件
    $> more /etc/passwd

该命令执行后会显示多行如下格式内容
    root:x:0:0:root:/root:/bin/bash

每位的意义为
    用户名:密文的占位符:uid:gid:备注:用户的家目录:默认使用shell
3. 清屏:clear
4. 显示当前绝对路径:pwd
5. 改变路径:cd
跳到opt目录下
    $> cd /opt/

回到家目录
    $> cd .
. 是当前路径

    $> cd ..
.. 是上一层目录

在这里就经常会用到相对路径和绝对路径,光看不行,多练才能会啊。
6. 显示当前目录下文件和目录:ls
ls命令后会常跟一些参数

显示根目录下文件和目录
    $> ls /

显示家目录下文件和目录
    $> ls /home/

显示隐藏文件
    $> ls -a /

循环(子目录中的信息显示出来)显示文件
    $>  ls -R /etc 

显示详细信息
    $> ls -l /etc 

按照文件的最后一次的修改时间进行排序
    $> ls -t /etc  
7. 修改文件权限:chmod
文件的权限:r w x (读、写、执行)
权限拥有者:u g o a (用户、同组人、其他人、所有人)
    $> chmod u+rwx,g+r
8. 新建文件:touch
如果文件存在,就是修改文件的时间(修改文件的时间为系统的当前时间)
如果文件不存在,就是新建一个文件
    $> touch text.txt
9. 新建目录:mkdir
    $> mkdir test

    -p : 帮你创建路径中所有的文件夹
    创建dir1,然后在dir1下面创建dir2...
        $> mkdir  -p  dir1/dir2/dir3
10. 复制:cp
文件a     已经存在的文件b里面(文件b是空的)
文件a     存在已经存在的文件b里面(文件b里面有内容):文件a里面的内容会将文件b里面的内容覆盖
文件a     目录里面
    $> cp [选项] 文件1 文件2
11. 剪切、移动 或 重命名:mv
-i 覆盖前先进行询问(可能会不起作用,原因不明)

重命名: 文件名 文件名 
    $> mv a.txt aa.txt 

移动: 文件名 目录 
    $> mv c.txt dir4
12. 删除文件、目录:rm
直接移出
    $> rm filename

一次性直接移出两个
    $> rm  file1 file2

移出时提示(同样可能不起作用)
    $> rm -i filename

移出空目录(注意目录必须为空)
    $> rm dir
    $> rm dir1 dir2

移出目录(目录可以不为空)
    $> rm -r dir
13. 查看命令手册:man
例如,查看ls命令手册
    $> man ls

执行过后就会显示所有关于ls选项和参数的项目,并有详细的解释,不过都是英文 >_>

一些查看手册的操作:

    空格:翻一页
    回车:一行
    q:退出
    b:回退
    f:前进
14. 元字符:键盘可以输入的对shell具有特殊含义的字符
*  : 个数不定,字符不定
?  : 代表任意一个字符(有且仅有一个)个数确定一个,字符不定
[] : 个数确定一个,内容指定一个范围
;  : 在一个命令行输入多个命令
<  : 输入重定向
>  : 输出重定向,覆盖原本文件中的内容
>> : 输出重定向,在原有文件中追加内容
|  : 管道,将一个命令的输出作为另一个命令的输入
cat : 显示一个文件的内容到屏幕上,显示时不能分屏
more: 每次显示一屏文件的内容

将cat的输入由键盘改为一个特定的文件a.txt,再输出重定向到b.txt
    $> cat < a.txt > b.txt:将cat的输出重定向到b.txt

将管道前面的执行结果交给后面的命令
    $> cat /ect/passwd | awk -F: '{print $1 "\t" $6}' sort > ~/userinfo
    上面这条命令的意思就是:先获取到 /etc/passwd 文件中的内容,交给 | 后的命令操作,awk代表编程语言, -F代表分割字符串, 按 : 分割(因为-F后是: ),
    分割后输出第一到第六个元素,中间以制表符"\t"分隔,sort是按字母出现的顺序排序,因为passwd文件中有多行都是以"root:x:0:0:root:/root:/bin/bash"
    的格式出现(见第2项),所以该行的执行结果为"root x 0 0 root /root",以此类推,直至所有内容全部处理完,
    最后将结果输出重定向'>'到'~/userinfo'文件里。(~指家目录,home)

ps:请原谅我一下子出这么复杂的命令......
15. 查看用户信息:id
$> id root
$> id -a root
16. 显示当前已登录本系统的所有用户信息
who 用来查询目前有那些人在线上。
w   用来查询目前有那些人在线上,同时显示出那些人目前的工作。

显示真实用户id
    $> who am i

仅显示当前登录的用户名
17. vi 编辑器
打开或创建一个文件(不存在则自动创建)
    $> vi filename
执行之后就进入了vi界面,就像是在Windows上打开了一个记事本,只不过操作上只能通过键盘进行,鼠标基本没什么用,
用的多的也就是右键-->粘贴(ctrl+v 不管用),另外是黑底彩字,没试过能否设置,有会的欢迎留言!

vi编辑器有三种模式
    底层命令模式
    命令行模式:执行命令
    编辑模式
默认进入的是命令行模式

vi基本上都是通过键盘来操作,所以也有很多命令来控制光标的位置,以便输入,不过在我看来基本上没啥用,因为大多数人还是宁愿一直按的上下左右或
退格键移动也不愿记那些没用的命令,所以这些就不列了。以下是一些必备的操作命令。

命令行模式 ---> 编辑模式
    i:在光标当前位置插入
    a:在光标所在位置后插入
    o:在光标所在行下插入一空行
    (大写的I、A、O有彩蛋)

编辑模式 ---> 命令行模式
    左上角 esc 退出

命令行模式 ---> 底层命令模式
    :  /  ?  基本上多用 :
    -------------------
    :set nu 显示行代码 (:set nonu)
    :w  保存
    :w newfile  存成新文件
    :wq 保存并退出
    :q! 强制退出,不保存

底层命令模式 ---> 命令行模式
    enter 回车键切换

在这里说一下经验,编辑完后要退出的话,一定要记得esc切换。

最后想了想还是把那些没多大用的命令也放出来吧:
    x   删除一个字符
    dw  删除当前词(没办法识别所有的英文单词,是连续多个字母,当碰到标点符号时,为一个词)
    3dw 删除三个词
    dd  删除当前行(从光标所在行开始)
    5dd 删除五行(从光标所在行开始)
    :5,10d  (底行模式:5到10行删除)

    r   替换一个字符
    cw  替换一个单词
    cc  替换一行
    C   替换从光标至行尾

    yw      拷贝词(光标放在一个单词的开始位置)(p:在光标的下个位置黏贴;P:在光标的上个位置)
    yy      拷贝行(或Y)
    p       当前行下粘贴
    :1,2co3 拷贝行1,行2在行3之后
    :4,5m6  移动行4,行5在行6之后

差不多这些就是vi的内容,我用来就是写java代码的,说实话初学java的时候纯手写会更有效果,对基础有好处,
所以建议初学者还是最好都手打一遍,别着急的用那些编程软件,你迟早都会用的。
18. 搜寻文件或目录:find
语法:find 目录列表 表达式
目的:搜索目录列表中的目录, 找出满足表达式所描述标准的文件。

-name  : 按照指定的名字进行查询
-mtime : 多长时间没有修改过的文件
-print : 打印
-user id/name : 哪个用户的文件
-prem  : 权限
-type  : 文件类型
-atime : 访问文件时间
-exec  : 执行exec后面的命令

在根目录中搜索文件perl, 并显示此文件所在目录的路径名
    $> find / -name perl

显示当前目录下名称以txt结尾的文件路径名
    $> find . -name \*.txt -print (斜杠为转义符)

显示当前目录下名称为*.txt的文件路径名
    $> find . -name "\*.txt" -print

在当前目录下寻找修改时间距当前时间十天以上的文件或目录
    $> find . -mtime +10 -print (+表示大于10天,-表示小于10天)

显示/etc目录下root创建的, 大小在400以上个块的文件
    $> find /etc -user root -size +400 -type f -print

找出home路径下权限为777的文件路径名作为文件holes的内容
    $> find ~ -perm 777 > ~holes
前面好像忘了说了,权限也可以用数字来表示,每种权限r、w、x都可以用二进制1|0[有|无]表示,连起来就是三位二进制,再转换成十进制数就是当前角色下的权限,
u、g、o三种角色总共就是9位二进制数,3位十进制数,例如一个文件的权限为751,那就代表u具有的rwx为111,g具有101,o具有001,
再通俗点就是u具有读写执行权限,g具有读和执行权限,o只有执行权限。

找出/export/home路径下内容为文件, 访问时间在一年以上的文件删除
    $> find /export/home -atime +365 -type f -exec rm {} \;
'{} \;' 为固定格式,相当于占位符

将/export/home/html目录下所有后缀为html的文件中“/Copyright 2004”内容替换为” /Copyright 2005”
    $> find /export/home/html -name "*.html" -print | xargs perl -p -i.bak -e "s/Copyright 2004/Copyright 2005/g;"
xargs  : 将前面结果作为后面命令(perl)的参数
perl   : 对文件内容进行处理
-p     : 按模式处理
-i.bak : 对文件进行处理之前,先备份
-e     : excut 执行
字符串中的意思就是找到指定字符串并替换
19. 从管道或文件中搜寻所满足条件的行:grep
-i:不区分大小写
-v:查找不匹配的行

打印/etc/passwd中用户名为root的用户
    $> find /etc -name passwd -type f -print -exec cat {} \; | awk -F: '{print $1}' | grep root
这个是结合了上面的内容,其实新的就是最后面管道的东西,应该容易理解
20. 统计:wc
wc[options] filename(s)
-l 行数
-w 字数
-c 字符数
21. 查看运行的进程:ps
ps -e :查看正在运行的进程(运行过程中、就绪状态下的)
ps -f :详细信息

格式:
wood   2709  2571  0 05:07  pts/2  00:00:00  cat
用户    PID   PPID  启动时间  tt     运行时间  哪个程序文件
22. 搜索路径:which/whereis
搜索vi所在的路径(在path下搜索,搜索到就停止)
    $> which vi

搜索vi所在的路径(在path下搜索,搜索到继续搜索,直到找到所有的vi)
    $> whereis vi
23. 历史记录:history
设置最多允许保存前三十个已执行命令的记录
    $> set HISTORY=30  

显示历史记录信息
    $> history

显示第五条历史记录信息
    $> history 5

重复执行第n条历史命令
    $> !n

重复执行上一条历史命令
    $> !!



以上差不多就是本人在学Linux中遇到的知识点,可能会有疏漏,但主要的内容应该都在,这样总结起来也是为了方便日后的复习。顺便说明下,本文仅供复习,总结使用,详细度不高,如果真想要学习Linux的小伙伴还是要全面的学习。另外,文章中有错误的地方还请大佬们指出,纯手打,要多点赞哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值