安装软件的命令(重点)
sudo dpkg -i 软件安装包的名字
卸载软件的命令(重点)
sudo dpkg -r 软件的名字 (-p是完全卸载)
在线安装
sudo apt-get install 软件名
bzip2 要压缩的文件的名字 bunzip2 要解压缩的文件.bz2
xz 要压缩的文件的名字 unxz 要解压缩的文件.xz
gzip 要压缩的文件的名字 gunzip 要解压缩的文件.gz
归档:(没有压缩) tar -vcf 文件名.tar 要归档的文件夹的名字
拆包: tar -vxf 文件名.tar
tar -jvcf 压缩文件名.tar.bz2 要压缩的文件的名字
tar -Jvcf 压缩文件名.tar.xz 要压缩的文件的名字
tar -zvcf 压缩文件名.tar.gz 要压缩的文件的名字
万能拆包并解压 tar -vxf 压缩文件名.tar.xx
cat 文件名 cat -n 文件名 ---> 显示行号
cat hello.c world.c ----> 回显两个文件的内容到终端
head 文件名 默认前10行
head -n 文件名 ---> n是一个数字,表示显示前n行
tail 文件名 默认后10行
tail -n 文件名 ---> n是一个数字,表示显示后n行
find 路径 -name 文件名字 ---> 从“路径”查看“文件名字”文件
find . -name hello.c ----> 从当前目录下查找hello.c
find / -name passwd ----> 从根目录下查找passwd文件
功能:查看文件属性相关的信息 用法: file 文件名
将/etc/passwd文件拷贝到用户的某个路径下sudo cp /etc/passwd ./
功能:从文件中查找字符串(重要)
格式:grep -参数 "要查找的字符串" 文件的名字或者路径
grep -n "linux" ./passwd ---> 回显行号
grep -nR "linux" ./ ---> 递归查找当前目录下的所有文件,并回显行号
grep -niR "Linux" ./ ---> 不区分大小写
grep -niwR "Linu" ./ ---> 按照单词查找
grep -n "^linux" ./passwd ---> 从文件中查找每行的开头为linux
grep -n "bash$" ./passwd ---> 从文件中查找每行结尾为bash
grep -n "^linux$" ./passwd ---> 从文件中查找每行的开头为linux结尾为linux
ls -1 ./ > 1.txt 清空写入 ls -1 ~ >> 1.txt 追加写入
管道符:将前一个命令的结果作为后一个命令的输入
用法: 命令1 | 命令2 | 命令3 | ............
cat -n passwd | head -46 | tail -1
read 变量名 read name 类似scanf
echo 字符串 echo "字符串" echo '字符串' 都可以
echo ${name} 类似printf
echo输出字符串之后默认会将光标定位到下一行的行头 自动换行
截取格式: cut -d "分隔符" -f 域 文件名及路径
cut -d ":" -f 1,6 /etc/passwd > user.txt
常和grep 管道符一起使用
grep "^linux" /etc/passwd | cut -d ":" -f 3-4
cat /etc/passwd | head -46 | tail -1 | cut -d ":" -f 3-4
touch a1.c a2.c a3.c touch可以创建多个文件
通配符 * ----> 匹配多个字符 ? ----> 匹配1个字符
[] ----> 匹配中括号中的一个字符 a[^a-d].c ----> 匹配除了abcd
sudo shutdown 关机 reboot 重启
-rw-rw-r-- 1 linux linux 75 Oct 16 23:12 hello.c
| | | | | | |-----> 所属的组
| | | | | |----> 所属用户 a---all
| | | | |----> 硬链接数
| | | |----> 其他用户权限 o---other
| | |-----> 所属组的权限 g---group
| |----> 所属用户权限 4 2 1 u ---user
|------> 文件类型
bsp-lcd : 块设备文件/套接字文件/管道文件/普通文件/链接文件/字符设备文件/目录
+ ----> 添加权限 - ----> 移除权限 = ----> 修改权限
chmod 修改文件权限 chmod a+x 文件的名字 chmod 0777 文件的名字
chown 修改用户和组的权限 chown 修改所属用户名:修改所属组名 文件名
chown :修改所属组名 文件名 chown 修改所属用户名 文件名
软连接 ln -s 绝对路径/被软链接的文件的名字 绝对路径/创建的软链接文件的名字
ln -s /mnt/hgfs/共享文件夹的名字 /home/linux/windows_share
硬链接 ln 绝对路径/被链接的文件名 绝对路径/硬链接的文件名
linux@ubuntu:DC22091$ ls /dev/sd* -l ---> 查看ubuntu系统下的块设备文件
brw-rw---- 1 root disk 8, 0 Oct 17 19:05 /dev/sda1
sd[a-z][1-9]
| |----> 块设备文件对应的分区
|----> 用来表示哪个块设备
挂载U盘
1. 在/mnt目录下创建udisk文件夹 sudo mkdir /mnt/udisk
2. 使用mount挂载的命令将/dev/sdb1挂载到/mnt/udisk目录下
sudo mount /dev/sdb1 /mnt/udisk
ifconfig ----> 查看ubuntu系统的网络信息
ping命令----> 测试网络的命令 ping 39.156.66.14 ping www.baidu.com
文件名 第一个参数 第二个参数 。。。n
$0 $1 $2 $n
$* $@ 获取所有参数 $#参数个数总和
在shell中定义变量时,等号两边不允许出现空格赋值 name=zhangsan 变量名="初始值"
取变量的值 ${变量名} echo $var1 # 打印var1变量的值
命令置换符 $(shell命令) 或者 `shell命令` 通常用 `` 1前面的符号
数组的定义格式
数组名=(成员0 成员1 成员2 成员3 成员4 ....)-----> 数组中的成员是连续的
数组名=([0]=成员0 [2]=成员2 [5]=成员5 .....)-----> 数组中的成员是不连续
赋值:数组名[index(下标)]=新的初始值 取值: ${数组名[index]}
读取数组所有成员 ${数组名[*]} ${数组名[@]}
${#数组名[*]} ${#数组名[@]} 统计数组元素个数
${#数组名[下标]} 统计某个元素里的字符个数
算数运算 (()) ((算数表达式1,算数表达式2,算数表达式3, ....)返回最后一个值
获取结果 ret_val=$((算数表达式)) 或者 $((ret_val=算数表达式))
expr 常用法 变量=`expr 表达式或者shell命令` 返回值或者命令结果
if用法 if ((表达式))
then
shell语句
elif ((表达式));then
shell语句
else
shell语句
fi
case in case 常量表达式 in -----> 等价于c语言中的switch ... case语句
用法 常量1) -----> 等价于C语言中的"case 常量:"分支
shell语句 -----> 等价于C语句
;; -----> 等价于C语言中的break
常量2)
shell语句
;;
......
*) ----> 等价于C语言中的"default:"分支
shell语句
;;
esac
while用法 while [ 表达式 ]
do
shell语句
done
for循环: for ((表达式1;表达式2;表达式3))
do
shell语句4
done
for 变量名 in 字符串格式的单词列表,字符串单词之间使用空格隔开
do
shell语句
done
select select 变量名 in 单词列表:单词之间使用空格隔开
用法 do
shell语句
done
# [] 相当于test命令,使用[]最终调用的是test命令(重要) while循环语句经常和test命令结合使用
-eq : 等于 -ne : 不等于 -gt : ⼤于 -lt : ⼩于 -ge : ⼤于等于 -le : ⼩于等于
[ INTEGER1 -eq INTEGER2 ] -字母命令判断用方括号[]
-a 与 && -o 或 || ! ⾮ !
文件类型判断 也用方括号[] [ -b filename ]
-b filename 判断⽂件是否存在,是否是块设备
-c filename 判断⽂件是否存在,是否是字符设备
-d filename 判断⽂件是否存在,是否是⽬录
-f filename 判断⽂件是否存在,是否是普通⽂件
-p filename 判断⽂件是否存在,是否是管道⽂件
-L filename 判断⽂件是否存在,是否是链接⽂件 (经测试链接⽂件也是普通⽂件)
-S filename 判断⽂件是否存在,是否是套接字⽂件
-e filename 判断⽂件是否存在
-s filename 判断⽂件是否存在,判断⽂件是否为空
function 函数名() 调用 函数名 $1 $2 $3
{ 参数1 参数2 参数3
函数体
}