基本的Linux命令

324 阅读4分钟

详情参考:文章

1. pwd

print working directory: 打印当前工作目录

2. cd

change directory: 修改当前的文件目录

cd      // 打开命令行的默认目录(MacOS中~指的是/Users/username)
cd ~    // 打开默认目录
cd /    // 打开根目录
cd ..   // 打开上级目录

3. mkdir

make directory:  在当前工作目录下新建子文件夹

  • -p: --parent  创建一个可嵌套的多层文件目录

  • -v: --verbose 显示详细信息

    mkdir dir1 dir2 dir3 // 同时创建3个同级子文件夹 mkdir -p dir4/dir5 // 创建一个子文件夹dir4,其中dir5为dir4的子目录 mkdir -v dir6 // 输出创建后的详细信息 mkdir "dir7 dir8" // 创建一个子文件夹,名字中间有空格 mkdir dir9\ dir10 // 通过转义字符,创建一个子文件夹,名字中间有空格

其中其他的文件夹全部为空。

4. ls 文件目录

list:  列举出指定目录下所有的文件和文件夹

ls             // 列举当前目录
ls dir1        // 列举dir1目录下所有文件和文件夹
ls dir1 dir2   // 同时列出dir1和dir2目录下的内容
  • -a  同时展示出隐藏文件和隐藏文件夹

隐藏文件/文件夹: 以.开头的文件或者文件夹。

5. > 文件名

redirect:将签名的命令结果写入到后面指定的文件中。

该文件不存在则创建一个;已存在则清空文件中的内容后再写入

ls > output.txt  // 将ls的显示内容输出到output.txt中

6. >> 文件名

append to: 在指定的文件中追加内容。

7. echo 内容

echo: 回显。将内容重新打印出来。

可以和(>)命令一起使用。

echo "This is 1" > test_1.txt
echo "This is 2" > test_2.txt
echo "This is 3" > test_3.txt

8. cat 文件名(可多个)

concatenate: 连接。显示命令后的所有文件的内容(所有内容依次组成一个整体)

如果只有一个文件,则直接显示其内容。

cat test_1.txt
cat test_1.txt test_2.txt test_3.txt
  • ?表示任一单个字符

    cat test_?.txt // 同cat test_1.txt test_2.txt test_3.txt

    • 表示0个或者多个字符

    cat test* // 同cat test_1.txt test_2.txt test_3.txt

和(>)一起使用,可以实现将多个文件的内容拼接输出到一个文件中

cat test* > 4.txt

9. less 文件名

less: 少量。当内容过多时,分页显示一页内容。可通过箭头查看更多内容。

less 4.txt

10. mv  文件/文件目录(已存在)  文件目录(可以不存在)

move: 移动,可理解为剪切。

mv 4.txt dir1
mv dir1/* dir2
mv dir2/* .   // .表示当前目录
mv 4.txt ..  // ..表示上级目录 
mv dir1 dir2 ..  //  mv可以移动多个文件或者目录;最后一个参数是目的目录

重命名: 当mv的参数类型相同时,即同时为文件目录或者同时为文件名

mv dir1 dir_one // 相当于将dir1的名称重命名为dir_one
mv 1.txt 2.txt  // 相当于将1.txt重命名为2.txt

11. cp 

copy: 复制。mv的用法适用于cp, 但是效果是复制。

另外,还有其他额外用法。

cp 4.txt 4_backup.txt // 复制4.txt且重命名为4_backup.txt

当mv的参数都是文件目录时,同cp重命名的操作。

12. rm 文件名 文件名

remove: 删除具体的文件;不能删除文件目录

rm 4.txt 4_backup_txt
  • -r 递归删除目录内所有内容(文件+文件夹)

recursively: 递归遍历删除所有内容。⚠️

rm -r dir1 // dir1内部嵌套文件和文件夹

13. rmdir 文件目录

remove directory: 删除文件目录

目录必须是空目录(即文件夹为空)

rmdir dir1 dir2 // 删除两个目录
rmdir dir*  // 删除正则匹配的目录
  • -p 删除嵌套文件目录

parents: 本质上依次(从右向左)删除空文件目录,如果其中一个不是空目录,删除失败

rmdir -p dir1/dir2/dir3  // 依次删除dir3->dir2->dir

14. wc 文件名

word count: 查看文件内部含有的字符数

wc 1.txt
  • -l  查看文件含有的行数
wc -l 1.txt

15. 命令 | 命令

| : 管道字符

用于两个命令之间,将前一个命令输出结果,直接用于第二个命令。避免了临时文件的创建。

ls ~ | wc -l   // 查看默认目录下所有的文件输出结果的行数

16. uniq 文件名

uniq: 去重。

ls ~ > 1.txt
➜  echo "this is a test" >> 1.txt
➜  echo "this is a test" >> 1.txt
➜  echo "this is a test" >> 1.txt
➜  wc -l 1.txt
      18 1.txt
➜  uniq 1.txt | wc -l
      16
➜  ls >> 1.txt
➜  echo "this is a test" >> 1.txt
➜  echo "this is a test" >> 1.txt
➜  uniq 1.txt | wc -l
      18

注意:uniq并不是完整意义上的去重,根据上面的示例可知,它只能去重相连的文本。

17. man 命令

manual: 手册。对命令的解释说明。

man uniq

结果如下:

由description可知,uniq只能去重相连的文本。

18. sort 文件名

sort: 排序。对文件内容进行排序。

针对上面uniq的问题,通过该命令可以解决。

sort 1.txt | uniq | wc -l
      17

19. sudo 命令

switching user and do this command: 以管理员身份运行后面的命令

sudo apt install tree

20. apt install 包名

sudo apt install tree // 以管理员身份安装tree

21. tree

使用该命令的前提是安装了tree。

tree: 展示当前目录的内部树状结构(目录树)

➜  tree
.
├── 1.txt
├── dir1
│   └── dir2
└── dir2
    └── dir21
        └── dir221
  • -a 树中包含隐藏文件和文件夹