你需要知道的linux基础编程(一)
-
命令解析器 Shell ----- UNIX操作系统 Bash ----- Linux操作系统 本质:根据命令的名字,调用对应的可执行程序
-
Linux快捷键
history 查看历史命令
ctrl + p 在历史的命令记录里向上滚动
ctrl + n 在历史的命令记录里向下滚动
ctrl + b 光标向前移动
ctrl + f 光标向后移动
ctrl + a 光标直接到命令行首
ctrl + e 光标直接到命令行末
backspace/ctrl + h删除光标前面的字符
ctrl + d删除光标后面的字符
ctrl + u删除光标前面的所有字符
table键补全或者提示命令
ls 表示查看(如果后面不跟路径,就表示查看当前的目录,如果后面跟着路径表示查看该路径下的目录)
clear 清屏
pwd(print working directory)显示当前目录的绝对路径 -
Linux系统的目录结构 Linux系统下没有盘符 / 表示Linux下的根目录
-
/bin: bin是Binary的缩写,里面存放的是最经常使用的命令,每一个命令代表一个可执行程序,在terminal里面输入命令然后在在配置环境变量,命令就会找到bin目录,然后执行相对应的程序 -
/boot: 这里存放的是启动Linux时使用的一些文件,包括一些连接文件及镜像文件 -
/dev: dev是Device(设备)的缩写,该目录下存放的是Linux的外部设备,在linux中访问设别和访问文件的方式是相同的 -
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录 -
/home: 用户的主目录,在linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的 -
/lib: 这个目录存放着最基本的动态连接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库 -
/lost-found: 这个目录一般下是空的,当用户非法关机后,这里面就存放了一些文件 -
/media linux系统自动识别一些设备,例如,U盘,光驱等,当自动识别后,linux会把识别的设别挂载到这个目录下 -
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了 -
/opt 这是给主机额外安装软件所摆放的目录,比如安装一个oracle数据库的时候就可以放到这个目录下,默认是空的 -
/proc 这个目录是一个虚拟的目录,他是系统内存的映射,我们可以直接访问这个目录来获取系统信息 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏弊主机的ping命令,使别人无法ping你的机器 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all -
/root 该目录为系统管理员,也称为超级权限者的用户的主目录 -
/sbin S就是super user的意思,这里存放的使系统管理员使用的系统管理程序 -
/tmp 这个目录是用来存放一些临时的文件 -
/usr(user software resourse) 这是一个非常重要的目录,用户的很多应用程序都放在这个目下,类似于windows下的program files目录 -
用户目录
-
绝对路径 从根目录开始写/home/itcast/aa
-
相对路径 相对于当前的工作目录而言
. 代表当前目录
.. 代表当前目录的上一级
- 在临近路径的两个目录直接切换 cd - -
sjq@ubuntu sjq:当前登陆的用户 @:at 在 Ubuntu:主机名 ~用户的家目录(宿主目录) $当前用户为普通用户 #超级用户 -- root
-
文件和目录操作
文件或目录颜色一般情况
白色:普通文件
蓝色:目录
绿色:可执行文件
红色:压缩文件
青色:链接文件(相当于windows下的快捷方式)
黄色:设备文件(block块、char字符、fifo管道)
灰色:其他文件 -
查看目录 -
tree ls ls -a查看目录下的全部内容 ls -l列出来的是详细信息 ls -al列出全部内容的详细信息
在目录间切换 cd + 目录 切换回主目录三种方式:
cd /home/aa
cd ~
cd查看当前所在目录 pwd
-
创建目录 创建单一目录:mkdir + dirname 创建复合目录:mkdir + dir/dir/dir1 -p 删除目录
删除空目录
rmdir + 目录名
删除非空目录
rm + 目录名 + -r
rm + 目录名 + -ri(i代表提示)-
创建文件
touch + 文件名(文件不存在,创建文件,文件存在,更新文件时间) -
删除文件
rm + 文件名 拷贝文件或目录
拷贝文件cp + 文件名 + 目标文件
如果目标文件不存在就创建一个新的文件
如果目标文件存在就覆盖原来的文件拷贝目录
cp + 目录名 + 目标目录名 + -r
如果目标目录名不存在,则要创建目标目录名,并进行拷贝
如果目标目录名存在,则要将目录名拷贝到目标目录名下看文件中的内容
-
cat + 文件名(将文件中的内容输出到终端) -
more + 文件名(只能向后翻,不能向前翻) -
less + 文件名(ctrl + p向前翻页、ctrl +n向后翻页、q退出浏览、回车显示下一行、空格显示下一页) -
head + 文件名 -
tail + 文件名 -
文件重命名 mv + 源文件名 + 要更改的文件名
-
将文件移动到目录下 mv + 文件名 + 目录名
-
创建软链接(创建快捷方式 文件和目录) ln -s + 路径(绝对) + 快捷方式的名字
-
创建硬链接(进行文件备份) 直接链接的是硬盘的上inode结点 不能对目录创建硬链接 ln + 文件名 + 硬链接的名字 硬链接不占用空间 每次创建一个硬链接,次数加一 Linux文件系统的存储单位是块 inode -- i结点 保存了一些文件信息 通过inode找到对应的文件
-
文件或目录的属性
-
wc 获取文本文件的信息 -
od 查看二进制文件 -
-t 指定数据的显示格式 -
参数 -
c ASCII字符 -
D 有符号十进制数 -
F 浮点数 -
O 八进制数 -
U 无符号十进制数 -
X 十六进制数 -
du 查看当前目录中所有文件的大小 命令:du -h -
df 查看磁盘的使用情况 命令:df -h
w hich + 命令(查看所在的命令是在哪个目录下,只能查找外部的命令 )
-
文件权限、用户、用户组
-
查看当前登陆用户 whoami -
修改文件权限 -
文字设定法:chmod [who] [+|-|=] [mode] 文件名 who(默认是所有人):
文件所有者:u
文件所属组:g
其他人:o
所有人:a+:添加权限 -:减少权限 =:覆盖原来的权限 mode(权限):
r:读
w:写
x:执行 -
数字设定法:
-:没有权限
R:4
W:2
X:1
所有权限7
765
7 --rwx --文件所有者
6 --rw --文件所有组
5 --rx -- 其他人
减权限:chmod -001 temp(给其他人减了执行权限) -
修改文件的所有者和所属组 -
修改文件的所有者:chown 所有者的名字 文件名(如果没有权限的话,加sudo接用超级用户的权限) -
sudo chown 文件所有者:文件所属组 文件名 -
修改文件所属组:sudo chgrp 文件所属组 文件名 -
对于目录来说必须有执行权限,否则无法访问目录里面的内容 -
文件的查找和检索
-
按文件的属性查找 -
按文件名查找 -
Find + 查找目录 + -name + 文件的名字(文件名字用引号括起来) -
文件的名字可以用通配符(*匹配所有的、?匹配一个字符) -
按文件大小 -
Find + 查找目录 + -size + 文件的大小(+大于 -小于) -
Sudo find ~ -size +10M -size -100M(在家目录下查找大于10M小于100M的文件) -
按文件类型 -
Find + 文件查找目录 + -type + d/f/b/c/s/p/l -
创建管道:mkfifo 文件名 -
按文件内容查找 Grep -r + "查找的内容" + 查找的路径 -
软件的安装和卸载
-
在线安装 apt-get:
安装:sudo apt-get install tree 在线下载安装
移除:sudo apt-get remove tree
更新:sudo apt-get update --更新软件列表
清理所有软件安装包:sudo apt-get clean(实际清理的是/var/jcache/apt/archives目录下的.deb文件)aptitude:
安装:sudo aptitude install tree
重新安装:sudo aptitude reinstall tree
更新:sudo apt-get update
移除:sudo aptitude remove tree
显示状态:sudo aptitude show tree -
deb包安装:
安装:sudo dpkg -i xxx.deb
删除:sudo dpkg -r xxx -
源码安装
-
解压缩源代码包 -
进入到安装目录:cd dir -
检测文件是否缺失,创建makefile,检测编译环境 -
编译源码,生成库和可执行程序:make -
把库和可执行程序,安装到系统目录下:sudo make install -
删除和卸载软件:sudo make distclean -
上述安装步骤并不是绝对的,应该先查看附带的readme文件