Linux系统编程(一)

基本命令:
shell家族:
shell:命令解释器,根据输入的命令执行相应命令

查看当前系统下有哪些shell:cat/etc/shells

查看当前系统正在使用的shell:echo $SHELL

命令和路径补齐操作:再bash下敲命令时,Tab键可以补全已经敲了一部分的文件名和目录名。如果是Ubuntu系统,系统默认启用了bash completion,还可以补全命令的某些参数、makefile目标等。如果是Debian系统,可以使用以下命令启动bash completion:$ source/ect/bash_completion

路径:
绝对路径:从 / 目录开始描述的路径为绝对路径,如:cd /home ls /user

相对路径:从当前位置开始描述的路径为相对路径,如: cd …/…/ ls abc/def
文件:
mkdir: mkdir [option] directory… 创建目录directory,可以一次创建多个。option如果是-p,表示可以连同父目录一起创建,空目录表示只包含 . 或 … 的目录叫做空目录,也就是只有当前和上一级的目录的目录。

rmdir:删除空目录

rm :删除文件,加上-r就可以删除非空的目录,也可以加上-rf,表示强力删除目录,它有一个功能就是不管你有没有这个目录,都会进行删除

cp:拷贝文件和目录,如果拷贝目录,那就要加参数-r

cat:查看文件内容,输出到终端,如果没有cat时没跟文件名,则读标准输入,遇到\n后,输出到标准输出,终端下输入ctrl-d表示结束

more和less:显示的东西比cat多

head:显示文件的前几行,例如:head -5表示显示文件的前5行

tail:显示文件的后几行,使用方法和head相同

ln:链接有两种,一种被称为硬链接,另一种被称为符号链接。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。如给ln命令加上-s选项,则建立符号链接。举例如下,注意ls -l列出文件的硬链接数和字符链接数:
硬链接:
touch hello
ln hello word_h

软连接:ln -s hello word_s (-s就是soft(软的)的缩写)

wc(word count):利用wc指令我们可以计算文件的byte数、字数、列数,若不指定文件名称,是所给予的文件名为“ - ”,则wc指令会从标准输入设备读取数据。
wc -l ./*
-c 或-bytes或-chars只显示betes数
-l或-lines只显示列数
-w或-words只显示字数

od:od -tcx file1 ;-t指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d[size] 有符号十进制数,每个整数size字节
f[size]浮点数,每个数size字节
o[size]八进制(系统默认值为02),每个整数size字节
u[size] 无符号十进制数,每个整数size字节
x[size]十六进制数,每个整数size字节

df:查看磁盘的使用情况
df --block-size=GB
df --block-size=MB

whoami:查看当前登录用户

chmod:
文字设定法 :chmod [who] [+ | - |=] 文件名
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g表示“同组用户(group)”,即与文件属主有相同组ID的所有用户。
o表示“其他(other)用户”
a表示“所有(all)用户”,它是系统默认值。
操作符可以是:

  • 添加某个权限
  • 取消某个权限
    = 赋予给定权限并取消其他所有权限(如果有的话)。

数字设定法:chmod [mod] 文件名
用数字表示的属性的含义:
0表示没有权限
1表示可执行权限
2表示可写权限
4表示可读权限

chown:
chown [option]… [owner:group] file…
chown [option]… -reference=RFILE file…
option的主要参数:
-R 递归式地改变指定目录及其下的所有子目录和文件的拥有者
-v 显示chown命令所做的工作
比如把一个文件改为itcast用户和nogroup用户组所有:
$ sudo chown itcasr:nogroup file1
注意:chown需要特权用户才能执行,一个文件的owner和owning group是没有关联的,一个文件属于用户A,也属于用户组B,并不表示用户A属于用户组B。

chgrp:
chgrp [option]… group file…
chgrp [option]… -reference=rfile file…
该命令改变(指定)指定文件所属的用户组。其中group可以是用户组ID,也可以是etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
option的主要参数:
-R 递归式地改变指定目录及其下的所有子目录和文件的属组。

查找与检索:
find:
find [option] path… [expression]
在目录中搜索文件,path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。Expression是find命令接受的表达式,find命令的所有操作都是针对表达式的。可以加-R进行递归式查找
例如:在当前目录及子目录下查找所有以file开头的文件名
$ find .-name ‘file*’
$ find / -name ‘vimrc’
$ find ~ -name ‘*.c’

grep:
根据内容检索: grep [options] pattern [file…]
在指定文件中搜索特定的内容,并将含有这些内容的行输出到标准输出。若不指定文件名,则从标准输入读取。可以加-R进行递归式查找
[options]部分包含的主要参数:
-c:只输出匹配行的计数
-I(大写的i):不区分大小写(只适用于单字符)
-h:查询多文件时不显示文件名
-l(小写的L):查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行
-R:连同子目录中所有文件一起查找

比如到系统头文件目录下查找所有包含printf的文件:
$ grep ‘printf’ /usr/include -R

安装和卸载软件:
apt-get:
更新源服务器列表:
sudo vi /etc/apt/sources.list

磁盘管理:
mount:
命令格式: mount [-t vfstype] -o options device dir
其中:
-t vfstype指定文件系统的类型,通常不必指定。mount会自动选择正确的类型。常用类型有:
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX)文件网络共享:nfs

  • -o optiond主要把一个文件当成硬盘分区挂接上系统
    ro:采用只读方式挂接设备
    rw:采用读写方式挂接设备
    iocharset:指定访问文件系统所用字符集
  • device要挂接(nount)的设备
  • dir设备在系统上的挂接点(mount point)

挂接光盘镜像文件:
由于近年来磁盘技术的巨大进步,新的电脑系统都配备了大容量的磁盘系统,在windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟光驱来使用。这样做有许多好处:1.减轻了光驱的磨损; 2.现在硬盘容留巨大存放几十个光盘镜像文件不成问题,随用随调十分方便;3.硬盘的读取速度要远远高于光盘的读取速度,CPU占用率大大降低。其实linux系统下制作和使用光盘镜像比windows系统更方便,不必借用任何第三方软件包。
1.从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。
#cp /dev/cdrom /home/sunky/mydisk.iso

#dd if=/dev/cdrom of=/home/sunck/mydisk.iso
注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso
2.文件和目录制作成光盘镜像文件,执行下面的命令
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk

压缩包管理:
tar:
tar [主选项+辅选项] 文件或者目录
tar可以为文件和目录创建档案。利用tar命令用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。使用该命令时,主选项是必须要有的,辅选项是辅助使用的,可以选用。

主选项包括:
c 创建新的档案文件。如果用户想备份一个目录或是一个文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的末尾。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。(常用)

辅选项包括:
f 使用档案文件或设备,这个选项通常是必选的。(常用)
k 保存已经存在的文件。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。(常用)
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。(常用)
j 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。(常用)

要将文件备份到一个特定的设备,只需把设备名作为备份文件名。
打包:
tar cvf dir.tar dir
tar xvf dir.tar dir
打gz压缩包:
tar zcvf dir.tar.gz dir
tar zxvf dir.tar.gz
进程管理:
who:
查看当前在线上的用户情况。所有的选项都是可选的,不使用任何选项时,who命令将显示以下三项内容:
login name:登录用户名;
terminal line:使用终端设备(tty1~tty6字符终端,tty7图形终端,图形下的终端号用pts命名);
login time:登录到系统的时间。

ps:
ps [选项]
ps命令用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。选项部分如下:
-e 显示所有进程
-f 全格式
-h 不显示标题
-w 宽输出
a 显示终端上的所有进程,包括其他用户的进程
r 只显示正在运行的进程
x 显示没有控制终端的进程

jobs:
用来显示当前shell下正在运行哪些作业(即后台作业)。
$ cat
(按下ctrl+z挂起当前进程,ctrl+c终止当前进程)
[1]+ stopped cat
$ cat

fg [job…]
把指定的后台作业或挂起作业移到前台运行。参数job是一个或多个进程的PID,或者是命令名称,或者是作业号(作业号前面要带一个%号)。
通常shell中输入命令启动进程后,如果该进程需要与用户交互,那么此后用户的键盘输入都被该进程读取,直到该进程退出后才出现shell提示符$,这种进程为前台进程。
如果在命令行的末尾加上&字符,则shell为这个命令创建一个后台进程,它虽然也可以输出到屏幕,但是不能读取键盘输入,不管执行命令的进程有没有退出都立刻回到shell提示符接受下一条命令的输入。如果该进程也需要读取键盘输入,则被挂起等待直到用户用fg命令把它变成后台进程。如果一个命令需要较长的处理时间并且不需要与用户交互,就适合把它放在后台执行。

bg:
bg [job…]
把被挂起的进程提到后台执行。其中,job是一个或多个进程的PID、命令名称或者作业号,在参数前要带%号。
$ cat

kill:
向指定进程发送信号:
kill [-signal | -s signal ] pid…
查看信号编号:
kill -l(小写的L) [signal]
给一个进程发信号,或终止一个进程的运行。

env:
查看当前进程环境变量
$ env

  • vim ~/.bashrc
    配置当前用户环境变量
  • vim /etc/profile
    配置系统环境变量,配置时需要root权限

用户管理:
创建用户:
sudo useradd -s /bin/bash -g zhangyifei -d /home/zhangyifei -m (接上一行)zhangyifei
sudo useradd -s /bin/sh -g group -G adm,root xwp
此命令创建了一个用户xwp,该用户的登录shell是/bin/sh,他属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
-s 指定新用户登陆时shell类型
-g 指定所属组,该组必须已经存在
-G 指定附属组,该组必须已经存在
-d 用户家目录
-m 用户家目录不存在时,自动创建该目录

设置用户组:
sudo groupadd zhangyifei

设置密码:
sudo passwd zhangyifei

切换用户:
su 用户名

root用户:
sudo su

设置root密码:
passwd

删除用户:
userdel 选项 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。例如:
sudo userdel -r zhangyifei
此命令删除用户zhangyifei在系统文件(主要是/etc/passwd,/etc/shadow,
/etc/group等)中的记录,同时删除用户的主目录。

网络管理:
ifconfig:
查看网卡信息:ifconfig
关闭网卡:sudo ifconfig eth0 down
开启网卡:sudo ifconfig eth0 up
给eth0配置临时IP:sudo ifconfig eth0 IP (也就是临时IP,意味着下一次开电脑时IP又会改变)

ping:
ping [选项] 主机名/IP地址
查看网络上的主机是否在工作。它向该主机发送ICMP ECHO_REQUEST包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping命令查看。
命令中选项的含义如下:
-c 数目 在发送指定数目的包后停止
-d 设定SO_DEBUG的选项。
-f 大量且快速地送网络封包给一台机器,看它地回应。
-I(大写i) 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-l(小写L) 次数 在指定次数内,以最快的方式送封包数据到指定机器(只有超级用户可以使用此选项)。
-q 不显示任何传送封包的信息,只显示最后结果。
-r 不经由网关而直接送封包到一台机器,通常是查看本机的网络接口是否有问题
-s 字节数 指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。

Linux的网络适配器(网卡)有两种:一种是NAT,另一种是桥接,NAT是和Windows系统用同一个网卡,而桥接就是变成一个独立的物理网卡。查看方法如下:

netstat:
netstat [选项]
显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在工作。命令中各选项的含义如下:
-a 显示所有socket,包括正在监听的
-c 每隔1s就重新显示一遍,直到用户中断它
-i 显示所有网络接口的信息,格式同“ifconfig -e”
-n 以网络IP地址代替名称,显示出网络连接情形
-r 显示核心路由表,格式同“route -e”
-t 显示TCP协议的连接情况
-u 显示UDP协议的连接情况
-v 显示正在进行的工作

nslookup:
nslookup name
查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。
不带参数使用nslookup命令时,出现提示符“>”,在后面输入要查询的IP地址或域名并回车即可。如果要退出该命令,输入exit并回车即可。

finger:
finger [-lmsp] user [user@host…] 查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录信息等信息
-l(小写L) 除了用-s选项显示的信息外,还显示用户的主目录、登录的shell、邮件状态等信息,以及用户主目录下的 .plan 、.project和 .forward文件的内容
-p 除了不显示 .plan文件和 .project文件以外,与-l选项相同。

其他命令:
终端翻页:shift-pageup shift-pagedown

man:
看手册(叫做mannual或man page)。每一个命令和系统函数都有自己的man page。
man man
man read 查看read命令的man page
man 2 read 查看read系统函数的man page(在第二个section中,表示为read(2))
man -k read 以read为关键字查找相关的man page

alias:
alias [-p] name=value…
将value字符串起个别名叫name,以后在命令行输入name,shell 自动将其解释为value,如果不带参数执行本命令,或以参数-p执行,则显示当前定义的别名列表。

关机重启:
关机重启这些操作都需要有root权限

poweroff:关机

shutdown:
shutdown -t 秒数 [-rkhncfF] 时间 [警告讯息]
-t 秒数:设定在切换至不同的runleve之前,警告和删除二讯号之间的延迟时间(秒)。
-k : 仅送出警告讯息文字,但不是真的要shutdown。
-r : shutdown之后重新开机
-h:shutdown之后关机
-n:不经过init,由shutdown指令本身来做关机动作。(不建议使用)
-f:重新开机时,跳过fsck指令,不检查档案系统
-F:重新开机时,强迫做fsck检查
-c:将已经正在shutdown的动作取消

reboot:重启

查看内核版本信息:uname -a
查看发行版信息:lsb_release -a
查看空闲内存:free -m

需要安装的组件:
sudo apt-get install openssh-server
sudo apt-get install nfs-kernel-server
sudo apt-get install vsftpd

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值