Shell

搭建运行环境

Shell 初体验

# 创建文件
$ touch test.sh
# chmod 修改 test.sh 权限
$ chmod 771 ./test.sh
$ ll  # 查看权限
# -rw-r--r-- 1 huapisong 197121  0 8月  13 15:57 test.sh
 # 没有修改成功
$ vi test.sh 
# 添加 头 #!/bin/bash 或 #!/bin/sh
$ chmod 771 ./test.sh
$ ll
# 修改成功
# -rwxr-xr-x 1 huapisong 197121 10 8月  13 15:56 test.sh*

关机操作

# 会立即关闭机器
shutdown -h now

# 60秒后关机
shutdown -s -t 60

重启操作

shutdown -r now
sudo reboot
这两个命令功能一样,其中shutdown -r now的-r应当就是restart的意思。

Shell 写入文件

cat 多行写入

1.cat 覆盖写入

# 语法: cat > 文件名 <<EOF, 然后把多行文字放在下面,并以EOF结束
#!/bin/bash
# start.sh

echo "___________脚本开始____________"
cat>./test.sh <<EOF
#!/bin/bash
echo "hello test.sh"
echo $RANDOM
EOF
bash ./test.sh
echo "___________脚本结束____________"

2.cat 追加写入

# 如果需要追加文本,那就变成cat>>:
# 语法: cat >> 文件名 <<EOF
#!/bin/bash
# start.sh

echo "___________脚本开始____________"
cat>>./test.sh <<EOF
#!/bin/bash
echo "hello test.sh"
echo $RANDOM
EOF
bash ./test.sh
echo "___________脚本结束____________"

3.查看写入

# 执行
$ bash start.sh
# 输出
    ___________脚本开始____________
    hello test.sh
    21312
    ___________脚本结束____________

# 查看生成的文件
$ cat ./test.sh
# 输出

    #!/bin/bash
    echo "hello test.sh"
    echo 21312

echo 输出重定向写入

1.echo > 覆盖写入

# 输出重定向
echo echo "输出重定向"> test1.sh

2.echo >> 追加写入

# 输出追加重定向
echo echo "输出追加重定向" >> test1.sh

Sort 命令常用相关选项

选项 说明
-c 会检查文件顺序是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,然后返回1
-k 指定排序的列数
-b 忽略每一行前面所有的空白行,从第一个可见的字符开始比较
-f 将小写字母都转换成大写字母进行排序
-r 反转降序
-u 去除重复行
-o 输出命名,重定向
-n 按字符来排序
-t 指定分隔符
-M 以月份排序

uniq命令的作用

选项 说明
-c/–count 在每列旁边显示除改行重复出现的次数
-d/–repeated 仅显示重复出现的行列
-s<字符位置> 忽略比较指定的字符
-u/–unique 仅显示只有一次,不重复的行列
-w<字符位置> 指定要比较的字符

join命令的作用

选项 说明
-a FILENAME FILENAME表示第几个文件,-a1表示第一个文件,-a2表示第二个文件
-e EMPTY 若在FILE1与FILE2找不到指定的栏位,则在输出中填入-e选定的字符串
-i,–ignore-case 比较时忽略大小写差异
-o FORMAT 按照指定的格式显示结果
-v FILENUM -v 1表示只显示FILE1中与FILE2中没有相同栏位的行;
-v 2表示只显示FILE2中与FILE1中没有相同栏位的行:
-t CHAR 使用栏位的分隔符
-1 FIELD 链接FILE1指定的栏位
-j FIELD 等价与-1 FIELD -2 FIELD
# 重复输出
sort test.txt | uniq -d