01-Linux命令基础-第01天(命令基础,软件安装与卸载、磁盘管理)

01-   Linux初步

最早一直是单道程序设计模型的操作系统

69年贝尔实验室决定开发多道程序设计模型的操作系统 Multics计划 (失败了)

x86 IA(Intel Architecture) 架构 没法搭建Unix系统

但是Unix家族分支中有Solaris提供了Solaris for x86

Ubuntu:

4月通常为稳定版 10月通常为beta测试版

单数版本官方一般是短期支持 (支持一年

例:

13.10版  

13 是短期支持版 10是测试版

02-根目录下重要子目录

打开终端

bin : binary缩写

/bin  ls

绿色代表可执行文件

/boot ls

开机所需要的文件

/cdrom ..不说了

/dev  存放的是设备文件

linux: 所见皆文件

cd dev/input

sudo cat mice

鼠标设备被对应到这个文件上了

每次动鼠标的时候会往这个文件进行写入 确定从哪个像素点挪到哪个像素点

所以鼠标一动 这个就动

乱码的原因是因为里面是二进制文件

/etc ls

保存跟操作系统息息相关重要的配置文件以及用户名和密码相关的信息

03      shell解析器和命令补齐

ctrl + alt + t 直接打开终端

sudo cat shadow:

(/etc)

(最后一行保存了加密过后的用户密码)

/home 存放操作系统的用户

/lib 存放库文件

比如写c语言用到的标准C库 stdio.h(libc.so 的一部分)

libc.so.6 包括stdio.h

ctrl+ shift + + 放大终端字体

ctrl + -       缩小终端字体

/media 扩展目录

存放(第三方磁盘)u盘相关

/mnt

操作系统用于提供手动挂载的位置

比如做驱动开发 会连一个多媒体卡

卡会连操作系统中 默认会连到media下

如果手动挂载可以挂到mnt上

U盘同理

作用都是挂在一个盘

/opt /proc 和操作系统进程相关 暂时先不介绍

/root 一个Unix系统默认会有两个用户 一个是root(管理员) 另一个是你自己

/usr 目录 unix software resource (unix 软件资源管理包)

 

/var 目录 操作系统提供的用户用来存储文件的目录

         log backup 缓存 等等…

shell 是一个命令解释器 根据输入的命令执行相应的命令

unix开发以后有个叫伯恩的人开发了个命令解析器叫shell

后来到linux了 伯恩又给linux开发了个shell叫 Bourne-Again-Shell (Bash)

终端: 输入 输出设备的总称

终端: (虚拟终端) 所有输入输出设备的总称

shell: 命令解析器

bash: borne again shell 命令解析器

ctrl+ p

ctrl+ n

ctrl+ b

ctrl + f

ctrl+ a

ctrl + e

ctrl + u 全部删除

ctrl+ h 向前删除

ctrl + d 向后删除

ls -l

04-软硬链接

cat

more ( space翻一屏 回车翻一行) 不能往前滚

less ( 可以使用↑ ↓实现前后滚动)

head

tail

ln

 

软连接: (快捷方式)

touch file

ln –s file file.s 

如果这样写 那么file.s就指向了相对目录下的file

如果将file.s移动到别的文件夹 就不能访问file了

ln –s /file file.s

通过写一个相对路径的

即使将file.s移动到别的目录下 也可以访问

linux下区分文件是靠文件类型 不是靠扩展名 所以起名file.s或file.soft 都行吧

注意: 创建软连接一定要用绝对路径的方式

      创建文件相关的后缀名没有严格要求 (touch a.b.c.d)

创建了一个软连接: 注意查看两个文件的权限 不同。 但是实际读取的时候还是a.b.c.d得权限, 只是访问软连接得权限谁都有。

硬链接:

看一下硬链接:

ls file file.hard

发现除了文件名不一样 包括权限其他都完全一样

对file文件进行修改 发现两个文件能够做到同步 内部变化也是完全一样得

(修改file.hard 也是同步更新)

再新建一个文件ln file file.h

查看这三个文件 进行对比 发现其他都一样 但是硬链接记数不一样了

(权限部分后面的数字变成4了… 这里本来应该是3 自己写的时候 在别的地方多创建了一个)

思考:

硬链接技术的作用?

了解硬链接的原理:

windows下面是没有硬链接的

如果让你实现硬链接你要怎么弄 实现文件完全同步

指针?(指针是内存上的概念、)

它所采用的方式是完全一致的,只不过这个东西不叫指针,它叫inode

linux系统中所有的文件都有一个唯一标识该文件的inode号

既然硬链接的内容可以同步更新,所以它们应该有相同的inode号

stat file

stat file.hard

vi file.h 看起来是操作file.h 但是操作系统认为是操作inode为143692的文件

如果删除文件呢?

rm file 会把 file删掉 会把file.hard删除 会把file.hard删除掉?

rm file 只会把file删除掉

file.hard和file.h没有变 硬链接记数减少

硬链接记数的作用:

硬链接记数用来删除 执行一次rm会把硬链接减少 只有硬链接记数为0的时候才是把文件真正删除掉

inode是在linux系统中唯一标识一个文件的方法

05-文件目录操作其他命令

sudo apt-get install tree

tree 命令:

用树的结构展示当前目录

wc命令: (word count)

行数 字数 字节数 ( 对当前文件进行统计)

行数

字数:

小字:一个字符

大字:一个字被定义为由空白、跳格或换行字符分隔的字符串

wc命令中的字是指大字。

字节数

od命令

( acronym for "octal dump" )

用它去查看一些进制文件

gcc main.c

od –tcx a.out

将ascii字符 翻译为

od –tco a.out

-t select output format or formats

-c same as –t c select printable characters or backslash escapes

-x same as –t x2 select hexadecimal 2-byte units

作用: 嵌入式开发 反汇编..

du、df命令

统计磁盘文件使用的存储情况

du:   disk use

du –h (human readable)

df :   disk free

查看磁盘空间情况

df –h

06-文件属性修改

whoami

chmod

文字设定法

数字设定法

文字设定法

chmod u+x a.b.c.d

chmod g-w a.b.c.d

chmod o+wx a.b.c.d

(user/group/other)

//想设置成 r-xrw---x

chmod u-w,g+w,o-rw a.b.c.d

chmod u=rw,g=rw,o=rwx a.b.c.d

数字设定法:

rwx     rwx     rwx  二进制

4 2 1    4 2 1    421

chmod 775 a.b.c.d

07-修改文件所有者_所属组

chown

ll test.file

sudo chown nobody test.file

ll test.file

(nobody是操作系统自带的用户)

sudo chgrp nogroup test.file

ll test.file

(nogroup 是操作系统自带的组)

添加用户 sudo adduser zhangsan

自己添加的新用户zhangsan 无法使用sudo命令:

vi /etc/passwd:

1001 是用户的uid, 组也有一个uid是1001

添加组

sudo addgroup g5

cat /etc/group

删除以后查看test.file的所有者权限

变成1001了 zhangsan已经没了 但是刚才张三的1001依然存在

这个文件属于1001用户

sudo delgroup g5 然后看一下效果:

用户组是1002了

08-查找和检索命令

用一步来修改用户名和组

sudo chown itcast:nogroup file1

find命令:

找一下sudoers:

sudo find / -name “sudoers”

vi /etc/sudoers

*是一个通配符 找当前目录下以file开头的文件

? 是匹配一个任意字符

对查找的结果集执行-exec ls –l

; 是转义分号 表示结束标记

(在删除的时候询问 -ok)

查找套接字:

sudo find / -type ‘s’

对于普通文件 用f描述 不用 -

查找文件大小

find / -size -100k

find / -size +100M

find / -size +10k –size -20k

-size这个参数比较奇怪

M 和 G 必须是大写的

k必须是小写的

c代表字节

b代表512字节 一个扇区

 一个磁盘盘块的大小

一个扇区512byte

如果我写了一个hello world 40byte 也至少要占用一个扇区

grep:

sudo grep –r “lisi” /etc

-r 递归

(非常实用)

xargs:

 find . –type f | xargs file

和exec的区别:

exec会把find查询的结果一次性导入到{} 大括号中

如果数量太大 系统效率就非常低

xargs 分批操作的

注意 如果不加xargs 前面的find…就失效了 最后就相当于就单单执行了 ls -l

find /usr –name “tmp*” | xargs ls –l

file命令:

生成一个带空格的文件:

touch file test

find ./ -name “*file*”

可以找到

然后 find ./ -name “*file*” | xargs ls -l

就找不到了

这是xargs 设计的缺陷 xargs是用换行和空格符来区分结果集的

find ./ -name “*file*” –print0 | xargs -0 ls –l

就找到了:

-print0表示 输出的时候不再使用空格进行分隔了 位置替换成null

-0 表示输入以null分隔

09-软件安装

 

1.网络安装

sudo apt-get install tree

 

sudo apt-get update 就是把这个服务器上的列表更新到本地

如果不更新 安装的时候可能就会提示这个软件在服务器上没有

默认的当前机器上的这份列表跟服务器的对应不上

sudo apt-get update 更新源

sudo apt-get install package 安装包

sudo apt-get remove package 删除包

2.离线安装包

Ubuntu是debian系列的

所以是以.deb结尾的

redhat不是.deb

sudo dpkg –i xxx.deb

sudo dpkg –r xxx.deb

3.原码安装

不同的软件包安装方式不一样 一般查看readme

10-磁盘的挂载和卸载

mount

umount

插上U盘

cd /media

查看U盘内容

sudo umount /media/…

卸载 会提示设备忙

原因可能是你当前正在你挂载的这个目录及其子目录里

(可以在其他任意目录下卸载)

mount命令

挂载之前我要直到磁盘盘符

U盘一定是一个硬件

它对到的linux系统中/dev目录下去看

sda 第一块硬盘

sda1 第一块硬盘的第一个分区

一个硬盘最多允许4个主分区 剩下的都是扩展分区或者逻辑分区(一定是从5开始的)

电脑中本来只有sda,看一下有没有sdb

ls –l /dev/sdb*

有sdb , 所以我的u盘应该是sdb4

也可以用这个操作找到我的这个u盘是哪个

sudo fdisk –l

既然sda是我原来的硬盘 那么sdb4就是我现在的硬盘了

下面进行手动挂载:

   可以挂载到/media 下, 也可以挂载到手动挂载的位置/mnt

sudo mount /dev/sdb4 /mnt

ls发现已经可以看到了

如果看不到 指定一下编码

sudo mount /dev/sdb1 /mnt –o utf8

11-dd命令

dd类似于cp 但拷贝控制更精细

bs 一次读取的字节数 count读取的次数

dev下有一个zero文件

这个文件读出来的所有内容都是ascii的码0

还有一个文件 /dev/null

   可以向文件里写内容 写进去的所有东西都会消失掉 可以无限往里写

c开头的, 这两个都是字符设备

创建一个20M大小的文件:

(了解)

所有的存储介质如果像存储必须指定文件系统(格式化)

把文件挂载到/mnt下了 (loop加不加都无所谓)

*

 

然后查看一下mnt目录

之前讲过adduser 现在讲一下useradd:

adduser:

useradd:

useradd 要指定用户用户启动的位置-s

        指定用户所在的组 –g

        指定用户的目录名 –d

        指定用户是哪个用户 –m

需要手动指定

设置密码:

切换用户:

原文地址:https://www.cnblogs.com/eret9616/p/10774888.html