隐藏

linux命令基础
2021年 12月 28 日

Calvin

几个前期需要快速了解的小知识:

  1. 在linux内的程序或可执行文件需要给其授予可执行权限:
    在程序目录内执行:chmod +x $( $ 为完整文件名) 为其授权。
  2. ctrl+c:强制终止,ctrl+d:正常结束输入,ctrl+l:清屏
  3. sudo:切换到超级权限用户 top:按cpu使用率降序显示正在运行的程序详情; kill $($代表pid):根据进程id结束进程
  4. > file1.txt:这是Linux中创建新文件的最短命令,但注意这会覆盖存在的同名文件。

linux中的命令格式:

$command    [option(s)]   [argument(s)]
  命令名  空格    选项    空格    参数

command : 命令名
[option(s)] :选项
[argument(s)] :参数

  • 注意:
    在命令行中,每两个部分之间有空格分隔
    每个命令行可使用的最多的命令字符是256个
    命令区分大小写
    不同的命令提示符使用分隔符号 “/”
    命令中的参数/选项可以是多个,并且参数其实就是要传入命令程序主函数main的参数。
    表示这个内容可以不包含,比如 [argument(s)] ,输入命令时可以不加参数

CD(切换目录)

   Linux cd(英文全拼:change directory)命令用于切换当前工作目录,若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
语法:

cd [*]
*:要切换的目标目录(无中括号)。

ls

列出当前目录下的所有文件(不包含隐藏文件)

ls -a (列出所有文件(包含详细信息))

mkdir(创建目录(文件夹))

语法格式 : mkdir [参数] [目录名]

在工作目录下,建立一个名为 chen 的子目录:

[root@mbc ~]# mkdir chen

常用参数:
-p 递归创建多级目录
-m 建立目录的同时设置目录的权限
-z 设置安全上下文
-v 显示目录的创建过程

touch命令创建文件

  • touch命令可以让我们更新现有文件和目录的时间戳以及创建新文件。
    要创建新文件,只需运行touch命令后跟要创建的文件名即可:
    touch file1.txt

如果文件file1.txt不存在,则上面的命令将直接创建该文件,否则,它将只会更改file1.txt的时间戳,不会覆盖。要一次创建多个文件,请指定文件名,并用空格分隔:
touch file1.txt file2.txt file3.txt

  • 使用重定向运算符创建文件
    重定向允许您捕获命令的输出,并将其作为输入管道到另一个命令或文件。有两种方法可以将输出重定向到文件 > 操作符将覆盖现有文件,而 >> 操作符将追加输出到文件中。

要创建一个空的文件,只需在重定向操作符之后指定要创建的文件名即可:
> file1.txt
这是在Linux中创建新文件的最短命令。使用重定向创建文件时,请注意不要覆盖现有的重要文件。


CP(复制)

cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。

语法格式:cp [参数] [文件]

实例:复制目录:

[chen@mbp ~]# cp -R dir1 dir2/

复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
cp -ai a.txt test

为 a.txt 建立一个链接(快捷方式|替身)
cp -s a.txt link_a.txt

常用参数:

-i 提示
-r 递归复制文件和目录(常用)
-f 若目标文件已存在,则会直接覆盖原文件
-i 若目标文件已存在,则会询问是否覆盖
-p 保留源文件或目录的所有属性
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l 对源文件建立硬连接,而非复制文件
-s 对源文件建立符号连接,而非复制文件
-b 覆盖已存在的文件目标前将目标文件备份
-v 详细显示cp命令执行的操作过程
-a 复制的文件与原文件时间一样(保留时间戳)

rm(删除)

语法
rm [options] name...

options内为参数(选填)(无中括号)

删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
rm test.txt
rm:是否删除 一般文件 "test.txt"? y

rm homework
rm: 无法删除目录"homework": 是一个目录

rm -r homework
rm:是否删除 目录 "homework"? y

参数:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

pwd 命令(查看当前工作目录路径)

(1)查看当前路径
pwd
(2)查看软链接的实际路径
pwd -P
4、mkdir 命令
mkdir 命令用于创建文件夹。

参数:

-m: 对新建目录设置存取权限,也可以用 chmod +x *命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
实例:
(1)当前工作目录下创建名为 t的文件夹
mkdir t
(2)在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:
mkdir -p /tmp/test/t1/t

mv 命令

  • 移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
  • 当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。

(1)将文件 test.log 重命名为 test1.txt
mv test.log test1.txt
(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
mv llog1.txt log2.txt log3.txt /test3
(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
(4)移动当前文件夹下的所有文件到上一级目录
mv * ../

find 命令(查找文件)

用于在文件树中查找文件,并作出相应的处理。
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:

  • pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
  • -print: find命令将匹配的文件输出到标准输出。
  • -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
  • -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
  • 命令选项
    -name 按照文件名查找文件
    -perm 按文件权限查找文件
    -user 按文件属主查找文件
    -group 按照文件所属的组来查找文件。
    -type 查找某一类型的文件,诸如:
    b - 块设备文件
    d - 目录
    c - 字符设备文件
    l - 符号链接文件
    p - 管道文件
    f - 普通文件

-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项

实例:
(1)查找 48 小时内修改过的文件
find -atime -2
(2)在当前目录查找 以 .log 结尾的文件。 . 代表当前目录
find ./ -name '*.log'
(3)查找 /opt 目录下 权限为 777 的文件
find /opt -perm 777
(4)查找大于 1K 的文件
find -size +1000c
查找等于 1000 字符的文件
find -size 1000c

  • -exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。
    实例:
    (5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
    find . -type f -mtime +10 -exec rm -f {} \;
    (6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除
    find . -name '*.log' mtime +5 -ok -exec rm {} \;
    (7)当前目录下查找文件名以 passwd 开头,内容包含 "pkg" 字符的文件
    find . -f -name 'passwd*' -exec grep "pkg" {} \;
    (8)用 exec 选项执行 cp 命令
    find . -name '*.log' -exec cp {} test3 \;
  • -xargs find 命令把匹配到的文件传递给 xargs 命令,而 xargs 命令每次只获取一部分文件而不是全部,不像 -exec 选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
    实例:
    (9)查找当前目录下每个普通文件,然后使用 xargs 来判断文件类型
    find . -type f -print | xargs file
    (10)查找当前目录下所有以 js 结尾的并且其中包含 'editor' 字符的普通文件
    find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
    find -type f -name '*.js' | xargs grep -lF 'editor'
    (11)利用 xargs 执行 mv 命令
    find . -name "*.log" | xargs -i mv {} test4
    (12)用 grep 命令在当前目录下的所有普通文件中搜索 hostnames 这个词,并标出所在行:
    find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'
    (13)查找当前目录中以一个小写字母开头,最后是 4 到 9 加上 .log 结束的文件:
    find . -name '[a-z]*[4-9].log' -print
    (14)在 test 目录查找不在 test4 子目录查找
    find test -path 'test/test4' -prune -o -print
    (15)实例1:查找更改时间比文件 log2012.log新但比文件 log2017.log 旧的文件
    find -newer log2012.log ! -newer log2017.log

which 命令

在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

  • which 查看可执行文件的位置。
  • whereis 查看文件的位置。
  • locate 配合数据库查看文件位置。
  • find 实际搜寻硬盘查询文件名称。

    which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
    常用参数:
    -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
    实例:
    (1)查看 ls 命令是否存在,执行哪个
    which ls
    (2)查看 which
    which which
    (3)查看 cd
    which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
    查看当前 PATH 配置:
    echo $PATH
    或使用 env 查看所有环境变量及对应值

whereis 命令

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
常用参数:

  • -b 定位可执行文件。
  • -m 定位帮助文件。
  • -s 定位源代码文件。
  • -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
    实例:
    (1)查找 locate 程序相关文件
    whereis locate
    (2)查找 locate 的源码文件
    whereis -s locate
    (3)查找 lcoate 的帮助文件
    whereis -m locate

linux命令基础

几个前期需要快速了解的小知识:

  1. 在linux内的程序或可执行文件需要给其授予可执行权限:
    在程序目录内执行:chmod +x $( $ 为完整文件名) 为其授权。
  2. ctrl+c:强制终止,ctrl+d:正常结束输入,ctrl+l:清屏
  3. sudo:切换到超级权限用户 top:按cpu使用率降序显示正在运行的程序详情; kill $($代表pid):根据进程id结束进程
  4. > file1.txt:这是Linux中创建新文件的最短命令,但注意这会覆盖存在的同名文件。

linux中的命令格式:

$command    [option(s)]   [argument(s)]
  命令名  空格    选项    空格    参数

command : 命令名
[option(s)] :选项
[argument(s)] :参数

  • 注意:
    在命令行中,每两个部分之间有空格分隔
    每个命令行可使用的最多的命令字符是256个
    命令区分大小写
    不同的命令提示符使用分隔符号 “/”
    命令中的参数/选项可以是多个,并且参数其实就是要传入命令程序主函数main的参数。
    表示这个内容可以不包含,比如 [argument(s)] ,输入命令时可以不加参数

CD(切换目录)

   Linux cd(英文全拼:change directory)命令用于切换当前工作目录,若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
语法:

cd [*]
*:要切换的目标目录(无中括号)。

ls

列出当前目录下的所有文件(不包含隐藏文件)

ls -a (列出所有文件(包含详细信息))

mkdir(创建目录(文件夹))

语法格式 : mkdir [参数] [目录名]

在工作目录下,建立一个名为 chen 的子目录:

[root@mbc ~]# mkdir chen

常用参数:
-p 递归创建多级目录
-m 建立目录的同时设置目录的权限
-z 设置安全上下文
-v 显示目录的创建过程

touch命令创建文件

  • touch命令可以让我们更新现有文件和目录的时间戳以及创建新文件。
    要创建新文件,只需运行touch命令后跟要创建的文件名即可:
    touch file1.txt

如果文件file1.txt不存在,则上面的命令将直接创建该文件,否则,它将只会更改file1.txt的时间戳,不会覆盖。要一次创建多个文件,请指定文件名,并用空格分隔:
touch file1.txt file2.txt file3.txt

  • 使用重定向运算符创建文件
    重定向允许您捕获命令的输出,并将其作为输入管道到另一个命令或文件。有两种方法可以将输出重定向到文件 > 操作符将覆盖现有文件,而 >> 操作符将追加输出到文件中。

要创建一个空的文件,只需在重定向操作符之后指定要创建的文件名即可:
> file1.txt
这是在Linux中创建新文件的最短命令。使用重定向创建文件时,请注意不要覆盖现有的重要文件。


CP(复制)

cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。

语法格式:cp [参数] [文件]

实例:复制目录:

[chen@mbp ~]# cp -R dir1 dir2/

复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
cp -ai a.txt test

为 a.txt 建立一个链接(快捷方式|替身)
cp -s a.txt link_a.txt

常用参数:

-i 提示
-r 递归复制文件和目录(常用)
-f 若目标文件已存在,则会直接覆盖原文件
-i 若目标文件已存在,则会询问是否覆盖
-p 保留源文件或目录的所有属性
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l 对源文件建立硬连接,而非复制文件
-s 对源文件建立符号连接,而非复制文件
-b 覆盖已存在的文件目标前将目标文件备份
-v 详细显示cp命令执行的操作过程
-a 复制的文件与原文件时间一样(保留时间戳)

rm(删除)

语法
rm [options] name...

options内为参数(选填)(无中括号)

删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
rm test.txt
rm:是否删除 一般文件 "test.txt"? y

rm homework
rm: 无法删除目录"homework": 是一个目录

rm -r homework
rm:是否删除 目录 "homework"? y

参数:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

pwd 命令(查看当前工作目录路径)

(1)查看当前路径
pwd
(2)查看软链接的实际路径
pwd -P
4、mkdir 命令
mkdir 命令用于创建文件夹。

参数:

-m: 对新建目录设置存取权限,也可以用 chmod +x *命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
实例:
(1)当前工作目录下创建名为 t的文件夹
mkdir t
(2)在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:
mkdir -p /tmp/test/t1/t

mv 命令

  • 移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
  • 当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。

(1)将文件 test.log 重命名为 test1.txt
mv test.log test1.txt
(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
mv llog1.txt log2.txt log3.txt /test3
(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
(4)移动当前文件夹下的所有文件到上一级目录
mv * ../

find 命令(查找文件)

用于在文件树中查找文件,并作出相应的处理。
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:

  • pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
  • -print: find命令将匹配的文件输出到标准输出。
  • -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
  • -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
  • 命令选项
    -name 按照文件名查找文件
    -perm 按文件权限查找文件
    -user 按文件属主查找文件
    -group 按照文件所属的组来查找文件。
    -type 查找某一类型的文件,诸如:
    b - 块设备文件
    d - 目录
    c - 字符设备文件
    l - 符号链接文件
    p - 管道文件
    f - 普通文件

-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项

实例:
(1)查找 48 小时内修改过的文件
find -atime -2
(2)在当前目录查找 以 .log 结尾的文件。 . 代表当前目录
find ./ -name '*.log'
(3)查找 /opt 目录下 权限为 777 的文件
find /opt -perm 777
(4)查找大于 1K 的文件
find -size +1000c
查找等于 1000 字符的文件
find -size 1000c

  • -exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。
    实例:
    (5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
    find . -type f -mtime +10 -exec rm -f {} \;
    (6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除
    find . -name '*.log' mtime +5 -ok -exec rm {} \;
    (7)当前目录下查找文件名以 passwd 开头,内容包含 "pkg" 字符的文件
    find . -f -name 'passwd*' -exec grep "pkg" {} \;
    (8)用 exec 选项执行 cp 命令
    find . -name '*.log' -exec cp {} test3 \;
  • -xargs find 命令把匹配到的文件传递给 xargs 命令,而 xargs 命令每次只获取一部分文件而不是全部,不像 -exec 选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
    实例:
    (9)查找当前目录下每个普通文件,然后使用 xargs 来判断文件类型
    find . -type f -print | xargs file
    (10)查找当前目录下所有以 js 结尾的并且其中包含 'editor' 字符的普通文件
    find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
    find -type f -name '*.js' | xargs grep -lF 'editor'
    (11)利用 xargs 执行 mv 命令
    find . -name "*.log" | xargs -i mv {} test4
    (12)用 grep 命令在当前目录下的所有普通文件中搜索 hostnames 这个词,并标出所在行:
    find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'
    (13)查找当前目录中以一个小写字母开头,最后是 4 到 9 加上 .log 结束的文件:
    find . -name '[a-z]*[4-9].log' -print
    (14)在 test 目录查找不在 test4 子目录查找
    find test -path 'test/test4' -prune -o -print
    (15)实例1:查找更改时间比文件 log2012.log新但比文件 log2017.log 旧的文件
    find -newer log2012.log ! -newer log2017.log

which 命令

在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

  • which 查看可执行文件的位置。
  • whereis 查看文件的位置。
  • locate 配合数据库查看文件位置。
  • find 实际搜寻硬盘查询文件名称。

    which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
    常用参数:
    -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
    实例:
    (1)查看 ls 命令是否存在,执行哪个
    which ls
    (2)查看 which
    which which
    (3)查看 cd
    which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
    查看当前 PATH 配置:
    echo $PATH
    或使用 env 查看所有环境变量及对应值

whereis 命令

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
常用参数:

  • -b 定位可执行文件。
  • -m 定位帮助文件。
  • -s 定位源代码文件。
  • -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
    实例:
    (1)查找 locate 程序相关文件
    whereis locate
    (2)查找 locate 的源码文件
    whereis -s locate
    (3)查找 lcoate 的帮助文件
    whereis -m locate

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论