Linux 常用命令总结

大三这学期选了一门 Linux 操作系统,虽然之前学过一些,但是不够系统,以下简单整理了一下常用的一些命令。

一、初识 Linux

发行版本 Ubuntu debian deepin CentOS red-hat manjaro mint
文件系统默认 EXT4

默认启动方式 /etc/inittab
man 命令 man 5 inittab(查看 inittab 文档)
Info 命令 info wget (查看 vi 的帮助文档)
--help 命令 mkdir --help(查看对应的帮助文档)

Linux 的 5 种文件类型:普通文件、目录文件、链接文件、设备文件、管道文件

常用的目录含义:
/proc 当前系统的状态
/dev 所有设备文件
/boot 内核镜像和启动相关的文件
/etc 绝大部分配置文件
/bin 启动时需要的普通程序
/sbin 启动时需要的系统程序
/usr 除了上面的外,几乎其他所有文件都在这

二、文件管理与常用命令

显示文件命令:
cat

  • cat -A readme.txt(显示文件内容及特殊字符)
  • cat test1 test2 > test3(两个文件内容合并)

tac 将文件反向输出,与 cat 相反

more

  • 终端底部输入 --more-- 显示百分比
  • more -dc test.c(显示内容前清屏,并显示百分比)

less 与 more 类似,但可以向前向后翻阅文件

head

  • head -3 test.c(显示前三行)

tail

  • +num 第 num 行开始 -num 距离文件尾 有几行
  • tail -4 test.c(最后四行)

文件查询:
grep

  • grep “test file” stdc.h(在 stdc.h 中搜索 test file)
  • grep data*(在当前所有文件中搜索含有 data 的行)
  • grep stdio.h*.c(在 C 语言文件中搜索 stdio.h)

find

  • find -name ‘tmp’ -o -name ‘Mina*’(查询文件名为 tmp 或者匹配 Mina*的文件)

locate 比 find 快,但是依赖于数据库

文本处理:

sort

  • sort test.txt(对文件内容排序)
  • sort +1-2 test.txt(对第二个字段作为排序关键字进行排序)

uniq

  • uniq -u test.txt(显示不重复的行)
  • uniq -u +1 -1 test.txt(显示不重复的行,从第 2 个字段的第 2 个字符)

wc

  • wc -lcw README(统计文件中的行数、字节数、字数)

comm

  • comm -23 app.c app1.c(显示第一个文件中出现、而不在第二个文件中的内容)

cp

  • cp exam1.c /usr/wang/test.c(将 exam.c 复制到/usr/wang 下并重命名)
  • cp -r /usr/xu /usr/liu(将目录的所有文件复制到/usr/liu)

mv

  • mv /usr/xu/ .(将/usr/xu 所有文件移至当前目录)
  • mv wch.txt wjz.txt(将 wch.txt 文件重命名为 wjz.txt)

rm(删除文件或目录(-r))

  • rm -rf /tmp/wang(删除目录的所有文件)

ln(硬链接、符号链接 //符号链接类似于快捷方式)

  • ln /root/dir/file.txt ./file_1(为 file.txt 建立硬链接)
  • ln -s /root/dir/file.txt ./file_1(为 file.txt 建立符号链接,需加上-s)

目录操作:

  • mkdir -m 700 ./dir(创建权限为 700 的目录)
  • rmkdir dir(等同于 rm -rf dir)
  • pwd(显示当前路径)
  • ls -l(长格式显示)

权限(利用自己的语言叙述)

  • 每个文件可分为三种不同的权限:read 代表只读、write 代表写、x 代表可执行。权限分三组:文件属主,属主同组的用户,其他用户

改变用户权限

chown 用来改变文件或目录的属主和属组

  • chown wang test.c(把文件 test.c 所有者改为 wang)
  • chown -R wang.user1 /his(将/his 的所有文件所有者改为 wang,属组改为 user1)

chgrp

  • chgrp user1 test.txt(改变 test.txt 的所属组为 user1)

chmod

  • -u(所有者) -g(同组) -o(其他用户)
  • chmod ug+w, o+x text(所有者和同组写权限、其他用户删除执行权限)

umask(了解即可)创建文件的默认权限

  • umask(查看)
  • umask 0023(修改)

文件打包和压缩

bzip

  • bzip2 man.config(压缩 man.config)
  • bzcat man.config.bz2(读取压缩文件内容)
  • bzip2 -d man.config.bz2(解压缩)
  • bzip2 -9 -c man.config > man.config.bz2 或者 bzip2 -9 -k man.config(使用最佳压缩比,并保留原文件)

tar(文件归档)

  • tar -jcvf hello.tar.gz hello.bak(将 hello.bak 压缩为 hello.tar.gz)

三、用户与用户组管理

  • /etc/passwd(存放用户资料)
  • uid(用户 id)
  • shadow(影子文件-不可逆的加密算法、root 可读)
  • group(GID 组 id)
  • gshadow(影子文件)

useradd: 添加用户

  • useradd -u 3000 -r jone -g user1 -d /home/jone(创建一个 uid 为 3000,用户名为 jone,组为 user1,目录为/home/jone)

passmd: 设置密码

  • passwd jone

usermod: 修改用户信息

  • usermod -g user2 -u 5000 jone(将 jone 组修改位 user2,UID 修改为 5000)

userdel:删除用户

  • userdel jone(删除用户)

使用 root 用户如何给一个组加成员useradd -g user1 -r jonepasswd jone

四、软件包管理

RPM(依赖性、拓展格式)

  • 依赖性:RPM 软件包可能依赖于其他软件包,因此要求安装特定的软件包后才能正常安装该软件包。
  • 扩展格式:RPM 包以.rpm 作为文件的后缀名。 名称格式为:软件名称-版本-运行硬件平台-扩展名。如下:apache-1.3.23-11.i386.rpm

yum install(安装软件)
yum search name(查找软件包)
yum install name(安装软件包)
yum update(升级软件包)
yum remove name(卸载软件包)

五、磁盘管理

挂载命令:mount

  • mount -t vfat /dev/hda1 /mnt/usb_disk(挂载一个 FAT32 的 USB)

查看 mount

  • fdisk -l(查看分区情况)
  • df(查看磁盘使用情况)(了解即可)

格式化:mkfs -t type device [ block_size ]

  • mkfs -t vfat /dev/sda1(把 dev/sda1 格式化)

磁盘配额

  • edquota -u user1
  • 按用户限制:占用磁盘大小,所有文件的数量

六、文本编辑器

vi 命令行模式、文本输入模式、末行模式

三种模式的切换

  • 从命令行进入文本输入模式:输入插入 i、附加 a 等
  • 返回到命令行模式:Esc
  • 命令模式下输入”:”,切换到末行模式

显示行号:set number(末行模式下输入)

A(光标移动到行末尾) I(行最前面) o(往下移一行)

dd(删除光标所在的整行)5dd(往下删除 5 行) 5G(去第五行)

:w(写):q(退出到 shell)

七、进程管理

三个命令

  • ps -aux(看所有进程)
  • w(看系统启动时间、多少用户、负载情况)
  • top 守护进程(后台进程),在一个命令后加上 & 符号,就可以让该命令进入后台运行,成为后台进程。top &

crond: 创建周期性执行命令(逗号隔开表示不连续)

  • cat /etc/crontab
    • 00 15 * * 1,3,5 shutdown -r +5(每周一、三、五的下午三点,重启系统)
    • 10,40 * * * * /user1/calculate(每小时的 10 分、40 分,执行/user1/calculate)
  • crontab -r(删除所有)
  • crontab -e(删除某一条、编辑)

八、shell 编程基础

输入重定向:cat < dir.txt
输出重定向(> >>):ls -l > dir.txt(覆盖方式) ls -l >> dir.txt(附加方式)

管道 |(一个命令的输出作为另一个命令的输入)
管道符 $(表示变量替换)

  • “(双引号,除特殊字符外,都是普通字符)
  • ‘(单引号,都是普通字符)
  • `(倒引号,解释为命令行,输出结果取代该符号)
  • &#(命令行参数的个数)
  • $n(第 n 个参数)
  • $0(当前程序的名称)
  • $?(前一个命令或函数的返回码)
  • $*(以“参数 1 参数 2...”的形式保存所有参数)
  • $@(以”参数 1 “ ”参数 2...”的形式保存所有参数)
  • $$(进程 ID)
  • $!(上一个命令的 PID)

If/else 结构

If[ $# -eq 0 ] ;
then 
	echo “hello world!”
elif [$ # -eq 1 ] ;
then
	echo “***”
else
	echo “***”
fi

for 循环

for fruit in “apple” “pear” “orange”;
do
	echo $fruit;
done
for a in ‘seq 1 9’
do
	echo$ a
done

while 循环

I=1
sum=0
while [ $i -le 100 ]; 
do
	sum=$ [ $sum+$ i]
	i= $[$ i+1]
done
echo $sum

进行数值运算方式:

  • let(用于执行一个或多个表达式,如 let a=5+4)
  • expr(是一个手工命令行计数器,如计算字符串长度:expr length “this is a test”,第一个字符串的位置:expr index "sarasara" a)
  • read(将用户的输入读入 str:read -p “please input a word” str)

运行 shell 脚本
chmod 755 /root/hello.sh
bash bash hello.sh

shell 程序:

1.如何判断一个用户输入的数字是否为素数。(判断用户输入是否正确,如果不正确则提示消息并退出,如果正确则判断出是否为素数)

#!/bin/bash
read num
if [ " $num" -gt 0 ] 2>/dev/null
then
	if [$ num -eq 1 ]
	then
		echo " $num number error"
		exit
	fi
	count=0
	for n in$ (seq 2 $(($ num-1)))
	do
	if [ $((num%n)) -eq 0 ]
	then
		echo "$ num not is a sushu"
		exit
	fi
	done
	echo " $num is a sushu"
else
	echo "$ num alphabet error"
	exit
fi

2.如何判断一个用户输入的数字是否是回文数。

#!/bin/bash
read in
res= $(echo$ in|rev)
if [ $res -eq$ in ]
then
	echo " $in is a huiwenshu!"
else
	echo "$ in not is a huiwenshu"
fi

3.计算用户输入的数字的阶乘。

#!/bin/bash
read in
sum=1
for i in $(seq 1$ in)
do
	sum= $(($ sum * $i))
done
echo$ sum

4.判断一个数列是否为斐波那契数列。

#!/bin/bash
arr=(1 1 2 3 5 9)
len= ${#arr[@]}
fb[0]=1
fb[1]=1
for i in$ (seq 2 $(($ len-1)))
do
	fb[ $i]=$ (( ${fb[$ i-2]} + ${fb[$ i-1]}))
done
for i in $(seq 0$ (( $len-1)))
do
	if [$ {arr[ $i]} -ne$ {fb[ $i]} ]
	then
		echo 'NO'
		exit
	fi
done
echo 'YES'

5.求一个斐波那契数列。

#!/bin/bash
read in
if [$ in -eq 1 ]
then
	echo 1
	exit
fi
arr[0]=1
arr[1]=1
for i in $(seq 2$ (( $in-1)))
do
	arr[$ i]= $(($ {arr[ $i-2]} +$ {arr[ $i-1]}))
done
for i in$ {arr[@]}
do
	echo $i
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgerFan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值