Linux命令行与shell脚本编程之笔记(1)

这篇博客汇总了Linux系统的常用命令,包括读取脚本名、访问CLI、元字符通配符、文件管理(touch、ln、mv)、进程管理(ps、top、kill)、磁盘使用情况(du)、文件排序(sort)以及文本搜索(grep)。内容涵盖了日常系统操作和文件维护的关键技巧。

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

目录

1. 读取脚本名

2. 通过 Linux 控制台终端访问 CLI

3. 元字符通配符 之 [] 中括号

4. touch一个已有的文件,可以改变文件的修改时间 并且不会改变其内容

5. 符号链接(ln -s) 和 硬链接(ln) 都必须在原文件存在的情况下 才能创建

6. mv可以在用来在本地更改文件名

7. -i 是个好习惯( 询问 y/n? )

8. tree 是个好工具,可以直接显示某目录下的 子目录和文件结构(但需要另外安装, 是个外部命令)

9. head 和 tail

10. ps命令  (ps -f)

11. top命令

12. kill or killall

13. du  (du -h)

14. sort (sort -t ':' -k 3 -n /etc/passwd)

15. grep  ( -v -n -e [ ] )


1. 读取脚本名

$0参数获取shell在命令行启动的脚本名,但$0会同时捕捉 命令语句和路径名(如果执行的时候包含的话)

$ ./test5.sh
The zero parameter is set to: ./test5.sh
$

这时候,我们就可以用到 basename

basename命令 会返回不包含路径的脚本名:

$ cat test5b.sh
#!/bin/bash
# Using basename with the $0 parameter
#
name=$(basename $0)     # Get the file name
echo
echo The script name is: $name
#
$ bash /home/Christine/test5b.sh
The script name is: test5b.sh
$
$ ./test5b.sh
The script name is: test5b.sh
$

2. 通过 Linux 控制台终端访问 CLI

ctrl+alt+F3或F5,切换到命令行终端 CLI

ctrl+alt+F1或F2 切换回 图形界面


3. 元字符通配符 之 [] 中括号

my_scr[ai]pt  --> my_scrapt   my_script    小范围

f[a-i]ll    --> fall fbll fcll ... fill    大范围

f[!a]ll   -->  fbll fcll ...  非范围


4. touch一个已有的文件,可以改变文件的修改时间 并且不会改变其内容


5. 符号链接(ln -s) 和 硬链接(ln) 都必须在原文件存在的情况下 才能创建

符号链接  更像是 快捷方式, 体积极小,inode号跟原文件不一样

ln -s 原文件  符号链接

硬链接 更像是 镜像, 体积和inode号 跟原文件 完全一样

ln 原文件  硬链接

符号链接 和 硬链接 都可以像原文件一样被执行,并且对它们的修改会对原文件产生同步影响。


6. mv可以用来在本地更改文件名


7. -i 是个好习惯( 询问 y/n? )


8. tree 是个好工具,可以直接显示某目录下的 子目录和文件结构(但需要另外安装, 是个外部命令)

cjh@cjh-PC:~$ tree C_Program/
C_Program/
├── 01_chrdevbase
│   ├── 1_chrdevbase.code-workspace
│   ├── chrdevbaseApp
│   ├── chrdevbaseApp.c
│   ├── chrdevbase.c
│   ├── chrdevbase.ko
│   ├── chrdevbase.mod.c
│   ├── chrdevbase.mod.o
│   ├── chrdevbase.o
│   ├── main
│   ├── Makefile
│   ├── modules.order
│   └── Module.symvers
├── 02_ledc
│   ├── imx6ul.lds
│   ├── imxdownload
│   ├── ledc.bin
│   ├── ledc.code-workspace
│   ├── ledc.dis
│   ├── ledc.elf
│   ├── load.imx
......

9. head 和 tail

head a.txt		// 阅读 a.txt的最前面10行
tail a.txt		// 阅读 a.txt的最后面10行
head -5 b.txt			// 阅读 b.txt的最前面5行
tail -5 b.txt		// 阅读 b.txt的最后面5行

10. ps命令  (ps -f)

在没有参数的情况下,ps只显示运行在当前控制台下的只属于当前用户的进程 及其此时此刻的状态。 (静态状态)

cjh@cjh-PC:~$ ps 
    PID TTY          TIME CMD
  98040 pts/0    00:00:00 bash
  98439 pts/0    00:00:00 ps
cjh@cjh-PC:~$ ps -f
UID          PID    PPID  C STIME TTY          TIME CMD
cjh        98040   98032  0 13:37 pts/0    00:00:00 bash
cjh        98440   98040  0 14:05 pts/0    00:00:00 ps -f

ps的可选参数特别多,-f比较实用,可以显示更多参数


11. top命令

top可以查看当前进程的实时信息


12. kill or killall

 kill命令可通过进程ID(PID)给进程发信号。。默认情况下, kill命令会向命令行中列出的
全部PID发送一个TERM(15 :尽可能终止)信号。

sudo kill 203331

如果强硬的话,可以发送KILL(9 :无条件终止)信号

sudo kill -9 21330

Linux进程信号:

killall命令非常强大,它支持通过进程名而不是PID来结束进程。

sudo killall http*

上例中的命令结束了所有以http开头的进程,比如Apache Web服务器的httpd服务。


13. du  (du -h)

du命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。

即,该目录下所有子目录和所有文件的大小

du -h 比较实用

cjh@cjh-PC:~$ du -h C_Program/
8.0K	C_Program/02_misc/.tmp_versions
112K	C_Program/02_misc
4.0K	C_Program/1_leds/.vscode
240K	C_Program/1_leds
8.0K	C_Program/makeTest/03
48K	C_Program/makeTest/01
8.0K	C_Program/makeTest/02
76K	C_Program/makeTest
12K	C_Program/01_chrdevbase/.vscode
4.0K	C_Program/01_chrdevbase/.dist
8.0K	C_Program/01_chrdevbase/.tmp_versions
160K	C_Program/01_chrdevbase
4.0K	C_Program/05_ledc_bsp/obj
12K	C_Program/05_ledc_bsp/.vscode
3.5M	C_Program/05_ledc_bsp/imx6ul
12K	C_Program/05_ledc_bsp/project
12K	C_Program/05_ledc_bsp/bsp/clk

14. sort (sort -t ':' -k 3 -n /etc/passwd)

sort 默认按照 首字符 升序排列;  -r 降序排列

$ sort file1
five
four
one
three
two

sort -n 数字大小排列

$ sort -n file2
1
2
3
10
45
75
100
145

sort -M 能识别三字符的月份名,并相应地排序

$ sort -M file3
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

-t ':'  以':'作为分隔符;

-k 3 排序从第三个字段开始;

$ sort -t ':' -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
......

结合管道(|):

cjh@cjh-PC:~$ du C_Program/ | sort -nr
8212	C_Program/
3616	C_Program/05_ledc_bsp
3556	C_Program/04_ledc_sdk
3512	C_Program/05_ledc_bsp/imx6ul
240	C_Program/1_leds
160	C_Program/01_chrdevbase
152	C_Program/2_ledDev
144	C_Program/04_led
112	C_Program/02_misc
88	C_Program/02_ledc
76	C_Program/makeTest
64	C_Program/03_ledc_stm32
48	C_Program/makeTest/01
40	C_Program/05_ledc_bsp/bsp
12	C_Program/2_ledDev/.vscode
12	C_Program/05_ledc_bsp/.vscode
12	C_Program/05_ledc_bsp/project
12	C_Program/05_ledc_bsp/bsp/led
12	C_Program/05_ledc_bsp/bsp/delay
12	C_Program/05_ledc_bsp/bsp/clk
12	C_Program/01_chrdevbase/.vscode
8	C_Program/makeTest/03
8	C_Program/makeTest/02
8	C_Program/2_ledDev/.tmp_versions
8	C_Program/04_led/.tmp_versions
8	C_Program/04_ledc_sdk/.vscode
8	C_Program/02_misc/.tmp_versions
8	C_Program/02_ledc/.vscode
8	C_Program/01_chrdevbase/.tmp_versions
4	C_Program/1_leds/.vscode
4	C_Program/05_ledc_bsp/obj
4	C_Program/03_ledc_stm32/.vscode
4	C_Program/01_chrdevbase/.dist

15. grep  ( -v -n -e [ ] )

在文件内部,按行检索

$ grep t file1        # The lines that contain t
two
three
$ grep -v t file1        # -v: The lines that exclude t
one
four
five
$ grep -n t file1       # -n: Show the line No.
2:two
3:three
$ grep -e t -e f file1     # -e: More that one pattern
two
three
four
five
$ grep [tf] file1          # [] More that one pattern (regular expressions)
two
three
four
five

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值