Linux Shell命令


文件操作相关

# 新建文件
touch file_name
# 查看文件
ls 或 ll

获取文件内容

# 查看文件全部内容
cat file_name
# 从最后一行反向查看文件内容
tac file_name
# 查看文件的前N行
head -N file_name = head -n +N file_name = head -n N file_name
# 从第一行获取直到倒数第N行
head -n -N file_name, 如获取到倒数第5行: head -n -5 file
# 查看文件的后N行
tail -N file_name = tail -n [-]N file_name,如获取最后5行:tail -5 file = tail -n 5 file = tail -n -5 file
# 从第N行开始获取到最后
tail -n +N file_name
# 获取文件的第2到第5行
sed -n '2,5p' file_name
# 获取文件的第2到5行及第7到9行以及第15行的内容
sed -n '2,5p;7,9p;15p' file_name

复制、移动、删除

# 复制文件
cp [-arfd] file targetDir

# 移动文件
mv file targetDir
# 同目录下重命名文件
mv file1 file2
# 删除文件
rm [-r -f -i] file_name
# 删除当前目录下所有的文件
rm -rf *
# 删除当前目录下所有隐藏文件
rm -rf .*
# 删除指定目录下的所有文件
rm -rf dir/
# 修改文件权限(r=4,w=2,x=1), 3个为一组,如:rwxrw-r-x=765
chmod num file 
	所有者(u) = rwx = 4+2+1 = 7
	所属组(g) = rw- = 4+2 = 6
	其他人(o) = r-x = 4+1 = 5

搜索文件

# 查找文件
find path -name "msg"
# 查找文件(忽略大小写)
find path -iname "msg"
# 查询文件中某个关键字出现的次数
grep -0 'key_words' < file.log | wc -l
# 搜索多个关键字
grep -E "words1|words2|words3" -rn path
# 只搜索指定后缀的文件
grep "words" -rn --include "*.txt" path

文件夹操作

# 创建文件夹,创建多级目录时加上-p参数
mkdir [-p] dir_name
# 删除空文件夹
rmdir [-p] dir
# 显示当前目录下的文件和目录
ls [-a -l -F]
# 显示当前目录下的文件和目录详细信息
ls -l / ll
# 显示当前目录的路径
pwd
# 进入到指定路径
cd path
# 表示返回上级目录
cd ..
# 表示返回到系统根目录
cd /
# 返回到项目根目录
cd [~]
# 返回到上一次所在路径
cd -

字符串操作

# shell 字符串截取的8种方法
${string: start :length}	从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start}	               从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length}	从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start}	从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars}	从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars}	从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%chars*}	从右往左,截取 第一次出现char*右边的字符,保留左边的所有字符。
${string%%chars*}	从右往左,截取 最后一次出现char*右边的所有字符,保留左边的字符。

# 字符串拼接,中间无任何"+"之类的字符
name="this is"" my name"; name="this is my name"; name="this" is "my name" 等效
name='this is'' my nam'; name='this is my name'; name='this' is 'my name' 等效

# 获取字符串长度
${#string}

# 字符串判空 a='str'
-z :检测字符串长度是否为0,为0返回true。 [ -z $a ] 返回 false。
-n :检测字符串长度是否为0,不为0返回true。 [ -n "$a" ] 返回 true。
$  :检测字符串是否为空,不为空返回true。 [ $a ] 返回 true。

控制台

# 查看shell环境变量路径
echo $SHELL
# 修改控制台打印的字体颜色
echo -e "\033[30m 黑色字 \033[0m" 
echo -e "\033[31m 紅色字 \033[0m"
echo -e "\033[32m 綠色字 \033[0m"
echo -e "\033[33m 黃色字 \033[0m"
echo -e "\033[34m 藍色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天藍字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"

# 执行shell脚本
sh/bash file_name.sh
# 清除控制台
clear
# 终止正在运行的命令或输入,新起一行
Ctrl + c

系统相关

# 显示已经挂载的分区列表及磁盘空间信息
df -h
# 生成ssh密钥
ssh-keygen
# 读取ssh公钥
cat ~/.ssh/id_rsa.pub
# 测试主机间网络连通性
ping < ip / url >
# 查询IP信息
ipconfig
# 计算当前文件夹所占空间大小
du -h --max-depth=1
# 计算当前目录下所有文件及文件夹大小
du -sh *
# Linux挂载
sudo mount Z: /mnt/z -t drvfs

  目录