ubuntu-base-commands

本文介绍了 Linux 中常用的 shell 命令,包括文件处理、流程控制等,并讲解了如何利用 bash 进行 shell 脚本编程。还涵盖了管道、重定向、变量使用等高级特性。

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

references:
http://home.lupaworld.com/home-space-uid-94908-do-blog-id-32301.html
http://sucre.iteye.com/blog/587673

Linux中有许多种不同的shell,通常我们使用bash (bourne again shell) 进行shell编程,因为bash不仅免费(自由)且易于使用
#!/bin/sh 符号#!用来告诉系统执行该脚本的程序,(必须放在文件的第一行)
所有变量都由字符串组成,并且不需要声明。
hmod +x filename # 使其可执
防止混乱
echo "this is the ${num}nd"

在shell脚本中可以使用三类命令:
1) Unix 命令:
#vvvvvv 以下命令可以--help查看具体细节 vvvvv
wc –l file wc -w file wc -c file: 分别计算文件的行数(line)、单词数(word,以空格为分格)和字符数(character)
grep 'pattern' file: 在文件内搜索字符串或和正则表达式匹配的字符串,pattern前后引号可用双引号,或去掉;
cut -c column file: 将指定范围内的文件内容输出到标准输出设备(屏幕)上。比如:输出每行第5至9个字符 cut -b5-9 file.txt
cat file.txt: 输出文件内容到标准输出设备(屏幕)上

file somefile: 取得文件somefile的文件类型

read var: 提示用户输入,并将输入内容赋值给变量var;可以通过$var取得,如echo $var

sort file.txt: 对file.txt文件所有行进行排序,对于非字符将去掉再排序;
uniq: 只输出文件中内容不一致/重复的行,如: sort file.txt | uniq;uniq file
expr: 进行数学运算,如要进行2+3的运算,命令为: expr 2 '+' '3'
find: 搜索文件,如根据文件名搜索:find . -name <filename> -print
tee: 将数据输出到标准输出设备(屏幕) 和文件,相当生成新的文件,比如:somecommand | tee outfile,如sort a.txt | tee b.txt
basename file: 返回不包含路径的文件名,如: basename /bin/tux 会返回 tux
dirname file: 返回文件所在路径,如:dirname /bin/tux 会返回 /bin
head [-n N] file: 打印文本文件开头几行,如果提供-n则打印头几行而不是默认10行;如果-N则不打印最后N行;
tail file : 打印文本文件末尾几行;同上

awk: awk 用来提取文本文件中的字段(不同于cut)。缺省的字段分割符是空格,可以使用 -F 指定其它分割符。cat file.txt | awk -F, '{print $1 "," $3 }',
这里我们使用 , 作为字段分割符,同时打印第一和第三个字段。如果该文件内容为 Adam Bor, 34, IndiaKerry Miller, 22, USA,
则上述命令的输出为:Adam Bor, IndiaKerry Miller
sed(StreamEDitor):为UNIX系统上提供将编辑工作自动化的编辑器(command),使用者无需直接编辑资料。

2) 概念
管道 (|) 将一个命令的输出作为另外一个命令的输入。
 grep "hello" file.txt | wc -l    #可以连续书写多个类似命令
重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。
代码:
  > 写入文件并覆盖旧文件
  >> 加到文件的尾部,保留旧文件内容。
反引号(backtick,即"`")
  使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。
 tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`    #1小时内修改的文件打包

3) 流程控制
查看更多测试表达式:man test
if ....; then
  ....
elif ....; then
  ....
else
  ....
fi

case表达式可以用来匹配一个给定的字符串,而不是数字。
case ... in
...) do something here ;; #must use double ';'
esac
e.g.:
#!/bin/sh
ftype=`file "$1"`    #$1代表命令行输入的第一个参数 
echo $ftype
case "$ftype" in
"$1: Zip archive"*)    #匹配模式,代表以$1: Zip archive开头的字符串
unzip "$1" ;;
"$1: gzip compressed"*)
  gunzip "$1";;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) echo "File $1 can not be uncompressed with smartzip";;
esac

(no this command in ubuntu10)
select var in ... ; do
 break;
done
.... now $var can be used ....

while ...; do
   ....(or continue,break)
done

for var in ....; do
   $var can be used....
done


引号
在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓的扩展是指程序会把通配符(比如*)替换成适当的文件名,把变量替换成变量值。我们可以使用引号来防止这种扩展
a.引号(单引号和双引号)可以防止通配符*的扩展,通配作普通字符看待
b.其中单引号更严格一些,它可以防止任何变量扩展;而双引号可以防止通配符扩展但允许变量扩展(变量优先,没有则以普通字符看待)

当要将几行文字传递给一个命令时,用here documents是一种不错的方法
比如对每个脚本写一段帮助性的文字是很有用的,此时如果使用here documents就不必用echo函数一行行输出。
here document(use for comment)
cat << flag comment-to-write.....
flag

[编辑] Shell里的函数
functionname()
{
# inside the body $1 is the first argument given to the function
# $2 the second ...
body
}
#later usage:functionname (note:no '()' ended with functionname)

sh -x strangescript
上述命令会执行该脚本,同时显示所有变量的值。

sh -n your_script
这个命令会返回所有语法错误。





ubuntu@ubuntu-SYS-420GP-TNR:~/data0/tkr/SafeVLA$ find / /usr /lib /lib64 /var -name "libnvidia-uvm.so*" 2>/dev/null ubuntu@ubuntu-SYS-420GP-TNR:~/data0/tkr/SafeVLA$ lsmod | grep nvidia_uvm nvidia_uvm 4956160 22 nvidia 54390784 2918 nvidia_uvm,nvidia_modeset ubuntu@ubuntu-SYS-420GP-TNR:~/data0/tkr/SafeVLA$ nvidia-smi Wed Aug 6 15:02:43 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.142 Driver Version: 550.142 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA RTX A6000 Off | 00000000:4F:00.0 Off | Off | | 30% 27C P8 19W / 300W | 55MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 NVIDIA RTX A6000 Off | 00000000:52:00.0 Off | Off | | 30% 29C P8 18W / 300W | 19MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 2 NVIDIA RTX A6000 Off | 00000000:56:00.0 Off | Off | | 42% 69C P2 231W / 300W | 48591MiB / 49140MiB | 54% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 3 NVIDIA RTX A6000 Off | 00000000:57:00.0 Off | Off | | 30% 31C P8 23W / 300W | 20MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 4 NVIDIA RTX A6000 Off | 00000000:CE:00.0 Off | Off | | 30% 28C P8 24W / 300W | 2635MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 5 NVIDIA RTX A6000 Off | 00000000:D1:00.0 Off | Off | | 30% 29C P8 19W / 300W | 22MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 6 NVIDIA RTX A6000 Off | 00000000:D5:00.0 Off | Off | | 30% 29C P8 24W / 300W | 27MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 7 NVIDIA RTX A6000 Off | 00000000:D6:00.0 Off | Off | | 30% 32C P8 27W / 300W | 6425MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 0 N/A N/A 2120089 G ...YorkCity/Binaries/Linux/NewYorkCity 4MiB | | 0 N/A N/A 2379844 G ...or/CarlaUE4/Binaries/Linux/CarlaUE4 4MiB | | 0 N/A N/A 2379994 G ...or/CarlaUE4/Binaries/Linux/CarlaUE4 4MiB | | 0 N/A N/A 2939041 G ...or/CarlaUE4/Binaries/Linux/CarlaUE4 4MiB | | 0 N/A N/A 3941170 G ...7758586e05d18f6181f459c0e90ba318bec 4MiB | | 0 N/A N/A 3942052 G ...7758586e05d18f6181f459c0e90ba318bec 4MiB | | 1 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 2 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 2 N/A N/A 3638165 C python 5730MiB | | 2 N/A N/A 3641013 C python 5730MiB | | 2 N/A N/A 3644000 C python 5840MiB | | 2 N/A N/A 3931289 C Train-0 24264MiB | | 2 N/A N/A 3932076 C Valid-0 1102MiB | | 2 N/A N/A 3941170 C+G ...7758586e05d18f6181f459c0e90ba318bec 2729MiB | | 2 N/A N/A 3942052 C+G ...7758586e05d18f6181f459c0e90ba318bec 3141MiB | | 3 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 4 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 4 N/A N/A 2120089 C+G ...YorkCity/Binaries/Linux/NewYorkCity 2577MiB | | 5 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 6 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 7 N/A N/A 2996 G /usr/lib/xorg/Xorg 4MiB | | 7 N/A N/A 2379844 C+G ...or/CarlaUE4/Binaries/Linux/CarlaUE4 2097MiB | | 7 N/A N/A 2379994 C+G ...or/CarlaUE4/Binaries/Linux/CarlaUE4 2120MiB | | 7 N/A N/A 2939041 C+G ...or/CarlaUE4/Binaries/Linux/CarlaUE4 2065MiB | +-----------------------------------------------------------------------------------------+ ubuntu@ubuntu-SYS-420GP-TNR:~/data0/tkr/SafeVLA$ nvidia-container-toolkit Usage of nvidia-container-toolkit: -config string configuration file -debug enable debug output -version enable version output Commands: prestart run the prestart hook poststart no-op poststop no-op
08-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值