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
需要手动指定
设置密码:

切换用户:


01-Linux命令基础-第01天(命令基础,软件安装与卸载、磁盘管理)的更多相关文章
- Linux下软件安装,卸载,管理
一. 软件安装包的类型 通常Linux应用软件的安装有五种: 1) tar+ gz包,如software-1.2.3-1.tar.gz. 他是使用UNIX系统的打包工具tar打包的. 2) r ...
- 【转】Ubuntu命令行下安装、卸载、管理软件包的方法
原文网址:http://oss.org.cn/html/47/n-67447.html 一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname ...
- CentOS下软件安装与卸载常用命令总结
最近在折腾CentOS 7操作系统,主要是下载安装文件以及解决各项依赖问题,现对此过程中用到的有效的CentOS命令进行汇总总结. 1. 安装与卸载软件:yum.rpm.wget命令 首先,在Cent ...
- Ubuntu14.04 下软件安装和卸载命令备记
一.Ubuntu中软件安装方法 1.APT方式 ()普通安装:apt-get install softname1 softname2 …; ()修复安装:apt-get -f install soft ...
- Ubuntu命令行下安装、卸载、管理软件包的方法
一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 -; (2)修复安装:apt-get -f install so ...
- Linux软件安装与卸载
一. 了解Linux应用软件安装包: 通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2) rp ...
- Linux学习(二十)软件安装与卸载(三)源码包安装
一.概述 源码包安装的优点在于它自由程度比较高,可以指定目录与组件.再有,你要是能改源码也可以. 二.安装方法 步骤 1.从官网或者信任站点下载源码包 [root@localhost ~]# wget ...
- Linux命令(十)打包压缩、软件安装
- 树莓派上的软件安装和卸载命令汇总 [ZT]
转自:http://www.eeboard.com/bbs/thread-40823-1-1.html基础命令 安装软件 apt-get install softname1 softname2 sof ...
随机推荐
- 《从零開始学Swift》学习笔记(Day60)——Core Foundation框架
创文章,欢迎转载.转载请注明:关东升的博客 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.尽管在Swift中调用这样的C语 ...
- 让devstack中的vm訪问外网
devstack默认会建立一个Public网络,地址为172.24.4.0/24,可是这个网络并非运营商分配给我们的网络.所以仅仅能通过nat的方式让devstack建立的虚拟机訪问外网. br-ex ...
- 小米手机 js 脚本取src为空的适配问题
今天測试提上来一个问题 我android webview 中运行了一段js脚本.去替换原来的图片.可是小米手机上竟然没起作用 花了一个中午的午休看问题 贴出来帮助下遇到相同的问题的朋友吧.我百度了半天 ...
- 零基础学python-2.17 文件、open()、file()
今天我们来说说文件,以及跟文件有关的内建函数open和file 首先我们在python的根文件夹下建一个名为"123"的txt文本文件 文件中面我们输入一些文本 watermark ...
- PCB 一键远程桌面+RDP文件生成
最近在写个内网INCAM内网授权工具中,在服务端监听客户端请求后,后台自动处理客户端请求并远程客户端 这里记录3个点. 一.运行RDP文件后,正常会有下图2个弹窗,怎么可以关闭这2个弹窗呢, 通过模拟 ...
- AMD 与 CMD 区别
作者:玉伯链接:https://www.zhihu.com/question/20351507/answer/14859415来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- codevs1688 求逆序对(权值线段树)
1688 求逆序对 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给定一个序列a1,a2,…, ...
- Python 35 线程(1)线程理论、开启线程的两种方式
一:线程理论 1 什么是线程 进程其实一个资源单位,而进程内的线程才是cpu上的执行单位 线程其实指的就是代码的执行过程2 为何要用线程 线程vs进程 1. 同一进程下的多个线程共享该进程 ...
- C#发送电子邮件代码记录
/// <summary> /// 发送电子邮件 /// </summary> /// <param name="Address">邮件地址&l ...
- BZOJ 1877 拆点费用流
思路: 呃 水题不解释 行么,, //By SiriusRen #include <queue> #include <cstdio> #include <cstring ...