新手必学的 10 个 Linux 命令行技巧 - 第二部分
我记得当我第一次开始使用 Linux 时,我已经习惯了 Windows 的图形界面,我真的很讨厌 Linux 终端。那时我发现命令很难记住,而且很难正确使用每个命令。随着时间的推移,我意识到 Linux 终端的美观、灵活性和可用性,老实说,我每天都会用它。今天,我想与 Linux 新手分享一些有用的技巧和提示,以帮助他们轻松过渡到 Linux 或只是帮助他们学习一些新东西(希望如此)。
本文旨在向您展示一些有用的技巧,让您以最少的技能像专业人士一样使用 Linux 终端。您只需要一个 Linux 终端和一些空闲时间来测试这些命令。
1. 找到正确的命令
执行正确的命令对于您的系统至关重要。然而,在 Linux 中,有如此多不同的命令行,以至于它们通常很难记住。那么如何搜索所需的正确命令呢?答案是 恰当的。您需要运行的是:
# apropos <description>
您应该将“ description ”更改为您要查找的命令的实际描述。这是一个很好的例子:
# apropos "list directory" dir (1) - list directory contents ls (1) - list directory contents ntfsls (8) - list directory contents on an NTFS filesystem vdir (1) - list directory contents
您可以在左侧看到命令,在右侧看到它们的描述。
2. 执行上一条命令
很多时候你需要反复执行相同的命令。虽然你可以反复按键盘上的向上键,但你可以使用history 命令。此命令将列出自启动终端以来输入的所有命令:
# history 1 fdisk -l 2 apt-get install gnome-paint 3 hostname example.com 4 hostnamectl example.com 5 man hostnamectl 6 hostnamectl --set-hostname example.com 7 hostnamectl -set-hostname example.com 8 hostnamectl set-hostname example.com 9 mount -t "ntfs" -o 10 fdisk -l 11 mount -t ntfs-3g /dev/sda5 /mnt 12 mount -t rw ntfs-3g /dev/sda5 /mnt 13 mount -t -rw ntfs-3g /dev/sda5 /mnt 14 mount -t ntfs-3g /dev/sda5 /mnt 15 mount man 16 man mount 17 mount -t -o ntfs-3g /dev/sda5 /mnt 18 mount -o ntfs-3g /dev/sda5 /mnt 19 mount -ro ntfs-3g /dev/sda5 /mnt 20 cd /mnt ...
从上面的输出中可以看到,您将收到已运行的所有命令的列表。每行都有一个数字,表示您输入命令的行。您可以使用以下命令调用该命令:
!#
其中#应替换为命令的实际编号。为了更好地理解,请参见以下示例:
!501
相当于:
# history
3. 使用午夜指挥官
如果你不习惯使用cd、cp、mv、rm等命令,那么你可以使用midnight 命令。这是一个易于使用的可视化 shell,你也可以在其中使用鼠标:
借助F1 – F12键,您可以轻松执行不同的任务。只需查看底部的图例即可。要选择文件或文件夹,请单击“插入”按钮。
简而言之,午夜命令被称为“ mc ”。要在系统上安装mc ,只需运行:
$ sudo apt-get install mc [On Debian based systems]
# yum install mc [On Fedora based systems]
以下是使用 midnight commander 的简单示例。只需输入以下内容即可打开mc :
# mc
现在使用TAB按钮在窗口之间切换 -左侧和右侧。我有一个LibreOffice文件,我将把它移动到“软件”文件夹:
要将文件移动到新目录中,请按键盘上的F6键。MC 现在将要求您确认:
一旦确认,文件将被移动到新的目标目录中。
阅读更多:如何在 Linux 中使用 Midnight Commander 文件管理器
4. 在特定时间关闭计算机
有时您需要在工作时间结束后几小时关闭计算机。您可以使用以下方法将计算机配置为在特定时间关闭:
$ sudo shutdown 21:00
这将告诉您的计算机在您提供的特定时间关闭。您还可以告诉系统在特定分钟数后关闭:
$ sudo shutdown +15
这样系统将在15分钟内关闭。
5. 显示已知用户的信息
您可以使用一个简单的命令列出您的 Linux 系统用户及其一些基本信息。只需使用:
# lslogins
这将产生以下输出:
UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS 0 root 0 0 Apr29/11:35 root 1 bin 0 1 bin 2 daemon 0 1 daemon 3 adm 0 1 adm 4 lp 0 1 lp 5 sync 0 1 sync 6 shutdown 0 1 Jul19/10:04 shutdown 7 halt 0 1 halt 8 mail 0 1 mail 10 uucp 0 1 uucp 11 operator 0 1 operator 12 games 0 1 games 13 gopher 0 1 gopher 14 ftp 0 1 FTP User 23 squid 0 1 25 named 0 1 Named 27 mysql 0 1 MySQL Server 47 mailnull 0 1 48 apache 0 1 Apache ...
6. 搜索文件
搜索文件有时并不像您想象的那么容易。搜索文件的一个很好的例子是:
# find /home/user -type f
此命令将搜索位于/home/user中的所有文件。find命令非常强大,您可以向其传递更多选项以使搜索更加详细。如果您想搜索大于给定大小的文件,可以使用:
# find . -type f -size 10M
上述命令将在当前目录中搜索所有大于10 MB的文件。请确保不要从 Linux 系统的根目录运行该命令,因为这可能会导致机器的高 I/O。
我使用find的最常用组合之一是“ exec ”选项,它基本上允许您对 find 命令的结果运行一些操作。
例如,假设我们想查找目录中的所有文件并更改其权限。这可以轻松完成:
# find /home/user/files/ -type f -exec chmod 644 {} \;
上述命令将递归搜索指定目录中的所有文件,并对找到的文件执行chmod命令。我相信您将来会发现此命令的更多用途,现在请阅读Linux“find”命令和用法的 35 个示例。
7. 使用一个命令创建目录树
您可能知道可以使用mkdir命令创建新目录。因此,如果您想创建一个新文件夹,请运行以下命令:
# mkdir new_folder
但是,如果您想 在该文件夹中创建5 个子文件夹,该怎么办?连续运行5 次 mkdir不是一个好的解决方案。相反,您可以使用-p选项,如下所示:
# mkdir -p new_folder/{folder_1,folder_2,folder_3,folder_4,folder_5}
最后,你应该在 new_folder 中有 5 个文件夹:
# ls new_folder/ folder_1 folder_2 folder_3 folder_4 folder_5
8. 将文件复制到多个目录
文件复制通常使用cp命令执行。复制文件通常如下所示:
# cp /path-to-file/my_file.txt /path-to-new-directory/
现在假设您需要将该文件复制到多个目录中:
# cp /home/user/my_file.txt /home/user/1 # cp /home/user/my_file.txt /home/user/2 # cp /home/user/my_file.txt /home/user/3
这有点荒唐。其实你可以用一行简单的命令来解决这个问题:
# echo /home/user/1/ /home/user/2/ /home/user/3/ | xargs -n 1 cp /home/user/my_file.txt
9.删除较大的文件
有时文件会变得非常大。我曾见过由于管理技能不佳而导致单个日志文件超过250 GB的情况。在这种情况下,使用rm实用程序删除文件可能不够,因为需要删除的数据量非常大。该操作将是一个“繁重”的操作,应避免。相反,你可以采用一个非常简单的解决方案:
# > /path-to-file/huge_file.log
当然,您需要将路径和文件名更改为与您的情况完全匹配的路径和文件名。上述命令只会将空输出写入文件。简而言之,它将清空文件而不会导致系统出现高 I/O 问题。
10. 在多台 Linux 服务器上运行相同的命令
最近,我们的一位读者在LinuxSay 论坛上询问如何使用 SSH 同时向多个 Linux 机器执行单个命令。他的机器 IP 地址如下:
10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4 10.0.0.5
所以这里有一个简单的解决方案。将服务器的 IP 地址收集到一个名为list.txt的文件中,如上所示。然后您可以运行:
# for in $i(cat list.txt); do ssh user@$i 'bash command'; done
在上面的例子中,您需要将“用户”更改为您将要登录的实际用户,并将“ bash 命令”更改为您希望执行的实际 bash 命令。当您使用SSH 密钥对机器进行无密码身份验证时,此方法效果更好,因为这样您就不需要一遍又一遍地输入用户的密码。
请注意,您可能需要根据您的 Linux 系统设置向 SSH 命令传递一些附加参数。
结论
上面的例子非常简单,我希望它们能帮助您发现 Linux 的一些美妙之处,以及如何轻松执行在其他操作系统上可能需要更多时间的不同操作。