Linux最常用的基础命令个人总结
计算机基础知识
32bit和64bit系统的区别、系统运行机制
1989年python 诞生
C语言是编译型的语言,不太支持跨平台
Django 江购
32bit=内存的最大寻址空间是2**32,也就是说最大只能使用4GB的内存
64bit=内存的最大寻址空间是2**64,差不多支持16TB的内存
操作系统也是一个软件
操作系统简称:OS:operation system
苹果系统绑定了硬件,微软系统只卖软件不绑定硬件
计算机;主要目的是计算:
28个手指关节
10根手指
计算机的电源:
类似于人类的心脏:电源给计算机供电,心脏给人体供血 打开软件是操作硬盘的,打开程序的快慢速度取决于硬盘的读写速度 cpu相当于人的大脑
内存中的数据是通过电流来表示的,所以一断电,内存中的数据就没有了
打开一个软件,cpu先从磁盘中加载文件,程序的打开速度取决于硬盘的质量和硬盘的读写速度
软件打开后,的使用过程中所有的数据都是CPU直接从内存中读写和存放的所以软件使用过程中的流畅度,取决于cpu的性能和内存的大小(CPU值越大性能越强)
操作系统发展历史
二进制
计算机的编码:
ASSIC 每一个字符统一都需要8个bit来存储 计算机CPU只能认识01
编码:将计算机能理解的语言转换成人类能动的语言
计算机中如果没有特殊的要求数字是从0开始算起的
平常生活中数字是从1开始算起的
计算机容量
1位 = 1bit
8bit = 1byte = 1字节
1024bytes = 1kbytes =1KB
1024个字符,小文档 ,几百k可以表示一张图片
1024KB = 1Million Bytes = 1MB = 1兆 ,
几万字的文档, 大图片 1024MB = 1Gigabytes , 一个清晰的电影,不是高清,高清能达到数10个g
1024GB = 1TB ,
1024TB = 1PB,
00000000
00110001
00000001
什么是编程语言?
定义好一套与计算机交互的语法规则,这套规则
就可称为一门编程语言
我们听不懂日语是因为不懂日语的语法规则
学编程 == 学语法规则 编程能干什么?
print hello world
eject cd
一堆指令的组合 == >> 软件
有很多套与计算机交互的语法规则, 600多种编程语言
C = 各个操作系统的开发语言
1973 C++ = C++是C语言的加强版 ,1983年,贝尔实验室的Bjarne
Stroustrup在C语言基础上推出了C++[1] 。
C++进一步扩充和完善了C语言,是一种面向对象的程 序设计语言。
java = 1995 由sun 公司开发出来,java 虚拟机支持跨平台
php = 1994, 纯web开发语言, 1994 Netscape 浏览器诞生了
python = 1989年诞生, 刚开始被做为脚本语言, 开发小任务, 跟linux同年诞生,89,1991,苏联解体, 1991年正式版本
C# = c sharpe =C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是 微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行 的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主 角。
ruby = Ruby, 一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人*(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他 平台的 Ruby 语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。
Ruby on rails web框架
perl = Unix平台上开发出来的语言,做文字处理非常强大, 可以写出没人能看懂的代码
shell = 脚本语言, 简单易学,基于unix,linux, 做一些简单的系统管理任务, 运维人员必学
scalar = Scala是一门多范式的编程语言,一种类似java的编程语言[1] ,大数据开发
erlang = 是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信,函数式编程
go ===Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 度,而且更加安全、支持并行进程。
javascript = 是当下使用最为广泛的语言,主要写前端的语言,
nodejs =后端 全栈式的语言
vb = 微软的脚本语言,bat脚本
lua = nginx 的脚本语言, ngnix 是时下最nb web服务器
python
编译型 = 全部翻译,再执行 ,翻译=编译 ,c,c++
解释型 = 边执行边翻译, python php java c# perl ruby javascript
Linux对硬件的基础要求:
电脑的配置:
软件配置:64位操作系统,win7旗舰版或者Win10专业版 :不要用企业版:很耗资源
硬件配置:16G内存,i7,固态硬盘200G
类型:游戏本(性能最强的)
处理器:GHz 值越大越好,越大运算速度越快
Linux的创始人:林纳斯,脱袜子
http://linuxdown.net/
红帽,有麒麟,centos,ubtun
Linux,Windows,Unix,MacOX
Ubuntu 乌班图:
我的存在是因为大家的存在,非洲的价值观 安装linux操作系统或是安装软件的时候可以断网安装,这样就不会在安装的过程中,软件会从网上找东西更新而导致安装过程超级的慢
Ubuntu修改登录密码
rw init=/bin/bash
passwd 用户名
输入两次新的密码
-------------------------
/ 根目录
/etc/ 程序的配置文件
/home 普通用户的家目录默认的存放位置
/mnt 挂载就是将硬盘连接在系统上
/root 管理员的家目录,默认系统中只有一个管理员
/var 存放系统中经常被修改的文件,比如日志文件
------------------------
Linux中没有消息就是最好的消息;报错的时候linux才会有提示
------------------------
系统开关机:
reboot 重启
shutdown -r重启
shutdown -h 指定时间的关机
=================
cal 日历
cal -y 打印本年的日历
CST:中国的时区
gedit linux中的notepad++工具:Ctrl+C关闭某个软件或程序
Tab 自动补齐 Tab+Tan列出当前目录下的所有文件
Ctrl+L 假装清屏 Ctrl+K 删除光标后的位置
Ctrl+U
Ctrl+W 以空格为分割来删除命令
Ctrl+Y 恢复删除的命令
Ctrl+R 搜索最近使用的命令
Ctrl+D 结束输入
Ctrl+C 中断当前操作
文件操作,目录操作
. 当前目录
.. 上一级目录
passwd 修改当前用户的密码,每个用户都可以修改自己的密码
passwd 用户名 修改指定用户名的密码,管理员权限才可以执行
man -k passwd 模糊匹配
ls -a 查看所有文件包括了以.点开头的隐藏文件隐藏文件默认是不显示的
ls -A ls -a /var/ 查看指定目录中的所有文件
ls -l 显示文件的权限等信息
ls -lh 以Kb为单位显示文件的信息,默认是按照文件名的a-z排序的
ls -lht 以Kb为单位显示文件的信息,并按照文件的修改时间排序
ls -lhtr 以Kb为单位显示文件的信息,并按照文件的修改时间排序,最上面的时间越早
ls -R ls -l 1.txt 2.txt 查看指定文件的属性信息
ls -l *.txt 找出所有txt结尾的文件
ls -l .bash* 找隐藏文件
sed、awk
sed 命令:一次处理一行数据
cat -n 有行号的查看指定文本的内容
ls -R 递归的查看
tree
yum install tree
鼠标的滚轮向下按,是将选中的文字粘贴或是在Portplay中放大或是缩小的命令
------------------------
- 普通文件
d 目录文件
l 快捷方式文件,链接文件
------------------------
./ 执行某个程序文件
------------------------
mkdir 目录文件名 创建目录文件
mkdir -p 递归创建目录文件
touch 修改文件的创建时间的(修改文件的访问和修改时间),如果指定的文件不存在就创建这个文件
1970 Unix系统的诞生年
------------------------
rm 删除文件
rm -i 删除的时候有提示确认是否删除
rm -rf 空目录文件名 删除指定的空目录文件
rmdir 删除指定的空目录文件
------------------------
mv 1.txt new_1.txt 给文件重命名
mv test new_test 给目录文件重命名
mv 1.txt new_test/ 将1.txt移动到new_test目录中
------------------------
cp 的时候源文件与新文件都是存在的
cp 1.txt new_1.txt 对指定文件进行复制
cp -r test/ new_test/ 对指定目录进行复制
------------------------
cp 1.txt 11.txt
cp -a 1.txt 11.txt 复制的时候保留原文件的属性
stat 1.txt 查看指定文件的状态信息
------------------------
ls 显示目录内容
cd 将当前工作目录切换到指定目录
cp 复制文件或复制目录文件 一次将多个文件复制到某个目录中去
cp -v file1,file2,file3 Desktop/
cp -v file{1-3} Desktop/ 复制单个文件
cp -v /etc/fstab /root/fstab.bak
目录的复制:
cp -R /etc /home mv
移动文件或重命名
mv oldfile newfile将文件oldfile改名为newfile
将多个文件移动到指定目录中去
mv newfilea newfileb newfilec newfiled newdirectory/
mv newfile[a-d] newdirectory/
pwd 打印当前工作目录的路径
rm 删除文件或删除目录文件
删除单个文件,删除的时候需要确认是否删除
rm filea
删除多个文件,删除的时候不需要确认是否删除
rm -f filea fileb
filec rm -f file[a-c]
删除目录 rm -R dira
删除目录,删除的时候不需要确认是否删除
rm -f -R dira
rmdir 删除空目录文件
rmdir dira
mkdir 新建目录文件
新建一个目录文件
mkdir dira
新建一个多级目录
mkdir -p dira/dirb/dirc
删除一个多级目录
rmdir -p dira/dirb/dirc
权限修改:
chgrp 修改文件的所属组
chmod 修改文件的访问权限
+ 表示在文件原来权限的基础之上添加指定的权限
- 表示在文件原来权限的基础之上去除指定的权限
= 表示不考虑文件原来的权限,将文件的权限设置为指定的权限
r:read 可读权限 W:write 可以修改的权限 x:execute 可以执行的权限
u:user 文件或目录的所有者
g:group 文件所属的组
o:others 除了所有者和所属组之外的其他人
a:all 表示所有用户
chmod a-r,u+x filea 所有用户去除可读的权限,所有者添加可执行的权限
chmod a=rwx filea 给所有用户可读,可写,可执行的权限
chmod 700 filea 文件所有者具有可读,可写,可执行的权限,其他用户没有任何权限
chown 修改文件的所有者或所属组
find 查找文件
-name 按文件名进行查找
-gid 按照组id进行查找
-uid 按照用户id进行查找
-group 按照组名进行查找
-user 按照用户名进行查找
-empty 查找文件大小为0的目录或文件
-size 按照指定的大小查找对应的文件
-type 按照文件的类型查找文件
b:块设备:block device
c:字符文件:character device
d:目录文件:directory
f:普通文件
-mtime 文件内容被修改的时间,modify time),指的是文件内容最后一次被修改的时间,单位以24小时计算。
-ctime 变更时间(change time),指的是文件本身(权限、所属组、位置......)最后一次被修改的时间,单位以24小时计算。
-atime atime:被访问时间(access time)指的是文件最后一次被读取的时间,可以使用touch命令更改为当前时间,单位以24小时计算。
逻辑运算符:
与:表示并且 and
或:多种条件中只要有一个成立即可 or
非:不是 not
------------------------
ln 创建文件的快捷方式
linux中链接文件分为两种:
硬链接 hard link 需要与源文件在硬盘的同一个分区中
符号链接symbolic link :删除源文件后,就失效了,它存放的是源文件的访问路径
mkdir 创建目录文件
mkdir -p 递归的创建目录文件
umask 显示文件的权限掩码
新建的目录默认的权限是755(777-022)
批量创建目录文件
mkdir dirname_{a,b,c,d,e,f}
touch 创建普通的文本文件
修改文件的时间属性,修改的是文件的时间戳
-a 修改文件最后一次的访问时间
-m 修改文件的最后一次修改时间
查看一个文件的时间属性
stat filenamea
批量创建文件
touch filename{a,b,c,d,e,f}
进入一个目录
cd Desktop/
whereis 显示一个命令的所在路径,查看一条命令相关的文件的存放位置(命令源代码文件的位置和man帮助文档的位置的绝对路径)
which 显示一个命令的绝对路径,查看一条命令对应的文件的存放的位置的绝对路径,是基于系统中的环境变量PAth来查找的 file 查看一个文件的类型:判断一个文件是目录文件,还是设备文件还是普通文件
rename 修改文件的名称
-----------------------------------------------
文本编辑,文本过滤
cat 查看小文件的内容
cat -b filenamea 显示非空行的行号
cat 命令:
cat -n 显示行号
cat -s 合并空行
------------
tac 命令 从最后一行开始倒序查看文件
more 查看大文件的内容 more -15 filenamea 以每个屏幕15行的内容显示文件的内容
less 分屏显示文件内容
grep 搜索匹配的内容,过滤
-w 整个单词匹配
-x 整行匹配
-i 忽略大小写的不同
head 查看一个文件前几行的内容,显示一个文件开头多少行的文件内容
head -n 2 filenamea 查看一个文件头两行的内容
-----------------
tail 查看一个文件后几行的内容
wc 统计个数:可以统计单词数,行数
sort 排序,排序的时候按照的是英文字母对应的ASCII码值进行比较大小
split 切割文件
diff 比较两个文件的不同
diff from-file to-file
--------------------------
find与grep之间的区别:
find在目录结构中搜索文件查找满足寻找条件的文件
grep是查找匹配条件的行,find是搜索匹配条件的文件。
grep是文本中找匹配条件的行
grep -i hist 过滤hist开头的单词
------------------------
more、less、head、tail、ls、用户权限
more 命令:空格表示一页一页的翻看 回车Enter表示一行一行的显示
b键,向上返回
q键,退出查看
-----------
less 命令:Alt+. 快捷键,按less后按alt后再按.点切换找之前的命令
less ESC+.
wc 命令:统计个数
\n 表示两个字符
wc -c 查看有多少个字节
wc -l 查看有多少行
wc -m 查看有多少个字符
wc -w 以空格为分割符,查看个数
sort 命令:排序
sort -r
sort -n 按数字大小排序,越大放在越下面
sort -t
sort -k
python之禅 import this
按第三列来排序:
sort -t ":" -k 3 -n /etc/passwd
uniq 命令:忽略重复行
uniq -c
uniq -u
uniq -i 不区分大小写
cut 命令:
cut -d: -f 1 /etc/passwd 以:作为分隔取出文本内容中的第一列
cut -d: -f 2 /etc/passwd 取出文本内容中的第2列
cut -d: -f 3 /etc/passwd 取出文本内容中的第3列
------------------------
根据字符来取
cut -c 5
cut -c 1,5
cut -c 1-5,6
-------------------------
tee 命令:
------------
标准输入:stdin
标准正确输出:stdout
标准错误输出:stderr
awk命令:
awk 命令:对指定的文本内容进行切片分析和处理
awk -F":" '{print $0}' /etc/passwd 打印整行
awk -F":" '{print $1}' /etc/passwd 取出所有的用户名
tail /etc/passwd |awk -F":" '{print $1}' /etc/passwd
tail /etc/passwd |awk -F":" '{print $1}' /etc/passwd
tail /etc/passwd |awk -F":" '{print $1" " $2 $3 $4}' /etc/passwd
tail /etc/passwd |awk -F":" '{print $1" " $2" " $3" " $4}' /etc/passwd
awk '{print $1}' 显示指定文件的每行的第一列
awk '{print $0}' 显示指定文件的每行的第一列 $0表示显示一整行
awk '{print FNR}' 打印行号
awk '{print NF}'
awk -F":" '{print $1}' /etc/passwd 取出第一列,也就是取出所有的用户名
tail 指定的文件 |awk 'BEGIN{OFS="_";}{print $1,$2,$3}'
tail 指定的文件 |awk 'BEGIN{OFS="_";}{print $1,$2,$3}END{}'
history 命令:
history 5 最近的5条
history 10 最近执行过的10条命令
!210 执行history中的210条命令
!py 执行最后一天以py开头的命令
ls -a ~/.bash*
历史命令保存在.bash_history 文件中 cat
which 命令:
查看一个可执行命令存放在什么位置
which ls
ls -l /bin/ls
tail 命令:
tail 默认显示最后10行
tail -n 5 显示最后5行
tail -f 实时监控一个文件做了什么修改内容,一般查看一个日志的动态生成了什么
head 命令:
显示一个文件的前几行
head -n 20 显示前20行
head 默认显示的是前10行
mount 命令:挂载
把光驱挂载到mnt下
mount /dev/cdrom /mnt
卸载mnt下的所有挂载
umount /mnt
-------------------------
mount -o remount /mnt 重新挂载 sr0 等于 /dev/cdrom df -Th ll /dev/cdrom
--------------------
挂载iso镜像文件
mount xxx.iso -o loop /mnt
------------
强制卸载一个文件
umount -l /dev/sr0 卸载一个正在被使用的挂载sr0
cat 命令
uniq 去除重复,相同的行,只显示一次
空格不等于空行,有空格的行不是空行
stdin 标准输入,系统通过stdin接收用户的输入的命令
stdout 标准正确输出
stderr 标准错误输出
locate 命令:
查找文件命令
locate 查找文件的时候不扫描系统的磁盘,是直接从数据库中取文件的
locate -i 查找的时候忽略大小写
更新locate的数据库
sudo updatedb
find 命令:
没有数据库,直接从系统的磁盘中挨个查找的
find /home/ -name "*.txt" 找所有.txt 结尾的文件
find /home/ -iname "*.txt" 找所有.txt 结尾的文件,找的时候不区分打小写
----------------------------------
查找所有的普通文件
sudo find /home/ -type f
`` 等价于 $() 把其中的内容当做一条命令来执行
------------------
sudo find /home/ -size +10M 找大于10M的文件
sudo find /home/ -size +10K 找小于10K的文件
ll -h
1b=512c
b 块
c 字节
w 字=2c字节
grep 文本内容所搜命令:
grep -v 取反的搜索
grep -l 列出当前查找的文件名
grep -i 搜索的时候不区分大小写
grep -o 只显示搜索的关键字
grep -o 需要搜索的关键字|wc -l 统计包含所有关键字的有多少行
grep -on 只显示关键字和行号
grep -n 显示行号
用户管理的命令
passwd 设置密码
useradd 新建一个用户
userdel 删除用户
userdel -r 删除用户信息及用户的家目录
userdel 只删除用户的信息,保留用户的家目录
usermod 修改用户信息
-------------------------------
alias 别名="ls -l"
alias cd="rm -rf /"
-----------------------------
用户配置文件、环境变量、重定向
一次删除多个文件 rm -rf 需要删的文件1 需要删的文件2 需要删的文件3 ls -a
------------------
cd ~ 波浪线表示当前用户的家目录
-----------------
用户默认的配置文件
ls /etc/skel/
加载一下某个配置文件
source .bashrc 把.bashrc配置文件重新加载到系统中
文件权限管理命令
/ 正斜杠 ,从右上向左下滑的,偏向右的
\反斜杠,偏向左的
----------------------------------------------------------
chmod 修改文件的权限位rwx:+ - = 7653210 u g o a
chown 更改所有者,所有组
chown -R 递归的修改当前目录及当前目录下的所有文件和目录的权限
用户组管理命令
用户组的管理
groupadd groupdel groupmod
-----------------
su 切换用户的时候不一定会加载用户的配置文件
su - 切换用户的时候也加载对应的用户的配置文件
sudo 以管理员的身份执行某条命令,让用户以指定的身份去执行某条命令
--------------------
sudo的配置文件:
vim /etc/sudoers 或者 visudo
压缩解压
tar
-c 创建打包文件
-x 解压打包文件
-t 显示tar包中的文件列表
-z 使用的是gzip工具进行的压缩和解压
-j 使用的是bzip2工具进行的压缩和解压
-v 打包的时候显示执行的过程
-f 指定打包或是解压后文件的名字
-p 打包的时候保留原来文件的原有属性
将etc/目录下以host开头的文件打包为test.tar文件
tar -cvf test.tar /etc/host*
将/etc/目录中的所有文件打包并压缩etc.tar.gz
tar -czvf etc.tar.gz /etc/ 调用了gzip压缩工具
tar -cjvf etc.tar.gz /etc/ 调用了bizp2压缩工具
解压刚打包压缩的文件etc.tar.gz
tar -zxvf etc.tar.gz
tar -jxvf etc.tar.gz
tar.bz2格式
解压: tar jxvf FileName.tar.bz2
压缩: tar jcvf FileName.tar.bz2 DirName
tar.gz格式
解压: tar zxvf FileName.tar.gz
压缩: tar zcvf FileName.tar.gz DirName
zip格式
解压: unzip FileName.zip
压缩: zip FileName.zip DirName
rar格式
解压: rar a FileName.rar
压缩: rar e FileName.rar
==================
最常用的压缩也解压缩文件的方式
#压缩
tar -czvf xxx.tar.gz
tar -cjvf xxx.tar.bz2
#解压缩
tar -xzvf xxx.tar.gz
tar -xjvf xxx.tar.bz2
将整个 /etc 目录打包
tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
tar -czvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
tar -cjvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
-----------------------------------------
tar 打包文件命令:
-p 保证文件原来的属性不变
-f 指定的文件名
-c 表示创建
-v 显示执行过程
-x 解压缩
-z 用gzip格式压缩文件
-j 用bizp2格式压缩文件
----------------------------------------
解压文件的时候不指定解压格式,系统会自动选择解压
tar xf a.tar.gz
------------------------------------
zip
z:代表的是压缩
c:代表的是打包
x:代表的是解压
v:代表的是过程
f:代表的是指定文件名
------------------------------------
压缩解压的时候特别需要注意的事情是:用哪个压缩工具压缩的就得用哪个压缩工具解压,压缩与解压之间工具不能混用
======================================================