百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux系统常用命令总结笔记1---文件目录操作

sinye56 2024-11-23 22:10 1 浏览 0 评论

一、命令分类

1. 文件目录操作

2. 查看和编辑类;

3. 查找搜索;

4. 用户管理和权限管理;

5. 压缩和解压,验证;

6. 系统管理;

1)内存;

2)磁盘;

3)进程;

4)时间;

7. 系统时间:

8. 网络管理和状态查看:

9. 其它工具:

二、详细说明:

1. 文件目录操作

---pwd:查看当前工作目录的完整路径.

参数: 一般不带参数,

-P:表示当前的实际路径,如果是链接路径,则会显示实际路径。

例子:

---ls:查看文件或目录信息;

参数:

无:简单列出指定目录下的文件和目录名称;

-a: 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。

-l:列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。

-F: 在每一个文件的末尾加上一个字符说明该文件的类型。"@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。

-s: 在每个文件的后面打印出文件的大小.size(大小)

-t: 按时间进行文件的排序 Time(时间)

-A:列出除了"."和".."以外的文件。

-R:将目录下所有的子目录的文件都列出来,相当于编程中的“递归”实现

-L:列出文件的链接名,Link(链接)

-S:以文件的大小进行排序

其它用法,请使用man和help帮忙查看下。

例子:

另外ls 也可结合管道进行一系列的复杂操作; ls -al | awk '{print $(NF)}' 打印出最后一列的内容


另外ls 也可结合管道进行一系列的复杂操作;

ls -al | awk '{print $(NF)}' 打印出最后一列的内容

---cd: 改变当前路径到指定路径;

参数:

一般不带参数。

-P: 强制不进入链接的目录

-L: 强制进入链接的目录

例子:

cd /home/test/ #从当前路径进入到/home/test绝对路径;

cd .. #返回上一级路径;

cd ../../../ #返回上几级路径;

cd - #返回到上一次工作路径;

cd ~ #进入到自己的家目录;

cd -P link_dir/ #强制不进入链接的目录;

cd -L link_dir/ #强制进入链接的目录

---mkdir: 若目录不存在则创建目录;

参数:

-m: 指定权限创建目录,类似chmod;

-p: 可以创建多级目录,即使目录存在也不会报错;

例子:

mkdir -m 777 test1 test2 ##创建权限为777的两个目录test1和test2;

mkdir -p test1/test2/test3 ###创建多级目录;


---cp:主要用于复制文件或目录。即用来将一个或多个源文件或者目录复制到指定的目的文件或目录

参数:

-a:等于 “dpR” 参数组合,通常在复制目录时保留链接、文件属性,并复制目录下的所有内容。

-b:覆盖已存在的文件目标前将目标文件备份;

-d:复制时保留符号链接。

-f:强行复制文件或目录,覆盖已经存在的目标文件而不给出提示。

-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖。

-l:不复制文件,只是生成源文件的硬链接文件。

-p:复制文件时保留源文件或目录的属性。

-r:递归复制目录,即复制该目录及其所有的子目录和文件。

-R:同 -r 选项参数。

-s:对源文件建立符号连接,而非复制文件;

-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;

-u:同步复制源文件文件,只在源文件更新时或目标文件不存在时复制。

-v:详细显示命令执行的操作。

例子:

cp -arvf test1 test2 ##常用参数,把test1下的所有文件(包括链接)copy到test2; 复制时显示相关信息

cp source.txt destination.txt ##复制普通文件

cp file1.txt file2.txt /path/to/destination/ ##复制多个文件到目标目录

cp -i file.txt /path/to/dest/ ##交互式地复制文件,避免覆盖

cp -u file.txt /path/to/destination/ ##仅复制更新的文件

cp -v file.txt /path/to/destination/ ##显示详细输出

cp -rp sourcedir/ /path/to/destination/ ##复制目录并保留权限、时间戳等信息

cp --backup=numbered file.txt /path/to/destination/ ##复制时创建备份文件

---scp: 主要用于本地主机和远程主机网络间的文件拷贝。

参数:

-r: 可以递归的传输整个目录下的子目录及文件;

-P: 如果远程主机的ssh服务器端口号不是22, 则可使用-P来指定端口号;

-1: 强制scp命令使用协议ssh1

-2: 强制scp命令使用协议ssh2

-4: 强制scp命令只使用IPv4寻址

-6: 强制scp命令只使用IPv6寻址

-B: 使用批处理模式(传输过程中不询问传输口令或短语)

-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)

-p: 保留原文件的修改时间,访问时间和访问权限。

-q: 不显示传输进度条。

-v: 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。

-c: cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。

-F: ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。

-i:identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。

-l:limit 限定用户所能使用的带宽,以Kbit/s为单位。

-o:ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,

-S:program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

例子:

scp -r local_dir username@192.168.1.100:/home/share/ ###从本地主机传输文件到远程主机;

scp -r username@192.168.1.100:/home/share/ local_dir/ ###从远程主机传输文件到本地主机;

---cpio: 用来建立、还原备份档的工具。cpio类似tar命令,可以将整个目录和文件备份和还原。

参数:

-o: 将数据copy输出到文件或设备上

-B: 让预设的Blocks可以增加至5120bytes

-i: 将数据自文件或设备copy出来系统当中

-d:自动建立新目录, 使用cpio所备份的数据内容不见得会在同一层目录中。

-u: 自动的将较新的文件覆盖较旧的文件。

-t: 需配合-i选项,可用在"查看"以 cpio 建立的文件或设备的内容

-v :让储存的过程中文件名可以在屏幕上显示

-c :一种较新的portable format方式储存

例子:

# find /home/test/ | cpio -ovcB > [file|device] ###借用find 使用管道进行文件备份

# cpio -ivcdu < [file|device] ###还原

# cpio -ivct < [file|device] ###查看

---file: 用于查看给定文件的类型和格式;

参数:

-b: 简要模式,仅显示文件的类型,不显示文件名

-i: 显示 MIME 类型

-z: 对压缩文件进行解压缩,然后判断文件类型。

-e: 显示魔法师頁面中的魔术記錄

-n: 设定知文件的名称或路径(默认为/usr/share/misc/magic)

例子:

file cfg80211.ko; #查看ko文件的类型和格式信息;

file xxx.so #查看xxxx.so共享库格式信息;



---touch:用于创建新文件或者修改文件时间戳的命令

参数:

-a:只更改访问时间

-c: –no-create 不创建任何文件

-d:–date=字符串 使用指定字符串表示时间而非当前时间

-m: 只更改修改时间.

-t:time使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数:[[CC]YY]MMDDhhmm[.SS]这里,CC为年数中的前两位,即“世纪数”

例子:

touch aaa.txt ###如果文件存在,将更新修改时间戳信息;

touch -d ‘14 May’ file

touch -d ‘14:24’ file

touch -t 2022010502 file02


---lsof: 可以列出当前系统已经打开的所有文件(包括常规文件,网络socket,设备文件等)

使用方法:

lsof file:显示开启文件file的进程

lsof -c abc: 显示abc进程现在打开的文件

lsof -cp 1234: 列出进程号为1234的进程所打开的文件

lsof -g gid: 显示归属gid的进程情况

lsof +d /usr/local/: 显示/usr/local/目录下被进程开启的文件

lsof +D /usr/local/: 同上,但是会搜索目录下的目录(即递归搜索),时间较长

lsof -d 10: 显示fd为10的进程;

lsof -i: 用以显示符合条件的进程情况

lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

--46 --> IPv4 or IPv6

--protocol --> TCP or UDP

--hostname --> Internet host name

--hostaddr --> IPv4地址

--service --> /etc/service中的 service name (可以不止一个)

--port --> 端口号 (可以不止一个)

例子:

lsof -p 30297 ##列出进程id为30297的进程所打开的文件

lsof -D /tmp ##显示所有在/tmp目录下打开文件的进程

lsof /etc/passwd ##查看哪个进程在占用/etc/passwd

lsof /dev/sda1 ##查看哪个进程在占用sda1

lsof -c sendmail ##查看sendmail进程现在打开的文件

lsof -c courier -u ^zahn ##显示出哪些文件被以courier打头的进程打开,但是并不属于用户zahn

lsof -u1000 ##查看uid是1000的用户的进程的文件使用情况

lsof -utony ##查看用户tony的进程的文件使用情况

lsof -u^tony ##查看不是用户tony的进程的文件使用情况(^是取反的意思)

lsof -i ##显示所有已经打开的端口

lsof -i:80 ##查看80端口被哪个进程占用

lsof -i -U ##显示所有打开的端口和UNIX domain文件

---ln:是为某一个文件或目录在另外一个位置建立同步的链接,

这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件

参数:

-b: 删除,覆盖目标文件之前的备份。

-d: 建立目录的硬连接。

-f: 强行建立文件或目录的连接,不论文件或目录是否存在。

-i: 覆盖既有文件之前先询问用户。

-n: 把符号连接的目的目录视为一般文件。

-s: 对源文件建立软链接(符号连接),而非硬连接。

-S: 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",可通过"-S"参数来改变它。

-v: 显示指令执行过程信息。

例子:

ln -sf color.sh linkcolor ##给文件创建软链接

ln color.sh lncolor ## 给文件创建硬链接,color.sh与lncolor的各项属性相同

补充:软链接和硬件链接的区别:

1. 本质:

---软硬件链接:是指向文件名的,相当于快捷方式;

---硬件链接: 是指向文件inode的编号,在同一个分区中,多个文件拥有相同的inode号;不同分区,inode编号也会不一样的;

2. 区别:

---软链接可以跨分区而硬链接不可以跨分区;

---删除文件的硬链接文件,对源文件及链接文件无任何影响;删除源文件,软链接无法使用;

---diff: 是一个用于比较两个文件或目录之间差异的命令。

它可以显示两个文件之间的行级别差异,并以易于阅读的格式输出结果。

参数:

-c:以上下文格式显示差异。

-u:以统一格式显示差异。

-r:递归比较目录及其子目录中的文件。

-i:忽略大小写比较文件的差异。

-w:忽略所有空格比较文件的差异。

-B:忽略空白行比较文件的差异。

-q:仅显示差异的文件名,不显示具体差异内容。

-s:仅显示没有差异的文件名。

-y:以并列格式显示差异。

-l:显示文件名,而不显示具体差异内容。

-L <标签>:为每个文件指定标签,用于在显示差异时标识文件。

-N:将缺失的文件视为空文件。

-p:生成补丁文件。

-P:将补丁文件应用到文件。

diff命令的输出结果通常以<和>符号来表示差异。<表示文件1中的内容,>表示文件2中的内容。

具体的差异行会以-或+符号开头,表示删除或添加的行。

除了比较文件之外,diff命令还可以比较目录。当比较目录时,diff命令会递归比较目录下的文件,并显示文件之间的差异。

例子:

diff -c file1.txt file2.txt ##比较两个文件的差异并显示上下文

diff -i file1.txt file2.txt ##忽略大小写比较文件的差异

diff -w file1.txt file2.txt ##忽略所有空格比较文件的差异

diff -B file1.txt file2.txt ##忽略空白行比较文件的差异

diff -r dir1 dir2 ##比较两个文件夹的差异

diff -u file1.txt file2.txt > patch_file.patch ##使用diff工具来生成patch包;

patch original_file.txt patch_file.patch ##生成的补丁文件应用到其他文件

---patch:此命令用于将补丁文件应用到源代码文件中,从而实现对源代码的修改;

参数:

-p<num>:指定剥离路径的级别。例如,-p1表示剥离一级路径,-p2表示剥离两级路径。

-d <目录>:指定应用补丁的目录。

-R:撤销已应用的补丁。

-s:安静模式,不显示详细的输出信息。

-N:允许添加新文件。

-i <补丁文件>:指定补丁文件的路径。

例子:

patch -p1 < patchfile ##应用补丁文件到当前目录下的源代码文件

patch -d /path/to/directory -p1 < patchfile ##在指定目录下应用补丁文件

patch -R < patchfile ##撤销已应用的补丁

patch -s -p2 < patchfile ##指定路径剥离级别为2,应用补丁文件

patch -N -p1 < patchfile ##允许添加新文件,应用补丁文件

patch -d /path/to/directory -p1 -i patchfile ##在指定目录下应用补丁文件,并指定补丁文件的路径。

---dd: 用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,此命令在磁盘copy时或系统恢复时非常有用;

参数:

if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

(注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效)

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

conv=conversion:用指定的参数转换文件。

例子:

dd if=/dev/hdb of=/dev/hdc ##将本地的/dev/hdb整盘备份到/dev/hdc

dd if=/dev/hdb of=/backup/systemdata.img ##将/dev/hdb全盘数据备份到指定路径的systemdata.img文件

dd if=/backup/systemdata.img of=/dev/hdb ##将备份文件恢复到指定盘

dd if=/dev/hdb | gzip > /root/image.gz ##备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

gzip -dc /root/image.gz | dd of=/dev/hdb ##将压缩的备份文件恢复到指定盘

dd if=/dev/hda of=/root/mbr.img count=1 bs=51 ##备份与恢复MBR.备份磁盘开始的512个字节大小的MBR信息到指定文件

dd if=/root/mbr.img of=/dev/had ##恢复mbr数据

dd if=/dev/cdrom(hdc) of=/bakup/cdrom.iso ##拷贝光盘内容到指定文件夹,并保存为cdrom.iso文件

dd if=/dev/urandom of=/dev/hda1 ##销毁磁盘数据

###通过以下两个命令输出的命令执行时间,可以计算出硬盘的读、写速度

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234 ###利用netcat远程备份

netcat -l -p 1234 | dd of=/dev/hdc bs=16065b ##在源主机上执行此命令备份/dev/hda

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img

补充说明:/dev/null和/dev/zero的作用

---/dev/null,外号叫无底洞,你可以向它输出任何数据;它等价于一个只写文件,所有写入它的内容都会永远丢失

一般用来禁止标准输出和标准错误的输出:

cat $filename 2>/dev/null >/dev/null

--- /dev/zero 它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的),主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件;

另一个应用是为特定的目的而用零去填充一个指定大小的文件

if=/dev/zero of=./test.txt bs=1k count=1

(更新待续)

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: