Linux常用命令-基础命令
注意:
严格区分大小写
没有C,D等盘符
目录文件名不允许有空格
1.查看目录路径(绝对路径)
pwd
(1)在Linux中,存在着绝对路径和相对路径
绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql
相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home,然后再进入到test,执行的命令为 “#cd /home,#cd test”。此时用户所在的路径为 /home/test。第一个cd命令后紧跟/home,前面有斜杠;而第二个cd命令后紧跟test,前面没有斜杠。这个test是相对于/home目录来讲的,所以称为相对路径。
(2)普通用户家目录都是home下
2.查看指定目录下的文件
ls
(1)后面如果不跟东西,就显示当前目录下的文件及子目录
(2)如果跟东西,分2种:
相对路径(相对于当前目录)
如ls Desktop,指显示当前目录下的Desktop文件/目录的信息
绝对路径
如ls /root/Desktop,显示绝对路径/root/Desktop文件/目录的信息
(3)如果除了路径外,还跟了带小短线的参数,如-l
则显示对应功能的文件信息。
Mr.wang等价与 ls …/home/Mr.wang
. 表示当前目录
…表示上一级目录
ls -a 可以显示指定目录下所有文件/目录(包括隐藏的,隐藏的文件/目录通常以英文 句点开头.)
ls -l 通常可以简写为ll。可以用列表显示所有文件/目录(更详细)
3.Linux命令的格式
<命令名称> [<带小短线的选项参数>] <普通参数1> <普通参数2>
4.改变所处的当前目录位置
cd <路径>
cd … 代表返回到上一级目录
(ls mydir/ 等价于 ls ./mydir/)。
在Linux中,一个英文句点(.)代表当前目录,两个英文句点(…)代表上一级目录,波浪号(~)代表家目录。
5.创建目录
mkdir 目录名称/路径
mkdir -p 目录名称/路径(创建多层目录使用)
mkdir test 04 创建了两个文件夹,并不是创建了个名为test 04的文件夹
mkdir test_04 这是创建了名为test_04的文件(可以用_模拟空格)
空格是间隔命令或参数与参数之间
6.目录重命名
mv 老目录名 新目录名
7.删除目录
rm -r 目录名/路径
rm -rf 目录名/路径
-r代表递归删除(包括子目录)(需要再再输入y去确认)
-f代表强制删除(不用再输入y去确认)
删除目录一定要带 -r 选项。
这条命令,知道就行,不是你自己创建的目录一定不要使用这个命令。
慎用!!!!!!!!!!!!!!!!!
8.移动目录
mv 源 目的
例:mv test_04 test
是把test_04这个目录移动到test目录下。
若mv的文件夹对应的目的
如果有的话就是移动 如果没有就是重命名
9.复制目录
cp 源 目的 例:cp test04 test_04 文件
cp -r my_dir my_dir_2 文件夹
是把my_dir这个目录递归地复制到当前目录下,生成一个新目录,名称为my_dir_2
10.创建文本文件
touch myfile
在当前目录下生成了一个名称为myfile的文本文件(空白)
echo abc 标准输出(屏幕)
echo abc >mytxt 将abc写入mytxt中(没有的话自动创建)
11.文件重命名
mv myfile mytxtfile
这个命令会把当前目录下的myfile文件重命名为mytxtfile
12.移动文件
mv myfile my_dir/
将当前目录下的文件myfile移动到当前目录下的子目录my_dir下
若mv的文件夹对应的目的
如果有的话就是移动 如果没有就是重命名
13.复制文件
cp my_dir/myfile mytxtfile
将my_dir/目录下的myfile文件复制到当前目录下,命名为mytxtfile
14.修改文件内容(文本文件)
vim mytxtfile
在文本编辑器vim中修改文件mytxtfile的内容。
刚刚进入的时候,是处于命令模式,需要按i这个键,进入编辑模式(左下角会提示–INSERT–)
我们就可以使用键盘输入我们想要修改的内容了。
当我们修改完成准备保存退出时,要按Esc返回到命令模式,然后按:英文冒号,左下角会出现:,我们输入wq,敲回车。esc—:wq–回车
虽然我们在编辑模式修改了内容,但如果我们并不打算保存我们的修改,想直接退出,还是按Esc,回命令模式,输入英文冒号:,输入q!,敲回车。esc—:q!–回车
如果我们只是想单纯地看看里面的内容后,不修改,直接退出,则保证你处于命令模式,输入英文冒号,输入q,回车。:q–回车
vi也是一款文本编辑器,但是功能不如vim强大。所以我们还是使用vim就好了。
vim/vi的快捷键有很多,功能很强大,这里不细讲,大家可以自己百度深入学习。
gg 回到第一行
shift+g 到最后一行
/home 回到第一个home
echo abc > mytxtfile
echo abc 会将echo后的参数输出到标准输出(屏幕上)
后面的>的作用是重定向,它会将echo 的参数不再输出到屏幕上,而是指定的文件中(覆盖)。如果想文 件后面追加,则使用>>。
15.查看文本文件内容
cat mytxtfile
会在屏幕上输出整个mytxtfile的内容
head -1 mytxtfile
会在屏幕上输出mytxtfile的第一行内容
tail -1 mytxtfile
会在屏幕上输出mytxtfile的倒数第一行内容
如果文件内容过多,一个屏幕显示不下,可以使用如下命令
cat mytxtfile | more
那个竖线叫管道命令,它会把它左边命令的输出作为输入传递给它右边的命令,
敲空格:是翻页(屏幕),
敲回车:下一行。
16.查看当前登录用户名
whoami
17.切换登录用户
su 需要切换的用户名(如果是root则需要密码)
18.修改密码
passwd(回车),输入新密码,再回车,再输入一遍。回车。
上面是修改自己密码。
如果想修改别的用户名的密码,必须使用root登录。
passwd lauhank(你想修改的用户名),后面就和修改自己密码一样了。
新密码会在下次登录时生效。
新密码可以与老密码一样。
19.查找文件
命令 find ./ -name my*
在当前目录(./代表当前目录,也可以换成其他指定路径)下查找以my开头的所有文件/目录,相关的文件/目录的路径会在屏幕上的结果中输出出来。
精确查询:mytxt
模糊查询:my*
Linux常用命令-高级命令
文本文件student
姓名 学号 语文成绩 数学成绩 英语成绩 总成绩
张三 001 80 90 95 265
李四 002 1 85 90 245
赵五 003 65 90 70 225
王六 004 60 40 80 180
周七 005 90 55 85 230
齐八 006 85 90 70 245
命令grep-按行筛选(仅查找)
命令grep通常用来在文件或者上一个命令的输出结果中,筛选出我们想要的内容
比如 cat student | grep 李四 目的是在文件student的内容中,筛选出带有李四的行。
或者 grep 李四 student 单独使用grep命令,对于从文件中找,这2条命令是等价的。
命令 cat student | grep -v 李四 的目的是在管道左侧命令的输出结果中筛选出不包含李四这个字符串的内容。(相当于 grep 李四 的取反)
命令sed-按行修改(增删改查)(a d c p)
命令sed通常会按行去处理文本,它可以在不改动原来的文件/结果的基础上,按我们的要求删除、插入、修改指定的行。
cat -n student | sed ‘1d’ 输出student的内容(-n代表前面有行号),并将第1行删除
cat -n student | sed ‘3,5d’ 输出student的内容,并将第3到5行删除(用逗号表示连续)
cat -n student | sed ‘1a abcdefghi’ 输出student的内容,并在第1行后面(第2行前)插入abcdefghi
cat -n student | sed ‘1c abcdefghi’ 输出student的内容,并将第1行修改为abcdefghi
cat -n student | sed -n ‘3,5p’ 输出student的内容,只显示第3到5行
命令sed当使用在查找的这个场景中时,要加 -n 选项参数。
cat -n student | sed -n ‘/张三/p’ 输出student的内容,只显示包含’张三’的行
命令awk-按行处理,对每行文本做更复杂的操作
命令awk通常会按行去处理文本,它要做的第一个事就是对每一行进行切割,如果指定切割符就按指定的走,没有就是默认的空字符。
cat student | awk ‘{print $2}’
这条命令的作用就是,对cat student的输出结果,按行处理,每行,使用空格、制表符(建议用制表符)等空字符进行切割,切割后,第1部分(第1列)就是$1,第2部分就是$2,未切割的原始数据是$0。print就是在屏幕上输出对应变量的值。
cat /etc/passwd | awk ‘:’ ‘BEGIN{print “username\t\t\thomedir”}{print $1"\t\t\t"$6}’
这条命令的作用是,把cat /etc/passwd的输出结果,按行处理,每行使用英文冒号进行切割,必须要用 -F ‘:’ 来指定切割符,先打印 username3个制表符homedir,再另起一行,开始打印原来输出结果中切割后的第1列和第6列,两列之间使用3个制表符进行间隔。
cat /etc/passwd | awk ‘BEGIN{count=0}{count++}END{print “count=”,count}’
这条命令的作用,是这样的。它把cat /etc/passwd的输出结果的行数计算,并最终输出。
BEGIN{}里面的内容只会在开始时执行一次,通常可以用来声明与初始化一些变量。
然后紧接的{}里面的内容,会按行,每行都会执行一次,通常用来写一些对行内容进行处理的逻辑。
END{}里面的内容只会在上面的逻辑都执行完后,最后收尾时执行一次,通常可以用来输出最终的处理结果。
通常awk的使用场景就是类似于下面的
cat… | awk ‘BEGIN{…} {} END{…}’ | awk ‘…’ | awk ‘’
cat /etc/passwd | awk -F ‘:’ ‘BEGIN{homedir=""} {if($1==“Mr.wang”){homedir=$6;}} END{print “homedir=”,homedir}’
这条命令的目的是在cat /etc/passwd的输出中,按英文冒号切割每行,找到Mr.wang这个用户名对应的家目录的名称。
awk默认按照字符串比较的,如果要比较数值,需要先强制类型转换,即 $1+0,转换成整数。
命令wc
wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
-c或–bytes或——chars:只显示Bytes数;
-l或——lines:只显示列数;
-w或——words:只显示字数。
有2种套路,一种是当成单独命令,一种是在管道中(这种场景使用最多)。
wc -l /etc/passwd 统计/etc/passwd文件的行数
cat /etc/passwd | wc -l 与上面差不多,但这种用法更常见。
wc还有其他的选项参数,不过不常用,大家有兴趣可以自己去了解下。
命令uniq与sort
命令uniq通常用来去重(按行),但是它的前提是,它处理的内容已经有序了,不然就得不到我们想要的去重效果了。所以通常是在调用uniq之前使用sort来排序。
cat student | sed ‘1d’ | sort -rk2(r代表降序)
将cat student | sed '1d’的输出结果中,以空格或者制表符等为基准切割每行,然后按第2列降序排序,第2列通过 -k2 指定(第3列就是 -k3),如果是升序则不加r
如果想使用指定字符做切割,则使用 -t指定切割符
ls -l | sort -nk5此命令可以按文件/目录大小排序结果(-n的作用就是将指定的列当成数字处理)。数字与字符的排序规则是不同的。522 4096如果按字符排序,522是大于4096的。如果按数字排序,则522是小于4096的。
命令cut与seq
这两个命令不算太常用,知道大概什么功能就可以。
cut通常用于切割行,显示对应的第几列。默认的切割符是制表符。如果要指定,则使用 -d 。
cat student | cut -f 3,4 等价于
cat student | awk ‘{print $3 “\t\t”$4}’
seq 用于生成序列号(整数)。
seq 8 会生成从1到8,8个整数的序列号。
seq 0 9 会生成从0到9,10个整数序列号。
seq 0 2 9会生成从0开始,每次增量为2,到不大于9的整数序列号(0 2 4 6 8)