【Linux】常用命令(一)

1. ls

ls命令来自于英文单次list的缩写,中文译为“列出”,其功能是显示目录中的文件及其属性信息。

1.1 ls -a 显示所有文件及其目录

可以看到包含了 . 与 ./以及当前目录下的所有文件
在这里插入图片描述

1.2 ls -A 不显示当前目录和父目录

可以看到就没有. 与 ./
在这里插入图片描述

1.3 ls -d 显示目录本身,而不是显示其内部内容

在这里插入图片描述

1.4 ls -i 显示文件的inode属性信息

在这里插入图片描述
inode属性信息:
在 Linux/Unix 文件系统中,每个文件(或目录)在磁盘上都有一个唯一的 inode(索引节点)编号,它存储了该文件的元信息,例如:

  • 文件类型(普通文件、目录、链接等)
  • 权限(rwx)
  • 所有者、组
  • 文件大小
  • 创建、修改、访问时间
  • inode ≠ 文件名,文件名是目录中的映射。
  • 数据块的物理位置(内容不在 inode 中,但 inode 指向内容)

ls -i 可以让你看到文件/目录的唯一标识(inode 号),帮助你判断“两个文件是不是一个”、或者“怎么删除一个删不了的文件”。

1.4.1 实际用途场景

  1. 判断两个文件是不是同一个 (硬链接判断)
ln file1.txt file2.txt   # 创建硬链接
ls -i file1.txt file2.txt

输出:
1234567 file1.txt
1234567 file2.txt
  1. 删除“奇怪名字”的文件
    比如你有一个乱码文件,rm 都删不了(因为文件名输入不出来):
$ ls -i
1237890  ?????

# 删除
find . -inum 1237890 -exec rm -i {} \;

例子
在这里插入图片描述


注意常常也会用md5sum的方式来判断两个文件是否一致
两个文件的 MD5 值完全一致,说明 这两个文件内容是一样的(即使名字不同)

[root@iv-ye20h65dz45i3z346rvs ~]# md5sum log.out log.out.2
a90fb3c7f62c125dd6b786102495a31c  log.out
a90fb3c7f62c125dd6b786102495a31c  log.out.2

在这里插入图片描述

1.5 ls -l 显示文件的详细属性信息

在这里插入图片描述

$ ls -l
-rw-r--r--  1 fanzhen  users  1024 Jul 24 10:00  notes.txt
drwxr-xr-x  2 fanzhen  users  4096 Jul 23 08:30  documents/
字段说明
-rw-r--r--权限字符串(文件类型 + 权限)
1硬链接数量(对目录来说是子目录+1)
fanzhen文件拥有者(用户名)
users所属用户组
1024文件大小(以字节为单位)
Jul 24 10:00最后修改时间
notes.txt文件名
drwxr-xr-x这是一个目录(以 d 开头),权限为 rwx 给 owner,r-x 给 group 和其他人

1.6 ls -R 递归显示所有子文件

在这里插入图片描述

1.7 ls -S 按照文件大小(Size)排序列出当前目录下的文件,默认从大到小排列

1.8 ls -t 最后修改时间排序,最后修改的排到最前面

1.9 ls -lh --time-style=long-iso

在这里插入图片描述

2. cp命令

cp命令来源自英文单次copy的缩写,中文译为“复制”,其功能是复制文件或者目录。


基本语法:

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录/

常用参数

参数含义
-a归档模式,等价于 -dR --preserve=all,即递归复制目录,保持链接、文件属性、时间戳、权限等元信息。适合备份。
-b备份模式,如果目标文件存在,则先备份一份(通常在后面加 ~ 作为扩展名)。
-d复制符号链接本身,而不是其指向的目标。
-f强制复制,如果目标文件无法打开则尝试先删除后复制(不提示)。
-i交互模式,覆盖文件前询问确认(如:overwrite 'file'?)。
-l不复制,创建硬链接(link)到目标,而非复制数据。
-p保留原文件的属性(如时间、权限、所有者等),常用于保留元数据。
-r递归复制目录,包括目录下的所有子目录和文件(-R 是更通用写法)。
-s不复制,创建符号链接(软链接) 到目标。
-v显示详细信息,输出复制的文件路径,适合调试或查看进度。

  1. cp cp file.txt /tmp/ 将file.txt文件复制到/tmp/目录下
  2. 复制并显示过程 cp -v
[fanzhen@hby-10-208-63-198 ~]$ cp -v  示例数据.txt  a
'示例数据.txt' -> 'a/示例数据.txt'
  1. 提示确认再覆盖 cp -i
[fanzhen@hby-10-208-63-198 ~]$ cp -v -i  示例数据.txt  a
cp: overwrite 'a/示例数据.txt'? y
'示例数据.txt' -> 'a/示例数据.txt'
  1. 复制整个目录 cp -r
    注意是现有的a目录 然后复制成为b目录
[fanzhen@hby-10-208-63-198 ~]$ cp -r -i -v  a b
'a' -> 'b'
'a/示例数据.txt' -> 'b/示例数据.txt'
  1. 完整备份目录(包括权限、时间等) ls -a
[fanzhen@hby-10-208-63-198 ~]$ cp -r -i -v  a b
'a' -> 'b'
'a/示例数据.txt' -> 'b/示例数据.txt'
[fanzhen@hby-10-208-63-198 ~]$ ls -lh
total 783M
drwxr-xr-x 2 fanzhen fanzhen          30 Jul 24 21:47 a
drwxr-xr-x 2 fanzhen fanzhen          30 Jul 24 21:50 b
drwxrwx--- 3 fanzhen znxt-usergroup   20 Mar  7 15:57 data00
  1. 备份模式,如果目标文件存在,则先备份一份 cp -b
$ echo "old" > a.txt
$ echo "new" > b.txt
$ cp -b b.txt a.txt

原来的 a.txt 会被覆盖
同时自动生成一个 a.txt~,里面是旧的内容("old")

$ cat a.txt
new
$ cat a.txt~
old
  1. cp -f 是 cp 命令中的 “强制覆盖” 选项,表示 不提示、直接覆盖目标文件,即使目标文件是只读的,也会强制替换。
$ echo "old data" > target.txt
$ chmod 444 target.txt   # 设置只读
$ echo "new data" > source.txt

$ cp -f source.txt target.txt

$ cat target.txt
new data
  1. cp -a 等价于组合使用 -dR --preserve=all,具体作用包括:
功能说明
递归复制目录自动复制整个目录及其子目录、文件(相当于 -R
保留符号链接不跟随符号链接(相当于 -d),复制符号链接本身
保留文件属性包括:权限、时间戳、属主、属组、上下文等(相当于 --preserve=all
保留文件节点如果是设备文件、FIFO、socket 文件,也会原样复制
尽量保持原始结构和元信息适合做备份、打包等操作

3. grep强大的文本搜索工具

常用到的参数

  1. -i 忽略大小写
  2. -n 显示所有匹配的行及其行号
  3. -C 10 显示配置行上下各10行
  4. -E 支持正则
  5. -r 递归查询
  6. -w 精确匹配词

使用举例

[fanzhen@hby-10-208-63-198 logs]$ grep -i -n -C 2 '获取模型列表' log.out

在这里插入图片描述

4. sed命令 批量编辑文本文件

sed 是 Linux 中非常强大的流编辑器(Stream Editor),它以行的形式读取输入,按指定规则进行编辑,然后输出结果,常用于文本替换、插入、删除等操作。

即 sed 是一个在命令行中处理文本的利器,特别适用于对文件批量替换内容、删除行、插入新行等操作。

4.1 常见语法格式

sed [选项] '命令' 文件名
  • '命令':表示 sed 的操作命令,例如:s/pattern/replacement/

  • [选项] 常用有:

    • -n:禁止自动输出,需配合 p 命令手动打印;

    • -i:直接修改文件内容(原地修改),否则只是输出不保存;

    • -e:允许多条命令连用;

    • -r:使用扩展正则(ERE)语法(等价于 --regexp-extended)。

4.2 最常用命令详解

4.2.1 替换命令:s/old/new/

 # 替换每行第一个出现的 old 为 new
sed 's/old/new/' file.txt
 # 替换每行所有的 old 为 new        
sed 's/old/new/g' file.txt      

# 替换每行第二个匹配的 old
sed 's/old/new/2' file.txt        

# 直接修改原文件
sed -i 's/old/new/g' file.txt     

================================================================================================
在这里插入图片描述
在这里插入图片描述

================================================================================================

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


示例1

sed -i 's/2005/2006/' qq.txt 

在这里插入图片描述


示例2

# 只替换第一个 apple
[fanzhen@hby-10-208-63-198 ~]$ echo "apple apple orange" | sed 's/apple/banana/'
     
banana apple orange

4.2.2 删除行:d

查看行号
在这里插入图片描述

在原文的基础上直接删除2 与 3行
在这里插入图片描述

在这里插入图片描述

sed '2d' file.txt            # 删除第 2 行
sed '2,4d' file.txt          # 删除第 2 到 4 行
sed -i '2,4d' file.txt       # 直接在原文删除第 2 到 4 行
sed '/pattern/d' file.txt    # 删除匹配 pattern 的所有行

4.2.3 插入新行:i(insert)

sed -i '2i\Hello world' file.txt       # 原文的基础上在第 2 行前插入新的一行
sed '/pattern/i\---' file.txt          # 在匹配 pattern 的行前插入 ---

在这里插入图片描述

4.2.4 追加新行:a(append)

sed '2a\Hello world' file.txt       # 在第 2 行后插入
sed '/pattern/a\<<< END >>>' file.txt # 匹配 pattern 行之后追加

4.2.5 替换整行:c(change)

sed '3c\This is a new line' file.txt     # 将第 3 行替换为指定内容
sed '/pattern/c\Replaced line' file.txt  # 匹配行被整体替换

4.2.6 打印行:p

sed -n '2p' file.txt           # 只打印第 2 行
sed -n '/pattern/p' file.txt   # 打印匹配 pattern 的行

4.2.7 多个命令组合使用(用 -e 或花括号)

sed -e '1d' -e 's/a/A/g' file.txt    # 第1行删除,然后替换所有 a 为 A

# 或者使用花括号(GNU sed支持)
sed '1,3{ s/foo/bar/; s/hello/world/ }' file.txt

5. 文件对比 diff

5.1 传统diff比较

在这里插入图片描述
在这里插入图片描述

5.2 vimdiff命令对比

vimdiff qq.txt qq.back.txt

在这里插入图片描述
在这里插入图片描述

5.3 diff --side-by-side(并排对比)

[xxxxxx ~]$ diff --side-by-side qq.txt qq.back.txt 
藏书家、作家姜德明先生在1997年出版的书话专集《文林枝叶》中以“   藏书家、作家姜德明先生在1997年出版的书话专集《文林枝叶》中以“
Hello world                                                   | 临沂 临沂 临沂 
                                                              > 临沂 临沂 临沂              
第二点,再从演技以及作品来看吧,因为《人民的名义》里面的很多    第二点,再从演技以及作品来看吧,因为《人民的名义》里面的很多
此后不久,陈凤标进入天津法政专门学校读书,毕业后去关中入陕西    此后不久,陈凤标进入天津法政专门学校读书,毕业后去关中入陕西
看非常了得吧,郭德纲孟非主持的,蛮有意思                        看非常了得吧,郭德纲孟非主持的,蛮有意思
2016年执导《梦的第四区》(联合导演张博维)临沂                  2016年执导《梦的第四区》(联合导演张博维)临沂
张地是一个山东人,从小受到的便是孔孟思想的熏陶,尤其近年来出    张地是一个山东人,从小受到的便是孔孟思想的熏陶,尤其近年来出
东莞市众盛硅橡胶制品有限公司是一家专业从事硅橡胶制品开发设计    东莞市众盛硅橡胶制品有限公司是一家专业从事硅橡胶制品开发设计
没错,这位就是民营企业家——魏桥创业集团董事长张士平              没错,这位就是民营企业家——魏桥创业集团董事长张士平
2000年12月,红旗2000公司正式成立                                2000年12月,红旗2000公司正式成立
《红楼梦》里第二回林如海的嫡妻就病逝了,岳母派人来接林黛玉,    《红楼梦》里第二回林如海的嫡妻就病逝了,岳母派人来接林黛玉,
刘星的饰演者是张一山,张一山现在凭着自己的演技现在在娱乐圈越    刘星的饰演者是张一山,张一山现在凭着自己的演技现在在娱乐圈越
为什么石观音这么厉害还要嫁给柳鹤亭                              为什么石观音这么厉害还要嫁给柳鹤亭
由颜军编写的《明星设计师到我家》精挑细选了诸多明星设计师最新    由颜军编写的《明星设计师到我家》精挑细选了诸多明星设计师最新
周华健看起来还是个帅小伙子,但他的妻子康粹兰满头银发,脸上的    周华健看起来还是个帅小伙子,但他的妻子康粹兰满头银发,脸上的
1997年,倪萍和摄影师王文澜结婚了,1999年,倪萍生了儿子虎子      1997年,倪萍和摄影师王文澜结婚了,1999年,倪萍生了儿子虎子
那孩子是张兴旺和刘巧云生的                                      那孩子是张兴旺和刘巧云生的

在这里插入图片描述

附录

  1. 50个最常用的Unix/Linux命令 http://doc.vrd.net.cn/linux/linux-cmd.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boy快快长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值