Linux常用命令(一)

更改档案拥有者 

chown [选项] 用户名:组名 文件名
命令 : chown [-cfhvR] [--help] [--version] user[:group] file... 
功能 : 更改文件或者文件夹的拥有者 
参数格式 : 
      user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group) 
         -c : 若该档案拥有者确实已经更改,才显示其更改动作 
         -f : 若该档案拥有者无法被更改也不要显示错误讯息 
         -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案 
         -v : 显示拥有者变更的详细资料 
         -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 
例子:
假设您想要将文件example.txt的拥有者更改为用户newuser和组newgroup,您可以使用以下命令:
chown newuser:newgroup example.txt

如果您只想更改文件的拥有者而不更改组,可以省略冒号和组名:
chown newuser example.txt

如果您想要递归地更改目录及其所有子目录和文件的拥有者,可以使用-R选项:
chown -R newuser:newgroup /path/to/directory

请确保您有足够的权限执行chown命令,通常需要root权限。如果您不是文件当前拥有者,您也需要使用sudo:
sudo chown newuser:newgroup example.txt

修改权限 

    命令:chmod (change mode) 
    功能:改变文件的读写和执行权限。有符号法和八进制数字法。 
    选项:(1)符号法: 
  命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename 
          u (user)   表示用户本人。 
          g (group)  表示同组用户。 
          o (oher)   表示其他用户。 
          a (all)    表示所有用户。 
          +          用于给予指定用户的许可权限。 
          -          用于取消指定用户的许可权限。 
          =          将所许可的权限赋给文件。 
          r (read)   读许可,表示可以拷贝该文件或目录的内容。 
          w (write)  写许可,表示可以修改该文件或目录的内容。 
          x (execute)执行许可,表示可以执行该文件或进入目录。 
例如,要给文件的所有者添加执行权限,您可以使用:
chmod u+x filename            
          (2)八进制数字法:   
  命令格式:chmod abc file 
  其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。 
          4 (100)    表示可读(r)。 
          2 (010)    表示可写(w)。 
          1 (001)    表示可执行(x)。 
  若要rwx属性则4+2+1=7; 
  若要rw-属性则4+2=6; 
  若要r-x属性则4+1=5。 
  例如:# chmod a+rx filename 
            让所有用户可以读和执行文件filename。 
        # chmod go-rx filename 
          取消同组和其他用户的读和执行文件filename的权限。 
        # chmod 741 filename 
            让本人可读写执行、同组用户可读、其他用户可执行文件filename。 
  # chmod -R 755 directoryname(eg:/home/oracle) 
    递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行 
除了修改权限,您还可以使用chown命令来修改文件的所有者,以及使用chgrp命令来修改文件的组所有者。
例如:
chown newowner:newgroup filename  # 使用chown修改所有者和组  
chgrp newgroup filename           # 使用chgrp仅修改组

修改文件日期 

在Linux中,您可以使用touch命令来修改文件的访问和修改时间戳,或者使用date命令结合mv或cp命令来修改文件的日期。以下是具体的方法:
使用touch 
格式:touch filenae 
功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。 
touch命令通常用于创建空文件,但如果您指定了一个已存在的文件,它会更新该文件的访问和修改时间戳。
touch -c -t YYYYMMDDHHMM.SS filename
这里的选项和参数含义如下:
-c:如果文件不存在,不要创建它。
-t:后面跟的是时间戳,格式为[YYYY][MM][DD][HH][MM][.SS]。
例如,要将文件example.txt的访问和修改时间设置为2023年1月1日12时34分56秒,您可以这样做:
touch -c -t 202301011234.56 example.txt

使用date命令和mv或cp
另一种方法是使用date命令生成一个带有特定时间戳的文件名,然后重命名或复制文件以设置新的时间戳。这种方法比较复杂,并且只适用于修改文件的修改时间,而不是访问时间。
首先,使用date命令生成一个新的文件名,包含您想要的时间戳:
new_filename=$(date -d "2023-01-01 12:34:56" +%Y%m%d%H%M%S).example.txt
然后,您可以复制原始文件到这个新的文件名,这样新的文件名就会带有您想要的时间戳:
cp example.txt "$new_filename" && mv "$new_filename" example.txt
这里的&&确保只有在cp命令成功执行后,mv命令才会执行。
请注意,这种方法只改变了文件的修改时间,访问时间通常会被设置为执行cp命令的时间。

链接文件

命令:ln(link) 
格式:ln[option]filename linkname 
           ln[option]directory pathname 
功能:为文件或目录建立一个链。其中,filename和directory是源文件名和源目录名;linkname和pathname分别表示与源文件或源目录名相链接的 文件或目录。 
选项:-s  为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接 
注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出 现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。 
在Linux中,链接文件是指向另一个文件或目录的特殊类型的文件。有两种主要的链接类型:硬链接(hard link)和符号链接(symbolic link,也称为软链接)。
硬链接
硬链接是指向文件i-node的一个引用。在Linux中,每个文件都有一个唯一的i-node,它包含了文件的元数据(如权限、所有者、大小等)以及指向文件数据块的指针。硬链接实际上是对i-node的引用计数增加,因此,当创建一个文件的硬链接时,并不会创建一个新的i-node或文件数据块。
创建硬链接的命令是ln,不带任何特殊选项:
ln source_file link_name
硬链接的特性:
硬链接和原始文件指向相同的i-node和数据块。
硬链接不能链接到目录(在大多数文件系统中)。
删除一个硬链接不会影响其他链接或文件本身,直到最后一个链接被删除,文件内容才会被释放。
不能跨文件系统创建硬链接。

符号链接(软链接)
符号链接(软链接)是一个特殊的文件,它包含另一个文件或目录的路径名。当访问符号链接时,系统会跟随链接到达目标文件或目录。
创建符号链接的命令是ln,使用-s选项:
ln -s source_file link_name
符号链接的特性:
符号链接是一个独立的文件,有自己的i-node。
符号链接可以链接到目录。
如果删除符号链接指向的原始文件或目录,符号链接仍然存在,但会变为“死链接”。
可以跨文件系统创建符号链接。
符号链接可以链接到不存在的文件或目录,此时链接称为“悬空链接”。
使用场景
硬链接通常用于在文件系统内部创建对文件的额外引用,而符号链接则更多地用于创建指向文件或目录的快捷方式,这些快捷方式可以跨文件系统甚至跨网络。符号链接还常用于版本控制系统、构建系统和其他自动化工具中,以创建指向不同文件或目录的可配置路径。

查看链接信息
您可以使用ls命令的-l选项来查看文件的链接信息。在输出中,链接数(link count)会显示在文件权限之后。对于硬链接,链接数将表示有多少个引用指向文件的i-node。对于符号链接,链接数通常为1,并且文件类型会显示为l。

删除链接
无论是硬链接还是符号链接,都可以使用rm命令来删除。删除链接并不会影响原始文件,除非链接是最后一个指向文件的引用(对于硬链接)或者您正在删除原始文件本身。

显示日期

date命令
date命令是最常用的显示日期和时间的命令。它可以直接在终端中运行,不需要任何参数。
输出可能类似于:
Mon Jul 18 12:34:56 CST 2023
你可以使用date命令的多种选项来格式化输出。例如,使用+%Y-%m-%d %H:%M:%S可以输出一个更常见的日期时间格式:
date +"%Y-%m-%d %H:%M:%S"
输出可能类似于:
2023-07-18 12:34:56

hwclock命令
hwclock命令用于查询或设置硬件时钟(RTC,Real-Time Clock)。尽管它主要用于硬件时钟的操作,但也可以用来显示当前的系统时间。
hwclock --show
注意:不是所有的系统都配置有硬件时钟,因此这个命令可能不适用于所有Linux系统。

timedatectl命令
timedatectl是systemd系统和服务管理器的一部分,用于查询和更改系统时钟和时区设置。
timedatectl
这将显示当前的本地时间、协调世界时(UTC)时间、时区以及其他相关信息。
这些命令中的每一个都可以根据你的具体需求进行定制和格式化,以满足不同的显示要求。date命令通常是最直接且灵活的方式来显示和格式化日期和时间。

显示日历

在Linux中,你可以使用cal命令来显示日历。cal命令用于显示指定月份的日历。如果不指定任何参数,它将默认显示当前月份的日历。
命令:cal (calendar) 
格式:cal [month] year 
功能:显示某年内指定的日历 
例如:% cal 1998  
以下是如何使用cal命令的一些示例:
1.显示当前月份的日历,只需在终端中输入cal,然后按Enter键:
cal
这将显示当前月份和年份的日历。

2.显示指定年份的日历:
如果你想查看特定年份的日历,可以在cal命令后面加上年份。例如,要查看2024年的日历,可以输入:
cal 2024
这将显示2024年每个月的日历。

3.显示指定年份和月份的日历:
你还可以指定月份来查看特定月份的日历。月份可以是数字(1-12)或者月份的缩写(如Jan、Feb等)。例如,要查看2024年7月的日历,可以输入:
cal 7 2024
或者
cal Jul 2024

4.显示带有星期日的日历:
默认情况下,cal命令以星期一作为一周的开始。如果你想让星期日作为一周的开始,可以使用-s或--sunday选项:
cal -s
或者:
cal --sunday

5.以竖排方式显示日历:
使用-3选项可以以竖排方式显示日历,这对于窄屏幕或者需要节省空间的情况很有用:
cal -3
这些选项可以组合使用,以满足你的特定需求。例如,要查看2024年7月以星期日开始的竖排日历,可以输入:
cal -3 -s 7 2024

显示文件头部 

在Linux中,如果你想查看文件的头部内容,可以使用head命令。head命令默认显示文件的前10行内容,但你也可以通过指定行数来查看更多的内容。
命令:head 
格式:head [option] filename 
功能:显示文件的头部 
选项:缺省  显示文件的头10行。 
      -i    显示文件的开始 i行。 
以下是使用head命令的一些示例:
1.显示文件的前10行:
head filename
将filename替换为你要查看的文件的实际名称。

2.显示文件的前N行:
如果你想查看文件的前N行,可以使用-n选项。例如,查看文件的前20行:
head -n 20 filename
或者简写为:head -20 filename

3.显示多个文件的前几行:
你可以一次查看多个文件的前几行。例如,查看file1.txt和file2.txt的前10行:
head file1.txt file2.txt

4.显示文件内容并附加行号:
使用-n选项时,head默认不会显示行号。但是,你可以结合cat和nl(number lines)命令来达到这个目的:
nl -ba filename | head -n 10
这将显示filename的前10行,并在每行前面加上行号。

5.以其他字符分隔行号和内容:
默认情况下,nl使用制表符作为行号和内容之间的分隔符。如果你想使用其他字符(比如空格),可以使用-s选项:
nl -ba -s ' ' filename | head -n 10
这将以一个空格作为行号和内容之间的分隔符。

显示文件尾部 

在Linux中,要显示文件的尾部内容,可以使用tail命令。tail命令默认显示文件的最后10行内容,但也可以通过指定行数来查看更多的尾部内容。
命令:tail 
格式:tail [option] filename 
功能:显示文件的尾部 
选项:缺省  显示文件的末10行。 
      -i    显示文件最后 i行。 
      +i    从文件的第i行开始显示。 
1.显示文件的最后10行:
tail filename
将filename替换为你要查看的文件的实际名称。

2.显示文件的最后N行:
如果你想查看文件的最后N行,可以使用-n选项。例如,查看文件的最后20行:
tail -n 20 filename
或者简写为:
tail -20 filename

3.实时查看文件的新增内容:
tail命令有一个非常有用的-f选项,它允许你实时查看文件的新增内容。这对于查看日志文件的最新条目特别有用。例如:
tail -f logfile.txt
这将持续显示logfile.txt文件中新添加的行,直到你停止该命令(通常是通过按Ctrl+C)。

4.显示多个文件的尾部内容:
你可以一次查看多个文件的尾部内容。例如,查看file1.txt和file2.txt的最后10行:
tail file1.txt file2.txt

5.显示文件内容并附加行号:
虽然tail命令本身不直接支持显示行号,但你可以结合其他命令(如cat和nl)来实现这一功能。例如:
nl -ba filename | tail -n 10
这将显示filename的最后10行,并在每行前面加上行号。

显示用户标识

在Linux中,你可以使用多种命令来显示用户标识,包括用户名、用户ID(UID)、所属组以及组ID(GID)。以下是一些常用的命令和方法:

查看当前用户的用户名:
1.使用whoami命令可以查看当前登录用户的用户名。
whoami

2.查看当前用户的UID和GID:
id命令可以用来查看当前用户的UID、GID以及所属的其他组。
命令:id 
格式:id [option] [user] 
功能:显示用户标识及用户所属的所有组。 
选项:-a 显示用户名、用户标识及用户所属的所有组 
输出可能类似于:
uid=1000(username) gid=1000(username) groups=1000(username),4(adm),24(cdrom),...
在这里,uid是用户ID,gid是主组ID,而groups列出了用户所属的所有组。

3.查看指定用户的用户名、UID和GID:
如果你想知道特定用户的用户名、UID和GID,你可以查看/etc/passwd文件。这个文件包含了系统上所有用户的基本信息。
使用grep命令结合/etc/passwd文件可以方便地查找特定用户的信息:
grep 'username' /etc/passwd
将username替换为你要查询的用户名。输出将包含该用户的用户名、UID、GID、家目录和默认shell。

4.查看用户所属的组:
除了使用id命令外,你还可以查看/etc/group文件来了解用户所属的组。但是,这个文件是按组来组织的,而不是按用户。因此,直接查找特定用户可能会比较困难。
但是,你可以使用groups命令来查看一个用户所属的所有组:
groups username
将username替换为你要查询的用户名。这将列出该用户所属的所有组。

5.使用awk或其他文本处理工具:
你还可以使用awk、cut等文本处理工具来解析/etc/passwd和/etc/group文件,以提取你需要的特定信息。例如,使用awk提取特定用户的UID:
awk -F: '/username/{print $3}' /etc/passwd
这里,-F:设置输入字段分隔符为冒号,/username/是一个模式,匹配包含username的行,{print $3}是一个动作,打印该行的第三个字段(即UID)查看/etc/passwd和/etc/group文件通常需要读取权限,通常只有root用户或具有适当权限的用户才能查看这些文件的内容。

查看当前登录的用户 

 
在Linux中,有多种方法可以查看当前登录的用户。以下是一些常用的方法:
使用w命令
w命令不仅显示当前登录的用户,还提供了关于系统负载、正在运行的进程等额外信息。
w
输出可能类似于:
10:15:00 up 1:05,  2 users,  load average: 0.00, 0.01, 0.05  
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT  
user1    tty1     :0               10:00    ?xdm?  0.11s  0.11s /usr/bin/X :0 -auth /run/user/1000/gdm/Xauthority -nolisten tcp vt8  
user2    pts/0    192.168.1.100    10:10    0.00s  0.05s  0.00s w

查看/var/run/utmp文件
/var/run/utmp文件记录了当前登录到系统的用户信息。你可以使用工具如utmpdump或编写脚本来解析此文件。但通常,直接使用who或w命令更为方便。

查看/var/log/wtmp文件
此文件记录了登录和注销的历史信息。它对于审计和查找过去的登录活动非常有用,但通常不用于查看当前登录的用户。你可以使用last命令来查看/var/log/wtmp的内容。

使用users命令
users命令简单地列出当前登录的用户名,每个用户名一行。
users
输出可能类似于:
user1 user2
根据你的具体需求和环境,你可以选择上述方法中的任何一个来查看当前登录的用户。

显示都谁登录到机器上 

使用who命令:
who命令可以显示当前登录到系统的所有用户的信息,包括用户名、登录的终端、登录时间以及远程主机的地址(如果适用)。
who
输出可能类似于:
user1   tty1         2023-07-19 10:00 (:0)  
user2   pts/0        2023-07-19 10:10 (192.168.1.100)

显示当前终端上的用户名 

使用whoami命令可以查看当前登录用户的用户名。
whoami

寻找文件 

在Linux中,你可以使用多种命令和工具来寻找文件。以下是一些常用的方法:
使用find命令
find命令是Linux中用来查找文件的强大工具。它可以基于各种条件(如文件名、大小、修改时间等)来查找文件。
功能:在所给的路经名下寻找符合表达式相匹配的文件。 
基本语法:find [路径] [表达式]
选项:-name     表示文件名 
-user     用户名,选取该用户所属的文件 
-size     按大小查找,以block为单位,一个block是512B 
-mtime n  按最后一次修改时间查找,选取n天内被修改的文件 
-perm     按权限查找 
-type     按文件类型查找 
-atime    按最后一次访问时间查找 
例如:% find ./ -name '*abc*' -print 
示例:
# 在当前目录及其子目录中查找名为example.txt的文件  
find . -name example.txt   
# 在/home/user目录中查找所有.txt文件  
find /home/user -name "*.txt"    
# 查找最近7天内修改过的文件  
find . -type f -mtime -7
find命令有大量的选项和表达式,可以组合使用以满足复杂的查找需求。

使用locate命令
locate命令使用预先构建的数据库来快速查找文件。它通常比find命令更快,但数据库可能不会立即反映文件系统的最新更改。
基本语法:locate [模式]
示例:
# 查找名为example.txt的文件  
locate example.txt   
# 查找所有.txt文件  
locate "*.txt"
在使用locate之前,你可能需要更新其数据库,这通常通过运行sudo updatedb命令来完成。

使用whereis命令
whereis命令主要用于查找可执行文件、源代码文件和main手册页。
基本语法:whereis [程序名]
# 查找ls命令的相关文件  
whereis ls

使用which命令
which命令用于在用户的PATH环境变量中查找可执行文件。
基本语法:which [程序名]
# 查找ls命令的可执行文件路径  

搜索文件中匹配符

在Linux中,搜索文件中匹配符通常使用grep命令。grep命令用于在文件中搜索指定的模式,并将包含该模式的行打印出来 
命令:grep 
功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。 
grep [选项] '模式' 文件名
选项:是可选的,用于指定搜索行为。
模式:是要搜索的字符串或正则表达式。
文件名:是要搜索的文件名。
一些常用的选项包括:
-i:忽略大小写。
-n:显示匹配行及其行号。
-v:反向查找,即显示不包含匹配模式的行。
--color:将匹配到的模式高亮显示。

在文件中搜索字符串“example”:
grep 'example' filename.txt

搜索字符串“example”,并显示匹配行的行号:
grep -n 'example' filename.txt

搜索字符串“example”,并忽略大小写:
grep -i 'example' filename.txt

搜索多个文件,并显示匹配行的行号:
grep -n 'example' file1.txt file2.txt file3.txt

使用正则表达式搜索:
假设你要搜索所有以数字开头的行,可以使用正则表达式^[0-9]:
grep '^[0-9]' filename.txt

高亮显示匹配到的模式:
grep --color 'example' filename.txt

详情查看之前文章:grep详解_docker grep-CSDN博客

在Linux中,可以使用多种方法来统计文件中的字数。以下是一些常用的方法:

1.使用wc命令
wc(word count)命令用于统计文件中的字节数、字数、行数等信息。使用wc -w可以统计文件中的字数。
命令:wc [option] filename 
功能:统计文件中的文件行数、字数和字符数。 
选项:-l 统计文件的行数 
-w 统计文件的单词数 
-c 统计文件的字符数 
注释:若缺省文件名则指标准输入 
例如: wc -c ./test/run.sh wc -w filename.txt
这将输出filename.txt文件中的字数。

2.使用awk命令
awk是一个强大的文本处理工具,也可以用来统计字数。以下是一个简单的例子:
awk '{ total += gsub(/[^ ]+/, "&") } END { print total }' filename.txt
这个命令通过正则表达式匹配非空格字符序列(即单词)并计数。gsub函数用于替换文本,并返回替换的次数,这里我们用它来统计单词数。

3.使用grep结合正则表达式
虽然这不是最直接的方法,但你也可以使用grep结合正则表达式来统计字数。这种方法可能不如wc或awk直接和高效,但在某些情况下可能有用。
例如,以下命令使用grep来匹配文件中的每个单词,并统计匹配的行数(由于每个单词占一行,所以这也等同于字数):
tr ' ' '\n' < filename.txt | grep -c '^[^[:space:]]\+'
这里,tr命令将空格替换为换行符,使得每个单词占一行。然后,grep命令匹配非空白字符开头的行,并使用-c选项来计数这些行。

显示磁盘空间

在Linux中,你可以使用多种命令来显示磁盘空间的使用情况。以下是一些常用的命令和选项:
命令:df (disk free) 用于显示磁盘分区的空间使用情况。
格式:df [option] 
功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总 
      字节数、已用字节数、剩余字节数占用百分比。 
选项: 
-a:显示全部的档案系统和各分割区的磁盘使用情形 
-i:显示i -nodes的使用量 
-k:大小用k来表示 (默认值) 
-t:显示某一个档案系统的所有分割区磁盘使用量 
-x:显示不是某一个档案系统的所有分割区磁盘使用量 
-T:显示每个分割区所属的档案系统名称 
-h: 表示使用「Human-readable」的输出,以人类可读的格式也就是在档案系统大小使用KB、GB、MB等易读的格式。 
如果你想看特定的文件系统或目录的空间使用情况,可以指定目标:
df -h /path/to/directory
ncdu命令:ncdu是一个基于文本的磁盘使用分析器,提供了一个交互式的界面来浏览目录和查看它们的磁盘使用情况。它可能不是所有Linux发行版的默认安装程序,但你可以通过包管理器来安装它。
基本用法:
ncdu /path/to/directory
ncdu会提供一个交互式菜单,允许你浏览不同的目录并查看它们的磁盘使用情况,这些命令可以帮助你了解磁盘空间的使用情况,无论是查看整个文件系统的使用情况,还是具体目录或文件的大小。根据你的需要,选择适合的命令和选项

 查询档案或目录的磁盘使用空间 

命令:du (disk usage) 
格式:du [option] [filename] 
功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小 
选项: 
-a:显示全部目录和其次目录下的每个档案所占的磁盘空间 
-b:大小用bytes来表示 (默认值为k bytes) 
-c:最后再加上总计 (默认值) 
-s:只显示各档案大小的总合 
-x:只计算同属同一个档案系统的档案 
-L:计算所有的档案大小 
-h: 以人类可读的格式显示,表示档案系统大小使用GB、MB等易读的格式。 
    例如:du -a 
du -sh /etc 只显示该目录的总合 
du /etc | sort -nr | more 统计结果用sort 指令进行排序, 
sort 的参数 -nr 表示要以数字排序法进行反向排序。 

基本用法:du -sh *
这个命令会估算当前目录下所有文件和目录的大小,并以人类可读的格式显示。

如果你想查看某个特定目录的详细使用情况,可以指定该目录:
du -sh /path/to/directory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值