linux系统编程-1、基础知识

本文介绍了Linux系统编程入门,包括shell命令、路径补全、历史记录、目录与文件结构、用户权限管理、文件操作(mkdir, rmdir, touch, rm, cp, ln, cat, more/less)以及软件包管理(apt-get)。深入讲解了bash Shell、文件权限、磁盘管理与文件查找技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: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+pprevious
Ctrl+nnext
Ctrl+bbackward
Ctrl+fforward
DelCtrl+ddelete光标后面的
HomeCtrl+athe first letter
EndCtrl+eend
BackspaceBackspacedelete光标前面的

目录和文件

对于所有东西来说都是文件

类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表示的权限可用下述字母的任意组合

  • r可读
  • w可写
  • x可执行
数字设定法
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盘

  1. 检测存储设备名称
sudo fdisk -l
  1. 挂载存储设备sdb1到挂载点/mnt目录
sudo mount /dev/sdb1/mnt
  1. 访问/mnt
  2. 卸载/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值