【常用】Linux基础命令:系统操作与文本编辑入门实践

一、系统信息与目录定位命令

1.1 用户与主机信息

命令功能示例输出示例
whoami显示当前登录的用户名whoamiroot
who显示关于当前在本地系统上的所有用户的信息whouser1 pts/0 Aug 20 09:15
w显示当前登录到系统中的用户及其进程的信息w包含USER/TTY/LOAD的详细列表
hostname显示当前机器的主机名hostnameubuntu-server

补充:

hostnamectl set-hostname db  #更改主机名为db(重新登录时生效)
useradd zeal    #添加用户zeal

su - zeal       #切换登录用户zeal

1.2 目录操作

命令功能示例示例
pwd显示当前(绝对)路径(print working directory)pwd/home/user/docs
cd切换目录(change directory)cd . (进入当前目录)
cd .. (进入上级目录)
cd - (返回上次目录)
cd ../downloads
# 典型操作流
$ cd /var/log
$ pwd
/var/log
$ cd -
/home/user

补充:以树状结构显示文件夹/opt中的内容:

tree /opt

二、目录与文件管理

2.1 查看与创建目录

ls    # list directory contents
	-a #显示所有文件(包括隐藏文件)  
	-l #以长格式显示文件信息(包括文件类型、权限、硬链接数、所有者、所属组、大小和修改时间等) 
	-h #以易读的格式显示文件大小(如KB、MB)  
	-S #按文件大小排序 
	-t #按最后修改时间排序文件 
	-r #逆序显示文件和目录  
	-F #标识文件类型(目录/可执行文件*) 
	-d #仅显示目录本身,而不显示其内容  
	-i #显示文件的索引节点号(inode) 
	--full-time #使用完整的日期和时间格式显示文件和目录的修改时间 
mkdir    # make directory
	mkdir dir1 dir2 dir3  
#创建dir1、dir2、dir3目录
	mkdir -p dir4/dir401 
#在dir4目录下创建一个子目录dir401,若dir4不存在则会创建一个(去掉-p则会报错)
命令功能关键选项示例
ls列出目录内容-a (显示隐藏文件)
-l (详细列表)
-h (易读大小)
ls -lht
mkdir创建目录-p (创建多级目录)mkdir -p project/{src,backup}

ls 参数组合详解

# 按时间倒序显示详细信息(含隐藏文件)
$ ls -alth
-rw-r--r-- 1 user group  12K Aug 20 10:00 .bashrc
drwxr-xr-x 2 user group 4.0K Aug 19 09:00 .cache

2.2 删除操作

rmdir  删除空目录  
	rmdir dir4/dir401 
#删除空目录dir401
	rmdir -p dir4/dir401 
#删除空目录dir401,若子目录dir401被删除后父目录dir4为空,则父目录dir4一并删除
	rmdir  dir*  
#删除名称以dir开头的空目录

rm  rm -f  
#(force)强制删除文件,不提示确认,即使文件是只读的或不存在  
	rm -i  
#(interactive)交互式删除文件,在每个文件被删除之前,提示用户确认
	rm -r  
#(recursive)递归删除目录及其内容
命令功能危险等级示例
rmdir删除空目录★☆☆☆☆rmdir empty_dir
rm删除文件/目录★★★★★rm -rf temp/

安全删除实践

# 交互式删除(推荐新手)
$ rm -i old_file.txt
rm: remove regular file 'old_file.txt'? y

# 递归删除目录(慎用!)
$ rm -r deprecated_code/

三、文件内容操作

3.1 查看与统计

cat   # concatenate
	cat -n 1.txt   #显示文件1.txt的内容,并给每一行加上行号。--number
	cat -b 1.txt   #显示文件1.txt的内容,并仅对非空白行加上行号。--number-nonblank
	cat -s 1.txt   #显示文件1.txt的内容,并压缩多行空白行到一行。--squeeze-blank
	cat -E 1.txt   #显示文件1.txt的内容,并在每行行尾标记$。--show-ends
	cat -T 1.txt   #显示文件1.txt的内容,并显示制表符\t。--show-tabs
	cat 1.txt 2.txt > 3.txt   #连接文件1.txt和2.txt,并将结果输出到文件3.txt。
wc  # word count  统计文件中的行数、单词数、字节数和字符数。
	wc #默认情况下,wc 命令会同时显示行数、单词数和字节数。
	-l   #统计文件的行数。--lines
	-w   #统计文件的单词数。单词是指由空格、制表符或换行符分隔的非零长度字符序列。--words
	-c   #统计文件的字节数。字节数是指文件中所有字符占用的字节数。--bytes
	-m   #统计文件的字符数。字符数是指文件中所有字符的数量,包括多字节字符。--chars
	-L   #显示文件中最长行的长度。--max-line-length
命令功能关键选项示例
cat显示文件内容-n (显示行号)
-b (跳过空行编号)
cat -n server.log
wc统计文本数据-l (行数)
-w (单词数)
wc -l access.log

cat 高级用法

# 合并多个文件
$ cat part1.txt part2.txt > complete.txt

# 显示文件内容并标记特殊字符
$ cat -ET config.conf
echo "Hello"^I# 制表符显示为^I$

3.2 文本处理

cut - 精准切割
cut   
    -c  #以字符为单位进行分割截取
    -d  #自定义分隔符,默认为制表符\t
    -f  #与-d一起使用,指定截取哪个区域
    -b  #以字节为单位进行分割截取,通常与-n一起使用(适用于分割内容中包含汉字)

	cut -c 1-5 1.txt  #每一行截取第1到第5共5个字符
    cut -c -5 1.txt  #每一行截取第1到第5共5个字符
    cut -c 1,2,3,4,5 1.txt  #每一行截取第1到第5共5个字符
	cut -c 4- 1.txt  #每一行截取第4到行尾的字符。
	cut -c 1,5 1.txt  #每一行截取第1和第5共2个字符。
	cut -d ':' -f 1,7 1.txt  #以“:”分割,每行取第1和第7个分割区域。

使用场景示例: 

# 提取/etc/passwd的用户名和shell
$ cut -d: -f1,7 /etc/passwd
root:/bin/bash
daemon:/usr/sbin/nologin
sort - 智能排序
sort  -r  #反转排序结果,即降序排列。
	sort 1.txt  #基础排序:对文件内容进行默认排序。
	sort -n 1.txt  #数值排序:按照数值大小进行排序(默认升序)。
	sort -u 1.txt  #去重排序:去除重复行,只保留唯一的行,并排序。
	sort -t ':' -k 2 1.txt  #按列排序:以":"为分隔符,按第2列排序。

使用场景示例: 

# 按数值倒序排列
$ sort -nr data.txt
100
45
32
uniq - 去重统计
uniq   # unique  基于相邻行之间的比较,检查和删除文本文件中重复出现的行
#这意味着 uniq 只会移除连续的重复行,对于非连续的重复行则无能为力
#因此,实际应用中,uniq 通常与 sort 结合使用,以确保所有相同行都是相邻的,从而能够被正确地处理

	-c  #在每行前加上此行共计出现的次数。--count
	-d  #只输出重复的行,每个重复组只显示一次。--repeated
	-u  #只显示唯一的行,即那些没有重复的行。--unique

	sort -n 1.txt | uniq -cd  #输出重复行,并显示出现次数
	sort -n 1.txt | uniq -cu  #输出唯一行,并显示出现次数(1)

使用场景示例: 

# 统计IP访问次数
$ cut -d' ' -f1 access.log | sort | uniq -c
   142 192.168.1.10
    89 203.0.113.5

3.3 字符转换工具

tr   # Text Replacer   从标准输入中通过替换或删除操作进行字符转换。
     # tr 只能进行字符的替换、缩减和删除,不能用来替换字符串。

	echo "hello" | tr 'h' 'H'  
#字符替换:输出Hello
	echo "hello world" | tr 'a-z' 'A-Z'  
#字符集转换:将小写字母转换为大写:输出HELLO WORLD
	echo "hello 123" | tr -d '123'  
#--delete删除字符:输出hello  
	echo "aaabbbccc" | tr -s 'ac'  
#--squeeze-repeats压缩重复字符:输出abbbc
	tr -s '\n' < 1.txt	  #删除文件里面的空白行。
命令功能典型场景示例
tr字符替换/删除格式转换tr 'a-z' 'A-Z' < input.txt

实战案例

# 删除Windows换行符
$ tr -d '\r' < win_file.txt > unix_file.txt

# 压缩连续空行
$ tr -s '\n' < messy.log > clean.log

四、命令常用参数组合实例(核心参数)

命令常用参数组合功能说明
ls-lhtr按时间逆序显示详细信息
rm-iv交互式删除并显示过程
sort-nru数值去重降序排列
mkdir-pv显示多级目录创建过程

五、避坑指南

  1. 路径验证

    # 删除前务必确认路径
    $ ls /tmp/important_files/  # 先查看
    $ rm -rf /tmp/important_files  # 后操作
  2. 防止误覆盖

    # 使用noclobber防止重定向覆盖
    $ set -o noclobber
    $ echo "new" > existing.txt
    -bash: existing.txt: cannot overwrite existing file
  3. 时间戳陷阱

    # 修改时间时注意时区
    $ TZ=UTC touch -t 202308201200 file.txt

验证说明:所有命令在Ubuntu 22.04 LTS和CentOS Stream 9实测通过,关键操作均提供安全警告。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

EchoZeal

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

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

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

打赏作者

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

抵扣说明:

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

余额充值