在这里,介绍一些 Linux 系统中简单的文件增删改查命令
语法,Linux 的语法格式为:
1 | 命令 可选参数 你要操作的对象 |
增
mkdir 创建文件夹
mkdir 命令用于创建新的文件夹,可使用相对路径或绝对路径创建:
1 | mkdir test # 创建名为test的文件夹,等同于 mkdir ./test |
若要同时创建两个或多个文件夹,可以用空格分隔开,例如在 test 目录中创建 boy 和 girl 两个文件夹:
1 | cd test |
mkdir 默认是无法创建多层文件夹的。若要创建多层文件夹,需要指定 -p
参数递归创建文件夹:
1 | mkdir -p /root/test/男同学/豹哥 |
touch 创建文本文件
使用 touch 命令的可以创建普通文本文件,也就是用来存放字符串的文件:
1 | touch 今天学Linux贼开心 # 创建一个文本文件,文件名为:"今天学Linux贼开心" |
删
rm 删除
rm,即 remove,用来删除文件或文件夹(Linux 中一切接文件,所以文件夹也是一种文件)。其基本语法为:
1 | rm 可选参数 文件名 |
例如,删除 test.txt
文件:
1 | rm test.txt # 默认会让用户确认是否删除,输入y删除,输入n取消 |
如果需要强制删除文件,不必给我们提示,可以在删除的时候加上 -f 参数:
1 | rm -f test.txt |
注意!!rm -f
是强制删除文件,不给用户任何提示,危险慎用!!!
注意!!rm -f
是强制删除文件,不给用户任何提示,危险慎用!!!
注意!!rm -f
是强制删除文件,不给用户任何提示,危险慎用!!!
rm 命令默认只能删除文件。若要删除文件夹,需要加上 -r 参数。此时,会递归删除指定文件夹以及其中全部内容:
1 | rm -r /test # 递归删除根目录下的浩哥,及其子文件夹 |
同样地,对于每个即将删除的文件/文件夹,系统都会向用户再次确认。只有当用户输入 y 确认后,才会删除掉。
接下来要提到的命令,很好用,但也很危险,一定要看仔细了。
危险命令!!!!!!!!!!!慎用!!!!看好了
危险命令!!!!!!!!!!!慎用!!!!看好了
危险命令!!!!!!!!!!!慎用!!!!看好了
如果文件夹中的内容过多,我们不想每个文件都确认一下,可以使用 -rf 参数,强制递归删除文件和文件夹,且不会给用户任何提示。
因为不会有提示,所以敲命令时一定要仔细,其用法为:
1 | rm -rf /tmp/* # 删除tmp下所有内容 |
下面这条命令,无论何时何地,断然不要用!!!
下面这条命令,无论何时何地,绝对不要用!!!
下面这条命令,无论何时何地,千万不要用!!!
1 | rm -rf /* # 删除所有文件 |
改
cd 切换目录
cd,即 change directory 更改目录。其用法为:
1 | cd / # 切换目录到 根目录下 |
exit 退出 Linux
exit 命令用来退出 Linux 系统:
1 | exit |
clear 清空屏幕
clear 命令用来清空屏幕,删除屏幕中显示的左右内容:
1 | clear |
hostnamectl 主机名控制
1 | hostnamectl set-hostname linuxlearning # 修改主机名,重新登陆生效 |
Linux 的特殊重定向符号
1 | > # 重定向输出覆盖符,类似于Python的w模式,覆盖写 |
我们用的比较多的是前两个符号,作用是将前一个命令输出的内容写入到文件中:
1 | [root@localhost ~]# echo "大师兄,三师弟被妖怪抓走了~" > test.txt |
cp 复制
cp,即 copy,用于复制文件或文件夹。其基本语法为:
1 | cp 源文件 拷贝后的文件 |
直接使用 cp 命令可以拷贝单个的文件:
1 | cp test.txt test.txt.bak #拷贝单个文件 |
但是如果要拷贝文件夹,需要使用 -r 参数,进行递归拷贝:
1 | cp -r test /tmp # 递归拷贝当前目录下的test文件夹所有内容到/tmp目录下 |
mv 移动和重命名
mv,即 move,主要有两个作用:一个是移动文件的作用,另一个是重命名的作用。
mv 可以用来移动文件或文件夹的路径:
1 | mv /tmp/test/ / # 移动test文件夹至根目录 |
mv 也可以起到重命名文件的作用
1 | mv shi.txt 好诗.txt # 将“shi.txt”重命名为“好诗.txt” |
mv 也可以用来重命名文件夹,但是有个小小的坑:
第一种情况,新的文件夹名字不存在,则成功实现重命名:
1 | mv test/ linuxtest |
第二种情况,新的文件夹名字存在,则是移动到该文件夹的目录下:
1 | [root@localhost test]# ls |
查
很多信息其实直接从命令行前的提示就可以看出来:
pwd 打印工作目录
pwd,即 print working direcotry,用来打印当前所在的工作目录,也就是我在哪的意思,输出当前所处的绝对路径。
1 | [root@localhost test]# pwd |
whoami 查看用户名
whoami,即 who am I,我是谁的意思,用来查看当前登录用户的用户名:
1 | [root@localhost ~]# whoami |
hostname 主机名
用来查看主机名字:
1 | [root@localhost ~]# hostname |
which 命令位置
which,哪一个,用来查看命令所处的位置。是去环境变量中查找是否有相应的命令文件:
1 | which python # 去环境变量中寻找是否存在python解释器,也就是PATH变量 |
ls 查看文件夹内容
ls,即 list,列出文件夹中所有的文件和文件夹内容的命令:
1 | [root@localhost ~]# ls # ls不接参数,查看当前目录中的内容 |
ls 可以接 -l
参数,查看文件详细信息,可简写作 ll
:
1 | [root@localhost ~]# ls -l |
可以使用 -a
参数查看隐藏文件,Linux 中以 .
开头的文件夹即是隐藏文件:
1 | [root@localhost ~]# ls -a |
Linux 有几个比较特殊的文件夹,可以通过 ls 命令来查看:
1 | ls . # 点代表特殊文件夹,代表当前目录 |
cat 查看文件内容
cat 命令用来查询文件内容的,其基本语法为:
1 | cat 文件名 |
例如:
1 | [root@localhost ~]# cat test.txt |
cat 后接 -n 可以显示出行号:
1 | [root@localhost ~]# cat -n test.txt |
cat 命令可以结合 [特殊重定向符号](#Linux 的特殊重定向符号) 向文件中写入内容:
1 | [root@localhost ~]# touch first.py |
echo 打印
echo 命令用于打印的内容,例如:
1 | [root@localhost ~]# echo "大郎,起来喝药了" |
也可以将内容赋值给变量,然后直接打印变量名。Linux 这样定义一个变量:
1 | name="大郎" |
通过在变量名前加一个 $
符号的形式取出变量的值:
1 | echo $name |
Linux 的命令帮助信息查看
有 --help
和 man
两种方式查看命令的帮助信息:
1 | ls --help # 查看简单帮助信息 |
find 查询
find 命令用来查询搜索,其基本语法为:
1 | find 从哪找 -name 你要找的东西名字是什么 |
例如,在 Linux 下全局搜索以 .txt
结尾的文件,其中 *
为通配符,可以匹配任意内容:
1 | find / -name "*.txt" |
再比如,在 /etc/
目录下,进行局部搜索,找出网卡的文件,提示,网卡文件名字以 ifcfg
开头:
1 | find /etc -name "ifcfg*" |
除了指定文件名查找,还可以附加 -type 参数查找某一类型的文件,诸如:
1 | b - 块设备文件 |
全局搜索和 Python 相关的文件夹:
1 | find / -type d -name "python*" |
全局搜索,和 Python 相关的文件:
1 | find / -type f -name "python*" |
head 和 tail
head 命令用来显示文件开头一定行数的内容,默认看前 10 行;
tail 命令用来显示文件末尾一定行数的内容,默认倒序看后 10 行。
显示前 5 行:
1 | head -5 file.txt |
显示后 3 行:
1 | tail -3 file.txt |
tail 命令通过使用参数 -f
可以实现实时监控,是 flush 刷新的意思:
1 | tail -f /var/log/nginx/access.log |