一Linux指令手册及知识入门
Posted yumoz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一Linux指令手册及知识入门相关的知识,希望对你有一定的参考价值。
目录速查
一、 指令总结
先来看个表,了解个大致内容:
命令 | 作用 | 补充常用 |
---|---|---|
ls | 查看当前目录内容 | ls -al 或 ll |
pwd | 显示当前目录 | |
cd | 进入目录 | cd / & cd - & cd ~ |
rm | 删除 | -r 递归删除 ;-f 强制删除 |
mkdir | 新建目录 | mkdir –p test/test1 递归建立多个目录 |
touch | 创建文件 | touch file.txt |
man | 命名查找 | cman 、man man |
cp | 拷贝 | 可以待路径,-r递归,-f强制 |
mv | 移动文件、重命名 | 加路径是移动,不加路径是重命名 |
cat | 打印文件到命令行 | cat -n file.txt & tac file.txt |
more | 多行数据查看 | more file.txt,支持回车键向下翻页 |
less | 多行数据查看 | less file.txt,支持PgUp&PgDn等功能 & /字符串 :向下搜索“字符串功能” & ?字符串 :向上搜索字符串功能 |
head | 显示前几行 | head -10 file.txt |
tail | 显示后几行 | tail -10 file.txt |
grep | 过滤命令 | grep “error” file.txt |
find | 查找文件 | find -name file.txt |
bc | 计算器 | 计算简单加减等 |
… | … | so on |
再分情况分析总结:
ls
- ls :显示所有文件
- ls -l 等同于 ll :以列表形式显示所有文件
- ls -a : 显示当前目录下所有文件,包含隐藏文件(以点开头,如.vimrc)
- ls -al : 列表显示当前目录下所有文件,包含隐藏文件
pwd
显示当前目录;
cd
- cd + 文件夹:转到文件下
- cd … :返回上级目录,回退,不能无限回退
- cd . :仍在当前目录
cd … :返回上级目录,回退,但不能无限回退,直至返回到根目录。
一些cd的尝试操作:
- cd ~ :进入当前用户主工作目录
- cd - : 进入最近保存的目录
- cd / :进入根目录
touch
- touch file.c # 创建file.c 文件
- touch test.txt # 穿件test.txt 文件
touch命令可以结合参数更改文档或目录的日期时间,包括存取时间和更改时间,还可以新建一个不存在的文件。
touch -a 修改存取时间 Access Time;
关于文件时间的分析,在后续讲解。
mkdir
创建目录,升级操作递归创建目录;
mkdir moyu
mkdir -p test1/test2/test3
rm & rmdir
删除命令目录,删除文件命令;
删除普通文件:
- rm 目录名
rm *
中的*是通配符,可以替换成任意想删除的文件- rm ./* 删除当前目录下的任何内容 ,./ 告知系统在当前目录
删除目录:
- rm -r 目录名 # -r表示递归
- 另一种 -p rmir方法
rmdir -p test1/test2 # 参考下图
删除目录,及其下所有文件:
参数含义:
-f 强制删除,即使写保护
-i 删除前逐一询问
-r 删除目录及其下所有文件
man
Linux的手册,使用命令
- man man 查看man的使用手册
- man 3 printf 查看程序库调用printf函数 如不指定,默认在区段1中使用
- man printf 默认使用区段1,用户指令
man的区段手册:
cp-拷贝
cp 文件名/目录名 目录名/…/.等
如:
- cp test.c …/ # 拷贝test.c到上级目录中
- cp test.c file.c …/ #拷贝test.c file.c 到上级目录中
- cp -r dir …/ #拷贝目录dir到上级目录中
- cp -rf * … # 将当前目录下所有文件递归强制拷贝到上级目录中
- cp -rf *.c … # 将当前目录下所有C文件递归强制拷贝到上级目录中
mv-改名&移动
- mv test.c file.c #将test.c 改为file.c
- mv test.c …/ # 将test.c 移动到上级目录中
cat & tac
-
cat file.c
-
cat -n file.c
-
tac file.c # 倒序显示
more
less
- less file.c
支持向上向下移动
支持字符串搜索
- /字符串:向下搜索字符串内容
- ?字符串:向上搜索字符串内容
浏览文件,支持向上翻页和向下翻页
head & tail (打印)
- head -5 file.c #文件前5行
- tail -5 file.c # 文件后5行
打印文件第10行内容:
方法一:
将new.txt 文件前10行写入到文件temp中,然后读取文件temp的最后一行
head -n10 new.txt > temp
tail -n1 temp
方法二:
将文件new.txt 的前10行写入到管道1中, 之后从管道中读取租后一行。
head -n10 new.txt | tail -n1
打印文件第10行到第20行内容:
方法一:
将new.txt 文件前10行写入到文件temp中,然后读取文件temp的最后一行
head -n20 new.txt > temp
tail -n10 temp
方法二:
将文件new.txt 的前10行写入到管道中, 之后从管道中读取租后一行。
head -n20 new.txt | tail -n10
grep (行过滤)
行过滤工具
- grep ‘10’ file.txt
- grep -n ‘10’ file.txt # 显示行号
- grep -nv ‘10’ file.txt # 显示行号,打印没有匹配的行的内容
- grep -i ‘hello’ file.txt # 忽略大小写的过滤
echo
这里解释了输出重定向。2
- echo “hello yumoz” # 打印hello yumoz到显示器中
- echo “hello yumoz” > temp.txt # 打印hello yumoz到temp.txt 文件,每次都清空文件,重新写入
- echo “hello yumoz” >> temp.txt # 追加式 打印hello yumoz到temp.txt 文件
这里解释了输入重定向。[^2]
- cat < new.txt # 从new.txt 输入内容到显示器中
linux计算器:
echo "1+2+3" | bc # 计算1+2+3
date
解决问题:时间戳?
时间戳是:“unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。”来自百度百科。
- date
- date +%Y-%m-%d-%H:%M:%S # 按格式显示时间
- date +%s # 保存时间戳的秒数
- date -d @时间戳 # 将时间戳转化为标准时间(实现见下图)
cal (日历查询)
- cal # 查询本月日历
- cal -3 # 查询前一月,本月,后一月
- cal 2020 # 查询2020年日历
find(查找)
特点:效率比较低,是真的在文件中查找。
- find /usr/bin/ -name ls
- find ~ -name temp.txt
which
查找命令文件所在目录:
- which ls
- which find
- which pwd
whereis
该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
- whereis ls
- whereis pwd
zip & unzip(压缩和解压)
压缩hellotest文件成为hellotest.zip文件:
[moyuz@yumoz a_test]$ zip hellotest.zip hellotest/*
bash: zip: command not found
提示:bash: zip: command not found,表示系统没有安装zip命令。
安装zip 和unzip命令:
[moyuz@yumoz a_test]$ sudo yum install -y unzip zip
然后根据提示输入sudo密码,或者在root用户下输入yum install -y unzip zip
。
打包,压缩:zip hellotest.zip hellotest/*
参数:-r 目录递归压缩
[moyuz@yumoz a_test]$ zip hellotest.zip hellotest/*
adding: hellotest/new.txt (deflated 80%)
adding: hellotest/temp.txt (stored 0%)
adding: hellotest/tmp2.txt (deflated 47%)
adding: hellotest/tmp.txt (deflated 47%)
解压到指定文件夹(当前目录下的a文件夹中):
unzip hellotest.zip -d ./a
tar(压缩)
压缩:
将hellotest文件夹压缩成hellotest.tgz
tar -czf hellotest.tgz hellotest/
解压缩:
将hellotest.tgz文件夹解压缩成hellotest
tar -xzf hellotest.tgz hellotest/
参数含义:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
二、 知识点
alias(命令重命名)
alias my_cmd='ls' # 将ls命令重名为my_cmd。
添加用户
在root下运行:
adduser username
passwd username #后续设置密码即可
- 普通用户设置自己的密码:(在普通用户下运行)
passwd
之后根据提示输入现有密码和新密码就可以了。
- root用户如何修改普通用户密码:(root下运行)
passwd 普通用户名
之后根据提示输入现有密码和新密码就可以了。
- 如何删除普通用户账号呢?
userdel -r wang
但是,没有删除,而且提示如下:
[root@yumoz a_test]# userdel -r wang
userdel: user wang is currently used by process 8207
[root@yumoz a_test]#
提示:user wang is currently used by process 8207;那应该怎么做呢?
[root@yumoz a_test]# ls /home # 列出所有用户
moyuz test wang
[root@yumoz a_test]# who # 查询当前登录用户
wang pts/0 2021-07-24 16:45 ......
moyuz pts/1 2021-07-24 16:08 ......
[root@yumoz a_test]# ps -u wang # 查询该用户pid
PID TTY TIME CMD
8207 ? 00:00:00 sshd
8208 pts/0 00:00:00 bash
8231 ? 00:00:00 sshd
8232 ? 00:00:00 sftp-server
[root@yumoz a_test]# kill 8207 #杀掉该用户对应的进程pid (sshd)
[root@yumoz a_test]# ps -u wang # 查看是否删除
PID TTY TIME CMD
[root@yumoz a_test]# userdel -r wang # 使用命令删除用户wang
[root@yumoz a_test]# ls /home # 列出所有用户
moyuz test
[root@yumoz a_test]#
总结:
- 列出所有用户
ls /home
- 列出当前登录所有用户
who
- 查询需要删除用户(wang)的进程号
ps -u wang
- 杀掉该用户进程
kill 8207 #杀掉该用户对应的进程pid (sshd)
- 删除用户
userdel -r wang
相对路径和绝对路径
绝对目录:从根目录向下的一条路径
相对目录:有多条路径
写一个脚本,在Linux命令行显示1000行数据
- 写法一 请严格遵守下面格式
count=0; while [ $count -le 1000 ];do echo "hello $count"; let count++; done
效果图:
下面给出错误实例和正确截图:
- 写法二:文件写法
文件:test.sh:
#!/bin/bash
count=0
while [ $count -le 100 ]
do
echo "hello $count"
let count++
done
运行:bash test.sh
将上述显示在命令行的内容直接写到文件中
count=0; while [ $count -le 1000 ];do echo "hello $count"; let count++; done > new.txt
打开new.txt 就是要找写入的1000行内容。
count=0; while [ $count -le 1000 ];do echo "hello $count"; let count++; done >> new.txt
打开new.txt 就是要找写入的1000行内容。
重定向练习
管道+重定向
以上是关于一Linux指令手册及知识入门的主要内容,如果未能解决你的问题,请参考以下文章