基础复习linux

目录

有什么常用的 Linux 命令

  • cd:进入目录
  • ls:列出目录文件
  • mkdir:创建文件夹
  • vim:编辑文件
  • top:查看系统负载
  • ps:查看进程
  • rm:删除文件、目录
  • history:查看命令历史记录
  • cp:复制文件
  • mv:修改文件名、移动文件
  • cat:获取文件内容
  • tail:查看日志
  • find:搜索文件
  • pwd:查看当前路径
  • clear:清屏
  • reboot:重启

绝对路径怎么表示?

/ 开头,/usr/local

当前目录怎么表示?

./

上层目录怎么表示?

../

主目录怎么表示?

~/

如何切换目录?

cd 目录

如何同时创建多个目录?

mkdir a b c

如何创建一个多层级目录?

mkdir -p a/b/c

如何同时移动多个文件?

mv file1 file2 -t /usr/local

如何复制一个文件夹?

cp -r dir1 /usr/local

可以将命令历史记录写入文件吗?怎么写入?

可以,history -w,默认写入 ~/.bash_history 文件中

如何解压一个 zip 文件?

unzip 文件名

如何解压一个 tar 文件?

tar -xvf 文件名

如何解压一个 tar.gz 文件?

tar -zxvf 文件名

如何将多个文件压缩到一个 tar.gz 文件?

tar -zcvf 压缩.tar.gz file1 file2 file3

有一个 log 文件,如何实时查看它的内容?

tail -f 日志名

如何查看日志的最后 10 条内容

tail -n 10 日志名

如何列出隐藏文件?

ls -a

如何列出文件列表,并根据文件大小排序

ls -S

如何列出文件,并根据文件修改时间排序

ls -t

如何查看所有进程

ps -A

如何查看所有 java 进程

ps -ef | grep java

如何查看进程所占用的 CPU、内存

ps -aux

如何强制删除文件

rm -rf 文件名

如何批量创建100个文件

touch test{001...100}.txt

创建文件有几种方式?你能大概说下你知道的吗?

  • vim 直接编辑一个新文件
  • touch file 创建一个空白文件
  • > 将内容覆盖原文件
  • >> 将内容追加到文件结尾
  • cat 结合 eof
  • cat 结合 exit

怎么通过名字寻找文件

find / -name 文件名

怎么通过文件的类型寻找文件

find / -type f

如何通过文件的大小寻找文件

find / -size 100

什么命令可以找到执行文件的位置?

which

which 命令搜索的是哪个目录?

/usr/bin

whereis 也是找文件、目录,那和 find 的区别是?

  • whereis 查找的速度会比 find 快
  • 原因是 whereis 会从数据库中查找数据

如何给一个文件设置最高权限

chmod 777 test.txt

如何杀掉一个进程

  1. 先查看进程的 pid,再根据 pid 杀掉进程
  2. ps -ef | grep 进程名,获取到 pid
  3. kill -9 进程pid

如何查看某个端口是否被占用?

  • netstat -anp | grep 端口号
  • 如果打印的记录是其中一个服务,且状态是 LISTEN,那么就被占用了

有哪些常见的配置文件

  • /etc/profile:系统环境变量配置文件
  • /etc/sysconfig/iptables:防火墙配置文件
  • /etc/hosts/:主机文件
  • /etc/rc.local:开机就执行命令的文件
  • /root/.bashrc_profile:当前用户环境变量配置文件

Linux 系统目录的作用分别是啥?

  • /bin:可执行的命令文件
  • /etc:大部分系统配置文件
  • /home:一般用户目录
  • /lib:库文件,包含系统和用户需要的库文件
  • /opt:一般存放第三方文件
  • /root :root 用户的目录
  • /sbin:存放系统和系统管理员用到的程序工具
  • /proc:包含系统资源信息的虚拟文件系统,系统运行时才有文件
  • /sys:与 proc 类似的虚拟文件系统,都是内核提供给用户的接口
  • /tmp:系统使用的临时空间,重启后会清空
  • /usr:包含各种程序、库、文档
  • /var:包含一些用户可变的、临时的文件

如何在一个 Linux 中部署两套不同版本的 JAVA 环境,然后可以随时切换使用?

系统装了 Java 1.8,环境变量也配置了 Java 1.8,登录系统任意地方都能使用 Java 1.8 应用中需要用 Java 1.7,需要怎么分开使用不同的 Java 环境

如何查看进程中有哪些环境变量?

  • 获取进程 PID 后
  • 进入 /proc/进程号/ 目录下,查看 environ 文件即可
cat /proc/4071/environ |tr '\0' '\n'

echo 打印到命令行

echo "hello 测试开发干货"

chmod 修改权限

chmod +x 文件 :增加可执行权限
chmod 777 文件:增加所有人的读写执行权限
777 代表111 111 111 ,也就代表 rwx rwx rwx 全都生效
chmod ugo+r 文件
其中ugo 代表 user group others 也就是不同身份
+r 代表这些身份的人增加可读权限
chmod ug=rwx,o=x 文件

cat 查看日志

cat 参数 文件 > 新文件
-n 从1开始进行编号
-b 编号但不包括空行
-s 合并连续空行为一行
-e 在每行结尾显示$

chattr 改变文件属性

chattr 参数 +/-属性 文件
其中加减号代表增加或删除这项属性
属性:
i 不需改动
c 压缩存放
u 防止意外删除
参数:
-R 递归
-v 设置版本号
-V 显示执行过程

chgrp 修改所属组

chgrp 参数 群组 文件
-c 回报更改部分
-f 不显示错误信息
-r 递归

chown 修改所属人

chown 参数 用户 文件
-f 忽略错误

cmp 比较文件

cmp 参数 文件1 文件2

diff 详细的比较文件

diff 参数 文件1 文件2

file 查看文件类型

file 参数 文件
-v 显示版本信息
-c 详细显示过程

find 查找命令

find 路径 参数 值
find . -name "*.c" 查找所有后缀为c的当前目录下文件
find . -type f 查找目录和子目录下所有文件
find . -ctime -20 查找最近20天内更新过的文件
find . -type f -mitme +7 -ok rm {} \; 查找当前目录下更改时间在7天以前的普通文件删除,但要二次确认。
find . -type f -perm 777 -exec ls -l {} \; 查找当前目录下文件具有所有身份读写执行权限的文件。
find . -type f -size 0 -exec ls -l {} \;查找所有文件长度为0的文件,并打印完整路径。

可以看到find命令的应用非常花式,所以要重点学习。
-cmin n :在过去n分钟内被修改过的
-atime n :在过去n天内被读取过的
-size : 文件大小
-type c :文件c类型的文件
-name : 文件名称符合的

这里的c可以换成如下字母:
d 目录
f 文件
exec 相当于执行下一个命令,多个命令分割

cut 截取显示

在其他命令结尾用|cut 参数 值 来决定显示多少
-b 以字节分割
-c 以字符分割

ln 连接

可以让你其他目录下直接调用该文件
ln 参数 文件 目录
-s 软连接

less 可翻页浏览文件

less 参数 文件
-f 强制
-N 显示行号
-i 忽略大小写
命令:
b 向前翻页
d 向后翻页
空格 滚动一页
Q 退出

more 逐页阅读

more 参数 每页显示行数 文件
-num 行数
命令:
空格 向下滚动一屏
q 退出
! 调用shell命令

lsattr 显示文件属性

lsattr 参数 文件
-a 显示隐藏
-d 显示目录

mv 剪切或重命名

mv 参数 文件 新文件
-i 询问
-f 不询问
-n 不覆盖
-u 不存在才剪切

rcp 复制远程文件或目录

rcp 参数 文件 新文件
-p 保留属性
-r 递归
rcp root@192.168.xx.xx:/文件 ./新文件

rm 删除文件

rm 参数 文件
-i 逐一确认
-f 不询问
-r 递归

split 分割文件

split 参数/值 文件
如:split -6 a.txt  会把这个txt每六行切割成一个文件

tee 接收用户输入

tee 参数 文件

touch 创建文件,修改文件

touch 参数 文件

which 查找文件

which 参数 文件
-n 文件名长度

cp 复制文件

cp 参数 文件 新文件
-f 覆盖不提示
-i 提示
-l 只生成连接文件
-p 保留权限设置

whereis 查找文件

where 参数 目录 文件
多用于查找原始代码 二进制 帮助等系统文件
如:whereis bash

rhmask 加密文件

rhmask -d 原文件 加密后文件

scp 用于linux之间远程复制

scp 参数 文件 新文件
-r 递归
-C 压缩
-c 加密
如:scp root@192.168.11.2:/home/xxx.txt ./xxx.txt

awk 文本处理工具

awk 参数 'script' var=value 文件

read 读取输入

read 变量
会把用户输入的字符放在变量里,然后在后续命令中使用$变量 来占位

grep 查找和过滤

grep作为过滤命令,在很多命令后都可以加入grep来进行过滤

grep test *.c 查找后缀为c 且包含test的文件
grep -r test /etc/ 查找etc目录和子目录下包含update字符串的文件
grep test 文件 #在文件中查找包含test的行
grep -e "正则表达式" 文件 #查找文件内符合该正则的行
-i 不去分大小写
grep -v test 查找不含test的文件,-v表示反向
find . -name '*.c' | xargs grep "test" 查找当前目录下所有后缀为.c的文件并找出其中带test的行。

join 链接俩个文件中相同的行

join 文件1 文件2

look 查询单词

look L 文件 #查询文件中所有以L开头的行

pico 编辑文字文件

pico 参数 文件

sed 利用脚本处理文本文件

sed 参数 动作 文件
sed -e 4a\newLine 文件 #在文件第四行后添加一行
sed -i '$a 结束文案' #在文末增加一行文案
其中 -e表示后面接动作,
a表示新增
c 取代
d 删除
i 插入
p 打印
s 取代
sed 's/目标文案/新文案/g' #替换文案,

nl 以行为单位执行命令

nl 文件 | sed '2,5d' #表示打印所有行,但删除2-5行,sed后的字符必须以单引号包裹
nl 文件 | sed '2a 测试开发干货' #第2行后新增一行文案
nl 文件 | sed '1,3c 测试开发干货' #第1-3行替换成文案
nl 文件 | sed '/test/p' #输出所有行,额外输出包含test的行
nl 文件 | sed '/test/d' #输出所有行,但不包括带test的行
nl 文件 | sed -n '具体命令' # 输出所有行且执行某命令
nl 文件 | sed '3,$d' -e 's/旧/新/g' #输出所有行,删除第3-5行,且替换文案。

sort 排序

sort 参数 文件
-r 相反顺序
-b 忽略前空格
-d 只处理英文数字和空格
-f 全部按照大写字母排序
-n 按照数值大小
sort 文件 -k 2 #根据第二列的值进行排序

spell 拼写检查

spell 文件

tr 转换和删除文件中的指定字符

tr 参数 值
-c 反选
-d 删除
cat 文件 |tr a-z A-Z #把文件中所有小写替换成大写字母并打印
cat 文件 |tr ["lower"] ["upper"]

expr 命令行计数器

expr 表达式
如 expr length "测试开发干货" #会输出6
expr substr "测试开发干货" 2 4 #会输出is 开
expr index "测试开发干货" 干 #会打印5
expr 10+2 #会打印12

uniq 行去重

uniq 参数 文件
-c 显示重复次数
-d 显示重复行列

wc 计算字数

wc 参数 文件
-l 显示行数
-w 显示字数
-c 显示字节数

let 声明变量

let a=5 
let b=a+2
echo b
输出 7

cd 进入某目录

cd 目录
cd ~ 用户目录
cd / 系统根目录
cd .. 上级目录

df 显示磁盘使用情况

df 查询
df test
df -i 显示inode信息
df --total 显示所有信息
df -h 可读

dirs 显示目录记录

dir -l 目录 

du 显示指定目录文件所占用的磁盘空间

du 参数 文件
-h 提高可读性

mkdir 创建目录

mkdir -p 目录 

pwd 查看当前目录

pwd

quota 显示磁盘已用的空间和限制

quota 参数
-g 列出群组磁盘限制
-u 列出用户磁盘限制

tree 树状图显示目录内容

tree 参数
-a 显示所有
-d 只显示目录
-f 显示完整相对路径

ls 查看内容

ls 参数 目录
-a 显示隐藏
-l 显示详细资料
-r 反序
-t 按时间顺序

quotacheck 检查磁盘使用空间和限制

quotacheck 参数 

quotaoff/quotaon 关闭/开启磁盘限制

quotaoff 参数

lndir 链接目录内容

lndir 参数 源目录 新目录

ifconfig 查看网络设置

ifconfig eth0 down/up #启动关闭指定网卡
ifconfig eth0 add/del ipv6地址 #为网卡配置和删除ipv6地址
ifconfig eth0 hw ether 地址 #修改地址
ifconfig eth0 192.168... #给网卡配置ip地址
ifconfig eth0 192.168... netmask 255.255.255.0 broadcast 192.168... #再加上子网掩码 和 广播地址
ifconfig eth0 mtu 1500 #设置最大传输单元

ping 查看远程链接

ping 参数 地址

netconf 设置各项网络功能

netconf 

跟其他使用者交谈

talk 说话
write 写消息

adduser 添加使用者

adduser 用户 #普通
adduser -g 组 用户 #组用户
adduser -r 用户 #系统用户
adduser -d /home/用户名 用户 #g给用户创建并指定用户目录
和useradd类似

date 显示和设定系统时间

date #显示当前时间

exit 退出目前shell

exit

finger 查询其他使用者资料

finger -m 我去热饭 
finger root

sleep 延迟

sleep 5m #等待5秒

suspend 暂停shell

suspend -f

groupdel 删除组

groupdel 组

groupmod 修改组

groupmod 组

halt / shutdown 关机

halt 参数
-p 断电
-i 关键前停止网络
-d 无痕关机

kill 杀掉命令

kill 参数 命令
1 : 重载
9 : 杀死
15 : 正常停止
kill -9 $(ps -ef |grep '') #杀死所有相关进程
kill -u 用户 #杀死用户的所有进程

last 显示用户最近登录信息

last 

lastb 显示登入系统失败的用户

lastb

login 登入

login 

logname 显示当前用户名称

logname

logout 登出

logout

ps 显示当前进程

ps 参数
-A 所有
-w 加宽
-au 详细
ps -ef |grep 关键字
ps -u 用户 

nice 更改过的优先序来执行程序

nice 参数 命令
nice vi 

procinfo 显示系统状态

proccinfo 

top 实时显示进程的状态

top -c 显示完整
top -d 3 更新周期为3秒
top -p 130 显示进程139的信息
top -n 10 显示十次后退出

pstree 树状图显示进程

pstree 

reboot 重启

reboot

rlogin 远程登录

rlogin 192.169 -l 用户名

rsh 远程登录

rsh -l hnlinux 192..... 目录/命令 #远程执行命令

shutdown 关机

shutdown -h now 立刻关机
shutdown -r now 重新启动

rwho 查看系统用户

rwho -a #列出所有系统用户

sudo 管理身份运行

sudo -u 用户 命令 #指定用户身份运行
sudo -l 列出目前权限

tload 显示系统负载

tload

uname 显示系统信息

uname 参数
-a 显示所有系统信息
-m 显示计算机类型
-n 计算机名字
-s 显示操作系统名字

userdel 删除用户

userdel -r 哦用户

usermod 修改用户

usermod -d 目录 用户 #更改用户目录
usermod -u 777 用户 #更改用户uid

who 显示当前登录用户

who -q

whoami 显示自身用户名

whoami

whois 查找显示指定用户或域名

whois 用户
whois 域名
whois -p 端口 域名

newgrp 登录其他群组

newgrp 群组

renice 重新知道进程级别

将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1
renice +1 987 -u daemon 用户 -p 32

su 变更为其他用户身份

su -c 命令 身份 # 暂时用其他身份执行命令
su - root #切换到root用户

w 显示目前登录系统的用户信息

w 参数 用户
-f 开启、关闭用户来源
-l 详细
-s 简洁

id 显示用户id

id 参数 用户
-g 显示所属群组
-u 显示用户id

groupadd 新增组

groupadd -g 344 组 #新建组并指定id为344

free 显示内存状态

free -t #显示总和
free -s 10 #每10秒查询一次

clear 清除屏幕

clear

alias 设置命令别名

alias lx = ls 

crontab 定期执行程序

crontab 脚本

declare 声明变量

declare -i 变量 #声明一个整数变量

dmesg 显示开机设置

demsg |less

eval 求值

eval enable;ls  #链接多个命令

export 设置环境变量

export -p #列出所有环境变量

rpm 管理套件

rpm 参数
-a 查询所有套件
rpm -hvi ***.rpm #安装某套件

bunzip2 解压

bunzip2 -v 文件.bz2 

gunzip 解压

gunzip 文件.gz

compress 压缩解压

compress 文件 #压缩
compress -d 文件包 #解压

cpio 备份文件

cpio -o >文件 # 备份
cpio -p 目录 #复制文件

dump 备份系统

dump -0 -u 目录1 目录2 #备份2到1

gzexe 压缩win程序

gzexe 文件

gzip 压缩文件

gzip * #压缩当前目录所有文件
gzip -d * #解压文件

lha 压缩文件

lha -a 新文件名 旧文件

restore 还原系统

restore 参数

tar 压缩文件

tar -zcvf 旧文件 新文件 #压缩
tar -zxvf 压缩包 # 解压

unzip 解压

unzip 压缩包

poweroff 关机

poweroff 参数
-n : 在关机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 文件里
-i : 在关机之前先把所有网络相关的装置先停止
-p : 关闭操作系统之前将系统中所有的硬件设置为备用模式。

bc 计算命令

bc 参数
echo "10+10" | bc #打印20

tail 查看文件

tail 参数 文件
-f 循环
-n 尾部行数
-s 间隔秒
-c 字符数
tail -n +20 文件 #从第20行开始看
tail -c 10 文件 #显示最后的10个字符

head 查看开头

head 参数 文件
-n 行数
-c 字符数
head -n 5 文件 #显示开头的5行

|xargs 过滤器

find 文件 -perm +700 |xargs ls -l # 查询
cat 文件 |xargs #一行输出
cat 文件 |xargs -n3 #三列输出
find . -type f -name "*.php" -print0 | xargs -0 wc -l #统计所有php文件行数
cat 文件|xargs wget -c

ip 网络设置

ip link show #显示网络接口信息
ip link set eth0 up/down #启动/关闭网卡
ip addr show #显示网卡ip
ip addr add/del #设置/删除网卡ip
ip route list #查看路由信息
ip route add 地址 via 地址 dev eth0 #设置网断网管,数据走etho0接口
ip link list #显示网络设备

nohup 后台运行

nohup 命令

killall 杀死指定名字所有进程

killall node 
killall -9 关键字
killall -u 结束指定用户进程
killall -g 结束进程组
killall -I 忽略大小写

pkill 根据名字杀进程

pkill 参数 进程名
pkill -9 node #杀死所有node进程
更多学习笔记移步 https://www.cnblogs.com/kknote
原文地址:https://www.cnblogs.com/kknote/p/15711338.html