查询
ls
-a 列出目录下的所有文件,包括以 . 开头的隐含文件
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出
-c 输出文件的 i 节点的修改时间,并以此排序
-d 将目录象文件一样显示,而不是显示其下的文件
-e 输出时间的全部信息,而不是输出简略信息
-f -U 对输出的文件不排序
-g 无用
-i 输出文件的 i 节点的索引信息
-k 以 k 字节的形式表示文件的大小
-l 列出文件的详细信息
-m 横向输出文件名,并以“,”作分格符
-n 用数字的 UID,GID 代替名称
-o 显示文件的除组信息外的详细信息
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;
“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)
-q 用?代替不可输出的字符
-r 对目录反向排序
-s 在每个文件名后输出该文件的大小
-t 以时间排序
-u 以文件上次被访问的时间排序
-x 按列输出,横向排序
-A 显示除 “.”和“..”外的所有文件
-B 不输出以 “~”结尾的备份文件
-C 按列输出,纵向排序
-G 输出文件的组的信息
-L 列出链接文件名而不是链接到的文件
-N 不限制文件长度
-Q 把输出的文件名用双引号括起来
-R 列出所有子目录下的文件
-S 以文件大小排序
-X 以文件的扩展名(最后一个 . 后的字符)排序
-1 一行只输出一个文件
授权
chgrp
- chgrp (change group) : 修改所属用户与组。
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chmod
- chown (change owner) : 修改所属用户与组。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
每个文件的属性由左边第一部分的 10 个字符来确定
chown
- chmod (change mode) : 修改用户的权限。
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
变量操作
- 创建普通变量: name="test" (=两边不可有空格)
- 创建只可函数体中使用的局部变量: local name="test" (使用local修饰的变量在函数体外无法访问,并且local只能在函数体内使用)
- 使用变量: echo $name 或者 echo ${name} (推荐使用大括号版)
- 变量重新赋值: name="new_test" (将原值覆盖)
- 只读变量: name="only_read" -> readonly name (使用readonly标识后的变量,不可被修改)
- 删除变量: unset name; (删除之后不可访问,删除不掉只读变量)
- 获取字符串长度
- 在${}中使用“#”获取长度
- name="test";
- echo ${#name}; # 输出为4
- 提取子字符串
:1:4 从第2个开始,往后截取4个字符
::4 从第1个开始,往后截取4个字符
- 数组
- 定义数组:array_name=(li wang xiang zhang) (小括号做边界、使用空格分离)
- 单独定义数组的元素: array_para[0]="w"; array_para[3]="s" (定义时下标不连续也可以)
- 赋值数组元素:array_name[0]="zhao";
- 获取数组元素:
-
- array_name[0]="li"
- array_name[3]="zhang"
- echo ${array_name[0]} # 输出"li"
- echo ${array_name[1]} # 输出" "
- echo ${array_name[3]} # 输出"zhang"
- echo ${array_name[@]} # 输出"li zhang" 输出数组所有元素,没有元素的下标省略
- 取得元素个数:${#array_name[@]} 或者 ${#array_name
- }
- 取得单个元素长度:${#array_name[1]}
注释
“# ”开头的就是注释,被编译器忽略
- 单行注释: #
- 多行注释: :<
输入输出重定向
- 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
- 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
- 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
- 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
- 默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。
- 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
输入重定向
- 1. bash.sh < file : 将脚本的输入重定向到file,由file提供参数
输出重定向
- 1. bash.sh > file : 将脚本的输出数据重定向到file中,覆盖数据
- 2. bash.sh >> file : 将脚本的输出数据重定向到file中,追加数据
- 3. command >> file 2>&1 : 将 stdout 和 stderr 合并后重定向到 file
读取外部输入
- 命令:`read arg` (脚本读取外部输入并赋值到变量上)
- 在shell脚本执行到上述命令时,停止脚本执行并等待外部输入,将外部输入赋值到arg变量上,继续执行脚本
输出
echo
栗子:echo 'hello linux'
printf
printf 不会像 echo 自动添加换行符,我们可以手动添加 \n
无大括号,直接以空格分隔
- 格式:printf format-string [arguments...] 其中(format-string: 格式控制字符串、arguments: 参数列表)
- 栗子:printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
- %s %c %d %f 都是格式替代符
-
- d:Decimal 十进制整数 对应位置参数必须是十进制整数,否则报错!
- s:String 字符串 对应位置参数必须是字符串或者字符型 否则报错
- c:Char 字符 对应位置参数必须是字符串或者字符型 否则报错
- f:Float 浮点 对应位置参数必须是数字型 否则报错
- %-10s : 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
- %-4.2f :指格式化为小数,宽度为4个字符,其中.2指保留2位小数。
- 转义符:
-
- \a :警告字符,通常为ASCII的BEL字符
- \b :后退
- \c :抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
- \f :换页(formfeed)
- \n :换行
- \r :回车(Carriage return)
- \t :水平制表符
- \v :垂直制表符
- \ :一个字面上的反斜杠字符
- \ddd :表示1到3位数八进制值的字符。仅在格式字符串中有效
- \0ddd :表示1到3位的八进制值字符
登录mysql
选择操作数据库,之后进行导入数据
/mysql/mysql/bin/mysql \ -h test_host -P 000 \ -u test_user -ptest_password \ -e "use test_database; source data_faile; " # -e 代表执行sql语句
-u 用户名
-p 用户密码
-h 服务器ip地址
-D 连接的数据库
-N 不输出列信息
-B 使用tab键 代替 分隔符
-e 执行的SQL语句
退出脚本命令:exit
shell脚本调试
检查是否有语法错误-n:
bash -n script_name.sh
使用下面的命令来执行并调试 Shell 脚本-x:
bash -x script_name.sh