Linux常用命令合集(一)

时间:2024-10-29 08:35:56

1.处理目录的常用命令:

ls(英文全拼:list files): 列出目录及文件名
cd(英文全拼:change directory):切换目录
pwd(英文全拼:print work directory):显示目前的目录
mkdir(英文全拼:make directory):创建一个新的目录
rmdir(英文全拼:remove directory):删除一个空的目录
cp(英文全拼:copy file): 复制文件或目录
rm(英文全拼:remove): 移除文件或目录
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
  • ls(列出目录):在Linux系统当中, ls 命令可能是最常被运行的。

- 语法:

ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称

-选项与参数:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

-举例:

> - 将家目录下的所有文件列出来(含属性与隐藏档)
[root@www ~]# ls -al ~
  • cd(切换目录):cd是Change Directory的缩写,这是用来变换工作目录的命令。

-语法:

cd [相对路径或绝对路径]

-举例:

> - 使用 mkdir 命令创建 runoob 目录
[root@www ~]# mkdir runoob
> - 使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/
> - 使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/
> - 表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~
> - 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..
  • pwd(显示目前所在的目录):pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录。

-语法:

pwd [-p]

-选项与参数:

  • -p :显示出确实的路径,而非使用连结 (link) 路径。

-举例:

> - 单纯显示出目前的工作目录:
[root@www ~]# pwd
/root <== 显示出目录啦~
实例显示出实际的工作目录,而非连结档本身的目录名而已。
[root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
因为 /var/mail 是连结档,连结到 /var/spool/mail 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径
  • mkdir(创建新目录):创建新的目录,使用mkdir(make directory)

-语法:

>mkdir [-mp] 目录名称

-选项与参数:

  • -m :配置文件的权限!直接配置,不需要看默认权限(umask)的脸色。
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来。

-举例:

> - 请到/tmp底下尝试创建数个新目录看看:
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录!
[root@www tmp]# mkdir -p test1/test2/test3/test4
加了这个 -p 的选项,可以自行帮你创建多层目录!
> - 创建权限为 rwx--x--x 的目录。
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2

注意:上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。

  • rmdir(删除目录):删除空的目录

-语法:

 rmdir [-p] 目录名称

-选项与参数:

  • -p :连同上一级『空的』目录也一起删除

-举例:

> - 删除 runoob 目录
[root@www tmp]# rmdir runoob/
> - 将 mkdir 实例中创建的目录(/tmp 底下)删除掉!
[root@www tmp]# ls -l <==看看有多少目录存在?
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test <==可直接删除掉,没问题
[root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l <==底下的输出中test与test1不见了!
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。

-注意:这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。

  • cp(复制文件或目录):cp 即拷贝文件和目录。

-语法:

cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 .... directory

-选项与参数:

  • -a:相当于 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !

-举例:

> - 用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
  • rm(移除文件或目录):删除指定的文件或目录(含有内容)

-语法:

rm [-fir] 文件或目录

-选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除!最常用在目录的删除了!这是非常危险的选项!!!

-举例:

> - 将刚刚在 cp 的实例中创建的 bashrc 删除掉!
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
如果加上 -i 的选项就会主动询问,避免你删除到错误的档名!
  • mv(移动文件与目录,或修改名称): 对指定的文件或目录进行移动

-语法

mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory

-选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

-举例:

> - 复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
将某个文件移动到某个目录去,就是这样做!
> - 将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2

2.内容查看的常用命令:

cat  由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
  • cat:由第一行开始显示文件内容

-语法:

cat [-AbEnTv]

-选项与参数:

  • -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

-举例:

> - 检看 /etc/issue 这个文件的内容:
[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
​```language
  • tac:与cat命令相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写。

-举例:

[root@www ~]# tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)
  • nl:显示行号。

-语法:

nl [-bnw] 文件

-选项与参数:

  • -b :指定行号指定的方式,主要有两种:
  • -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
  • -b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:
  • -n ln :行号在荧幕的最左方显示;
  • -n rn :行号在自己栏位的最右方显示,且不加 0 ;
  • -n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

-举例:

用 nl 列出 /etc/issue 的内容
[root@www ~]# nl /etc/issue
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
  • more:一页一页翻动。

-语法:

more 文件名

-举例:

[root@www ~]# more /etc/man_db.config
Generated automatically from man.conf.in by the
configure script.
man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行!你的光标也会在这里等待你的命令

** -注意:**在 more 这个程序的运行过程中,你有几个按键可以按的:

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
  • less:一页一页翻动。

-语法:

less 文件名

-举例:

> - 输出/etc/man.config文件的内容:
[root@www ~]# less /etc/man.config
Generated automatically from man.conf.in by the
configure script.
man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!

-注意:less运行时可以输入的命令有:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序;
  • head:取出文件前面几行

    -语法:
head [-n number] 文件

-选项与参数:

  • -n :后面接数字,代表显示几行的意思

-举例:

[root@www ~]# head /etc/man.config
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@www ~]# head -n 20 /etc/man.config
  • tail:取出文件后面几行

-语法:

tail [-n number] 文件

-选项与参数:

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

-举例:

[root@www ~]# tail /etc/man.config
默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config

3.搜索查找类命令:

  • find:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端。

-语法:

find 目标源 [选项]

-选项与参数:

  • -name:按照指定的文件名查找文件
  • -user:查找属于指定用户名的所有文件
  • -size:按照指定的文件大小查找文件

-举例:

> - 根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
> - 查找/opt目录下属于root用户的文件
find /opt -user root
> - 查找整个linux系统下大于20M的文件(+n大于、-n小于、n等于)
find / -size +20M
  • locate:可以快速定位文件路径,无需遍历整个文件系统,查询速度较快。

-语法:

locate 目标文件

-特别说明:

  • locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。为了保证查询结果的准确度,管理员必须定期更新locate时刻。由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

-举例:

> - 使用locate指令快速定位hello.txt文件所在目录
> locate hello.txt
  • grep:过滤查找(在文件内部查找);管道符号"|":将前一个命令的处理结果传递给后面的命令处理。

-语法:

grep [选项] 查找内容 源文件

-选项与参数:

  • -n:显示匹配行和行号
  • -i:忽略字母及大小

-举例:

> - 在hello.txt中,查找"yes"所在行,并显示行号
> cat hello.txt | grep -n yes

4.文件压缩与解压缩命令

  • gzip压缩与gunzip解压缩指令

-语法:

gzip 目标文件   # 将指定文件压缩为*.gz文件
gunzip *.gz文件 # 将*.gz文件解压缩

-举例:

> - 将/home下的hello.txt文件压缩
> gzip /home hello.txt
> - 将/home下的hello.txt.gz文件解压缩
> gunzip /home hello.txt.gz

-特别说明:用gzip指令压缩文件后,源文件会被删除。

  • zip压缩与unzip解压缩:项目打包发布时非常有用

-语法:

zip [选项] *.zip 目标文件/目录  # 将指定文件/目录压缩为.zip文件
unzip [选项] *.zip文件 # 将*.zip文件解压缩

-选项与参数:

  • -r:递归压缩,即压缩目录 # 针对zip指令
  • -d:指定解压后文件所在位置 # 针对unzip指令

    -举例:
> - 将/home下的所有文件压缩为home.zip文件
> zip -r home.zip /home/
> - 将home.zip文件解压缩到/opt/tmp目录下
> unzip -d /opt/tmp /home/home.zip
  • tar:压缩与解压缩

-语法:

tar [选项] *.tar.gz 目标文件/目录 [-C](可选) # 将文件/目录压缩或者将.tar.gz文件解压

-选项与参数:

  • -c:产生.tar打包文件
  • -v:显示详细信息
  • -f:指定压缩后的文件名
  • -z:打包同时压缩
  • -x:解包.tar文件

-特别说明:在解压缩文件时,若要指定解压路径,将使用-C参数,用来指定位置。

-举例:

> - 压缩多个文件,将/home/zyhcs/Desktop/test.txt和hello.txt压缩成a.tar.gz文件
> cd /home/zyhcs/Desktop
> tar -zcvf a.tar.gz hello.txt test.txt
> - 将/home的文件夹压缩成myhome.tar.gz文件
> tar -zcvf myhome.tar.gz /home/
> - 将a.tar.gz文件解压到当前目录
> tar -zxvf a.tar.gz
> - 将a.tar.gz文件夹压到/home下
> tar -zxvf a.tar.gz -C /home

-注意:解压文件指定位置时,该目录必须是存在的。

5.其他常用命令:

时间日期

date # 查看系统时间
date "+%Y-%m-%d %H:%M:%S" # 以自定格式查看日期
date -s "2020-08-08 16:13:44" # 设置指定日期时间
cal # 查看当月日历
cal 年份 # 查看指定年份的日历

关机&重启命令

shutdown -h now # 立刻关机
shutdown -h 1 # 1分钟后关机
shutdown -r now # 立刻重启
halt # 作用同shutdown
reboot # 立刻重启
sync # 将内存中的数据同步到磁盘中

用户与管理员切换

  • 普通用户->管理员root
su -
## 接着输入root用户密码
  • 管理员root->普通用户
su - 用户名

Vi&Vim编辑命令

Vi编辑有3中模式:

  1. 使用vi或者vim命令打开文件时为正常模式;可以通过方向键控制光标移动,不可编辑
  2. 在键盘上输入i、I、o、O、s、S时进入插入(insert)模式:此时可以对文件内容进行编辑
  3. 在插入模式下,键入Esc,进入命令行模式:此时可以输入相应命令,完成相应的操作例如:退出Vim、显示行号等。

Vim中的快捷键:

在命令行模式下:
# 查找指定单词 /(查找内容) 输入n,查找下一个
dd # 删除光标所在行 数字+dd # 删除光标所在行下指定数字行
:w # 保存内容 :wq # 保存并退出 :q # 退出 :q! #强制退出
u # 撤销上一步的操作 :set no # 显示行号