Linux常用基础命令

  • Linux命令格式
  • Linux 常见用户管理命令
    • 创建新用户
  • Linux文件及目录管理命令
    • 绝对路径和相对路径
    • cd命令
    • ls命令
    • pwd命令
    • mkdir命令
    • touch命令
    • 文件属性
    • chmod命令
    • chown 和chgrp命令
    • umask命令
      • 文件权限
      • 文件夹权限
    • linux默认权限
    • file命令
    • cp命令
    • alias命令
    • mv命令
    • rm命令
    • ps命令
    • grep命令
    • top命令
    • clear命令
    • 磁盘相关的命令
    • ln命令
    • Linux帮助命令
      • man帮助命令
      • 使用--help参数
      • help命令获取帮助
      • info命令获取帮助
    • Linux开关机命令
      • 重启
      • 关机
    • vim
      • vi/vim 的使用
      • 命令模式
        • 移动光标
        • 复制、删除、粘贴
        • 快捷操作
      • 输入模式
      • 底线命令模式
        • 查找
      • cat命令
        • cat清空文件的用法
      • echo命令
        • 加引号和不加引号的区
      • 重定向符号
      • tac命令
      • grep命令
      • 管道符
      • more命令
      • less命令
        • more和less的区别
      • head命令
      • tail命令
      • cut命令
      • file命令
      • which命令
      • whereis命令
    • 文件的打包和压缩
      • gzip命令
      • zip命令

Linux命令格式

1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的
2.参数 > 同一个命令,跟上不同的参数执行不同的功能,linux命令,参数之间,普遍应该用一个或多个空格分割

如果不用xshell或者finalshell 也可以用命令行登录

ssh 用户名@服务器地址
ssh root@服务器地址
命令提示符
20181117026@VM-0-3-ubuntu:~$   普通用户,登陆后root@VM-0-3-ubuntu:~#        超级用户root,登录后root代表当前登录的用户@ 分隔符@后面是 主机名~  当前的登录的位置,此时是家目录# 超级用户身份提示符
$ 普通用户身份提示符在Ubuntu里面切换超级用户root的命令为 sudo su
普通用户切换 su 用户名    切换用户exit  退出到上一个用户whoami 查看当前用户hostname 查看主机名pwd 显示当前工作目录的绝对路径logout 退出当前系统用户sudo 使用root用户的权限执行命令

windows里面每个盘就像是一个树,而Linux里面不分盘,就是一整个树,根是/


/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv: 该目录存放一些服务启动之后需要提取的数据。

/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:这个目录是用来存放一些临时文件的。

/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:系统用户使用的应用程序。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件

Linux 常见用户管理命令

命令 命令含义
useradd 添加用户账号 -m创建家目录,-s指定shell
usermod 设置用户账号属性
userdel 删除用户对应账号 -r会删除用户家目录
passwd 设置指定用户的密码,没有指定用户,是修改当前用户的密码
groupadd 新建用户组
groupdel 删除用户组
gpasswd 向指定组添加/删除指定的用户,如:gpasswd -a/-d user group
groups 查看指定用户的组信息
id 显示用户ID 组ID和用户所属列表
who 显示登录到系统的所有用户
whoami 显示当前系统的是那个用户
sudo 用root身份执行命令
visudo 编辑sudoers配置文件
su 切换用户

配置了/etc/sudoers文件后,可以对用户命令提权,sudo 命令

创建新用户

创建用户必须是在root超级用户下useradd dyk -m
# -m的作用是不仅建立用户还在对应的目录下创建文件目录
useradd dyk -m  -s
#指定用户登录时的shell解析脚本,一般指定
passwd dyk
Enter new UNIX password:
Retype new UNIX password: su dyk //切换普通用户userdel -r  dyk  删除用户的同时删除家目录

Linux文件及目录管理命令

命令 对应英文 作用
ls list 查看文件内容
pwd print work directory 查看当前所在目录
cd 目录名 change directory 切换文件夹
touch 文件名 touch 如果文件不存在,则创建
mkdir 目录名 make directory 创建目录
rm 文件名 remove 删除指定文件

绝对路径和相对路径

路径分为相对路径和绝对路径。相对路径:相对于当前文件夹的路径。不以 / 开始就是相对路径cd xxx   # 进入到当前文件夹里的 xxx 文件夹cd ./xxx  # 等价于  cd xxxcd ../xxx # 进入到上一级文件夹,再在这个文件夹里进入到 xxx绝对路径:  以 / 开始的就是绝对路径cd  /home/xxx   # 从根目录开始查找 home,进入到home里的 xxx

cd命令

符号 说明
. 当前目录
上一层目录
- 表示上次切换之前的目录
~ 当前【用户】所在的家目录
/ 顶级根目录
    1. ~ : 表示的是当前用户的家目录当前用户的家目录: 普通用户是在  /home/用户名/root用户是在  /root/2. - : 表示跳转到上一次的目录3. ../ : 表示跳转到上一级目录4. 空: 等价于 ~,表示跳转到当前用户的家目录

ls命令

选项 说明
-a 显示出所有文件类容,以及隐藏的
-l 详细的输出文件夹中内容
-h 输出文件大小(例如 1K 234M 2G)
-t 按最后修改时间列出文件
-S 根据文件大小排序,从大到小排序
-r 逆序排列
-d 显示目录本身的信息 而不是显示目录的内容

-l选项显示的结果:类型及权限 | 连接数 | 用户 | 用户组 | 大小 | 月 | 日| 年/时间 | 名称

连接数:如果是文件,表示这个文件有多少个名字(硬链接);如果是目录,表示这个目录里有多少个子目录

语法 ls  可选参数  可选文件的对象ls -a 显示出所有文件类容,以及隐藏的 ls -l 详细的输出文件夹中内容  ls -h 输出文件大小  (例如 1K 234M 2G)ls -t 按最后修改时间列出文件ls --full-time 以完整的时间格式输出((也就是按照中国的时间日期显示)) ls -F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个)注:可以标识文件类型加上 * 代表可执行的普通文件加上 = 表示套接字加上 | 表示FIFOS(队列系统)加上 @表示符号链接加上 / 表示文件夹ls -d 显示目录本身的信息 而不是显示目录的内容ls -S 根据文件大小排序,从大到小排序ls -r 逆序排列ls -i 显示索引节点信息(索引节点相当于身份证号)

案例

ls -lt 按照时间进行排序ls -lrt 找出最新的文件ls -d */    列出当前所有目录ls -hS    ./*    显示出当前目录下所有内容详细,且以kb,mb,gb单位从大到小排序

pwd命令

pwd  #会输出当前所处在位置的绝对路径

mkdir命令

若指定目录不存在则创建目录。

mkdir -p 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理,可以多层创建文件夹,递归创建文件夹mkdir -m  设置权限模式,而不是减umask的mkdir {1..3}加花括号创建连续的目录,用..隔开 花括号内可以是连续的数字、连续的字母mkdir {a..e}

案例

mkdir {dyk1,dyk2,dyk3}  创建三个文件夹,逗号隔开mkdir dyk{1..5}    创建连续的目录mkdir dyk1 dyk2  创建少量连续目录mkdir -p dyk/work 创建dyk文件夹同时在dyk目录下再创建work文件夹,递归创建文件夹

touch命令

创建文件或修改文件时间戳

touch dyk{连续数字或字母} 创建多个文件序列
touch dyk{1..10}
touch dyk{a..z}touch dyk -c 不创建任何文件
touch -t       使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当前时间
touch -r       使用指定文件的时间属性替代当前文件时间

案例

修改文件时间
touch -t 06010808 d1    #修改d1文件的时间是 6月1号8点8分
touch -r d1 d2        #把d2的时间改成d1一样

文件属性

首先Linux中文件的拥有者可以把文件的访问属性设成3种不同的访问权限:可读®,可写(w) 和可执行(x)文件又有3个不同的用户等级:文件拥有者(u),所属的用户组(g)和系统里的其他用户(o)

选项 说明
- 代表着普通文件
d 代表着目录文件夹
l 表示链接文件
c 表示字符设备
b 表示块设备
p 表示命名管道,比如FIFO文件(first in first out 先进新出)
f 表示堆栈文件 比如LISOW文件(last in first out 后进先出)
s 表示套接口
第一个字符显示的文件的类型
-  代表着普通文件
d  代表着目录文件
l  表示链接文件
c  表示字符设备
b  表示块设备
p  表示命名管道,比如FIFO文件(first in first out 先进新出)
f  表示堆栈文件  比如LISOW文件(last in first out 后进先出)
s  表示套接口第一个字符之后的三个三位字符数组
第一个三位字符组表示文件的拥有者(u)对文件的权限
第二个三位字符组表示文件用户组(g)对文件的权限
第三个三位字符组表示系统的其他用户(o)对文件的权限若该用户组对此没有权限,一般显示 - 字符

案例

drwxr-xr-x 首先第一个字符表示为目录文件夹
第一个三位字符组表示文件的拥有者(u)对文件可以读,写,和执行
第二个三位字符组表示文件用户组(g)对文件可以可以读,不可以写,可以执行
第三个三位字符组表示系统的其他用户(o)对文件的权限 可以读,不可以写,可以执行

rwx权限表示
r read 读取 4
w  write 写  2
x  execute  执行 1
-           无权限  0
-
444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx

chmod命令

用来更变文件或目录的权限

设置文件权限所有人可读
chmod ugo+r dyk.txt
等价于
chmod a+r dyk.txt设置文件同一个用户和同一个组的可写,其他人不可写
chmod ug+w,o-w dyk.txt也可以直接写入八进制
chmod 765 dyk.txt
设置用户可读可写可执行,组可读,可写,其他人可读,可执行

拥有可执行权限的文件,在linux终端下通常呈现为绿色,如果在运行程序 permission dennied 这样的错误提示,可在终端输入 chmod +x file,为将要运行的程序增加可执行权限。

chown 和chgrp命令

chown:修改文件的所有者和组别
chown [选项] 文件所有者 文件名chgrp:改变文件的组所有权
chgrp: chgrp 文件所有组 文件
选项 参数含义
-c 详尽地描述每个file实际改变了那些所有权
-f 不打印文件所有权就不能修改的报错信息

umask命令

umask 命令用来限制新文件权限的掩码,也称之为遮罩码,防止文件、文件夹创建的时候,权限过大,当新文件被创建时,其最初的权限由文件创建掩码决定。
用户每次注册进入系统时,umask命令都被执行,并自动设置掩码改变默认值,新的权限将会把旧的覆盖。

作用:用来限定新建文件的默认权限,权限与该值相反。
命令:umask [value],查看或设置掩码umask值就是指“Linux文件的默认属性需要减掉的权限”。
比如Linux普通文件的最大默认属性是666,目录文件的最大属性是777。
但是我们不想要用户在新建立文件时,文件的属性是666或777,那么我们就要设置
umask值。
Linux系统预置的umask值是022,那么用户在新建立普通文件时,普通文件的属性就是666-022=644,新建立目录文件时,目录文件的属性就是777-022=755。默认的文件、文件夹权限,减去umaks的值等于最终的权限值默认umask值root和普通用户不一样
#root用户umask  0022#普通用户umask  0002
语法参数-S:以字符的形势显示当前的掩码。
-p:带umask开头以数字的形势显示当前掩码

文件权限

操作系统创建文件,默认最大权限是666(-rw-rw-rw-)

#文件默认起始权限666,减去umask默认值022,等于创建文件的权限
666
022
-----
644            #系统创建文件权限默认是644   -  rw-  r-- r--

umask值不得大于6
umask计算出的文件权限不得拥有执行权限x,如果计算结果中有执行权限,则需要将其加一

文件夹权限

系统创建目录默认权限最大777

#目录最大权限777,减去umask值,得到目录创建后的权限
777
022
------
755

linux默认权限

文件644 rw- r-- r--
目录655 rwx r-x r-x

file命令

file 文件名
查看文件的类型
file命令能读取文件头并识别文件类型

cp命令

选项 说明
-r 递归式复制目录,即复制目录下的所有层级的子目录级文件
-p 复制的时候 保持属性不变
-d 复制的时候保持软连接(快捷方式)
-a 等于 -pdr
-i 覆盖前询问提示
-f 强制覆盖程度
cp    要复制的文件    目标文件
cp    要复制的文件    目录
cp    要复制的文件    目录+源文件
将源文件复制至目标文件,将多个源文件复制到目标cp -r 递归式复制目录,即复制目录下的所有层级的子目录级文件
cp -p 复制的时候 保持属性不变
cp -d  复制的时候保持软连接(快捷方式)
cp -a 等于 -pdr
cp -i 覆盖前询问提示
cp -f 强制覆盖程度备注:
默认系统做了 alias别名功能,让我们输入cp的时候,其实是cp -i参数

案例

#递归复制test文件夹,为test2
cp -r test test2cp是个好命令,操作文件前,先备份
cp main.py main.py.bak移动多个文件,放入文件夹c中
cp -r  文件1  文件2  文件夹a   文件夹c

alias命令

给命令起别名

alias md=mkdir
相当于给mkdir命令起了一个别名,以后使用md即可创建一个文件夹。alias   # 不添加任何参数,表示列出所有的别名unalias md   # 删除别名

mv命令

mv命令的作用是移动或是重命名文件

选项 说明
-f 覆盖前不询问
-i 覆盖前询问
mv [选项] 源文件  目标文件     重命名的用法
mv [选项] 源文件  目标目录     将源文件移入目标目录mv -f 覆盖前不询问
mv -i 覆盖前询问
mv -n  不覆盖已经存在文件如果指定了 -i,-f,-n 仅最后一个生效
mv -t  将所有参数指定的源文件或目录移动至 指定目录
mv -u  只在源文件文件比目标文件新,或目标文件不存在时才进行移动

案例

1.移动文件到另一个文件夹
mv ./1.txt ddd1  #把当前1.txt文件移动到ddd1目录下2.移动多个文件到另一个文件夹中
mv dyk1 dyk2 ddd1 #将dyk1,2文件移动到ddd1目录下
mv ./dyk* ddd1   #把所有开头为dyk的文件移动到ddd1目录下3.重命名的用法
mv 1.txt 11.txt #把1.txt重命名为11.txt

rm命令

rm命令就是删除一个或者多个文件

选项 说明
-r 递归删除目录及其内容
-f 强制删除,忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认
-d 删除空目录
-v 详细显示进行的步骤
rm -r 递归删除目录及其内容
rm -f 强制删除,忽略不存在的文件,不提示确认
rm -i  在删除前需要确认
rm -I   在删除超过三个文件或者递归删除前要求确认
rm -d  删除空目录
rm -v 详细显示进行的步骤

案例

1.删除普通文件,需要确认提示
rm -i 1.txt2.强制删除文件,不提示
rm -f 1.txt3.递归删除文件夹
rm -r  ddd1/强制删除所有的文件和文件夹
rm -rf ./* 一定要看清楚是否写清楚

千万别写这个命令 rm -fr / 后果自负 删除机器所有内容

注意文件恢复

rm命令删除文件后可以通过如ext3grep工具恢复数据,若是想要粉碎文件,还有其他方式

ps命令

选项 参数含义
- ef 查看所有进程及其PID(进程号)系统时间,命令详细目录 执行者
-aux 除了显示-ef所有内容还可以显示cpu即内存占用率,进程状态
ps -ef | grep ntp  查找与ntp相关的进程,通过管道符

grep命令

作用,在指定文件中搜索特定的内容,并将含有这些内容的行标准输出
格式
grep [选项] 格式 [文件及路径]
其中格式是指要搜索的内容格式

选项 参数含义
-c 只输出匹配行的计算
-I 不区分大小写
-n 显示匹配行及行号
-s 不显示不存在或匹配文本的错误信息
-v 显示不包含匹配文本的所有行

top命令

动态显示系统中运行的程序

clear命令

清除屏幕上的信息

磁盘相关的命令

fdisk 可以查看硬盘分区情况,并可以对硬盘进行分区管理

fidsk -l  列出文件系统的分区情况
使用 fdisk必须拥有root权限

文件系统挂载命令 mount

-t 选择类型
mount -t 文件格式 挂载设备 目录路径
mount -t vfat /dev/hda1 /mnt/win/c在使用后可以卸载
umount /mnt/win/c

ln命令

-s参数,创建符号的连接,软连接,快捷方式
ln -s 目标文件的绝对路径 快捷方式的绝对路径

如果删除了快捷方式会怎样?
删除快捷方式,不影响源文件可以生成多个快捷方式,仅仅都是指向了源文件
源文件如果删除,快捷方式则失效了使用readlink 可以源文件的路径

软链接和硬链接的区别

1.删除软链接对源文件和硬链接无影响
2.删除硬链接,对软链接,源文件,也是无影响
3.删除源文件,对硬链接也是无影响的,但是影响软链接
4.只有删除源文件和所有的硬链接,文件的连接数就位0了,此时文件数据丢失
5.源文件和硬链接具有相同的inode号码
6.软链接和源文件的inode号码不同,因此是两个单独的源文件

inode与硬链接
操作系统中专门用于管理和存储文件的信息软件称之为文件系统,文件系统将文件的元信息(文件的创建者,日期,大小等,可以通过stat命令查看元信息)存储在一个称之为inode的区域中文是索引节点

查看文件的inode号 ls -li

Linux帮助命令

man帮助命令

语法
man 命令如 man ls
进入man帮助文档后 按回车就是继续向下浏览 按下 q退出

使用–help参数

语法:
命令  --help
帮助命令的精简版
如 ls --help

help命令获取帮助

语法:
help 命令只针对bash内置命令

info命令获取帮助

语法:
info 命令

Linux开关机命令

shutdown重启或者关机

重启

shutdown -r 参数
shutdown -r 10    #十分钟后重启
shutdown -r 0        #立刻重启
shutdown -r now #立刻重启

关机

语法:
shutdown -h    --halt  停止的含义shutdown -h 10 #十分钟后关机
shutdown -h 0
shutdown -h now #立即关机

vim

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是
命令模式(Command mode),
输入模式(Insert mode)和
底线命令模式(Last line mode)。
这三种模式的作用分别是:

vim工作模式

命令模式:进入 vim 默认的模式

编辑模式:按 i 进入的 a i o 也可以进入 按Esc键退出编辑模式

底行模式: 按下:(冒号)之后进入到的模式

安装vim
yum install vim -y #通过yum软件管理工具 安装vim 默认为yes

当vim打开不存在的文件时候,默认会创建文件

命令模式

命令/操作 说明
ZZ(shift + zz) 保存退出
gg 移动光标到文档的首行
G 移动光标到文档尾行
ngg 定位到第n行
数字0 移动到本行开头
$ 移动光标到本行结尾
dd 删除光标所在行
ndd 删除光标开始的n行
yy 拷贝光标所在行
nyy 拷贝光标所在的n行
u 撤销上一步的操作
ctrl +r 反撤销
.

移动光标

w(e)  移动光标到下一个单词
b    移动到光标上一个单词数字0  移动到本行开头
$    移动光标到本行结尾H    移动光标到屏幕首行
M    移动到光标到屏幕的中间一行
L    移动光标到屏幕的尾行
gg    移动光标到文档的首行
G    移动光标到文档尾行ctrl + f  下一页
ctrl + b  上一页`.  移动光标到上一次的修改行

复制、删除、粘贴

yy    拷贝光标所在行
nyy   拷贝光标所在的n行dd    删除光标所在行
D     删除当前光标到行尾的内容
dG    删除当前行到文档尾部的内容p     粘贴yy所复制的内容x    向后删除字符
X     向前删除字符u     撤销上一步的操作
ctrl +r 反撤销
.       重复前一个执行过的动作

快捷操作

删除光标所在位置到行尾的内容并进入编辑模式 C(大写字母)
在命令模式下按下字母i,即可进入输入模式,可以编写代码啦。。。
在当前行下面插入一行并进入编辑模式 o(小写字母)
在当前行上面插入一行并进入编辑模式 O(大写字母)
快速到达行尾并进入编辑模式 A
快速保存并退出 ZZ

批量快捷操作

批量删除:
进入批量编辑模式(可视块)
ctrl+v
连按两次ESC可以取消选定文本块
选择 上下左右
删除 d 批量增加:进入批量编辑模式(可视块)ctrl+v
选择区域
输入大写的 I 进入编辑模式 编辑
按下ESC键批量去掉注释
1. 进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列
2. 按字母j,或者k选中注释符号
3. 按d键就可全部取消注释

输入模式

命令 说明
i 在光标位置插入
I 在第一个非空字符插入
a 在光标的下一个字符输入
A 在行尾插入
o 在光标所在的行下面插入空行
O 在光标所在的行上面插入空行
s 删除光标所在字符,并进入输入模式
S 删除光标所在行,并进入输入模式

底线命令模式

选项 说明
:w 将编辑的文件保存
:q 退出vi 如果对文件修改了就无法按q退出
:q! 强制退出,不保存修改
:wq 存盘后退出
:e! 放弃修改,恢复到修改之前的状态
:w newfile 文件另存为
:set nu[mber] 显示行号
set nonu[mber] 隐藏行号
[:]/内容 查找指定内容,n下翻,N上翻
[:]?内容 查找指定内容,N下翻,n上翻
:%s/原内容/新内容/[g] 所有行内容替换,g表示全局(默认只能替换一行中第一处)
:m,ns/原内容/新内容/[g] m到n行内容替换,g用法同上
:n 将光标定位到第n行,n表示行号
:w  将编辑的文件保存
:q  退出vi     如果对文件修改了就无法按q退出
:q! 强制退出vi
:wq  存盘后退出
:x 存盘退出
:w 文件名  另存一个文件,相当于另存为
:e! 放弃修改,恢复到修改之前的状态
:w newfile 文件另存为
:set nu 显示行号
:set nonu 取消行号显示
:set ignorecase 不区分大小写
:set tabstop=n 按下 tab 键则实际输入 n 个空格
:set hlsearch  搜索时高亮显示
:syntax on 开启语法高亮

查找

:/dyk     在整篇文档中搜索dyk字符串,向下查找
:?dyk    在整篇文档中搜索dyk字符串,向上查找:*        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
:#        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处:gd        找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上:%    找到括号的另一半!!
:%s /原内容/新内容  默认替换每行里第一次匹配到的数据
:%s /原内容/新内容 -g 全部替换

如果出现异常操作产生了 .swp文件应该怎么办

vim -r 123.txt.swprm -rf 123.txt.swp

在 Vi 内执行配置命令的效果是临时的,关闭 Vi,再次打开 Vi,需要重新配置。Vi 有自己的配置文件,可以是“/etc/vim/vimrc”或者“~/.vimrc”。两者的区别是前者全局的,影响登录本机的全部用户,后者仅仅对当前用户有效。

vim配置文件:打开文件后的配置是临时的,关闭后就失效了。配置方法一:直接修改 /etc/vim/vimrc文件。(vim安装好以后的默认配置,不推荐)方法二:自己创建文件进行配置在用户家目录创建一个文件.vimrc
将vim相关的配置写在文件中
若文件没有生效,需要重新加载一次source ~/.vimrc

cat命令

cat命令可以将一个或者多个文件输出到标准输出上,可用于查看文件

功能 说明
查看文件内容 cat file.txt
多个文件合并 cat file.txt file2.txt > file3.txt
非交互式编辑或追加内容 cat >> file.txt <<EOF 内容 EOF
清空文件内容 cat/dev/null >file.txt
1.查看文本内容
cat sing.txt
2.对非空行显示行号
cat -b sing.txt
结果为:1  哈哈哈哈2  哈哈哈
3  哈哈
4  哈3.对所有行显示行号
cat -n sing.txt
结果为:
1  哈哈哈哈
2
3
4  哈哈哈
5  哈哈
6  哈4.在每行结尾加上$ 符号
cat -E sing.txt  5.减少空行数量,如果有多个空行,减为1个
cat -s sing.txt6.合并多个文件内容,写入到新的文件中
cat 123.txt sing.txt > new.txt 将123.tx和456.txt合并写入new.txt中7.cat非交互式的写入文件内容cat >>new.txt <<EOF>文件内容> > EOF

cat清空文件的用法

1.直接清空文件,留下一个空行
echo > 123.txt2.直接清空文件内容,不留空行
> 123.txt3.利用cat读取一个黑洞文件,然后清空其他文本
cat /dev/null >  123.txt

echo命令

echo命令将内容显示到标准输出

echo 内容 或者 "内容"  #输出到标准输出
echo 内容 或者  "内容"  > 文件 #重定向到文件,如果文件不存在则创建新的文件

案例

echo i am      dyk > a
#i am dyk
echo "i am      dyk" > a
#i am      dyk

加引号和不加引号的区

不加引号输入的内容,连续空格被单空格替换了,
加入引号连续的空格依然保留

重定向符号

重定向的意思是,将数据传到其他地方

符号 解释
> 输出覆盖重定向
>> 输出追加重定向
<或<< 标准输入重定向
1.读取文件内容,写入到另一个文件中,覆盖写入的文件的内容cat 123.txt > 456.txt将123.txt的内容覆盖写入456.txt
2.追加写入文件内容cat 123.txt >> 456.txt将123.txt的内容追加写入456.txt
3.重定向写入符cat  < 123.txt  把文件中的数据,发送给cat去读
将文本内容拆分成多行
xargs 命令
xargs -n 4 <123.txt 把123.txt拆分成多行,每行不超过4个4.重定向追加写入符  可以结合cat命令
root@iZ2ze9vpvhtdv9o9rg8zmfZ:/home/dyk/ddd2#
cat >>sing.txt <<EOF
> 哈哈哈哈
> 哈哈哈
> 哈哈
> 哈
> EOFEOF 代表着文件的开始或者结束
最后 cat sing.txt的结果为哈哈哈哈
哈哈哈
哈哈
哈

tac命令

与cat命令的作用相反,反向读取文件内容

grep命令

过滤的字符串信息的命令

管道符

Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。

 cat new.txt | grep "天才"  通过查看new.txt文本内容,且对内容进行二次过滤,找出内容中包含的天才的行输出案例
检查python 程序是否启动
ps -ef | grep "python"找到ddd1目录下所有txt文件
ls | grep ".txt"检查nginx的端口是否存活
netstat -tunlp |grep nginx

more命令

More是一个过滤器, 用于分页显示 (一次一屏) 文本,以当前屏幕窗口尺寸为准
语法

more 参数  文件
-num  指定屏幕显示大小为num
+num 从num行开始显示交互式more的命令:
空格     向下滚动一屏
Enter 向下显示一行
=            显示当前行号
q            退出
1.显示4行内容
more -4 new.txt2.从第6行开始输出内容到屏幕
more +6 new.txt

less命令

语法

less  参数 文件
-N  显示每行编号
-e  到文件结尾自动退出
/文本 可以在文本中搜索字符串,匹配的字符串高亮显示

more和less的区别

1.more不可以回去,就是不可以向前,只能向后,况且只能使用Enter和Space向后翻动。
less使用vim中的j,k键盘可以上下翻动,还可以使用上下箭头。
2、速度
less不必读整个文件,加载速度会比more更快。
3、内容
less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。

head命令

用于显示文件内容头部,默认显示开头10行

语法
head [选项]  [文件]
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为"-",则从标准输入读取数据1.显示文件的前n行内容
head -n new.txt  显示new.txt前n行内容
2.显示每个文件的前K 字符内容;
head -c k new.txt 显示new.txt的前k个字节

tail命令

tail默认从后向前看10行,也可以指定行数

tail  文件名  显示默认后10行
tail  -n 显示后n行
tail  -c  指定显示的字节数
tail  -f  实时刷新文件变化
tail  -F  不断打开文件,与-f合用
tail --pid=进程号 结束进程后自动退出tail命令
tail -s 秒数  检测文件变化的时间间隔秒数

案例

检测文件变化
tail -f new.txttail -f-F new.txt
tail 123.txt #显示文件的后10行tail -5 123.txt #显示文件的后5行#从文件第3行开始显示
tail -n +3 123.txttail -f new.txt #检测文件变化,若文件不存在,则报错退出tail -F new.txt  #若文件不存在,则等待文件生成

cut命令

在文件的每一行中提取片段
在每个文件的各行中,把提取的片段显示在标准输出

cut 参数  文件名
-b 以字节作为单位切割
-n 取消分割多字节字符,与-b一起用
-c 以字符为单位
-d 自定义分隔符,默认以tab为分隔
-f 与-d一起使用,指定显示那个区域N       第 N 个 字节, 字符 或 字段, 从 1 计数 起
N-       从 第 N 个 字节, 字符 或 字段 直至 行尾
N-M     从 第 N 到 第 M (并包括 第M) 个 字节, 字符 或 字段
-M       从 第 1 到 第 M (并包括 第M) 个 字节, 字符 或 字段

案例

cat 123.txt
dyk is a tiancai#切割出第5个字符
cut -b 5 123.txt#切割第4到6个字符
# is
#切割第4个和第6个字符
# s
#切割第一个到第五个的字符
cut -b -5 123.txt
dyk i
cut -b 5- 123.txt
is a tiancai

file命令

显示文件的类型

which命令

查找PATH环境变量中的文件,linux内置命令不在path中

which python
/usr/bin/python

whereis命令

whereis命令用来定位指定的二进制程序,源代码文件和man手册页等相关文件的路径

文件的打包和压缩

tar是UNIX系统的一个文件打包工具,只是连续相连的文件堆放起来,并不具备压缩功能,但是加上选项,tar可以调用其他压缩解压工具,实现对文件的压缩和解压
tar命令在linux系统里面,可以实现对多个文件进行压缩打包和接压

格式

tar [选项] 打包后的文件名 文件目录列表
选项 参数含义
-c 建立新的打包文件
-x 从打包文件中解出文件
-v 处理过程中输出相关信息
-f 对普通文件操作,后面跟指定文件
-z 调用gzip压缩打包文件,与-x连用的时候调用gzip完成解压缩
-j 调用bzip2来压缩打包文件,与-xl连用时调用bzip2完成解压缩
-C <目录> 这个选项用在解压缩,要在特定目录解压缩
-t 不解包查看内容
-r 添加到已压缩的文件,向打包文件末尾追加文件
-h -h参数能够保证,打包的不仅仅是个快捷方式,而是找到源文件

注意 -f后面必须跟指定文件

只打包不压缩tar -cvf 123.txt.tar 123.txt拆开tar包tar -xvf 123.txt.tar
打包后用gzip压缩tar -zcvf 123.txt.tar.gz 123.txt拆开tar的压缩包tar -zxvf 123.txt.tar.gz不解压列出tar包内的文件
tar -tvzf test.tar.gz 拆开tar包中部分文件#正常的解压命令,单独加上你要拆除的文件名,指定路径tar -xzvf test.tar.gz test/my_pow.o指定目录解tar包tar -zxvf test.tar.gz -C dyk/#将目标包解压到dyk目录下排除文件解包
#注意--exclude 跟着文件名或是文件夹,不得加斜杠,排除多个文件,就写多个--exclude
tar -zxvf test.tar.gz --exclude my_pow.c -C ./dyk
#将test.tar.gz里面的文件除了my_pow.c全部解压到dyk目录下打包链接文件
-h参数能够保证,打包的不仅仅是个快捷方式,而是找到源文件

注意
-f参数必须写在最后面,后面紧跟压缩文件的名
tar命令仅打包,习惯用.tar作为后缀
tar命令加上z参数,文件以.tar.gz 或.tgz表示
-c -t -x 不能同时出现

gzip命令

对文件进行压缩和解压缩,而gzip根据文件的类型可以自动识别压缩或解压缩
格式

gzip [选项]  压缩的文件名
选项 参数含义
-c 将输出信息写到标准输出上,并保留源文件
-d 将压缩文件解压缩
-v 对每一个压缩和解压的文件,显示文件名和压缩比
-l 列出压缩文件的相关信息
-r 递归处理压缩文件夹里的所有文件
-k 保留源文件

注意
gzip无法压缩文件夹,必须先打包
gzip默认会把源文件替换掉,也就是解压会把删除源文件
gzip套件提供了许多方便的工具命令,可以直接操作压缩文件内容
zcat 直接读取压缩文件内容
zgrep
zless
zdiff

zip命令

zip命令:是一个跨平台的压缩工具,压缩文件的后缀为zip,还可以压缩文件夹

格式

zip 压缩文件名  要压缩的内容
语法:
zip 压缩文件名  要压缩的内容-A 自动解压文件
-c 给压缩文件加注释
-d 删除文件
-F 修复损坏文件
-k 兼容 DOS
-m 压缩完毕后,删除源文件
-q 运行时不显示信息处理信息
-r 处理指定目录和指定目录下的使用子目录
-v 显示信息的处理信息
-x “文件列表” 压缩时排除文件列表中指定的文件
-y 保留符号链接
-b<目录> 指定压缩到的目录
-i<格式> 匹配格式进行压缩
-L 显示版权信息
-t<日期> 指定压缩文件的日期
-<压缩率> 指定压缩率

unzip命令用于解压

-l 显示压缩文件内容包含的文件
-d <目录> 指定文件压缩后要存储的目录

gcc的基本使用

 gcc [选项] [文件名]
选项 含义
-c 只编译不链接。编译器只是将输入的.c 等源代码文件生成.o 为后缀的目标文件
-S 只对文件进行编译,不汇编和链接 ,生成汇编代码
-E 只对文件进行预处理,不编译汇编和链接
-o output_filename 确定输出文件的名称为 output_filename,这个名称不能和源文件同名。如果不给出这个选项,gcc 就给出预设的可执行文件 a.out
-v 显示 gcc 执行时执行的详细过程,以及 gcc 和相关程序的版本号
-Idirname 将 dirname 目录加入到程序头文件搜索目录列表中,是在预编译过程中使用的参数

注意 -o后面必须跟可执行文件

gcc 编译过程
从 hello.c 到 hello(或 a.out)文件,必须历经 hello.i、hello.s、hello.o,最后才得到 hello(或
a.out)文件,分别对应着预处理、编译、汇编和链接 4 个步骤

(1) 预处理,C 编译器对各种预处理命令进行处理,包括头文件包含、宏定义的扩
展、条件编译的选择等;
(2) 编译,将预处理得到的源代码文件,进行“翻译转换”,产生出机器语言的目标
程序,得到机器语言的汇编文件;
(3) 汇编,将汇编代码翻译成了机器码,但是还不可以运行;
(4) 链接,处理可重定位文件,把各种符号引用和符号定义转换成为可执行文件中
的合适信息,通常是虚拟地址。

1.预处理
在 gcc 命令加上-E 参数,可以得到预处理文件

$ gcc -E hello.c –o hello.i

hello.c 经过预处理后得到的 hello.i
文件,除了原本的几行代码之外,还包含了很多额外的变量、函数等等,这些都是预处理器
处理的结果。
2.编译

在 gcc 编译参数加上-S,可以将 hello.i 编译成 hello.s 文件

 gcc -S hello.i -o hello.s

hello.s该文件内容都是汇编语句
3.汇编
得到了汇编文件后,通过 gcc 就可以得到机器码了,也即是.o的目标二进制代码

gcc -c hello.s -o hello.o

尽管已经得到了机器码,但这个文件却还是不可以运行的,必须要经过链接才能运行。
4.链接
链接可分为动态链接和静态链接:
 动态链接使用动态链接库进行链接,生成的程序在执行的时候需要加载所需的动态
库才能运行。动态链接生成的程序小巧,但是必须依赖动态库,否则无法执行。
 Linux 下的动态链接库实际是共享目标文件(shared object),一般是.so 文件,
作用类似于 Windows 下的.dll 文件。
 静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直
接运行,不过体积较大。
 Linux 下静态库是汇编产生的.o 文件的集合,一般以.a 文件形式出现。
gcc 默认是动态链接,加上-static 参数则采用静态链接

头文件包含


#include <my.h>
#include "my.h"对于使用尖括号的第一种情况,预处理器会在系统预设的头文件包含目录搜索头文
件。
对于使用双引号的第二种情形,预处理程序则会在目标文件的文件夹内搜索相应的
头文件,如果在该路径下没有找到所包含的头文件,就会到系统预设目录进行搜索。
也就是说,使用双引号的搜索路径包含了使用尖括号的情形。

创建静态库
静态库是.o 文件的集合,这些.o 文件是编译器按照常规方法生成的,在 Linux 下也称文
档(archive),用 ar 工具来管理。

add.c
int add(int a,int b)
{return a+b;
}use_add.c
#include <stdio.h>
int main()
{int a,b;scanf("%d",&a);scanf("%d",&b);int sum=add(a,b);printf("%d",sum);return 0;
}
首先生成两个目标文件
gcc -c add.c -o add.o
使用归档工具ar将一些目标文件集成在一起
ar rcsv libadd.a add.o
ls
add.c  add.o  libadd.a  use_add.cgcc -o use_add use_add.c -L. -ladd
-L dir 能够在库文件的搜索路径中添加dir目录
-lname 选项指示编译时链接到的库文件
./use_add
1 2
3

创建共享库

首先使用gcc的-fPIC 选项为动态库构造一个目标文件
gcc -fPIC -Wall -c add.c
接下来使用-shared选项和已创建的位置无关的代码生成一个动态库libadd.so
gcc -shared -o libadd.so add.o
编译主程序,它将会链接到刚生产的动态库libadd.so
gcc -o use_add use_add.c -L. -ladd
运行前需要添加动态库的路径名export LD_LIBRARY_PATH=/home/20181117026/test1./use_add
1 2
3

gdb
需要使用 GDB 调试的程序,在编译的时候必须加-g 参数,开启调试信息

gcc -g test.c -o test
gdb 程序名
命令格式 含义
break 行号或函数名 <条件表达式> 设置断点:break + 要设置断点的行号
tbreak 行号或函数名 <条件表达式> 设置临时断点,到达后自动删除
delete 断点号 删除断点
disable 让设置的断点失效,如果要让多个断点失效可以用空格隔开
info b 查看所有断点
enable 与 disable 相对激活断点
run 运行调试程序
countinue 继续执行正在调试的程序,直到函数结束或者遇到新的断点
step 执行一行源代码而且进入函数内部
next 执行一行源代码但不进入函数内部
watch 监视一个变量的值而不管它何时被改变
ignore 断点号 num 忽略对应断点num次

在 GDB 命令提示符,直接按回车键为重复上一次的命令。

makefile 变量
规则

需要由make工具创建的目标体,通常是目标文件或者执行文件
要创建的目标体所依赖的文件
创建每个目标体时需要运行的命令,这一行必须以制表符开头
必须以 TAB 字符(‘\t‘)隔开,且不能以相同数量的空格代替。
格式正确的 Makefile 文件,在 Vi 中会语法高亮显示

在终端输入 make 命令就会调用 make 工具,make 会在当前目录按照文件名顺序寻找
Makefile 文件,依次按照:GNUmakefile、makefile、Makefile。如果找到其中的任何一个,
就读取并按照其中的规则执行,否则报错

Linux常用基础命令(很全)相关推荐

  1. 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...

    整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...

  2. Linux常用基础命令198个

    Linux常用基础命令198个 1.mkdir 创建目录 * 主要选项:-p 递归创建目录 主要案列:mkdir /xujun mkdir -p /xujun/oldboy mkdir -p /xuj ...

  3. linux常用基础命令操作收集

    linux常用基础命令操作收集,以下命令基于CentOs6.x 1.日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线(哪些人登陆到了服务器) who ...

  4. linux常用基础命令整理

    linux常用基础命令整理 su - 用户名 ->切换到指定用户下 ls ------>查看当前目录下的目录及文件 clear ------>清理屏幕 cd 路径 -----> ...

  5. Linux常用基础命令

    Linux常用基础命令 腾讯在线文档(优化版): https://docs.qq.com/doc/DQmdRTGhIUXV0Vmxm 1.创建目录,文件: mkdir -p /root/a/b/c/d ...

  6. linux部分基础命令总结,Linux常用基础命令总结

    近期自己学习了一下Linux,写这篇博客以便于对自己的一个总结,记录自己的学习情况,奥利给! 想对Linux熟练掌握,就必须学会它的操作命令,虽然可能会花费一些时间,不过从长远的角度来说,这的确是一件 ...

  7. linux 常用基础命令

    1.linux 常用快捷键 Ctrl+c按键---停掉正在运行的程序 例ping Ctrl+d按键---退出正在运行的程序,相当于exit Ctrl+l 按键--- 清屏   相当于clear Tab ...

  8. 【运维知识基础篇】Linux常用基础命令(四)

    吾日三省吾身,想出类拔萃,要把知识学牢,学全,学深,学广. 今天继续给大家讲命令,基础打牢, 以后起飞!今天要讲的是which,less,more,tr,sort,uniq,xargs,diff,al ...

  9. 前后端同学,必会的Linux常用基础命令

    无论是前端还是后端同学,一些常用的linux命令还是必须要掌握的.发布版本.查看日志等等都会用到. 以下是我简单的总结了一些简单又常用的命令,欢迎大家补充.希望能帮助到大家 本文首发于公众号 程序员共 ...

最新文章

  1. [WCF权限控制]利用WCF自定义授权模式提供当前Principal[实例篇]
  2. 工作306:.sync解决子组件改变自身值 父组件也改变自身数值
  3. SQL Server 数据库管理常用的SQL和T-SQL语句
  4. Java 8中用java.time.LocalDate全面代替老旧的Date,Calendar类
  5. WinRAR 永久去除弹窗广告
  6. 发一套最完整的直升机原理(绝对完整,绝对精华)
  7. TikTok二面:“聊聊二维码扫码登录的原理”。
  8. 技术日记2021/2/12 “牛气飞天”恶作剧
  9. python gui 之库tkinter笔记
  10. 腾讯招python吗_#python 爬取腾讯招聘技术类的招聘信息
  11. python中round函数参数有负数_Python中round函数使用注意事项
  12. 判断各类无盘软件是否处于超管状态
  13. php处理小米广告平台API上报方案对接(主要是APP下载)
  14. Linux系统根目录详解
  15. Android之BroadcastReceiver
  16. <span>的宽高到底是多少?
  17. Android_学习安卓必备网址
  18. 机器学习 | 一个基于机器学习的简单小实践:波斯顿房价预测分析
  19. 毫米波频段射频器件的主要技术工艺趋势
  20. bean的加载-配置文件的解析

热门文章

  1. Android 仿今日头条评论输入框
  2. 网易被低估的一款游戏,《堡垒之夜》加吃鸡玩法竟然这么解压?
  3. opencv 4.0.0教程系列01-core模块简介
  4. 历史上影响最大的10首诗
  5. VIVO手机聊天打字慢?使用这些方法,2分钟就能打出500字
  6. jQuery学习总结第三天、attr函数与removeAttr函数、prop、 removeProp函数、addClass函数和removeClass函数、html函数和text函数
  7. CentOS7安装java环境
  8. 什么是SEO,企业做SEO优化有哪些好处
  9. 交换机接口配置VLAN—eNSP
  10. makefile中wildcard notdir patsubst的简单介绍