Unix和Linux常用的命令(不断积累)

chomd

chomd基本语法

chmod是一个Unix和Linux操作系统中的命令,它用于改变文件或目录的权限。在Linux中,每个文件或目录的权限可以被设定为三个不同的用户级别:文件所有者所有者所在的用户组,以及其他用户

chmod的基本语法如下:

chmod [options] mode file

在这个命令中:

  • options:这是可选参数,主要用来定义命令的行为,例如 -R 选项可以用来递归地改变目录及其子目录的权限。
  • mode:这是你想设置的权限,可以用数字(例如 777)或符号(例如 u+x)表示。
  • file:这是你想改变权限的文件或目录的名称。

chmod命令使用三个数字来表示权限,每个数字代表一个不同的用户组:

  • 第一个数字代表文件所有者的权限。
  • 第二个数字代表同一用户组中的其他用户的权限。
  • 第三个数字代表其他所有用户的权限。

每个数字是三个权限(读、写和执行)的二进制表示的总和:

  • 读权限被表示为4
  • 写权限被表示为2
  • 执行权限被表示为1

因此,权限的数字表示可以从0(无权限)到7(读、写和执行权限)。例如,如果你想给文件所有者全部权限给同一用户组的用户读和执行权限给其他所有用户只给读权限,你可以设置模式为 754

这就是基本的 chmod 命令。记住,改变文件和目录的权限是一项需要谨慎操作的任务,因为不正确的权限设置可能会导致安全问题。

chmod命令的options和mode部分

chmod命令的optionsmode部分是非常重要的。让我们分别详细了解一下:

1. Options

options定义了chmod命令的行为。这里有一些常见的options

  • -R--recursive递归地改变指定目录及其所有子目录和文件的权限。如果没有指定此选项,chmod只会改变给定路径上的单个文件或目录的权限。

  • -f--silent--quiet:不显示错误信息。

  • -v--verbose:运行时提供详细输出。

  • --reference=RFILE:将权限改变为RFILE的权限相同。

2. Mode

mode部分定义了你想要设置的权限。它可以由数字(例如777)或符号(例如u+x)表示。

  • 数值模式:每个权限(读、写、执行)都由一个数字表示:

    • 4代表读取权限。
    • 2代表写入权限。
    • 1代表执行权限。

    这些值相加得到一个三位数,分别代表所有者、组和其他用户的权限。例如,755表示所有者具有读/写/执行权限(7=4+2+1),组和其他用户只有读和执行权限(5=4+1)。

  • 符号模式:这种模式使用字母和特殊符号来定义权限。主要元素如下:

    • ugo分别表示用户(所有者)、组和其他人。

    • +-=分别用于添加权限、删除权限和设置特定权限。

    • rwx分别代表读取、写入和执行权限。

    例如,u+x表示给用户(文件所有者)添加执行权限,g-w表示从组中删除写入权限,o=r表示给其他人设置只读权限。

chmod命令的实例

当然,以下是一些chmod命令的实例:

  1. 将文件(例如 myfile.txt)的权限设置为所有者可读写(6),组内用户可读写(6),其他用户只读(4):
chmod 664 myfile.txt
  1. 递归地更改目录及其子目录的权限。例如,将目录 mydir 及其子目录的权限设置为所有者可读写执行(7),组内用户可读写(6),其他用户只读(4):
chmod -R 764 mydir
  1. 使用符号模式改变权限。比如,给所有者(u)增加(+)执行(x)权限,可以使用以下命令:
chmod u+x myfile.txt
  1. 可以同时更改多个用户组的权限。例如,给所有者和组用户添加执行权限,可以这样写:
chmod u+x,g+x myfile.txt

或者简化为:

chmod +x myfile.txt

这将给所有者,组用户,以及其他用户添加执行权限。

  1. 取消某个用户组的特定权限,例如取消组用户(g)的写(w)权限:
chmod g-w myfile.txt
  1. 设置所有者具有读写执行权限,而其他用户没有任何权限:
chmod 700 myfile.txt
  1. 如果你想移除所有用户对文件(例如,myfile.txt)的所有权限,可以使用以下命令:
chmod 000 myfile.txt
  1. 如果你有一个脚本(例如,script.sh)并希望所有用户都能够执行它,你可以这样设置:
chmod 755 script.sh

这样,所有者有读、写、执行权限,而组用户和其他用户只有读和执行权限。

  1. 如果你想让所有者对文件有所有权限,但其他用户没有任何权限,你可以这样设置:
chmod 700 myfile.txt
  1. 使用符号来给所有者添加写权限:
chmod u+w myfile.txt
  1. 从组用户和其他用户那里移除执行权限:
chmod go-x myfile.txt
  1. 将文件所有者的权限设为读写,组用户的权限设为只读,其他用户无权限:
chmod 640 myfile.txt
  1. 如果你想改变一个目录及其所有子目录和文件的权限,你可以使用-R选项。比如,让所有者有全部权限,组用户和其他用户只有读和执行权限:
chmod -R 755 mydir

pwd

pwd是一个Unix和Linux环境中的命令,它的全称是“print working directory”,用于显示当前工作目录的全路径。

pwd命令中没有提供参数,命令就会输出当前工作目录的路径。比如,如果你首次打开一个新的终端或命令行界面,它可能会显示你的主目录,例如:

$ pwd
/Users/yourusername

如果你改变了当前的工作目录,pwd命令会显示你现在的位置。例如,如果你使用cd命令进入了一个叫做Documents的目录,然后执行pwd命令,它将显示:

$ cd Documents
$ pwd
/Users/yourusername/Documents

这就是pwd命令的基本用法。它是一个非常有用的命令,可以帮助你了解自己在文件系统中的位置。

cat

cat 是一个 Unix 和 Linux 系统中常用的命令,用于查看、创建或者连接文件内容。它的全称是 “concatenate”,意思是连接。

查看文件内容

这是 cat 最基本的用法,例如查看文件 myfile.txt 的内容:

$ cat myfile.txt

它将在命令行窗口输出 myfile.txt 文件的全部内容。

创建新文件

cat 也可以用来创建新文件。例如,你可以创建一个新的文件并将一些文本写入其中:

$ cat > newfile.txt

然后你可以开始输入一些文本。当你完成时,按 Ctrl+D 结束输入,你就会发现已经创建了一个名为 newfile.txt 的文件,文件内容就是你刚才输入的文本。

连接文件内容

cat 命令最初的设计就是为了连接(concatenate)多个文件的内容。例如,你有两个文件,file1.txt 和 file2.txt,你想创建一个新的文件,其中包含了这两个文件的内容,你可以使用以下命令:

$ cat file1.txt file2.txt > combined.txt

现在,combined.txt 文件就包含了 file1.txt 和 file2.txt 的内容。

附加到文件

如果你想把一些内容附加到现有文件的末尾,而不是覆盖它,你可以使用 ‘>>’ 操作符。例如,你想在 file1.txt 的内容后面添加 file2.txt 的内容:

$ cat file2.txt >> file1.txt

现在 file1.txt 文件包含了它原来的内容,后面跟着 file2.txt 的内容。

显示行号

使用 -n 选项可以在输出的每一行前面添加行号,这在查看长文件时非常有用:

$ cat -n myfile.txt

touch

touch是一个常用的Unix和Linux命令,它用于创建新的空文件和更改现有文件或目录的时间戳。下面详细介绍一下这两种用法:

创建新的空文件

要创建一个新的空文件,只需提供你想要创建的文件名作为touch命令的参数。例如,如果你想创建一个名为myfile.txt的新文件,你可以输入:

$ touch myfile.txt

如果文件已经存在,touch命令不会有任何效果。如果文件不存在,touch会创建一个新的空文件。

更改文件或目录的时间戳

touch命令也可以用来更新文件或目录的访问时间和修改时间。当你对文件或目录使用touch命令时,这两个时间戳会被更新为当前时间。

例如,你可以更新myfile.txt文件的时间戳:

$ touch myfile.txt

你还可以同时更改多个文件或目录的时间戳,只需将它们作为参数传递给touch命令:

$ touch file1.txt file2.txt directory1

注意,如果这些文件或目录不存在,touch将为每一个不存在的文件名创建一个新的空文件。

创建带有特定时间戳的文件

你可以使用-t选项来创建一个带有特定时间戳的文件。例如,要创建一个名为myfile.txt的文件,其修改日期设置为2023年1月1日,可以使用如下命令:

$ touch -t 202301011200 myfile.txt

这个命令将创建或修改myfile.txt的时间戳,设置为2023年1月1日的12:00。

touch命令的这些用法可以帮助你在脚本和其他工具中创建和管理文件和目录。

rm

rm命令是Unix和Linux中用于删除文件和目录的基本命令。下面是一些使用rm命令的详细示例:

删除文件

要删除一个文件,只需要将文件名作为rm命令的参数。例如,要删除名为myfile.txt的文件,你可以输入:

$ rm myfile.txt

删除多个文件

如果你想要删除多个文件,可以将所有的文件名一起作为rm命令的参数。例如,要删除file1.txtfile2.txtfile3.txt这三个文件,你可以输入:

$ rm file1.txt file2.txt file3.txt

删除目录

默认情况下,rm命令不会删除目录。如果你试图删除一个目录,它会显示一个错误消息。要删除一个目录,需要使用-r(或--recursive)选项。例如,要删除一个名为mydir的目录,你可以输入:

$ rm -r mydir

这将删除mydir目录及其包含的所有子目录和文件。

强制删除

如果你想要删除文件或目录,并且不想在删除每个文件或目录时都被提示,可以使用-f(或--force)选项。例如,要强制删除mydir目录,你可以输入:

$ rm -rf mydir

这将删除mydir目录及其包含的所有子目录和文件,并且不会显示任何提示。

注意:使用rm命令要小心,因为一旦文件或目录被删除,你就无法恢复它。在使用-r-f选项时,要特别小心,因为这可能会导致删除你不想删除的文件或目录。

cp

cp是Unix和Linux环境中的一个命令,用于复制文件和目录。以下是一些cp命令的详细示例:

复制文件

要复制一个文件,你需要提供源文件的名称以及目标文件的名称。例如,如果你想复制一个名为file1.txt的文件,并将副本命名为file2.txt,你可以使用以下命令:

$ cp file1.txt file2.txt

复制到目录

你还可以将文件复制到另一个目录。例如,如果你想将file1.txt复制到一个名为mydir的目录中,你可以使用以下命令:

$ cp file1.txt mydir

这将创建一个在mydir目录中的file1.txt的副本。

复制目录

要复制一个目录及其所有内容,你需要使用-R-r选项,它代表递归。例如,如果你想复制一个名为dir1的目录,并将副本命名为dir2,你可以使用以下命令:

$ cp -R dir1 dir2

这将创建一个dir2的目录,它将包含dir1目录中的所有文件和子目录。

复制并保留文件属性

要复制文件或目录并保留其原始属性(如所有者、组和权限),你可以使用-p选项。例如,如果你想复制file1.txt并保留其属性,你可以使用以下命令:

$ cp -p file1.txt file2.txt

这就是cp命令的一些常见用法。记住,cp命令总是创建源文件或目录的副本,它不会移动或删除源文件或目录。

mv

mv 是一个在 Unix/Linux 操作系统下的命令,用于移动或重命名文件或目录。以下是一些使用 mv 命令的示例:

  1. 重命名文件:

    如果你想把一个文件从一个名字改为另一个名字,你可以使用 mv 命令。例如,如果你想把文件 oldname.txt 重命名为 newname.txt,你可以输入以下命令:

    mv oldname.txt newname.txt
    

    执行这个命令后,你会发现 oldname.txt 文件已经不存在,而新的 newname.txt 文件已经出现。

  2. 移动文件:

    mv 命令也可以将文件从一个位置移动到另一个位置。例如,如果你想将文件 file.txt 从当前目录移动到 directory1 目录,你可以输入以下命令:

    mv file.txt directory1/
    

    执行这个命令后,文件 file.txt 会从当前目录移动到 directory1 目录。

  3. 移动并重命名文件:

    mv 命令还可以在移动文件的同时重命名文件。例如,如果你想将文件 file.txt 移动到 directory1 目录,并将其重命名为 newname.txt,你可以输入以下命令:

    mv file.txt directory1/newname.txt
    

    执行这个命令后,文件 file.txt 会从当前目录移动到 directory1 目录,并重命名为 newname.txt

请注意,如果目标文件或目录已经存在,mv 命令默认会覆盖目标文件或目录。如果你不希望这样,可以使用 -i(即 --interactive)选项,这样当目标文件存在时,mv 命令会询问你是否覆盖。例如:

mv -i oldname.txt newname.txt

在这种情况下,如果 newname.txt 文件已经存在,mv 命令会询问你是否要覆盖它。


移动和重命名目录与移动和重命名文件的方法相同,都使用 mv 命令。这里是几个示例:

  1. 移动目录:

    如果你想把一个目录从一个位置移动到另一个位置,你可以使用 mv 命令。例如,如果你想把 directory1 从当前位置移动到 directory2(假设 directory2 已经存在),你可以使用以下命令:

    mv directory1 directory2/
    

    这将把 directory1 移动到 directory2 目录下,路径会变成 directory2/directory1

  2. 重命名目录:

    mv 命令也可以用来重命名目录。例如,如果你想把 directory1 重命名为 directory3,你可以使用以下命令:

    mv directory1 directory3
    

    执行这个命令后,directory1 将被重命名为 directory3,原来 directory1 中的所有文件和子目录都会保持不变,只是路径名变成了 directory3

  3. 移动并重命名目录:

    mv 命令可以在移动目录的同时重命名目录。例如,如果你想把 directory1 移动到 directory2 目录下,并将其重命名为 directory3,你可以输入以下命令:

    mv directory1 directory2/directory3
    

    执行这个命令后,directory1 将被移动到 directory2 目录下,并被重命名为 directory3。所以新的路径会变成 directory2/directory3

同样地,如果目标目录已经存在,mv 命令会覆盖它。如果你不希望这样,可以使用 -i(即 --interactive)选项,这样当目标目录存在时,mv 命令会询问你是否覆盖。例如:

mv -i directory1 directory3

在这种情况下,如果 directory3 已经存在,mv 命令会询问你是否要覆盖它。

mkdir

mkdir 是一个 Unix 和 Linux 环境中常用的命令,用于创建新的目录。以下是一些 mkdir 命令的详细示例:

创建新目录

基本的 mkdir 命令是用于创建新目录的。例如,如果你想创建一个名为 mydir 的新目录,你可以使用以下命令:

$ mkdir mydir

这将在当前工作目录下创建一个名为 mydir 的新目录。

创建多个目录

你也可以一次创建多个目录。例如,如果你想创建两个名为 dir1dir2 的目录,你可以使用以下命令:

$ mkdir dir1 dir2

这将在当前工作目录下创建两个新目录,dir1dir2

创建嵌套目录

如果你想一次创建多级目录(即目录的目录),你可以使用 -p(或 --parents)选项。例如,你可以创建一个名为 dir1 的目录,它包含一个名为 dir2 的子目录,dir2 又包含一个名为 dir3 的子目录:

$ mkdir -p dir1/dir2/dir3

如果这些目录已经存在,mkdir -p 不会显示错误,而是保持原样。

设置目录权限

在创建目录的同时,你也可以设置目录的权限。例如,如果你想创建一个名为 mydir 的新目录,并设置其权限为 755(即所有者可以读写执行,组可以读执行,其他人可以读执行),你可以使用以下命令:

$ mkdir -m 755 mydir

以上就是 mkdir 命令的一些基本用法。使用这个命令,你可以很容易地在你的文件系统中创建新的目录和子目录。

猜你喜欢

转载自blog.csdn.net/Waldocsdn/article/details/131206061