本篇主要介绍Linux指令
一、linux终端
终端
用来执行指令
[root@localhost ~]#
root 用户名
localhost 本地IP地址
~ 代表目录名
~ 是登录用的户根目录 如果用root则代表root目录
/ 系统的根目录 相当于 E:\
根目录中常见的目录
bin 可执行程序的目录 即linux操作系统的指令
sbin 可执行程序的目录 系统管理员使用的指令
dev 设备节点文件, 即驱动程序的入口文件
fb 帧缓冲设备 即屏幕 理解为文件名
向这个文件中写入数据,代表在屏幕显示的内容发生变化 播放视频
从这个文件中读出数据,抓屏
dsp 声卡设备 写入数据,播放
读出数据,录音
camera 视频设备 读出数据,摄象
tty 终端设备
mnt 挂载设备 比U盘,sdk,光驱,网络目录
etc 系统配置文件
usr 保存了编程时使用头文件、库文件
include 保存.h 即对函数的声明
lib 保存.a 和.so 库文件,也称为函数库 即函数
lib 保存了系统程序所用到的.so文件 是系统程序运行时使用的
root 超级用户的目录,里面有桌面设置的信息
home 其它用户的目录, 编程或练习
绝对路径:即从根目中开始找文件
相对路径:从当前的工作目录开始找文件
./ 当前目录
…/ 上一级目录
-
ls 指令 查看目录中的文件或子目录
输入ls 回车
ls -l 以列表的方式显示
ls -A 显示所有的文件,包括隐藏的
ls -lA 以列表方式显示所有
ls / 显示/根目录中的文件或子目录
ls -l /usr/include/ 绝对目录 -
cd 指令 用来切换目录
cd /home/ 切换到 home目录
ls -l …/usr/include/ 相对目录
ls -l /home/ 绝对
ls -l …/…/home/ 相对
3.echo
打印和输出
echo “askdfj” 输出到终端
echo $PATH
4.文件重定向
** > 将指定的数据写入到后面指定的文件中
** >>将指定的数据追加到后面指定的文件中
echo "asfaf" > test.txt
echo "lkaf" >> test.txt
ls / >>test.txt
cat 查看文件中的内容
cat test.txt
二、文件操作权限
ls -l
-rw-r–r--
r 只读 4 w 只写 2 x 执行 1 - 无权限 0
u 所属 即创建者
g 属组 即所在组的人
o 其它
rw- 6
r-x 5
rwx 7
376 //属主权限写和执行 属组读写执行 其它读写
chmod 用于更改文件权限
格式
chmod 权限 文件或目录名
补充:指令的执行
目录名/指令名称 回车 //即执行程序或指令
/bin/ls
/home/test.txt 绝对目录执行程序
./test.txt 相对目录执行程序
ls 可执行 是因为/bin目录在环境变量PATH中
test.txt 不可执行 原因同上
三、目录操作指令
1.查看当前目录的完整名称
pwd
2.创建目录
mkdir [-pv] <目录名>
mkdir yecy 在当前目录下创建了一个子目录
mkdir ./yecy ./可省略
mkdir /home/yecy
-v 用来显示执行的过程和结果
-p 代表强制创建 当创建的子目录的上级目录不存在时,创建上级目录
mkdir -pv /home/a/b/c
mkdir b c d e 代表创建4个目录
1.创建空文件
touch 创建一个空文件
touch text2.txt
2.删除文件或目录
rm [-ivrf] 文件名或目录名
rm test.txt
rm:是否删除 一般文件 “test.txt”? y代表删 非y代表不删
原因,是该指令默认有一个i参数
-f 代有强制,不提示
-r 代表删除目录及目录中的所有文件
rm -rf b
rm -rfv c
rm -rf e yecy text2.txt 删除3个文件或目录
rm -rf * //删除所有
rm -rf *.txt ye* 删除所有含.txt及ye的文件名名目录名
上下键 将前面用过的指令找出来
tab 双击列出符合的列表 单击补全
3.更名及移动
mv [-ivrf] 源文件名或目录名 目标文件名或目录名
mv text2.txt aaa.c //更名
mv aaa.c bbb.c //bbb.c如果存在,则是覆盖
mv aaa.c text1.txt //如果text1.txt目录,则移动
mv d f //f不存在,则是更名 d和f都是目录
mv f e //如果e是目录,且存在,则为移动
mv yecy1 ../ //移动
mv aaa bbb/ccc //先看bbb内是否有ccc 如果不存在,则移动bbb中同时更名为ccc,如果ccc本身存在,则移到bbb/ccc目录内
4.拷贝
cp [-ivrf] 源文件名或目录名 目标文件名或目录名
cp aa.txt aa.c
cp bb.txt aa.c //如果aa.c已存在,则覆盖
cp aa.c bbb/ccc //如果ccc是已存在的目录,拷贝到bbb/ccc目录下,如果ccc不存在,则拷贝到bbb内,同时更名为ccc,如果ccc本身存在并是文件名,则是覆盖
5.链接
ln [-sfinv] <源文件或目录><目标文件或目录>
链接的分类:有两种 软链接、硬链接
软链接 生成了一个文件,文件内保存了另一个文件的节点地址,所以可以通过软链接操作另一个文件。(相当于快捷)
硬链接 没有生成任何新的文件,而是生成新的节点,即在源文件的基础上增加了一个节点数。(相当于别名)
快捷方式: windows内的,也是一个文件,里面保存了另一个文件的文件路径。
-s 代表软链接
如果不用参数,则代表硬链接
1)硬链接
ln aa.c aa.c.cpp //即生成了两名同一个文件
如果删除了其中一个节点,则节点数会减少一个。当节点数为1时,则真正的把文件删除。
echo “lkjsadf” >aa.c
[root@localhost home]# cat aa.c.cpp //改一个,因为是同一文件,其它都变
lkjsadf
[root@localhost home]# cat aaa.lll
lkjsadf
rm aa.c
[root@localhost home]# cat aaa.lll //文件还存在,没被删除
lkjsadf
2)软链接
ln -s aa.c aa.c.ln //aa.c.ln与aa.c不是同一个文件,aa.c.ln保存了aa.c的地址。
rm aa.c
[root@localhost home]# cat aa.c.ln //aa.c.ln指向的文件不存在
cat: aa.c.ln: 没有那个文件或目录
五、文件阅读指令
-
head和 tail
读取一个文件前面几行或后面几行的数据head [-n <行数>] 文件名
head -n 2 /root/Desktop/aaa.txt //查看文件的前两行数据。如果不用参数,则代表前10行
2.cat
cat [-nbsv] <文件名,…> [> 文件名]
用于显示文件,也可以用于连接文件
-n 列出行号
-b 对空白行不编号
-s 如果有两个以上的空白行,只保留一个空白行
cat aaa.c //列出文件的所有内容
cat -nb aaa.c //显示行号,空白不编号
cat -nbs aaa.c > ll.txt //去掉多余空白,编号后保存到另一文件中
//将两个文件合成为一个文件
cat aaa.c bbb.c >ddd.c
cat bbb.c >> aaa.c
六、文件查找指令
1.找文件
find <目录> [-name <范本样式>] [-ls][-fls<文件名>]
查找文件
find /usr/include/ -name “math*”
2.在文件中找内容
(1)在文件内查找字符串
grep [-cin] <字符串> [文件名]
-c 输出匹配行的数量
-i 不区分大小写
-n 显示匹配的行号和字符串
grep -n "jg" aaa.c //在文件中查找字符串并标上行号
(2)在结果集中查找字符串
<指令结果集> | grep [-cinv] <字符串>
echo "lajfksgdj" | grep -n "jf"
cat aaa.c | grep -n "js"
(3)利用xargs 查找含有指定字符串文件
find 目录 -name "*" | xargs grep <字符串>
find ./ -name "*" | xargs grep "js"
三、磁盘管理和常用指令
1.磁盘分区指令
fdisk -l 查看存储(磁盘、光驱、U盘、sd卡)设备
常见的设备
硬盘:/dev/hdx IDE
/dev/sdx SCSI/USB
软盘:/dev/fdx x=0/1
CD-ROM:/dev/cdrom IDE
/dev/scd SCSI
2.设备挂载指令
mount [-t vfstype] [-o options] device dir
挂载:u盘\移动硬盘\光驱
共享目录
磁盘映像文件
vfstype挂载的设备类型
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs
options 选项
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
rw: 读写
iocharset:指定访问文件系统所用字符集
字符:
屏幕上所显示的所有内容本质都是图片
字符的本质就是图片的编号(编码)
ASCII 字母、符号 0-127之间的编号
GBK 大陆字符集
BIG5 台湾字符集
uncode utf-8
nolock 文件解锁 通常在开发板中挂载设备
device 设备 即插入的U盘、共享目录等
dir 挂载点 即入口(是一个空目录)
例:挂载linux共享文件夹
mount -t nfs -o rw 192.168.1.23:/home aaa
解除挂载
umount aaa
四、文件的常用工具
1.文件的压缩和备份
tar [-cxtzjvfpPN] 目标 源文件
- j,z 压缩文件的类型
z gzip格式 扩展名.gz
j bzip2格式 扩展名.bz2
-c 打包
-x 解包
-v 显示过程
-f 处理文件
将text.c压缩为 test.c_20151018.bz2
tar -cjvf test.c_20151018.bz2 test.c
将test.c_20151018.bz2解压到当前目录下
tar -xjvf test.c_20151018.bz2
将test.c_20151018.bz2解压到/目录下
tar -xjvf test.c_20151018.bz2 -C /
2.Vim或vi
用于编写文件
1)打开文件
vim 文件名
文件本身不存在,则创建文件,否则打开文件
2)三种指令模式
指令模式 开打开的文件默认模式
编辑模式 用于编辑文字
末行模式 用于保存等操作
指令->编辑 i或 a esc键回到指令模式
编辑模式的操作 同windows
insert 插入和替换 切换
bkspace 向前删除
del 向后删除
home 跳到行首
end 跳到行尾
pgup 上翻一页
pgdn 下翻一页
指令模式
yy 复制一行 5yy 复制5行
p 粘贴
dd 删除一行 5dd 删除5行
剪切 先dd,然后p
u 恢复 直到刚打开文件的状态
指令->末行 Esc -> :
:q 退出
如果没有编辑文字,则直接退出
如果已编辑文字,q! 强制退出不保存
:w 保存
wq 保存后退出
w <文件名> 另存,另存后,当前操作还是原文件
w! 在只读的情况,想保存必须强制保存
:x 写入文件并退出 相当于wq
//-----------------------------
:? <字符> 查找指定的字符,按 n继续查找下一个
:# 如:1 跳到指定行
:set nu 显示行号 set nonu取消行号显示
:%s/原字符/新字符/g
六、其它常用指令
1.重启
reboot
2.查看运行的进程
ps [-Aa][celf][-C 程序名][-p pid]
-A 显示所有正在执行程序
-a 显示所有终端的执行程序
c 显示程序指令名称
e 显示程序使用的环境变量
l 显示详细信息
f 显示树状结构
ps 查看当前终端内的进程
程序:是保存在磁盘上的可执行的文件
进程:在内存中运行的程序
操作系统,最开始有一个进程 进程PID是 0
其它的所有进程都是由另一个进行打开 涉及到父进程和子进程
PID PPID
进程 父进程
ps -la 以列表的方式查看所有终端的程序
ps -C test 直接指定程序查看
ps -p 7 查看pid是7的程序
3. 发送信号
kill -l 用来查看信号
信号:用数字代表了某种功能,实现一种控制
kill <PID> 代表了向指定的pid发送了第9号的信号
用来结束进程
Ctl+C 第9号的信号
kill -s <信号> <PID>
kill -s 9 3384
七、用户管理
用户信息的设置在 /etc/passwd保存
查看用户是否存在
cat /etc/passwd | grep “yecy”
1.创建用户名
useradd [-g group][-d home]
-g:直接给出GID
-d:直接将根目录建立在已存在目录
useradd myy
创建了用户名myy,组名,同时在home中创建了myy目录
useradd -g 502 ztl
创建了用户名ztl,组是502 ,同时在home创建了ztl
useradd whl -d /newdir //指定了该用户的根目录
2.设置密码
passwd [用户名]
passwd myy //设置用户密码
Changing password for user myy.
New UNIX password: //输入密码
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password: //验证密码
passwd: all authentication tokens updated successfully.
3.删除用户
userdel <user_name>
userdel myy
4.切换用户
su [-c command] [-] [user [ARG]]
su myy 进入myy用户
su - 从其它用户返回到root用户
八、网络管理指令
ifconfig指令
(1)ifconfig 查看
查看网络地址,设置网络地址
eth0 网卡名
Link encap:Ethernet 网络的类型 以太网
HWaddr 00:0C:29:EC:9D:96 网卡物理地址 用来识别电脑
inet addr:192.168.1.23 IP地址 IPV4
Bcast:192.168.1.255 广播地址
Mask:255.255.255.0 掩码
inet6 addr: fe80::20c:29ff:feec:9d96/64 IPV6
(2)即时设置IP
第一种方法(即时生效,重启失效)
ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up
ifconfig
注意:重启动失效
(3)永久性设置IP方法
更改的是一个配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none #dhcp 自动获取 none静态设置
HWADDR=00:0c:29:ec:9d:96
NETMASK=255.255.255.0
IPADDR=192.168.1.22
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
重启网卡
ifdown eth0 //取消激活
ifup eth0 //激活
(4)检测网络是否连接
ping 192.168.1.22 //测试网络是否连接 正常则返回时间s
九、服务管理
service <服务类型> <指令>
smb 是samba 服务,用于同windows系统共享文件
nfs 用于同linux体系统共享文件
vsftpd 是ftp服务,用于提供文件下载传输功能
sshd 用于提供远程终端访问功能
xinetd tftp服务
iptables 防火墙
指令
start
stop
例:操作防火墙
service iptables start //启动服务
service iptables stop //停止服务
1.nfs服务
如果想把系统的某目录共享给其它人,则必须建立和启动服务
设置共享目录有两种方法:
1)通过系统菜单中的工具设置
2) 通过配置文件来设置
vim /etc/exports
/home/project *(rw,sync)
/home/project代表要共享的目录
*(rw,sync) *代表所有机器ip rw代表读写 sync同步执行
如何将目录共享出去?
要启动服务nfs
service nfs start
检测nfs服务是否启动
showmount 192.168.1.8 //此处ip是开启了nfs服务的ip
其它机器使用该机器的共享目录的方法?
必须用mount挂
mount -t nfs [-o nolock,rw] 该机器的共享目录名, 挂载点
挂载点是连接另一个设备目录的入口,必须是一空目录
mdkir aaa
mount -t nfs -o rw 192.168.251:/home/project ./aaa
cd aaa
2.ssh服务
用于远程终端的访问
service sshd start
远程访问,工具SecureCRT.exe
3.ftp服务
1). ftp服务的设置
(1)窗口设置方法:
不需设置,启动即可
(2)文件设置方法:
/etc/vsftpd/vsftpd.conf 主配置文件 不需更改
/etc/vsftpd/ftpusers 指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list 文件中指定的用户列表不可以可以访问ftp服务器由vsftpd.conf
文件中的userlist_deny的取值来决定。
设置方法是:
在 /etc/vsftpd.ftpusers 和/etc/vsftpd.user_list 文件中将允许访问的用户去掉
上述三个文件,如果在开发板上没有,则可以从linux的PC机上拷贝到开发板。
2). 启动FTP服务
service vsftpd start 启动vsftpd服务
service vsftpd stop
3). 客户端对ftp服务的访问
ftp可以在windows用ftp工具访问,也可以在linux用ftp指令访问,但必须明确ftp服务器的服务已启动
windows系统可用ftp工具下载
ftp下载工具.zip
linux系统用ftp指令下载
ftp [-dignv][主机ip]
-d 显示指令执行过程 详细
-i 不询问任何问题
-n 不使用自动登陆
-v 显示指令执行过程
例:
ftp 192.168.2.9
Connected to 192.168.2.9.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.2.9:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
进入指令状态后,常用指令如下
使用ftp客户程序连接另一台计算机后可执行的指令如下:
ls 列出远程机目录
cd 在运程机上改变工作目录
pwd 查看远程机当前目录
lcd 改变本机目录
get <文件名> 从远程机获取文件
put <文件名> 将文件传送到远程机
quit 断开和远程机的连接