Linux基础
三大操作系统
- Unix(安全、稳定、高效)
代表:AIX(IBM)、Solaris(SUN)、IOS(Apple)、Mac OS X(Apple) - Windows
代表:Win95、Win98、Win2000、Win xp、win7、Win8、Win10 - Linux
安卓(Android)、基于Linux开发Ubuntu(开源、免费)、Redhat
计算机的组成
硬件
- 处理器(CPU)
- 运行内存RAM(存储数据) 容量(字节为单位) 断电会丢掉数据
- 主板(核心)总线设备
- 输入输出设备(显示屏,键盘,鼠标,触摸屏)
- 外部存储设备(硬盘,U盘,TF卡)容量大 断电不会丢掉数据
软件
操作系统(操作系统也是一种软件)
- Windows
- Linux
- Unix
- uCOSII
- ......
应用软件
- 微信
- 游戏
- office
- ......
Linux基本结构
- 应用程序
- 标准库
- Linux操作系统内核
- 硬件
Linux命令的使用
命令名 [选项] [参数] 注:[]的内容代表可选
Linux下的路径
路径:
- 用来记录一个文件或文件夹的字符串
绝对路径:
- 以
'/'
字符开头的路径为绝对路径 - 任何时候,绝对路径都是唯一的
相对路径:
- 文件/文件夹名称
-
.
当前文件夹 -
..
上一级文件夹 -
~
用户主目录
Linux常用命令
-
clear 清屏 快捷键:Ctrl+L
-
pwd 显示当前的的工作路径
-
pwd -P
如果目录是链接时,显示出实际路径,而非使用链接路径
-
-
ls 显示文件/文件夹
-
ls -l
列表显示文件夹的信息 -
ls -a
显示全部文件/文件夹(包含隐藏文件) -
ls -la
列表显示全部文件/文件夹及其信息 -
ls -A
列出所有的文件,但不包括表示当前目录.
和上级目录..
这两个文件 -
ls -c
以时间排序,但不显示时间 -
ls -clt
显示列表并且以ctime(文件状态最后改变时间)排序 -
ls -cl
显示ctime并且以文件名排序 -
ls -d
仅列出目录本身,而不是列出目录里的内容列表 -
ls /home
列出/home目录里的内容 -
ls -f
直接列出结果,而不进行排序(ls默认会以文件名排序) -
ls --color[=WHEN]
是否根据文件类型显示颜色,WHEN可以为never、always或者auto -
ls --full-time
以完整的实际模式显示(包含年月日时分) -
ls -g
列表显示结果,和-l类似,但是不显示文件所属者 -
ls -h
将文件内容大小以GB、KB等易读的方式显示 -
ls -li
结合-l
参数,列出每个文件的inode -
ls -I
列出长数据串,显示出文件的属性与权限等数据信息 -
ls -n
显示的所属用户和组不是名称而是对应的id -
ls -r
将排序结果以倒序方式显示 -
ls -S
以文件大小排序 -
ls -t
以修改时间排序
-
-
cd 切换目录
-
cd /home/myhome
进入myhome目录 -
cd
进入用户主目录 -
cd ~
进入用户主目录 -
cd /
进入到根目录 -
cd ..
返回到上级目录 -
cd -
切换到进入这个文件夹之前的文件夹
-
-
mkdir 创建一个或多个文件夹
-
mkdir d1 d2
创建d1,d2两个文件夹 -
mkdir -m=r a
创建一个名为a的只读文件 -
mkdir -m=w a
创建一个名为a的只写文件 -
mkdir -m=rw a
创建一个名为a的可读可写文件 -
mkdir -p a/bb/ccc/dddd
如果是中间的文件夹不存在,则逐级创建所有文件夹
-
-
rmdir 删除一个或多个文件夹(文件夹内必须为空)
-
rmdir a
删除名为a的目录 -
rmdir -p a/bb/ccc/dddd
如果是中间文件家为空,则逐级删除中间文件夹
-
-
tree 显示目录树
-
tree
显示当前文件夹下的目录树 -
tree a
显示a文件夹的目录树
-
-
touch 创建文件
-
touch a
创建一个名为a的文件,若a已经存在,则更新a文件的修改时间 -
touch -a a
只更改a文件的存取时间 -
touch -c a
如果a不存在,则不创建文件。如果a存在,就会更新时间 -
touch -r a
把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同 -
touch -t a
使用指定的日期时间,而非现在的时间
-
-
rm 删除文件或者文件夹
-
rm a
删除a文件,若文件a不存在,则给出提示 -
rm -f a
强制删除a文件,忽略不存在的文件,不给出任何提示 -
rm -i a
删除a文件,删除前给出提示(y代表yes,n代表no) -
rm -r a
递归删除a文件夹内的文件和文件夹 -
rm -R a
递归删除a文件夹内的文件和文件夹 -
rm -v a
详细显示删除a时进行的步骤 -
rm *.txt
删除以.txt
结尾的所有文件
-
-
help 查看此命令的帮助信息
-
ls -help
查看ls
命令对应的帮助信息
-
-
man 查看命令所对应的帮助文档
-
man ls
查看ls
命令对应的帮助文档
-
-
cat 将文件内容作为标准输出打印到终端
-
cat file
一次性显示整个file文件的内容 -
cat > file
从键盘创建一个file文件,只能创建新文件,不能编辑已有文件 -
cat file1 > file2
从file1
读内容,并把内容写入到file2
中 -
cat file1 file2 > file
将几个文件合并为一个文件,这里将fil1,file2
合并为file
-
cat -n file
由 1 开始对file文件所有输出内容的行数编号 -
cat -n file1 > file2
把file1 的文件内容加上行号后输入file2 这个文件里 -
cat -b file
和cat -n file
相似,只不过对于空白行不编号 -
cat -s file
当遇到有连续两行以上的空白行,就代换为一行的空白行
-
-
more 一页一页的形式显示文件内容,方便使用者逐页阅读
-
常用参数
-
more +n file
从第n行开始显示文件内容 -
more +5 file
从第5行开始显示文件内容 -
more -n file
定义一次显示的行数 -
more -5 file
定义一次显示5行 -
more -p file
先清除屏幕后再显示内容 -
more -c file
先显示内容再清除其他旧资料 -
more -f file
计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上) -
more -s file
当遇到有连续两行以上的空白行,就代换为一行的空白行 -
more -u file
显示下引号
-
-
常用操作命令
-
Enter
向下n
行,需要定义,默认为1
行。 -
Ctrl+F
向下滚动一屏 -
空格键
向下滚动一屏 -
Ctrl+B
返回上一屏 -
=
输出当前行的行号 -
:f
输出文件名和当前行的行号 -
V
调用vi
编辑器 -
!
命令 调用Shell
,并执行命令 -
q
退出more
-
-
常用参数
-
mv 移动文件或者将文件改名
格式:mv [选项] 源文件或目录 目标文件或目录
命令功能:
mv
命令中第二个参数类型的不同(是目标文件还是目标目录),mv
命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv
命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv
命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv
先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。-
mv -b file1 file2
如果目标文件file2
已经存在,文件被覆盖前做简单备份 -
mv -f file1 file2
如果目标文件file2
已经存在,不会询问而直接覆盖 -
mv -i file1 file2
如果目标文件file2
已经存在,会询问是否覆盖 -
mv -u file1 file2
只在源文件文(file1
)件比目标文件(file2
)新,或目标文件(file2
)不存在时才进行移动 -
mv file1 /home/file2
将文件file1
移动到home
下的file2
-
mv -t /home/file1 file2 file3 ...
指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后
-
-
find 在一个目录(及子目录)中搜索文件
-
常用格式:
find [path...] [expression]
-
path
:find
命令所查找的目录路径。例如用.
来表示当前目录,用/
来表示系统根目录 -
expression
:expression
可以分为——“-options [-print -exec -ok ...]
”-
-options
,指定find
命令的常用选项 -
-print
,find
命令将匹配的文件输出到标准输出 -
-exec
,find
命令对匹配的文件执行该参数所给出的shell
命令 -
-ok
,和-exec
的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell
命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-
-
-
常用选项
-
-name
按照文件名查找文件-
find /test -name a
在/test
目录及其子目录下面查找名字为a
的文件 -
find . -name *.c
在当前目录及其子目录中查找任何扩展名为“c
”的文件
-
-
-perm
按照文件权限来查找文件-
find . -perm 755 –print
在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其它用户可以读、执行的文件
-
-
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略-
find /apps -path "/apps/bin" -prune -o –print
在/apps目录下查找文件,但不希望在/apps/bin目录下查找 -
find /usr/test -path "/usr/sam/temp" -prune -o –print
在/usr/test目录下查找不在temp子目录之内的所有文件
-
-
-user
按照文件属主来查找文件-
find ~ -user imings –print
在$home
目录中查找文件属主为imings
的文件
-
-
-group
按照文件属主来查找文件-
find /text -group aaa –print
在/text
目录下查找属于aaa
用户组的文件
-
-
-mtime -n +n
按照文件的更改时间来查找文件,-n
表示文件更改时间距现在n
天以内,+n
表示文件更改时间距现在n
天以前-
find / -mtime -5 –print
在系统根目录下查找更改时间在5日以内的文件 -
find / -mtime +5 –print
在系统根目录下查找更改时间在5日以前的文件
-
-
-type
查找某一类型的文件-
b
- 块设备文件 -
d
- 目录 -
c
- 字符设备文件 -
p
- 管道文件 -
l
- 符号链接文件 -
f
- 普通文件 -
find /etc -type d –print
在/etc
目录下查找所有的目录 -
find . ! -type d –print
在当前目录下查找除目录以外的所有类型的文件
-
-
-size n
查找文件长度为n
块的文件,带有c
时表示文件长度以字节计-
find . -size +1000000c –print
在当前目录下查找文件长度大于1 M字节的文件 -
find /home/test -size 100c –print
在/home/test
目录下查找文件长度恰好为100字节的文件 -
find . -size +100 –print
在当前目录下查找长度超过100块的文件(一块等于512字节)
-
-
-depth
查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找-
find / -name "text.c" -depth –print
首先匹配当前目录所有的文件然后再进入子目录中查找
-
-
-
常用格式:
-
grep
grep (global search regular expression(RE) and print out the line
,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
格式:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
详情可参考 grep命令的使用 和 linux grep命令 -
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符,只有系统管理者(root)才有这样的权限
格式:chown [-cfhvR] [--help] [--version] user[:group] file...
参数:-
user
: 新的文件拥有者的使用者 ID -
group
: 新的文件拥有者的使用者组(group) -
-c
: 显示更改的部分的信息 -
-f
: 忽略错误信息 -
-h
:修复符号链接 -
-v
: 显示详细的处理信息 -
-R
: 处理指定目录以及其子目录下的所有文件 -
--help
: 显示辅助说明 -
--version
: 显示版本
-
-
压缩与解压
-
gzip
命令用来压缩文件 格式:gzip [options] [file-list]
-
gunzip
命令用来解压文件 格式:gunzip [options] [file-list]
参数说明:file-list
为要压缩或解压缩的一个或者多个文件的路径名列表。如果在file-list
中存在目录但无选项-r
,则gzip/gunzip
会报告错误消息并忽略该目录,使用-r
选项,gzip/gunzip
会递归地压缩/解压缩目录层次结构中的文件-
-c
将压缩或解压缩的结果写到标准输出,而不是写到文件 -
-d
解压缩用gzip
压缩的文件。该选项用于gzip
,与gunzip
等价,即gzip -d = gunzip
-
-f
压缩/解压缩时强制覆盖已存在的文件 -
-l
对于在file-list
中要压缩的每个文件,显示压缩和解压缩后文件的大小、压缩比和压缩前的文件名
-v
可获得其他信息 -
-n
在压缩速度和压缩量间进行权衡。n
为从1~9
的数字。第1
级为最快压缩,但压缩量最小;第9
级的压缩速度最慢,但压缩量最大。默认级别为6
,--fast
和--best
分别等价于-1
和-9
-
-q
禁止显示警告信息 -
-r
递归压缩/解压缩file-list中的文件 -
-t
验证压缩文件的完整性。如果文件完整则不显示任何信息 -
-v
显示文件名、压缩后的文件名和每个被处理文件的压缩量
-
-
-
tar 对文件或文件夹进行打包和解包的操作,以
.tar
后缀代表tar
包,用xxx.tar.gz
或.tgz
代表gzip
压缩过的tar
文件,用.tar.bz2
代表bzip2
压缩过的tar
文件。-
-c
创建包 -
-x
解包 -
-v
显示操作的文件细节 -
-z
用gzip/gunzip
对包进行压缩和解压缩 -
-f
文件名 正在操作的文件名 -
-C
路径 改变解压缩的路径(只对解包有效)
解压方法总结
-
*.tar
用tar –xvf
解压 -
*.gz
用gzip -d
或者gunzip
解压 -
*.tar.gz
和*.tgz
用tar –xzf
解压 -
*.bz2
用bzip2 -d
或者用bunzip2
解压 -
*.tar.bz2
用tar –xjf
解压 -
*.Z
用uncompress
解压 -
*.tar.Z
用tar –xZf
解压 -
*.rar
用unrar x
解压 -
*.zip
用unzip
解压
-
chmod 修改文件权限
格式: chmod 权限 文件名/文件夹名
-
u
用户 -
g
同组用户 -
o
其他用户 -
a
所有用户 -
+
添加权限 -
-
删除权限 -
r
用4
代表,读权限 -
w
用2
代表,写权限 -
x
用1
代表,执行权限
输出重定向
-
标准输出重定向
-
>
将一个命令的标准输出重定向到指定文件 -
>>
将一个命令的标准输出重定向到指定文件
-
-
标准错误输出重定向
-
2>
将一个命令的标准"错误"输出重定向到指定文件 -
2>>
将一个命令的标准"错误"输出重定向"追加"到指定文件
-
-
重定向所有输出
&>
&>>
操作带有特殊符号的路径的方法
- 用两个双引号
""
把路径括起来mkdir "a b"
rmdir "a b"