目录
cd ../ 或 cd .. | 切换到上一层目录(相对) |
cd 目录名 | 切换到指定目录(绝对) |
pwd | 查看当前所在的目录路径 |
cd ~ |
切换到当前用户的主目录中
|
fdisk -l | 查看磁盘分区列表 |
free | 查看内存使用情况 |
cat /proc/meminfo | 查看内存信息 |
cat /proc/cpuinfo | 查看CPU信息 |
top命令(类似于window中的资源管理器):
top
| 默认进入到完整界面实时查看系统的消耗,进程的情况;
点击ctrl + C 或 q 键退出
|
top -n 1 | 查看当前的消耗,不用进入到界面实时观看 |
vi /opt/learn.txt | 在指定目录下创建learn.txt文件,并进入 vi 编辑界面 |
touch /opt/learn | 在指定目录下创建learn文件。touch 仅单纯创建一个空白文件 |
cat > /opt/learn.txt << EOF | 在指定目录下创建文件,并在屏幕上输入内容,最后输入EOF表示输入结束。 如果不使用 << EOF 来结束,也可以在输入结束时直接按Ctrl+D来结束。 每次重复执行会将原有的内容覆盖掉。 |
echo "Hello World" > test.txt | 将指定内容输出重定向到文件中,如果文件不存在,则创建一个文件,如果存在,则会把原来的内容覆盖。 |
vi /opt/test.txt | 在vi编辑器中输出文本内容(如果没有就会创建一个) |
cat /opt/test.txt | 在屏幕上输出文本内容 |
more /opt/test.txt | 分屏输出文本内容(在无法滚动的情况下比较适用,预先加载完全部内容,按回车键显示下一行) |
less /opt/test.txt | 分屏输出文本内容(与more的区别是,看到哪一行,就加载到哪一行,查看大文件适用) |
strings /opt/test.txt | 打印文件中可打印的字符 |
head -n 11 /opt/test.txt | 查看指定文件的前11行 |
head /opt/test.txt | 查看指定文件的前10行(默认10行) |
tail -n 20 /opt/test.txt | 查看指定文件的后20行 |
tail /opt/test.txt | 查看指定文件的后10行(默认是10行) |
tail -f /opt/test.txt | 通过流的方式实时查看最新的文件内容(实时监控日志) |
> 为输出重定向(将前面执行的结果输出到指定文本中,会覆盖文本中原有的内容);
>> 为追加重定向,将前面执行的内容追加到指定文本的末尾;
ll /self/testDir/ 1> llout.txt | 执行ll /self/testDir/,如果执行正确,则将结果写入到 llout.txt 中(覆盖),屏幕无输出;如果有错误,则将错误输出到屏幕,而将空内容写入到 llout.txt 文件中(覆盖) |
ll /self/testDir/ 2> llerr.txt | 执行ll /self/testDir/,如果执行正确,则将结果在屏幕上输出,将空内容写入到 llerr.txt 文件中;如果执行有误,则屏幕上没有内容输出,而将错误的信息提示输出到 llerr.txt 中。 |
ll /self/testaDir/ 1> llout.txt 2> llerr.txt | 执行命令ll /self/testaDir/ ,不管命令执行成功与否都不在屏幕输出任何信息,正确执行时将命令的输出信息输出到 llout.txt 中,执行错误时则将错误的提示信息输出到 llerr.txt 中。执行正确时,llerr.txt 文件中没有内容,执行错误时,llout.txt 文件中没有内容。 |
ifconfig > /dev/null | 执行 ifconfig指令,重定向到 /dev/null 后,将不会在屏幕输出任何内容 |
&& (正确则往后继续执行) 和 || (错误则往后执行)
ls /opt && echo "前方执行成功" | && 前的命令执行成功后,会执行 && 后面的命令 |
ls /opt || echo "前方执行失败" | || 前面的命令执行失败时,会执行 || 后面的命令 |
| tee
管道符 | 和 tee 组合也可以将前面命令输出的内容重定向到指定的文件中
- # 进入vi编辑器。如果没有这个文本文件,就会自动新建并进入vi编辑器
- vi file.txt
进入vi编辑器后,首先会处于命令模式,即当前情况下所输入的都是命令;可以点击i、a、o等进入编辑模式;在编辑模式下,在按ESC键可以重新进入到命令模式。
以下为在 vi 编辑器命令模式中的一些命令。
i 或 a | 从命令模式进入到编辑模式;i为插入文本,a为追加文本;都在光标的位置输入 |
ESC | 从编辑模式进入命令模式 |
:w | 保存文本但不退出 |
:q! | 强制退出,不保存文本 |
:wq | 保存文本并退出 |
o | 在当前行的后面新增一行 |
O | 在当前行的前一行后新增一行 |
dd | 删除一行内容 |
D | 删除当前光标到行尾的内容 |
x | 删除当前光标所在处的一个字符 |
s | 删除一个字符并切换回编辑模式 |
S | 删除一行并切换回编辑模式 |
:n | 移动光标到第n行 |
$ | 光标移动到当前行文本的行尾 |
A | 光标移动到行尾并切换回编辑模式 |
^ | 光标移动到文本的行首 |
G | 光标移动到文本的末尾 |
gg | 光标移动到文本的行首 |
ZZ | 存盘退出 |
/字符串 | 查找某个字符串 |
n | 继续查找 |
:u | 撤销(相当于Ctrl+Z) |
:redo | 重做(相当于Ctrl+Y) |
cp —— 复制 | |
cp hello.txt /opt/test | 把 hello.txt 文件复制一份到 /opt/test 目录下 |
cp hello.txt /opt/test/he.txt | 把 hello.txt 文件复制一份到 /opt/test 目录下,并重命名为he.txt |
cp /opt/hello.txt ./ | 将指定的文件复制到当前文件夹下 |
rm —— 删除 | |
rm hello.txt | 删除指定文件 |
rm -f hello.txt | 强制删除,不重复确认 |
rm *.txt | 删除当前目录下的所有 .txt 文件 |
mv —— 移动(剪切) | |
mv hello.txt he.txt | 重命名hello.txt 文件为 he.txt |
mv hello.txt /opt/test | 将文件剪切到指定目录下 |
mv hello.txt /opt/test/he.txt | 将文件剪切到指定目录下并重命名为he.txt |
du -h hello.txt | 查看 hello.txt 文件的大小 |
true > test.txt | 清空文件内容 |
echo "" > test.txt | 清空文件内容 |
ls 或 ls /opt | 查看当前目录(或指定目录)下没有被隐藏的所有文件(列出文件名称) |
ls -l 或 ll | 以列表的形式查看当前目录下各文件的信息 |
ls -a | 显示当前目录下的所有文件,包括隐藏文件 |
ls *.txt | 显示当前目录下所有以txt为后缀名的文件 |
ls /opt/test | 显示指定目录下的内容 |
ls -R /opt | 显示指定目录及其子目录的内容 |
在linux系统下如果要创建一个隐藏文件,只需要在文件名的最前面加一个点 "." 即可。
ls 直接查询不会查询到隐藏文件。ls -a 查询可以查询到。
mkdir folder | 创建指定名称的目录 |
mkdir folder1 folder2 folder3 | 连续创建若干个目录 |
mkdir -p /opt/folder1/folder2/folder3 | 连续创建层次目录(folder1/folder2/folder3) |
rmdir /opt/mydir | 删除空的目录(不能删除非空的目录) |
rm -r ./test | 删除目录 |
rm -rf /opt/folder | 强制删除文件夹 |
cp -r /opt/test1 /opt/test2 | 拷贝文件夹(加上参数-r是深度拷贝) |
mv /opt/test /opt/test2 | 重命名文件夹 |
find ./ -name "hello.txt" | 查找当前目录下名为hello.txt的文件或文件夹 |
find /home -name "hello" | 查找/home目录下名字为hello的文件或文件夹 |
find ./ -name "*" | 查找当前目录下的所有文件或文件夹 |
find ./ -name "[h|f]*" | 查找当前目录下所有以h或f开头的文件或文件夹 |
find ./ -name "[a-fA-F]*" | 查找当前目录下所有以小写字母a~f或大写字母A~F开头的文件或文件夹 |
find ./ -name "[^a-fA-F]" | 查找当前目录下所有不以a、b、c、d、e、f、A、B、C、D、E、F开头的文件 |
find ./ -name "h?llo" | 查找当前目录下满足h?llo条件的文件,其中?的位置代表一位任意字符 |
find ./ -perm 741 | 查找当前目录下所有权限为741的文件或文件夹 |
find ./ -user mary | 查找所有者为mary的文件或文件夹 |
find ./ -group dev | 查找所属组为dev的文件或文件夹 |
find ./ -mtime -3 | 查找3天内更新过的文件或文件夹 |
find ./ -mtime +3 | 查找3天前更新过的文件或文件夹 |
find ./ -newer hello.txt | 查找比hello.txt更新的文件或文件夹 |
find ./ ! -newer hello.txt | 查找比hello.txt更旧的文件或文件夹 |
find ./ -type d | 查找当前目录下的所有文件夹 ( f:普通文件 d:目录(文件夹) l:软链接文件 c:字符设备,如终端、磁带机等 b:块设备,如光盘、硬盘 ) |
find ./ -size 602c | 查找当前目录下文件大小为602字节的文件 ( c:byte k:kilobytes M:megabytes G:gigabytes ) |
find ./ -size +600c | 查找当前目录下文件大小大于602字节的文件 |
find ./ -name "hello*" -exec ls -l {} \; | 查找当前目录下所有以hello开头的文件,并将其细节显示出来(目录也会) |
find ./ -name "hello*" -exec rm {} \; | 查找当前目录下所有以hello开头的文件并将其删除 |
find ./ -name "hello*" | xargs ls -l | 查找当前目录下所有以hello开头的文件并将其细节显示出来 |
“|” 是管道符,管道符主要用于多重命令处理,前面命令的打印结果作为后面命令的输入。
xargs 的作用是 把前面管道符的输入作为后面指令的参数。
grep "root" /etc/passwd | 查找/etc/passwd文件中包含root的行 |
grep -n "root" /etc/passwd | 查找/etc/passwd文件中包含root的行,并在每行的前方标注在原文中的行号 |
grep "^ma" /etc/passwd | 查找以ma开头的行 |
grep "bash$" /etc/passwd | 查找以bash结尾的行 |
grep "^[r|d]" /etc/passwd | 查找以r或d开头的行 |
grep -v "root" | 排除掉包含root在内的行 |
ls | grep test | 从ls的输出中过滤出包含test的行 |
grep -r games /etc | 在/etc目录下查找包含games的文件 |
find ./ name "*" | xargs grep word | 输出当前目录下文件名或目录名包含word的文件或目录 |
wc -l | 统计文件行数或输出的个数。 -c、--bytes、--chars只显示bytes数。 -l、--lines显示行数。 -w、--words只显示字数。 如不指定参数,则显示所有的统计信息 |
test 命令执行完成后没有输出,可以紧接着使用 echo $? 来查看结果,如果输出0,则表示真,如果输入1,则表示假(错误)
[ ******** ] 是test 命令的另一种写法,把test 后面紧跟的内容放到 中括号中即可,两边临近中括号的位置都需要有空格。
test -e /etc/passwd | 测试文件是否存在,存在时,使用echo $?将返回0,否则返回1 |
[ -e /etc/passwd ] | 与test -e /etc/passwd 的功能一致,是 test 命令的另一种写法(临近两个中括号都要空格) |
-d | 如果文件为一个目录,则为真 |
-e | 如果文件存在时为真 |
-f | 如果文件是一个普通文件时为真 |
-r | 如果文件可读时为真 |
-w | 如果文件可写时为真 |
-x | 如果文件可执行时为真 |
-s | 如果文件的内容长度不为零时为真 |
-L | 如果文件为符号文件时为真(链接文件) |
[ -e /etc/passwd -a -s /etc/shadow ] | 逻辑与运算 |
[ -e /etc/passwd -o -e /abc/aaa.txt ] | 逻辑或运算 |
[ ! -e /etc/passed ] | 逻辑非运算 |
[ "$USER" = "root" ] | 字符串比较,相等时echo $? 将返回0 |
[ "$USER" != "123" ] | 不相等判断 |
[ -z "$USER" ] | 字符串为空 |
[ -n "$USER" ] | 字符串不为空 |
[ $$ -eq 12345 ] | 判断当前脚本运行时的进程id是否为12345 |
-eq | 判断相等 |
-ne | 判断不等 |
-le | less or equal 第一个数小于或等于第二个数 |
-ge | gread or equal 第一个数大于或等于第二个数 |
-gt | greater then 第一个数大于第二个数 |
-lt | less then第一个数小于第二个数 |
[[ ]] 相比于 [ ] 支持更多的比较运算符,在处理字符串时更加灵活;
&& 与运算;|| 或运算
=~ 表示前方的字符串是否匹配后面的正则表达式,^ 表示字符串的开始(如果是在正则表达式的中括号中则表示 非),[0-9a-z] 表示可以去任意数字和任意小写字符,后面的 + 表示至少满足一次,最后的 $ 是结束标志。
在 linux 中,root 拥有最高的权限,所有文件或文件夹的权限设定对 root 都是无效的。
在正式的生产和服务器环境中,尽量使用普通的账号+人工权限设定的方式,避免出现漏洞后被人以root权限利用系统。
在 window 中,administrator 和 Linux 中的 root 等同。
cat /etc/group | 查看当前系统存在的用户组,<1000的是系统使用的,>1000的是用户创建的 |
groupadd test | 创建一个用户组名为test |
groupmod -n test testing | 将用户组test更名为testing |
groupdel test | 删除用户组test |
groups root | 查看用户root所在的所有组 |
cat etc/passwd | 查看所有账户 该文件每行代表一个用户账号,记录了账号的所有信息,包括用户名、密码、用户ID(UID)、组ID(GID)、连接、主目录和默认的shell等。 |
useradd -g test jack | 创建一个用户jack,主组归属于test |
useradd -g test jam -G dev | 创建一个用户jam,主组归属于test,附属组dev |
useradd ben | 创建一个用户ben,因为没有设定其归属的主组,默认将新增一个对应名为ben的组 |
passwd jack | 为用户 jack 指定登录密码(提示输入两次) |
usermod -g dev ben | 将用户ben换到dev组中 |
usermod -G 505 ben | 将用户ben附加到gid为505的组中 |
usermod -d /home/test ben | 将用户ben的登入目录改为/home/test (在修改前需要保证该目录存在) |
userdel ben | 删除用户ben |
userdel -f ben | 强制删除用户ben(即使该用户已经登录) |
userdel -r ben | 删除用户ben并删除其主目录 |
在任意的一个文件夹中,可以用ls -l或ll命令来显示其基本的信息和权限信息:
每一行中依次代表的内容如下:
1、文件权限:表示文件的访问权限,如读取、写入和执行权限。
2、链接数量:表示文件在文件系统中的硬链接数量。
3、文件所有者:表示文件的所有者用户及用户所属的组。
4、文件大小:表示文件的大小,以字节为单位。
5、修改时间:表示文件的最后修改时间。
6、文件名:表示文件的名称。
每一个文件都占一行来展示其信息,每一行的前10个字符所表示的意义如下:
如:drwxr-xr-x
第1个字母:‘-’代表普通文件,‘d’代表目录,‘l’为链接文件,相当于快捷方式
第2、3、4个字母代表当前文件或文件夹所属用户(owner)的权限,用u表示
第5、6、7个字母代表当前文件或文件夹所属的用户组(group)的权限,用g表示
地8、9、10个字母代表其他用户组和其他用户(other)的权限,用o表示
权限的表示方式:
r 读:也可以用数字 4 来表示
w 写:也可以用数字 2 来表示
x 执行:也可以用数字 1 来表示
su jame | 切换到jame用户 |
whoami | 查看当前的用户 |
chmod u+x test.txt | 为test.txt文件的所有者添加可执行权限 |
chmod u-w test.txt | 为文件的所有者去除写权限 |
chmod g-r test.txt | 为文件的所在组去除可读权限 |
chmod o+w test.txt | 为文件所在组之外的组添加可写权限 |
chmod a+w test.txt | 为所有角色添加可写权限 |
chmod a+wx test.txt | 为所有角色添加可写和可执行权限 |
chmod a-rwx test.txt | 去除所有用户对文件的读写和执行权限,此时只有root用户可以操作 |
chmod 777 test.txt | 将文件的权限设置为rwxrwxrwx,等同于chmod a-rwx test.txt (7就是4+2+1) |
chmod 643 test.txt | 将文件的权限设置为rw-r---wx |
chmod -R 755 /opt/temp | 将/opt/temp即其所有的子文件、子目录的权限改为755(连带) |
chown mary test.txt | 将test.txt文件的所有者改为mary |
chown mary /opt/temp | 将目录的所有者改为mary |
chown -R mary /opt/temp | 将目录及其子目录、子文件的所有者改为mary |
chgrp test hello.txt | 将hello.txt 所在的组该为test组 |
chgrp test /opt/temp | 将指定目录的所有组改为test组 |
chgrp -R mary /opt/temp | 将指定目录及其下属的目录和文件的所有组改为mary |
在Linux中,文件归档的作用是将多个文件组合成一个单一的文件,这个过程称为归档。
它通常用于系统备份、将旧数据移至长期存储设备以及方便文件传输等场景。
tar 命令是用于创建归档文件的常用命令。
归档文件不是文件夹,虽然它们看起来像是文件夹,但实际上它们是单一的文件。可以在这个“文件夹”中放入任何类型的文件,包括文本文件、图片、视频等。归档文件的好处之一是,它们可以轻松地复制和移动到其他位置,而不需要单独管理每个文件。
文件归档后并不会被压缩大小;一般是多个文件一起归档后再进行压缩。
归档后的文件后缀为.tar;归档文件压缩后一般后缀为.tar.gz;
tar -cvf hello.tar ./* | 将当前目录下的所有文件归档为hello.tar; 修饰符c:创建一个新归档 v:详细列出被处理的文件 f:指定要创建的归档文件的文件名或要解压的归档文件的名字。它必须是tar命令的最后一个参数,后面直接接文件名 |
tar -cvf hello.tar /opt/test | 将指定目录下的所有文件归档为hello.tar; |
tar -cf all.tar test1 test2 test3 | 选择当前目录下的三个文件进行归档,归档文件命名为all.tar |
tar -tf test.tar | 将归档文件test.tar中的文件显示出来 |
tar -xvf test.tar | 将归档文件解压缩到当前目录下,恢复其中的文件和目录结构。 |
tar -zcvf hello.tar.gz hello.tar | 将归档文件hello.tar压缩成hello.tar.gz |
tar -zxvf hello.tar.gz | 将压缩文件解压成hello.tar归档文件 |
gzip hello.tar | 将归档文件hello.tar压缩成hello.tar.gz |
gzip -d hello.tar.gz | 将压缩文件解压成hello.tar归档文件 |
zip hello.zip hello.txt | 将hello.txt压缩并命名为hello.zip |
zip -r test.zip /opt/test | 将指定的目录进行压缩并命名为test.zip |
unzip -v hello.zip | 查看压缩文件hello.zip中的文件信息 |
unzip hello.zip | 解压缩hello.zip |