目录
4. touch一个已有的文件,可以改变文件的修改时间 并且不会改变其内容
5. 符号链接(ln -s) 和 硬链接(ln) 都必须在原文件存在的情况下 才能创建
8. tree 是个好工具,可以直接显示某目录下的 子目录和文件结构(但需要另外安装, 是个外部命令)
14. sort (sort -t ':' -k 3 -n /etc/passwd)
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