Linux基础

本文全面介绍了Linux系统的目录结构、常用命令及文件权限管理等内容,适用于初学者快速掌握Linux基础操作。

Linux系统常见目录

  • /bin:二进制文件目录,里面都是一些可执行命令/程序;
  • /boot:存放开机引导程序;
  • /dev:存放设备文件,如鼠标、键盘、内存、硬盘等;
  • /etc:存放系统配置文件以及用户名密码相关文件;
  • /home:存放操作系统的用户主目录;
  • /lib:存放库文件;
  • /media:扩展目录,用来挂载第三方磁盘空间,例如插一个U盘会自动挂载到该目录;
  • /mnt:手动挂载点目录;
  • /usr:Unix Software Resource,安装第三方软件的目录;
  • /var:系统提供给用户用来存储文件的目录,如登录日志、系统缓存、备份等。

常用命令

  • shell:命令解释器
  • ls : 查看当前目录下的文件。类似于Windows下的dir命令;参数:-a : 列出所有文件; -l : 以列表形式列出文件
  • 通配符:*:代表所有的字符;?:代表一个字符; [ ] :括号内多个字符里选任一个。
  • 转义字符\:去掉通配符的功能含义,而代表普通字符本身。
  • 注意:如果 * 和?放在[ ]内,或者-放在 [ ]之外,则 * , ?, - 失去通配符的作用。
  • 重定向 < , > : 命令的输入或者输出由用户指定
  • more:分屏显示文件内容
  • 管道:把上一个命令的输出作为下一个命令的输入
  • cd :进入指定目录
  • pwd :显示当前路径
  • mkdir:创建一个新目录
  • rmdir:删除一个空目录
  • rm:删除一个文件;rm -r : 递归地删除指定目录和里面的目录和文件,很彻底的删除; rm -f:不加提示地删除;rm -i:交互式删除(较好的执行方式,避免误删)
  • ln:创建链接文件,分为硬链接和软链接(-s),区别是硬链接文件和源文件一样大并且占磁盘空间,而软链接很小并且不占磁盘空间。若删除源文件,则硬链接文件还有内容,而软链接就没有内容了,软链接类似于快捷方式。Windows中只有软链接没有硬链接。注意:无法创建目录的硬链接。
  • cat:看文件的内容或者合并两个文件的内容(合并功能要结合重定向命令生成一个新文件)
  • grep:查找文件中的指定字符串。
  1. -v:查找不包含指定字符串的行,即反向查找;
  2. -n:显示行号;
  3. -i:忽略字符串的大小写。
  4. 查找指定字符:
    1) grep '^a' stdio.h:在文件stdio.h中查找以a开头的行;
    2) grep 'a$' stdio.h:查找stio.h文件中以a结尾的行。
    3) 注: '^' :从行首开始匹配; '$' :至行尾; .:任意单个字符
    4) sudo grep -r 'EAGAIN' /usr | grep 'define':在/usr/目录中搜索EAGAIN字符串的宏定义。
    5)查找一个程序中用到的系统定义结构体的定义:
    (系统库函数文件一般在文件/usr/include/usr/src中)
    grep "struct ip_mreqn {" -r /usr/include -n //得到该定义所在的文件和行号,用vi带行号即可定位到struct ip_mreqn的定义
  • wc:计算文件的行数和字符数。-l:显示行数;-w:显示字数,注意,文件中以空格或换行符隔开的不同字符序列就不算是同一个字;-c:显示字节数
  • find:查找文件。
    例如:
    find ./ -name b.txt:从当前目录下递归查找名字为b.txt的文件(前提是用户对当前目录有权限);
    find /usr/ -size +900k -size -2M -exec ls -lh {} \; > result.txt
    find /usr/ -size +900k -size -2M | xargs ls -lh > result.txt:查找/usr目录下大小介于900K-2M之间的文件,并将这些文件的详细信息存入文件result.txt中。
  • cp:复制文件
  • mv:移动或重命名文件
  • file:得到文件类型。linux系统中文件类型不是根据扩展名确定的,这一点不同于WIndows系统。
  • clear:清理屏幕。Windows中为cls命令。
  • ps:查看进程信息。-a:显示终端上的所有进程,包括其他用户的进程;-u:显示进程的详细信息;-x:显示没有控制终端的进程;-w:显示加宽以便显示更多的信息;-r:只显示正在运行的进程。不过参数前也可以不见短横线 - 。通常参数aux一起使用显示所有进程的详细信息。
  • top:动态显示正在运行的进程。top和ps命令一起实现了Windows中的任务管理器的功能。
  • kill:终止进程。kill [-signal] pid : 需要知道要终止进程的PID,可用ps命令得到。信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。
  • whoami:我是谁,显示是哪个用户登录当前系统的。
  • who:查看当前系统的登录用户的信息,通常系统管理员用此命令。
  • w:和who命令功能相同,只不过显示的信息更详细。
  • tar:归档管理,把多个文件和目录打包成一个文件,不负责压缩,最常用的备份工具。-cvf:打包;-xvf:解包
  • gzip:压缩文件,压缩后的文件扩展名为.gz;-d:解压
  • zip:压缩文件,和Windows下的压缩文件格式通用。zip abc.zip abc.tar:把abc.tar压缩为abc.zip;unzip abc.zip abc.tar把abc.zip解压为abc.tar。
  • tar命令和压缩命令组合起来最常用的参数组合为:tar -zcvf , tar -zxvf //使用gzip打包压缩说个文件/使用gzip解压压缩包
  • 前台 vs. 后台:前台能与用户交互,而后台不能与用户交互。
  • 命令的前后台切换:命令+&:把一个前台执行的命令调到后台运行;如果程序已经在执行,ctrl+Z可以把它调到后台;jobs:查看后台运行程序;fg+编号:将后台运行程序调出到前台。
  • man:联机帮助命令。空格键:显示手册页的下一屏;Enter键:一次滚动手册页的一行;b:回滚一屏;f:前滚一屏;q:退出man命令;h:列出所有功能键;/word:搜索word字符串。
  • manual手册分为9卷:
    卷1:可执行程序或shell命令
    卷2:系统调用(内核提供的函数,通常Linux系统编程中用得较多)
    卷3:库调用(程序库中的函数)
    卷4:特殊文件(通常位于/dev)
    卷5:文件格式和规范,如/etc/passwd
    卷6:游戏
    卷7:杂项(包括宏包和规范,如man(7), groff(7))
    卷8:系统管理命令(通常只针对root用户)
    卷9:内核例程
    其中,卷1,2,3,5很重要,用得较多。 其他卷了解即可。

系统管理命令

  • 重启:reboot, shutdown -r now, init 6

  • 关机:shutdown -h now, init 0

  • 切换到命令模式:init 3

  • 切换到x window模式:init 5

  • df:查看磁盘使用情况;

  • du:查看具体目录的大小;

  • mkfs:系统文件系统的格式化;

  • rpm:安装卸载软件;

  • 用户管理:包括用户账号和组账号的管理。
    从普通用户切换到root时用su或su - 命令,退出root到普通用户用exit

    • groupadd:添加组
    • groupdel:删除组,要注执行此命令时当前用户的权限。
    • useradd:添加用户(root用户才能用此命令),
      -d:指定用户的主目录;
      -m:若主目录不存在,就自动创建指定的目录,如:useradd -d /home/abc abc -m
      -g:指定新建用户所属的组,若不指定,则默认属于和用户名同名的组,如:useradd -d /home/abc abc -m -g aabb 创建一个用户,名字叫abc,主目录是/home/abc目录,属于aabb这个组
    • userdel:删除用户,
      -r:删除用户时把其主目录一并删掉;若用户所属的组是系统默认的同名组,则删除用户时所属的组也会自动被删掉,但若用户所属的组不是默认而是root用户在创建时指定的,那么删除这个组就需要使用groupdel命令。
  • passwd:设置用户密码

  • last:查看用户最后一次登录系统的状态。

文件系统

  • 文件路径:相对路径和绝对路径。和Windows不同的是linux的绝对路径开始时没有盘符,而且分隔符也不同。
  • Linux文件系统不使用驱动器的概念,而是使用单一的根目录结构,所有分区都挂载到单一的根目录‘/’上,而Windows有多个根目录,即每个磁盘是一棵独立的树。linux中根目录不能作为某个用户的主目录,即useradd -d / user1是不对的。
  • inode是Linux系统中唯一表示一个文件或者目录的方法,类似于指向文件的指针。所以,严格来说,只有当某一个文件的硬链接数为0时才是彻底删除了该文件。
  • 文件名最长可达256个字符,可由A~Z a~z 0~9 . - _等符号组成,且区分大小写,没有扩展名的概念。
  • dd命令:拷贝
dd if=sfile of=dfile //把文件sfile拷贝到文件dfile中
dd if=/dev/zero of=hello.txt bs=100M count=1 //创建一个100M的空文件
//  /dev/zero是一个输入设别,可用来初始化文件,从中读出的数据都是0(ASCII值0)
//  /dev/null是一个输出设备,任何数据都可以容纳
//例如,新建一个2M大小的文件并挂载到/mnt下
dd if=/dev/zero of=imagefile bs=2048 count=1024
mke2fs imagefile
sudo mount -o loop imagefile /mnt
  • 文件类型有:
    普通文件,存放数据和程序等信息,包括文本文件、数据文件、可执行二进制文件;
    目录文件;
    设备文件:所有设备都映射成一个文件,用于向I/O设备提供连接;
    管道文件:多用于进程间通信

  • 文件权限:

    • chmod:更改文件读写权限。
      • 对于目录:
        目录的r权限代表是否可以查看目录内容;
        目录的w权限代表是否可以在目录下生成文件;
        目录的x权限代表是否可以cd进入这个目录。
    • chown:更改文件的所有者。
      注意:chown需要特权用户才能执行;一个文件的owner和owning group是没有关联的,即它所属的用户不一定就属于它所属的那个用户组。
    • chgrp:更改文件所有组
  • od命令:查看二进制文件内容:
    -t:指定数据的显示格式,主要参数有:
    c ASCII字符或反斜杠序列
    d[SIZE] 有符号十进制数,每个整数SIZE字节。
    f[SIZE] 浮点数,每个整数SIZE字节。
    o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。
    u[SIZE] 无符号十进制数,每个整数SIZE字节。
    x[SIZE] 十六进制数,每个整数SIZE字节。
    例如:od -tcx file1 //以十六进制形式显示二进制文件中的ASCII字符
    此命令在嵌入式开发中反汇编时用得较多。

  • 文件和目录的三个权限的具体含义:

权限文件目录
r可以查文件内容,cat/more/head…vim可以查看目录(文件的)内容,ls /get
w文件的内容可修改、删除,vim对文件写操作可以在目录内创、修改、删除
r可以运行(可执行程序、脚本)目录可以被打开

软件安装

  • 自动(在线)安装:apt-get
sudo apt-get install package //安装软件包package
sudo vi /etc/apt/sources.list //更新源服务器列表,即选择一个默认的下载源服务器
sudo apt-get update //更新所连源服务器的软件包列表
sudo apt-get remove package //删除软件包package

注意:使用Linux系统的一个重要准则是,所用的系统和软件工具不一定是最新版的,但一定要是最稳定的。比如,以ubuntu的版本号14.04为例,前两位数若是双数,表示长期支持版,单数表示短期支持版;后两位数表示一年中的两次版本发布时间,04表示4月发布的稳定版,10表示10月发布的测试版。类似于Linux内核的版本号,单数表示测试版,双数表示稳定版。

  • 手动(离线)安装:下载好离线软件包后自动安装,安装位置自己不能指定,系统指定
sudo dpkg -i xxx.deb 
//通过下载好的离线安装包xxx.deb安装xxx
//其中后缀名.deb表示这个离线包是debian系列linux系统
//其中ubuntu就是该系列的一个Linux系统版本。
  • 源码安装:一般软件商发布一款软件时软件包中会附带一个readme文件,指导该软件的安装。但假如没有readme文件,则可参考下面的安装流程:
  1. 解压缩源代码包
  2. cd dir
  3. ./configure //检测文件是否缺失,创建Makefile,检测编译环境
  4. make //编译源码,生成库和可执行程序
  5. sudo make install //把库和可执行程序,安装到系统路径下
  6. sudo make distclean //删除和卸载软件

vi

按键功能
a光标位置右边插入文字
i光标位置当前处插入文字
o光标位置下方开启新一行
O光标上方开启新一行
I光标所在行首插入文字
A光标所在行尾插入文字

  • 退出vi:
按键功能
ZZ、:wq、:x保存退出
:w filename保存到指定文件
:q退出,如果文件修改但未保存,会提示无法退出
:q!退出,不保存
:!命令暂时离开vi,执行命令
  • 删除
    • 输入模式下,可用Backspace键或者delete键;
    • 命令模式下:
按键功能
x删除当前光标所在字符
X删除光标前一个字符
D删除光标处到本行结尾之间的所有字符
dd删除光标所在行
dG删除光标处到文件结尾之间的所有字符
J合并两行

其实,vi中并未定义删除功能,而是剪切到默认缓冲区中,因此可以将剪切掉的内容粘贴到另一处;若不粘贴,则为删除。


  • 行定位功能:
按键功能
Ctrl+f向前滚动一屏
Ctrl+b向后滚动一屏
G到文件最后一行行首
:$到文件最后一行行尾
mG到指定行,m为目标行数
/内容查找指定内容

  • 文本查找功能:
按键功能
/字符串查找指定字符串
n寻找下一个
N回到前一个
寻找上一个
/^字符串查找以字符串开始的行
/字符串$查找以字符串结尾的行
/a.b查找字符串a任意字符b
  • 文本替换:
按键功能
r替换当前光标字符
:r 文件名在光标当前位置载入另一个文件
:开始行号,截止行号 s/源字符串/目标字符串/g在指定行号范围内替换字符串

注:vi 替换时最后的/g中的g代表global
比如:
1,$ s/start/end/g :从第一行开始到文件最后,将字符串start替换为end

  • set指令:
按键功能
:set ic/noic搜索时忽略/不忽略大小写
:set nu/nonu显示/不显示行号

  • 在vi/vim打开的一段程序中查看其中用到的库函数定义:光标移到该库函数上然后按 “K”(大写的k)。(常用)

  • vi/vim中执行shell命令:先按感叹号!,再输入具体的shell命令。

  • vi/vim中分屏操作(常用):
    sp:上下分屏;
    ctrl + ww:上下切换
    vsp:左右分屏
    sp/vsp后加某个文件名,可以在当前屏幕中分屏打开另一个文件。

  • 用vi编辑一段C代码a.c,然后编译它:gcc -o a a.c,执行时需输入:./a而不能只输入a,因为linux默认不在当前目录下查找可执行程序。
    那么怎么才能像Windows下一样只输入a就可以执行呢?

    • 第一步,回到用户的主目录:cd

    • 第二步,编辑用户配置文件
      ubuntu:.profile
      redhat:.bash_profile
      在文件最后一行
      export PATH=$PATH:.

    • 第三步,保存退出

    • 第四步,重新登录用户:exit,su

    • 注意:一切修改只针对具体用户,如用户test修改了test的配置文件,只对test。即使是root修改了root配置文件,也只是对root有效。Linux下每个用户的运行环境是不一样的。

  • vim的配置文件在用户的主目录下:.vimrc,是一个隐藏文件。如果没有这个文件,可以手动创建这个文件。任何对vim的配置都要通过修改这个文件来实现,比如,用vim打造IDE就是通过向这个文件写配置语句实现的。

  • 动态链接库:Windows下有一种文件,扩展名为dll,dll是动态链接库,dll一般都是用c语言写的。动态链接库在unix和linux就是扩展名为so的文件,等同于windows的dll文件。


网络管理

  • ifconfig:配置网络参数,可查看linux主机的ip地址(windows下查看ip:终端输入ipconfig)
  • roote:网络路由设置
  • netstat:监控网络状态
  • 通信协议:
    TCP:可靠通信,发送完需要对方回复,占用带宽宽;
    UDP:不可靠通信,只发不回复,占用带宽小,允许丢包。
  • ping:测试目标地址是否可达,后跟参数为目标主机的ip地址
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值