ホームページ >運用・保守 >Linuxの運用と保守 >よく使うLinuxコマンドを詳しく解説(集めておきたい)
構文: ls [オプション] [ディレクトリ]
関数: ls には複数のオプションがあります。ディレクトリの場合、このコマンドはディレクトリ内のすべてのサブディレクトリとファイルを一覧表示します。ファイルの場合、ファイル名とその他の情報がリストされます。オプションを指定しない
ls は、デフォルトで現在のディレクトリ内のファイルを表示します。
オプション:
-l
: ファイルの詳細をリスト形式で表示します
Linux システムでは、ファイルの種類はファイルの接尾辞によって区別されませんが、ファイルの接尾辞が ## であるかどうかに関係なく、ファイルの種類は最初の文字によって識別されます。 #.c または
.txt またはその他の接尾辞 - で始まる限り、それは通常のファイルです
今日は最初の 2 種類のファイルに焦点を当てます
通常のファイルは多くの種類に分類できますが、Windows との互換性を保ち、ほとんどの Linux ユーザーがさまざまなファイルを簡単に区別できるようにするために、さまざまなファイル タイプを表すためにサフィックスを使用することに今でも慣れています。ただし、C 言語で記述された
を区別するためにサフィックスが使用されます。.c
ファイルなど、一部のファイルにはサフィックスを追加する必要があります。これらのファイルには特別な処理が必要で、タイプ
他にもいくつかのオプションがありますが、ここでは説明しません。下に進んでから試してみてください。
構文:
file [file]<pre class="brush:php;toolbar:false;">[king@VM-12-11-centos ~]$ file cat.txt
cat.txt: UTF-8 Unicode text #类型是文本文件
[king@VM-12-11-centos ~]$ file ret #类型是目录文件
ret: directory</pre><h3 data-tool="mdnice编辑器" mp-original-font-size="20" mp-original-line-height="32" style="margin: 30px 0px 15px;padding: 0px;outline: 0px;font-weight: bold;font-size: 20px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;color: black;line-height: 32px;"><span mp-original-font-size="20" mp-original-line-height="32" style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;font-size: 20px;line-height: 32px;">pwd コマンド </span></h3>
<p data-tool="mdnice编辑器" mp-original-font-size="16" mp-original-line-height="26" style="margin: 0px;padding: 8px 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;font-size: 16px;line-height: 26px;color: black;"># 構文 : <code mp-original-font-size="14" mp-original-line-height="26" style='margin: 0px 2px;padding: 2px 4px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word;font-size: 14px;border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.0470588);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;line-height: 26px;'>pwd
機能 : 現在のパスを表示します
使用法: cd [切り替えたいパス]
Linux ではファイルをマルチツリー構造で管理しており、ディスク上のファイルやディレクトリはディレクトリツリーで構成されています。各ノードはディレクトリまたはファイルです。ルート ディレクトリ: /
ファイルを見つける必要がある場合、各ノードには親ノードが 1 つだけあるため、text.c
ファイルを探すなど、ファイルのパスとファイル名、およびルート ディレクトリから text までのパスを知っておく必要があります。 c
ファイルは一意です。ファイルの場所を完全に記述するパスは絶対パスです。絶対パスはファイルを一意に識別できます。上記の pwd コマンドは絶対パス
也可以通过相对路径切换,点点表示上一级路径,cd ..
切换到上一级目录,cd ../../
切换到上上级路径
[king@VM-12-11-centos Linuxclass]$ pwd /home/king/Linuxclass [king@VM-12-11-centos Linuxclass]$ cd classcode [king@VM-12-11-centos classcode]$ ls a.out ret.txt test test.c [king@VM-12-11-centos classcode]$ cd test [king@VM-12-11-centos test]$ cd ../../p1 #切换到上上级目录的p1路径下 [king@VM-12-11-centos p1]$ pwd /home/king/Linuxclass/p1
有的小伙伴可能就有疑问了,cd ..
可以切换到上一级路径,那么cd .
有什么用呢?我们本来就在当前目录下,不需要切换啊。
这里我们用vim编写一个
hello Linux
的代码,通过gcc编译,生成a.out的可执行程序,而我们要运行可执行程序就需要路径和文件名,用点就可以表示它的路径了,相比于下面用绝对路径方便很多
cd还有两个选项
[king@VM-12-11-centos Linuxclass]$ pwd /home/king/Linuxclass [king@VM-12-11-centos Linuxclass]$ cd ~ #cd ~进入工作目录,就是用户的路径下 [king@VM-12-11-centos ~]$ pwd /home/king [king@VM-12-11-centos ~]$ cd - #cd -返回最近一次访问的路径 /home/king/Linuxclass
语法:which [指令]
功能:查看指令的系统路径和相关信息
[king@VM-12-11-centos Linuxclass]$ which ls alias ls='ls --color=auto' #alias:给指令取别名 /usr/bin/ls #我们的指令都是系统简化过的 [king@VM-12-11-centos Linuxclass]$ which ll alias ll='ls -l --color=auto' #ll可以代替ls -l /usr/bin/ls [king@VM-12-11-centos Linuxclass]$ which cd #同时我们发现指令都是在bin目录下的 /usr/bin/cd
指令本质上就是程序,Linux中,指令、命令、工具都是可执行程序 ,都存放在普通文件中,linux下一切皆文件,我们的指令都在bin目录下
功能:新建文件,更改文档或目录的日期,包括存取时间和更改时间,我们先了解新建文件,关于更改目录日期我们在文章的最后介绍
需要注意的是touch创建的是普通文件,不是目录文件,所以不能cd进入
[king@VM-12-11-centos test]$ touch file1 file2 file3 #touch可以连续创建多个文件 [king@VM-12-11-centos test]$ touch file4 #创建单个文件 [king@VM-12-11-centos test]$ ls file1 file2 file3 file4
功能:新建目录文件
mkdir也可以同时创建多个目录文件,cd可以进入,但是不能在一个目录文件下再创建多个子目录,这里就显示无法创建
选项-p:递归建立多个子目录
这里的tree指令是以树状显示文件,需要用yum下载
yum intsall -y tree
如果我们是普通用户,需要在前面加sudo, sudo可以短暂提升权限,以root的身份执行相应指令
单独su表示切换为root用户,需要输入root用户的密码
[ret@VM-12-11-centos ~]$ su Password: #输入root用户密码 [root@VM-12-11-centos ret]# whoami #切换为root用户 root [root@VM-12-11-centos ret]# su ret #root用户可以直接切换成指定用户,不需要输入用户密码 [ret@VM-12-11-centos ~]$ whoami #现在我们就切换到用户ret了 ret
如果我们sudo yum install -y tree
显示类似如下的指令,表示当前用户没有添加信任关系
需要以root的身份帮用户添加信任关系,我们将身份切换为root用户,执行如下指令即可添加信任关系,之后我们就可以sudo 了
echo 'xxx ALL=(ALL) ALL' >> /etc/sudoers (其中xxx代表用户名)
功能:删除空目录 ,也就是不存放其他文件的目录
这里p1不为空,所以无法删除,如要借助rm指令
我们删除文件一般都用rm指令,rmdir有点鸡肋
功能:删除目录或文件
选项:
删除目录要带r选项,此时我们的p1/p2/p3就删除了
如果我们想删除目录中的所以文件而不想删除目录,直接加通配符*
切记别把根目录给删除
rm -rf / #切记不要使用,递归强制删除根目录,可能会把系统干崩
linux中有很多的指令,如果我们不记得某个指令的使用,可以man一下,问问那个男人
选项:
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
9 内核例程
同样man需要我们下载 ,普通用户加sudo
yum install -y man-pages
man不加选项,默认解释指令
[king@VM-12-11-centos file11]$ man ls
q退出当前界面
[king@VM-12-11-centos file11]$ man 3 printf #我们可以查看printf库函数
语法:cp [选项] [源文件] [目标文件] [指定目录]
功能:复制文件或目录
常用选项:
-f 强行复制文件或目录, 不论目的文件或目录是否已经存在
-r 递归处理,将指定目录下的文件与子目录一并处理。
ファイル file11 をコピーし、 file という名前を付けます。
デフォルトでは現在のディレクトリにコピーされます。ディレクトリを指定することもできます。最後に
機能: ファイルの移動またはファイル名の変更
使用法:mv [オプション] [ソースファイル] [ target file]
Options:
-f: Force は強制を意味します。ターゲット ファイルが既に存在する場合は、何も尋ねることなく直接上書きされます。 .
-i: 宛先ファイル (destination) が既に存在する場合、上書きするかどうかを尋ねられます。
ここでは、ファイル file11 をファイル ディレクトリに移動します。
mv の後にファイルが続いていない場合、ファイル名を指定すると、ファイルの名前が変更されます。さらに、公開アカウントを検索するときに、Linux はバックグラウンドで「サル」と返信し、サプライズのギフトパッケージを受け取る方法を学習する必要があります。
たとえば、ファイル file11 の名前を変更してください。
関数: ファイルの内容の表示
構文: cat [オプション] [ファイル]
オプション:
-b: 空ではない出力行の番号
-n: すべての出力行の番号
文字列をファイルに書き込めますか?
答えは「はい」です。リダイレクトして文字列の後に > 記号とファイル名を追加すると、標準出力に表示する文字列をファイルに書き込むことができます。ファイルが存在しない場合は、 , ファイルは自動的に作成されます。これは出力リダイレクトです。
は、画面に表示されるべき文字列を対象ファイルに書き込みます。同時に出力します。リダイレクトすると、ファイルの元の内容が消去されます。再書き込み
これを書いているとき、以前の hello Linux はほぼ消去されています。
以前の内容を保持してそれを書きます、 リダイレクト > シンボルを追加して >> シンボルにする必要があります
cat コマンドの後にファイルは追加されません。デフォルトでは、内容がキーボードから読み取られてモニターにエコーされます。つまり、画面上の
です。之前cat显示文件内容就是通过输入重定向显示的
[king@VM-12-11-centos ~]$ cat < file #这个 < 符号可以省略 AAAAAAA BBBBBBB CCCCCCC
功能:和cat类似,一般用于查看日志,内容比较长的文件
选项:
-n :对行编号
q :退出more
比如这里我写一个内容从0-1000行的文件
关注公众号:【Linux就该这样学】,在公众号中回复:Linux
count=0; while [ $count -le 1000 ]; do echo "hello ${count}"; let count++; done > cat.txt
more会先显示一部分内容,按回车就可以继续读取内容,按q退出,但more有一个弊端,只能往下翻,不能往上翻,所以我们一般不用more指令
功能:查看文件内容,less用法比more更具有弹性,可以使用 [pageup][pagedown]
(前后按键)等按键的功能来往前往后翻看文件,而且less在查看之前不会加载整个文件。
选项:
-i :忽略大小写
#-N: 行番号を表示
[king@VM-12-11-centos ~]$ less cat.txt
我们输入 /3向上搜索字符3,less就会帮我们标记字符3的内容
还有其它选项大家可以直接尝试,这里就不在演示了,我们q退出less界面
牛逼啊!接私活必备的 N 个开源项目!赶快收藏吧
功能:显示文件内容的开头到标准输出,也就是屏幕上,head不加参数默认显示前10行
选项:
-n1dcc53fc8cc7b2478796660caa67152b
[king@VM-12-11-centos ~]$ head cat.txt #默认输出前10行 hello 0 hello 1 hello 2 hello 3 hello 4 hello 5 hello 6 hello 7 hello 8 hello 9 [king@VM-12-11-centos ~]$ head -n5 cat.txt #指定输出前5行 hello 0 hello 1 hello 2 hello 3 hello 4 [king@VM-12-11-centos ~]$ head -5 cat.txt # n可以省略 hello 0 hello 1 hello 2 hello 3 hello 4
功能:用于显示指定文件末尾内容,我们一般查看日志时肯定是查看最新的内容,也就是从尾部开始查看,tail就能很好的帮助我们查看最近的内容
选项:
-f :循环读取
-nbdaa72d45a486872e32cf8bb600e37b8
:显示行数
tail - f filename
会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容,非常适合查看日志
[king@VM-12-11-centos ~]$ tail cat.txt #tail不加行号默认显示尾10行 hello 991 hello 992 hello 993 hello 994 hello 995 hello 996 hello 997 hello 998 hello 999 hello 1000 [king@VM-12-11-centos ~]$ tail -n5 cat.txt #指定显示尾5行 hello 996 hello 997 hello 998 hello 999 hello 1000 [king@VM-12-11-centos ~]$ tail -5 cat.txt #n可以省略 hello 996 hello 997 hello 998 hello 999 hello 1000
那我们可以显示文件的头和尾,如果要显示文件中间的内容怎么办呢?
比如我们要显示第100行到110行,有两种方法:
通过重定向将前110行写入一个tmp临时文件,然后在读取尾10行,不过这种方法需要重新创建文件,不进浪费空间效率也低
答案是有的,第二种方法借助管道操作
使用管道时,默认隐式发生了重定向
# 符号 | 表示管道,通过管道将执行的结果传给下一条指令 [king@VM-12-11-centos ~]$ head -110 cat.txt | tail -10 hello 100 hello 101 hello 102 hello 103 hello 104 hello 105 hello 106 hello 107 hello 108 hello 109
格式
[king@VM-12-11-centos ~]$ date #date默认显示 Fri Jan 28 16:55:54 CST 2022 [king@VM-12-11-centos ~]$ date +%s #date +%s显示时间戳 1643360162 [king@VM-12-11-centos ~]$ date +%F%X #按年月日 时分秒的格式显示当前时间 2022-01-2804:56:08 PM [king@VM-12-11-centos ~]$ date +%F%X@1643360162 # @时间戳,将时间戳转换成标准时间 2022-01-2804:56:27 PM@1643360162
我们可以加_以示区分,但不能是空格,这种写法是错误的
機能: カレンダーの表示
オプション:
-3 前月、当月、来月のシステムカレンダーを表示します
-y 今年のカレンダーを表示します
cal はデフォルトで今月のカレンダーを表示します
[king@VM-12-11-centos ~]$ cal -y 2021 #也可以指定年份显示2021的年历
功能:在文件数中查找文件,并做出相应的处理(可能会访问磁盘),find指令会帮我们在当前目录以及所有该目录的所以子目录下查找相应的文件,当我们遍历一个大的文件系统时,可能会花费一点时间,然后显示相应的文件信息,但当我们下一次再用find查找时,就会快很多
find的选项非常多,这里列举一个,想了解更多可以man find
选项:-name :按照文件名查找
我们在根目录下查找文件名为text的文件,不过这里很多都是permission denied
,因为普通用户的权限不够,有很多文件都不能读取。另外,搜索公众号后端架构师后台回复“架构整洁”,获取一份惊喜礼包。
我们在自己的目录下查找文件名为file的文件,就会把该目录下的所以子文件名为file的显示出来
#ディレクトリの指定構文:find [開始ディレクトリの場所] [-name][ファイル名]
-n: 出力行番号
cat.txtExample
以上がよく使うLinuxコマンドを詳しく解説(集めておきたい)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。