前言:Linux系统编程的基础系列文章,随着不断学习会将一些知识点进行更新,前期主要是简单了解和学习。
shell
shell:命令解释器,根据输入的命令执行相应命令。
可通过以下命令,查看当前系统支持哪些shell
cat /etc/shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
bash
bash是许多Linux平台的内定Shell。
命令和路经补齐
在bash下敲命令时,Tab键可以补全已经敲了一部分的文件名和目录名。如果是Ubuntu系统,系统默认启用了bash completion,还可以补全命令的某些参数、Makefile目标等等。
历史记录
history
随着你每输入一个字母,bash会做增量式(increasingly)查找,也可以反复按Ctrl-r或Ctrl-s向前向后查找。
功能 |
快捷键 |
助记 |
上 |
Ctrl+p |
previous |
下 |
Ctrl+n |
next |
左 |
Ctrl+b |
backward |
右 |
Ctrl+f |
forward |
Del |
Ctrl+d |
delete光标后面的 |
Home |
Ctrl+a |
the first letter |
End |
Ctrl+e |
end |
Backspace |
Backspace |
delete光标前面的 |
目录和文件
对于所有东西来说都是文件
类Unix系统目录结构
根目录 /
bin //系统可执行文件,如命令
boot //内核和启动程序,所有和启动相关的文件都保存在这里
grub //引导器相关文件
dev //设备文件
etc //系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录
home //用户的主目录,下面是自己定义的用户名的文件夹
lib //系统程序库文件,这个目录里存放着系统最基本的动态链接共享库
media //挂载媒体设备
mnt //用于让用户临时挂载别的文件系统
opt //可选的应用软件包
proc //系统内存的映射
sbin //管理员系统程序
sys //反映当前所接的设备
tmp //临时文件夹
usr //
bin //应用程序
game //游戏程序
include
lib //应用程序的库文件
lib64 //
local //包含用户程序等
sbin //管理应用程序
用户目录
/home/user
绝对路径:从/目录开始描述的路径
相对路径:从当前位置开始描述的路径
.表示当前目录
…表示上一级目录,即父目录
ls
ls -a #列出隐藏文件,文件中以"."开头的均为隐藏文件
ls -l #列出文件的详细信息
ls -R #连同子目录中的内容一起列出
ls -l
用此命令显示的信息中,会出现以下
drwxr-xr-x 2 kudio kudio 4096 Dec 27 18:42 Desktop
-rw-r--r-- 1 kudio kudio 8980 Dec 27 18:37 examples.desktop
drwxrwxr-x 3 kudio kudio 4096 Dec 28 07:00 VmareTools
开头由10个字符构成的字符串,第一个字符表示文件类型
- 普通文件
d 目录和文件
l 符号链接
b 块设备文件
c 字符设备文件
s socket文件,网络套接字
p 管道
后面九个字符表示文件的访问权限,分为3组,每组3位。
- 第一组表示文件属主的权限
- 第二组表示同组用户的权限
- 第三组表示其他用户的权限
且各权限如下所示
- r 可读权限
- w 可写权限
- x 可执行权限,对于目录表示进入权限
- s 当文件被执行时,把该文件的UID赋予执行进程的UID
- t 设置标志位
-
目录大小一般为4096的整数倍
cd
change dir 改变当前所在路径
which
查看指定命令所在路径
pwd
查看当前所在路径
mkdir
mkdir [OPTION] DIRECTORY…
创建目录DIRECTORY,可以一次创建多个
$mkdir aa bb cc
OPTION如果是-p,表示可以连同父目录一起创建
$mkdir -p aa/bb/cc
$tree
└── aa
└── bb
└── cc
rmdir
rmdir [OPTION]… DIRECTORY…
删除空目录,可以一次删除多个,OPTION如果是-p,表示可以连同父目录一起删除
touch
- 如果文件不存在,则创建一个字节数为0的文件
- 如果该文件已经存在,则更新文件时间
rm
删除文件
rm -r ff 递归删除,即删除所有文件即删除目录
rm -rf ff 强制删除该目录
mv
重命名
mv file1 file2
移动文件
mv file1 ~/
cp
拷贝文件
cp file1 file2
拷贝目录
cp dir1 dir2 -r
cat
查看文件内容,输出到终端
more和less
ln
链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。如果给ln命令加上-s选项,则建立符号链接。
ln -s a.c b.c
符号链接只是该文件指向链接的文件。可以发现符号链接文件大小只有3即链接的文件名大小。
-rw-rw-r-- 1 kudio kudio 74 Jan 26 04:55 a.c
lrwxrwxrwx 1 kudio kudio 3 Jan 26 04:55 b.c -> a.c
wc
利用 wc 指令我们可以计算文件的 Byte 数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则 wc 指令会从标准输入设备读取数据。
du
查看某个目录的大小
以M为单位
du -hm
以B为单位
du -hb
以K为单位,4K的整数倍
du -hk
df
查看磁盘使用情况
文件属性和用户用户组
chmod
文字设定法
chomd [who] [+/-/=] [mode]文件名
操作对象who可是下述字母中的任一个或者它们的组合:
- u表示“用户”,即文件或目录的所有者
- g表示“同组用户”,即与文件属主有相同组ID的所有用户
- o表示“其他用户”
- a表示“所有用户”,为系统默认值
操作符号可以是
- +添加某个权限
- -取消某个权限
- =赋予给定权限并取消其他所有权限
mode表示的权限可用下述字母的任意组合
数字设定法
chomd [mode]文件名
数字表示的属性含义
- 0表示没有权限
- 1表示可执行权限
- 2表示可写权限
- 4表示可读权限
然后将其相加,即3个0到7的八进制数,其顺序是u、g、o
查找与检索
find
find ./* -name "*.c"
安装卸载软件
apt-get
更新源服务器列表
sudo vi /etc/apt/sources.list
更新完服务器列表后需更新源
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-get upgrade 更新已安装的包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息
磁盘管理
mount
mount [-t vfstype] -o options device dir
-t vfstype 指定文件系统的类型,通常不必指定。mount会自动选择正确的类型
loop:用来把一个文件当成硬盘分区挂接上系统
- ro:采用只读方式挂接设备
- rw:采用读写方式挂接设备
- iocharset:指定访问文件系统所用字符集
device:要挂接的设备
挂载U盘
- 检测存储设备名称
sudo fdisk -l
- 挂载存储设备sdb1到挂载点/mnt目录
sudo mount /dev/sdb1/mnt
- 访问/mnt
- 卸载/mnt
sudo umount /mnt
压缩包管理
tar
wget --no-check-certificate https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -xzvf Python-3.6.5.tgz
man pthread_mutex_init
提示:No manual entryfor pthread_mutex_init
sudo apt-get install manpages-posix manpages-posix-dev