Linux基本命令


一、基础命令

1.1 查看

ls:查看当前目录信息
  -l:以列表方式显示
  -h:文件大小单位显示,默认是字节
  -a:显示隐藏文件和隐藏目录
tree:以树状方式显示目录信息
pwd:查看当前目录路径
clear:清除终端内容

1.2 切换目录

cd 目录:切换到指定目录
cd ~:切换到当前用户的主目录
cd ..:切换到上一级目录
cd .:切换到当前目录
cd -:切换到上一次目录

1.3 创建删除目录

touch 文件名:创建指定文件
mkdir 目录名:创建目录(文件夹)
      -p:创建所依赖的文件夹
rm 文件名或者目录名:删除指定文件或者目录
          -i:交互式提示
          -r:递归删除目录及其内容
          -f:强制删除,忽略不存在的文件,无需提示
          -d:删除空目录
          -r:递归删除目录及其内容
rmdir 目录名:删除空目录

1.4 复制

cp:拷贝文件、拷贝目录
  -i:交互式提示
  -r:递归拷贝目录及其内容
  -v:显示拷贝后的路径描述
  -a:保留文件的原有权限
mv:移动文件、移动目录、重命名
  -i:交互式提示
  -v:显示移动后的路径描述

1.5 重定向

>:如果文件存在会覆盖原有文件内容,相当于文件操作中的‘w’模式
>>:如果文件存在会追加写入文件末尾,相当于文件操作中的‘a’ 模式
命令 &> /dev/null:将命令的结果重定向至垃圾桶(无论执行成功与否,屏幕都不会输出任何东西)
命令 0> /dev/null:将命令的成功结果重定向至垃圾桶
命令 1> /dev/null:将命令的失败结果重定向至垃圾桶

二、文件操作

2.1 查看文件内容

cat:查看小型文件
more:分屏查看大型文件
    空格:显示下一屏信息
    回车:显示下一行信息
    b:显示上一屏信息
    f:显示下一屏信息
    q:退出

2.2 软链接硬链接

ln -s:创建软链接(类似于Windows下的快捷方式)
ln:创建硬链接(两个文件指向同一块数据)

2.3 查找

grep 搜索内容 文件名:文本搜索
        -i:忽略大小写
        -n:显示匹配行号
        -v:显示不包含匹配文本的所有行

find 目录 -name 文件名:在指定目录下查找文件(包括目录)

2.4 压缩

tar:压缩和解压缩命令
   -c:创建打包文件
   -v:显示打包或者解包的详细信息
   -f:指定文件名称, 必须放到所有选项后面
   -z:压缩或解压缩(.gz)
   -j:压缩或解压缩(.bz2)
   -x:解包
   -C:解压缩到指定目录
ex:tar -zcvf test.tar.gz *.txt:将当前目录的txt文件压缩为test.tar.gz
  tar -jcvf test.bz2 *.txt:将当前目录的txt文件压缩为test.bz2

zip:压缩成.zip格式文件
unzip:解压缩.zip格式文件
    -d:解压缩到指定目录

2.5 权限

chmod:修改文件权限

角色
u:user, 表示该文件的所有者
g:group, 表示用户组
o:other, 表示其他用户
a:all, 表示所有用户

操作符
+:增加权限
-:撤销权限
=:设置权限

权限
r:可读
w:可写
x:可执行
-:无任何权限

ex:chmod u+x 1.txt:给该文件的所有者赋予1.txt的可执行权限
  chmod u=r,g=-,o=rw 1.txt:设置多个角色的权限

sudo -s:切换到root用户,获取管理员权限(慎用)
sudo:某个命令的执行需要获取管理员权限可以在执行命令前面加上sudo
whoami:查看当前用户限
exit:退出登录用户
who:查看所有的登录用户
passwd:修改用户密码,不指定用户默认修改当前登录用户密码
which:查看命令位置
shutdown –h now:立刻关机
reboot:重启

2.6 用户

useradd:创建(添加)用户
    -m:自动创建用户主目录,主目录的名字就是用户名
    -g:指定用户所属的用户组,默认不指定会自动创建一个同名的用户组

  • 查看用户是否创建成功,可以查看/etc/passwd这个文件
  • 查看用户组是否创建成功,可以查看/etc/group这个文件

passwd文件中的每项信息说明,以root:x:0:0:root:/root:/bin/bash为例:

  • 第一个:用户名
  • 第二个:密码占位符
  • 第三个:uid, 用户id
  • 第四个:gid, 用户所在组id
  • 第五个:用户描述, 可选,
  • 第六个:用户的主目录所在位置
  • 第七个:用户所用 shell 的类型,一般由bash或者sh,默认不设置是sh类型

group文件中的每项信息说明, 以laowang:x:1001:为例:

  • 第一个:用户组名
  • 第二个:用户组密码占位符,一般Linux系统的用户组都没有密码的
  • 第三个:组id

id:查看用户信息

每项信息说明uid=1001(laowang) gid=1001(laowang) 组=1001(laowang):

  • 第一个: uid 表示用户id
  • 第二个: gid 表示用户组id
  • 第三个: 组 表示用户所在的用户组

sudo passwd 用户名:给其他用户设置密码
su - 用户名:切换用户
usermod:修改用户信息
     -G:设置一个附加组
     -g:修改用户组
ex:sudo usermod -G sudo laowang:给laownag添加sudo组权限

gpasswd:添加和删除附加组信息
     -a 用户名:给用户添加附加组
     -d 用户名:给用户删除附加组

userdel:删除用户
     -r 用户名:删除用户主目录,必须要设置,否则用户主目录不会删除

groupadd:创建(添加)用户组
groupdel:删除用户组(用户组下不能有用户)

2.7 cat(打印行数)

cat -n 文件名:打印带行数的文件

2.8 head(打印前n行)

head:默认打印文件的前十行
head -n 5 文件名(head -5 文件名):打印文件的前5行

2.9 tail(打印后n行)

tail:默认打印文件的最后十行
tail -n 5 文件名(tail -5 文件名):打印文件的后5行

2.9.1 扩展:打印第6-12行

head -12 文件名 | tail -7:取出文件的6-12行

2.10 cut(按列取数据)

cut -f1 文件名:取出第一列的数据(按空格或tab分割)
cut -d: -f1,3 文件名:取出第一列和第三列的数据(按:分割)

2.11 sort(排序)

sort 文件名:将文件进行排序(升序)
head -5 文件名 | sort:将文件前五行排序
head -5 文件名 | sort -r:将文件前五行排序(降序)
head -5 文件名 | sort -t: -k3:将文件前五行根据第三列排序
sort -t: -k4 -n 文件名:将文件根据第4列排序(数字类型排序)

2.12 uniq(去重)

uniq:去重(只能对有序的数据去重)
sort -n 文件名 | uniq:对排序后的文件去重
sort -n 文件名 | uniq -d:打印文件重复的数据
sort -n 文件名 | uniq -c:打印文件每个数据出现的次数

2.13 wc

wc -c 文件名:打印出文件字节数
wc -w 文件名:打印出文件单词数量
wc -l 文件名:打印出文件行数
wc -L 文件名:打印出文件最长的一行的字节数

三、变量

3.1 局部变量(不支持打印文件中的变量)

3.1.1 方式一

变量名=变量值
注意:中间不能有空格和特殊字符

3.1.2 方式二

变量名=‘变量值’

3.1.3 方式三

变量名=“变量值”
与方式二的区别:方式二引号里是什么变量就是什么,方式三中引号里有变量的引用可以打印出对应的变量值

3.1.4 方式四

变量名=$(linux命令)
将命令的结果赋值给变量

3.1.5 方式五

变量名=`linux命令`

3.2 临时全局变量(只在当前终端可调用)

3.2.1 方式一

export 变量名

3.2.2 方式二

export 变量名=值

3.3 全局变量

全局变量需要在家目录的.bashrc或家目录的.bash_profile或etc/profilele文件中定义
打开文件,写入export 变量名=值,保存文件,输入命令source 文件名激活变量。

3.4 打印变量

3.4.1 方式一:

echo $变量名

3.4.2 方式二:

echo “$变量名”

3.4.3 方式三:

echo “${变量名}”
变量中有空格的时候最好使用方式二或方式三

如果想在echo中打印出换行符或制表符,需要加-e进行转义
echo -e “one\ntwo\tthree”

想要两个echo命令之间不换行,需要加-n
echo -n "one two";echo -n 333

给输出的字符加颜色,\e[032m需要加颜色的字符\e[0m
echo -e “\e[032mYES\e[0m”

3.5 内置变量

$0:获取当前执行的shell脚本文件名,包括脚本路径
$n:获取当前执行的shell脚本的第n个参数值,n=1…9,如果n大于9就要用大括号括起来${10}
$#:获取当前shell命令行中参数的总个数
$?:获取执行上一个指令的返回值(0为成功,非0为失败)

四、数值运算

4.1 支持的运算

±*/%
< <= > >=
= !=

4.2 方式一

$((算术表达式))
变量可以不加$

4.3 方式二

expr 算术表达式
算术表达式中出现<或>时,需要使用\转义

4.4 方式三

echo "scale=3; 10/3" | bc
把算数式传给bc去做运算。scale为保留小数位数的设置。

五、条件表达式

5.1 返回值

0代表成功
1代表失败

5.2 文件表达式

test -f 路径:判断当前路径是否是文件
test -d 路径:判断当前路径是否是目录
test -e 路径:判断当前路径是否存在
test -r 路径:判断当前文件是否可读
test -w 路径:判断当前文件是否可写
test -x 命令:判断当前命令是否可执行
上面的test可换成[ ],举个栗子:
[ -f 路径 ]

  • 注意:"[“后面和”]"前面都要有空格

[ -z 变量 ]:判断变量是否为空
[ -n 变量 ]:判断变量是否不为空

5.3 数值操作符

[ int1 -eq int2 ]:判断两个数字是否相等
[ int1 -nq int2 ]:判断两个数字是否不相等
[ int1 -ge int2 ]:判断int1是否大于等于int2
[ int1 -gt int2 ]:判断int1是否大于int2
[ int1 -le int2 ]:判断int1是否小于等于int2
[ int1 -lt int2 ]:判断int1是否大于int2

5.4 字符串比较

[ str1 = str2 ]:判断两个字符串是否相等
[ str1 != str2 ]:判断两个字符串是否不相等

5.5 逻辑表达式

&& 和 ||
-a
-o
[ 条件1 ] && [ 条件2 ]可以写成[ 条件1 -a 条件2 ]
[ 条件1 ] || [ 条件2 ]可以写成[ 条件1 -o 条件2 ]

[ 条件 ] && 语句1 || 语句2
如果条件成立执行语句1,条件不成立执行语句2

六、shell脚本

6.1 格式要求

  • 在文件首行指定执行shell的程序以及相关说明
#!/bin/bash
#Author:Aaron
#Date:2021-04-01

:<<!
这是多行注释
!
  • shell脚本文件后缀建议为.sh
  • 脚本执行失败时,使用exit返回非零值,来退出程序
  • 默认缩进4个空格

6.2 执行脚本

bash 脚本相对或绝对路径

给脚本加上可执行权限
chmod +x 脚本相对或绝对路径
加了可执行权限的脚本可以这样执行:
./脚本相对或绝对路径

以调试的方式执行脚本:
bash -x 脚本相对或绝对路径

七、函数

7.1 格式一

函数名()
{
    echo "当前日期为:$(date)"
}

# 在函数定义的下方,使用函数名去调用函数
函数名

7.2 格式二

function 函数名
{
    echo "当前日期为:$(date)"
}

函数名

7.3 格式三(带参数)

function 函数名
{
    echo -e "早上好!$1 $2 $3 $#"
}

# 在函数定义的下方,使用函数名去调用函数(这里的$1-$3是命令行的三个参数)
函数名 $1 $3 $2
# 此时在命令行传参为:a b c,但是调用脚本输出的为:早上好!a c b 3

在这里插入图片描述

八、流程控制

8.1 if

8.1.1 方式一

if [ 条件1 ]
then
    语句1
elif [ 条件2 ]
then
    语句2
else
    语句3
fi

8.1.2 方式二

if [ 条件1 ]; then
    语句1
elif [ 条件2 ]; then
    语句2
else
    语句3
fi

8.2 for

8.2.1 方式一

for ((i=1; i<=10; i++))
do
    语句
done

8.2.2 方式二

for i in $dir
do
    echo "$i"
done

8.2.3 while

while [ 条件 ]; do
    语句
done

8.2.4 case

case 变量 in
	"1")
    	语句1
		;;
	"2")
    	语句2
	    ;;
	*)
		语句3
        ;;
esac
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值