shell常用命令
- Shell常用命令
- Shell字符串
- Shell脚本
Shell常用命令
Shell 常用命令包括文件和目录操作、文本处理、系统管理等,以下是一些常用的命令及其用法:
文件和目录操作:
cd:切换当前目录,例如 cd /home 进入 /home 目录,cd .. 返回上一级目录。
pwd:显示当前工作目录的完整路径。
ls:列出目录内容,常用参数包括 -a(显示隐藏文件)、-l(显示详细信息)、-F(显示文件类型)。
chmod:改变文件或目录的权限,例如 chmod 755 aaa.txt 或者 chmod +x aaa.sh
chown:改变文件或目录的所有者和所属组,例如 chmod www:www aaa.txt
mkdir:创建目录,例如 mkdir -p 1/2/3 创建多级目录。
rmdir:删除空目录,例如 rmdir -p 1/2/3 删除多级空目录。
cp:复制文件或目录,例如 cp -r a b 复制目录 a 并命名为 b。
mv:移动或重命名文件或目录,例如 mv a b 将 a 移动到 b 或重命名为 b。
rm:删除文件或目录,常用参数包括 -i(删除前询问)、-r(递归删除)、-f(强制删除)。
find 查找文件或文件目录,find ./ -name aaa.txt 查找当前目录下 aa.txt文件
grep 正则查找文本,例如 grep -rl 'www.baidu.com' ./ 查找当前目录下所有含有 www.baidu.com 文本的文件
文本处理:
sed:流编辑器,用于文本替换、删除等操作。例如 sed 's/old/new/g' 将所有 old 替换为 new。
awk:文本处理工具,用于模式扫描和处理。例如 awk '{print $1}' file.txt 打印每行的第一个字段。
sort:排序文本文件,例如 sort file.txt 按字典序排序。
uniq:去除重复行,常用参数包括 -c(计数每个唯一行出现的次数)。
系统管理:
df:报告文件系统的磁盘空间使用情况 df -h
du:估算文件和目录的磁盘使用情况 du -sh dir
su:切换用户,例如 su root 切换到 root 用户。
who:显示当前登录的用户信息。
top:实时显示系统中各个进程的资源占用情况。
ps:显示当前运行的进程信息,例如 ps aux 显示所有进程的详细信息。
kill:终止进程,例如 kill PID 终止 PID 对应的进程。
tar:打包和压缩文件,例如 tar -czvf test.tar.gz a.c 将 a.c 压缩为 test.tar.gz。
netstat:查看网络 netstat -ano | grep 80 或 netstat -ntlp | grep 80
systemctl:系统命令 systemctl status mysql
wget:下载文件 wget http://example.com/file.txt
curl:向服务器发送数据 curl http://baidu.com
这些命令在 Shell 中非常常用,掌握它们可以大大提高工作效率和处理系统任务的能力。
Shell字符串
Shell脚本
echo命令
1.6.1 功能说明
用于显示文字。
1.6.2 语法
Echo [-ne] [字符串]或echo [--help] [--version]。
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。
-n不进行换行
-e若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出\n换行\b空格...
1.7 常见参数
-n 不要在最后自动换行;
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出;
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v与\f相同;
\\插入\字符;
\nnn插入nnn(八进制)所代表的ASCII字符;
--help 显示帮助;
--version 显示版本信息;
8 shell变量
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值,$1是第1参数、$2是第2参数…
$$Shell 本身的PID(ProcessID)
$? 最后运行的命令的结束代码(返回值)
$* 所有参数列表。如“$*”用「“」括起来的情况、以"$1$2…$n"的形式输出所有数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1""$2"…"$n"的形式输出所有参数。
$# 添加到Shell的参数个数。
case选择语句
case expr in
1)
//todo 条件1处理
;;
*)
//todo 默认
;;
esac
随机数和expr命令
echo $RANDOM 范围是:[0,32767]
expr:通用的表达式计算命令,表达式中参数与操作符必须以空格分开,表达式中的运算可以是算术运算,比较运算,字符串运算和逻辑运算。
例:expr 5 % 3 Expr 5 \* 3 #乘法符号必须被转义
脚本调试
h–x脚本名
该选项可以使用户跟踪脚本的执行,此时shell对脚本中每条命令的处理过程为:先执行替换,然后显示,再执行它。
shell显示脚本中的 执行时,会在行首添加一个加号“+”。
sh–v脚本名
在执行脚本之前,按输入的原样打印脚本中的各行,打印一行执行一行。
sh–n脚本名
对脚本进行语法检查,但不执行脚本。如果存在语法错误,shell会报错,如果没有错误,则不显示
任何内容。
比较字符串
等于 = str1 = str2
不等于 != str1 != str2
整数比较
等于 -eq [ int1 -eq int2 ]
不等于 -ne [ int1 -ne int2 ]
大于 -gt [ int1 -gt int2 ]
大于等于 -ge [ int1 -ge int2 ]
小于 -lt [ int1 -lt int2 ]
小于等于 -le [ int1 -le int2 ]
等于 = [[ int1 = int2 ]]
不等于 != [[ int1 != int2 ]]
大于 > [[ int1 > int2 ]]
大于等于 >= [[ int1 >= int2 ]]
小于 < [[ int1 < int2 ]]
小于等于 <= [[ int1 <= int2 ]]
逻辑比较
与 -a [ expr1 -a expr2 ]
或 -o [ expr1 -o expr2 ]
非 ! [ ! expr ]
与 && [[ expr1 && expr2 ]]
或 || [[ expr1 || expr2 ]]
非 ! [[ ! expr ]]
文件测试
-f fname
fname 存在且是普通文件时,返回真 ( 即返回 0 )
-L fname
fname 存在且是链接文件时,返回真
-d fname
fname 存在且是一个目录时,返回真
-e fname
fname(文件或目录)存在时,返回真
-s fname
fname 存在且大小大于 0 时,返回真
-r fname
fname(文件或目录)存在且可读时,返回真
-w fname
fname(文件或目录)存在且可写时,返回真
-x fname
fname(文件或目录)存在且可执行时,返回真
控制结构
(1)if条件语句;
(2)case选择语句;
(3)for循环语句;
(4)while循环语句;
(5)until循环语句;
(6)break、continue、sleep命令;
(7)select循环与菜单;
(8)shift命令;
(9)各种括号的作用,${...},$(...),$[...],$((...)),[...],[[...]],((...))。
几种特殊的替换结构
${var:string},${var:+string},${var:=string},${var:?string}
①${var:-string}和${var:=string}:若变量var为空,则用在命令行中用string来替换${var:-string},否则变量var不为空时,则用变量var的值来替换${var:-string};对于${var:=string}的替换规则和${var:-string}是一样的,所不同之处是${var:=string}若var为空时,用string替换${var:=string}的同时,把string赋给变量var:${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。
②${var:+string}的替换规则和上面的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量var的值,即空值。(因为变量var此时为空,所以这两种说法是等价的)
③${var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。
补充扩展:在上面这五种替换结构中string不一定是常值的,可用另外一个变量的值或是一种命令的输出。