AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[ls](unix)

Martin Hope
dayuloli
Asked: 2024-08-25 03:06:59 +0800 CST

/dev 目录的 ls 输出中的十六进制数字代表什么?

  • 6

当我ls -l /dev在 Ubuntu 上运行时,我得到如下输出:

$ ls -l /dev
total 0
crw-r--r-- 1 root root     10, 235 Aug 24 16:36 autofs
drwxr-xr-x 2 root root         340 Aug 24 16:40 block
crw------- 1 root root     10, 234 Aug 24 16:36 btrfs-control
drwxr-xr-x 2 root root        2660 Aug 24 16:37 char

第 5列10, 235显示主设备号和次设备号,指定使用哪个设备驱动程序来管理文件。

当我在 macOS 上运行相同的命令时,我得到以下输出:

% ls -l /dev
total 1
crw-rw-rw-  1 root       wheel     0x16000000 14 Aug 22:16 aes_0
crw-------  1 root       wheel     0x15000001 14 Aug 22:16 afsc_type5
brw-------  1 root       operator   0x2000000 24 Aug 19:39 apfs-raw-device.2.0
crw-------  1 root       wheel      0xb000001 14 Aug 22:16 auditpipe

我得到的不是主/次编号,而是一个十六进制数。我的问题是 -这些十六进制数代表什么?


我尝试/研究过什么

  1. 不同的文件共享相同的十六进制数。所以它似乎不代表主/次编号,因为据我所知,该组合应该是唯一的?

    brw-r-----  1 root       operator   0x1000001 14 Aug 22:16 disk0s1
    crw-r-----  1 root       operator   0x1000001 14 Aug 22:16 rdisk0s1
    
  2. ChatGPT 试图说服我,十六进制数是主数和次数的打包格式,但对于如何解释它却不太清楚。如果我将 32 位分成两半,将前 16 位解释为主数,将后 16 位解释为次数,则主数似乎异常大(例如0x1d000000给出7424为主数)。

  3. coreutils在我的 Mac 上安装该包并使用ls后,我得到了熟悉的主/次要对。

    $ /opt/homebrew/Cellar/coreutils/9.5/libexec/gnubin/ls -l /dev
    total 1
    crw-rw-rw- 1 root      wheel    22,    0 Aug 14 22:16 aes_0
    crw------- 1 root      wheel    21,    1 Aug 14 22:16 afsc_type5
    brw------- 1 root      operator  2,    0 Aug 24 21:02 apfs-raw-device.2.0
    crw------- 1 root      wheel    11,    1 Aug 14 22:16 auditpipe
    ...
    brw-r----- 1 root      operator  1,    1 Aug 14 22:16 disk0s1
    ...
    crw-r----- 1 root      operator  1,    1 Aug 14 22:16 rdisk0s1
    
ls
  • 1 个回答
  • 111 Views
Martin Hope
gcb
Asked: 2024-08-03 00:14:37 +0800 CST

什么原因可能导致 ls 忽略 setgid (sg, g+s) 目录的 LS_COLORS?

  • 8

尝试以不同的颜色显示 setgid 但失败。

尝试了最低限度: LS_COLORS="sg:41;41" ls -la --color=auto但仍然得到了 setgid( chmod g+s) 目录的常规目录颜色。

然后尝试使用dircolors,首先使用输出“模板” dircolors -p > ~/.dircolors,仅编辑setgid行,然后eval $(dircolors -b ~/.dircolors)

# ~/.dircolors
…
SETGID 30;44 # file that is setgid (g+s)                                                                                                                              
…

它产生:

env | grep LS_
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;44:ca=00:tw=30;42:ow=30;44;01:st=30;44;01:ex=01;32:*.7z=01;31:*.ace=01;31:*.alz=01;31:*.apk=01;31:*.arc=01;31:*.arj=01;31:*.bz=01;31:*.bz2=01;31:*.cab=01;31:*.cpio=01;31:*.crate=01;31:*.deb=01;31:*.drpm=01;31:*.dwm=01;31:*.dz=01;31:*.ear=01;31:*.egg=01;31:*.esd=01;31:*.gz=01;31:*.jar=01;31:*.lha=01;31:*.lrz=01;31:*.lz=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.lzo=01;31:*.pyz=01;31:*.rar=01;31:*.rpm=01;31:*.rz=01;31:*.sar=01;31:*.swm=01;31:*.t7z=01;31:*.tar=01;31:*.taz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tgz=01;31:*.tlz=01;31:*.txz=01;31:*.tz=01;31:*.tzo=01;31:*.tzst=01;31:*.udeb=01;31:*.war=01;31:*.whl=01;31:*.wim=01;31:*.xz=01;31:*.z=01;31:*.zip=01;31:*.zoo=01;31:*.zst=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:

尝试了更明显的颜色41;41(红色加红色),但没有效果。

它对于文件来说工作得很好,但对于目录来说却不行。

这里有一些截图。D1是一个带有 setgid 的目录。

ls 没有显示 g+s 的颜色

与树相同,只是为了确保这不是孤立的东西ls g+s 的树不显示颜色

在上述测试中我su也使用了,因为和su都是sg其他 shell 上不可用的 gnu bash 扩展。

$ bash --version
GNU bash, version 5.2.26(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

$ ls --version
ls (GNU coreutils) 9.5
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

ls
  • 2 个回答
  • 97 Views
Martin Hope
user2153235
Asked: 2024-07-19 01:02:02 +0800 CST

让“ls”从文件中读取许多文件路径

  • 5

我经常使用以下习惯用法来查找从当前目录开始的文件树中的所有文件,然后提交文件路径,ls -lt以便按最新顺序显示它们:

$ find * -type f -print0 | xargs -0 ls -lt | head -n 20

我很惊讶最新的文件不见了。经过一番排查,我发现原因是xargs默认情况下处理 322 个项目,而最新的文件不位于前 322 个文件路径中。

我可以进一步侦查以调整 322 的最大值,但由于我并不总是知道我需要多少,所以我寻找ls从文本文件读取文件路径的方法。这样,我可以将finded 文件路径发送到(比如说)~/tmp/FilePaths.txt并ls从那里读取它们。

有没有办法做到ls这一点?按时间顺序排序的文件数量是否有限制ls -lt?具体来说,我需要将每一行都~/tmp/FilePaths.txt解释为文件路径。

sed如果我使用双引号修饰每行以强制将该行解释为单个参数(例如),那么实现此目的的选项会更多ls $(cat ~/tmp/FilePaths)。但是,某些文件名将包含双引号。我在企业 Windows 环境中使用 Cygwin,因此文件名可以是任意的。

ls
  • 1 个回答
  • 32 Views
Martin Hope
Logan Kitchen
Asked: 2024-03-14 03:20:38 +0800 CST

为什么在终端中显示时,文件名用双引号引起来,字符周围用单引号引起来?

  • 7

为什么文件中显示的文件会被双引号包围,而其中的字符被单引号包围?

"insight_automation.log'.'2024-03-13"

我使用的是 Ubuntu Server 22.04.3 LTS。服务器上安装的服务台管理程序(Atlassian Jira Data Center 9.12.4,如果相关)会写入各种日志文件。一些文件被轮换,更新后,当我执行时,一些日志文件显示如上所示

~$ ls /var/[application-directory-path]/log

其他日志文件显示时不带任何引号。一些例子:

atlassian-jira.log
atlassian-jira.log.1
insight_audit.log
insight_audit.log.2024-03-05
insight_automation.log

有很多关于 Unix 系统中单引号和双引号的帖子,特别是 GNU 开发人员在带有空格的文件周围添加单引号。我对这些字符和 Unix 周围的细微差别有些熟悉,但这对我来说是新的,而且我在网上找不到任何解释(可能是因为很难用语言表达这个问题)。

我查看了日志记录配置文件,发现拖欠的inform_automation.log轮换设置和其他日志文件之间没有任何不同。我唯一的猜测是名称中的点是不同的 Unicode 字符,其转义方式与文件名中的空格类似。也许是单点领导者、间断点或子弹头?

我确信我可以简单地解决这个问题,但知道为什么它会这样显示会有很大帮助。

ls
  • 1 个回答
  • 119 Views
Martin Hope
ecjb
Asked: 2023-11-28 18:57:50 +0800 CST

按字母顺序显示结果,无论大小写

  • 5

ls我在 MacOS 11.6.1 上使用。在输出中,大写字母显示在小写字母之前。例如,我得到以下输出:

$ ls

Blabla.txt
GAGAS.txt
asdf.txt
blabla.txt

并希望有:

$ ls

asdf.txt
blabla.txt
Blabla.txt
GAGAS.txt

这是正常的默认输出吗ls?我怎样才能得到输出数字2?

ls
  • 1 个回答
  • 35 Views
Martin Hope
nneonneo
Asked: 2023-11-25 19:05:21 +0800 CST

为什么 ls 按长度对中文文件名排序?

  • 9

我遇到了一些奇怪的行为,我无法完全理解ls中文文件名。我运行的是 macOS 13.6.1,启用了 SIP(​​无核心操作系统修改),安装了 MacPorts,并将美国英语作为主要语言。

首先,在空白文件夹中运行这个小脚本来创建一些测试文件:

import random

random.seed(42)

for i in range(30):
    n = random.randrange(3, 8)
    fn = "".join(random.choice("一二三") for _ in range(n))
    open(fn, "w")

这使得 30 个文件以字符一二三(一、二、三)的随机组合命名。

接下来,我在我的 Mac 上运行ls -l(根据手册页,版本为“macOS 13.5”):

% ls -l
total 8
-rw-r--r--@ 1 brx  staff  164 Nov 25 02:41 test.py
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一一三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三三一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二一二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一一三一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三二一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三三一三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三三三三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三二三一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三二二三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二一一一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二一三三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三二三三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三一三一一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三二一三二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三三二三一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一二一一三三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一二三二一一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二一一三三二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二三二三二三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二二一一二一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二二三二一二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三二一一一一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三二一一一二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一三二三三三一
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 一二一三二三三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 三一一二二二三
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二三三二三二二
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 二三二一二二一

这些文件显然是按文件名长度排序的,但在其他方面不是在相同的长度内排序的,就好像ls将所有汉字视为完全相同一样。

LANG设置为en_US.UTF-8(并且没有LC_*设置变量),所以也许这只是英文排序的问题?

% LANG=zh_CN.utf-8 ls -l
total 8
-rw-r--r--@ 1 brx  staff  164 11 25 02:41 test.py
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一一三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三三一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二一二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一一三一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三二一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三三一三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三三三三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三二三一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三二二三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二一一一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二一三三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三二三三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三一三一一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三二一三二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三三二三一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一二一一三三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一二三二一一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二一一三三二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二三二三二三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二二一一二一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二二三二一二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三二一一一一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三二一一一二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一三二三三三一
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 一二一三二三三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 三一一二二二三
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二三三二三二二
-rw-r--r--+ 1 brx  staff    0 11 25 02:41 二三二一二二一

是的,也许这只是Mac内置的ls蹩脚;让我们尝试一下 GNU Coreutils(来自 MacPorts,ls (GNU coreutils) 9.4):

% gls -l
total 4
-rw-r--r--+ 1 brx staff 164 Nov 25 02:41 test.py
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一一三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一一三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三三一三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三三三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三二三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三二二三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三一三一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三二一三二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三三二三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一二一一三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一二三二一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一一三三二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二三二三二三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二二一一二一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二二三二一二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二一一一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二一一一二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二三三三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一二一三二三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三一一二二二三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二三三二三二二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二三二一二二一
% LANG=zh_CN.utf-8 gls -l
总计 4
-rw-r--r--+ 1 brx staff 164 1125日 02:41 test.py
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一一三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三三一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二一二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一一三一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三二一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三三一三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三三三三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三二三一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三二二三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二一一一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二一三三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三二三三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三一三一一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三二一三二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三三二三一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一二一一三三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一二三二一一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二一一三三二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二三二三二三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二二一一二一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二二三二一二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三二一一一一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三二一一一二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一三二三三三一
-rw-r--r--+ 1 brx staff   0 1125日 02:41 一二一三二三三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 三一一二二二三
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二三三二三二二
-rw-r--r--+ 1 brx staff   0 1125日 02:41 二三二一二二一

除了GNU Coreutils幽默地破坏了日期显示之外,没有任何变化。唯一似乎有用的是C.utf-8:

% LANG=C.utf-8 ls -l
total 8
-rw-r--r--@ 1 brx  staff  164 Nov 25 02:41 test.py
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ???????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ???????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ???????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ?????????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
-rw-r--r--+ 1 brx  staff    0 Nov 25 02:41 ??????????????????
% LANG=C.utf-8 gls -l
total 4
-rw-r--r--+ 1 brx staff 164 Nov 25 02:41 test.py
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一一三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一一三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三三二三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二一一一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二一一一二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一三二三三三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一二一一三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一二一三二三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 一二三二一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三一一二二二三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三一三一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三三一三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三三三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三二一三二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三二三一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 三二二三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一一一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一一三三二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一三三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二一二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二三三二三二二
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二三二一二二一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二三二三二三
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二二一一二一
-rw-r--r--+ 1 brx staff   0 Nov 25 02:41 二二三二一二

这里发生了什么?我的 Mac 上的区域设置是否损坏?

编辑:为了澄清预期的行为:我希望ls以任何合理的排序顺序对字符进行排序;一些合理的顺序是 Unicode 代码点(一、三、二)、数字或笔划数顺序(一、二、三)或拼音顺序(二、三、一,对应于“二、三、一”)。

回答评论的一些额外信息(在en_US.UTF-8语言环境中):

  • sort当通过管道传送到或gsort有或没有时,顺序保持不变-u。

  • 实际上我的系统上没有 C.utf-8 语言环境,这解释了为什么我得到与 C 语言环境中相同的输出,按字节值排序,每个字节呈现为?.

  • expr '一二三' '<' '三一二'、expr '一二三' '>' '三一二'、expr '一二三' = '三一二'分别返回 1、0 和 0,无论是使用 macosexpr还是 GNU expr。

  • perl -MPOSIX -le 'print strcoll@ARGV' -- '一' '二'输出-140是否随perlmacos 或 MacPorts 一起提供。

  • perl -MPOSIX -le 'print strcoll@ARGV' -- '一一' '二'输出19968

  • 这些字符的编码看起来像$'\344\270\200\344\270\200\344\270\211'区域设置中一一三报告的那样,因此看起来它们已正确编码为 UTF-8。glsC

  • 的输出perl -MPOSIX -le 'print unpack "H*", strxfrm$_ for @ARGV' -- '一' '一一' '二'是:

    303034323030303030346c32
    30303432303034323030303030346c3230346c32
    303034323030303030346e3e
    
  • 的输出perl -MPOSIX -le 'print "$_\t" . unpack "H*", strxfrm$_ for <*>'是

    一一三一  303034323030343230303432303034323030303030346c3230346c3230346c3b30346c32
    一一三   3030343230303432303034323030303030346c3230346c3230346c3b
    一三三二三一    3030343230303432303034323030343230303432303034323030303030346c3230346c3b30346c3b30346e3e30346c3b30346c32
    一三二一一一一   303034323030343230303432303034323030343230303432303034323030303030346c3230346c3b30346e3e30346c3230346c3230346c3230346c32
    一三二一一一二   303034323030343230303432303034323030343230303432303034323030303030346c3230346c3b30346e3e30346c3230346c3230346c3230346e3e
    一三二一  303034323030343230303432303034323030303030346c3230346c3b30346e3e30346c32
    一三二三三三一   303034323030343230303432303034323030343230303432303034323030303030346c3230346c3b30346e3e30346c3b30346c3b30346c3b30346c32
    一三二三三 30303432303034323030343230303432303034323030303030346c3230346c3b30346e3e30346c3b30346c3b
    一三二   3030343230303432303034323030303030346c3230346c3b30346e3e
    一二一一三三    3030343230303432303034323030343230303432303034323030303030346c3230346e3e30346c3230346c3230346c3b30346c3b
    一二一三二三三   303034323030343230303432303034323030343230303432303034323030303030346c3230346e3e30346c3230346c3b30346e3e30346c3b30346c3b
    一二三二一一    3030343230303432303034323030343230303432303034323030303030346c3230346e3e30346c3b30346e3e30346c3230346c32
    三一一二二二三   303034323030343230303432303034323030343230303432303034323030303030346c3b30346c3230346c3230346e3e30346e3e30346e3e30346c3b
    三一三一一 30303432303034323030343230303432303034323030303030346c3b30346c3230346c3b30346c3230346c32
    三三一三  303034323030343230303432303034323030303030346c3b30346c3b30346c3230346c3b
    三三一   3030343230303432303034323030303030346c3b30346c3b30346c32
    三三三三  303034323030343230303432303034323030303030346c3b30346c3b30346c3b30346c3b
    三二一三二 30303432303034323030343230303432303034323030303030346c3b30346e3e30346c3230346c3b30346e3e
    三二三一  303034323030343230303432303034323030303030346c3b30346e3e30346c3b30346c32
    三二二三  303034323030343230303432303034323030303030346c3b30346e3e30346e3e30346c3b
    二一一一  303034323030343230303432303034323030303030346e3e30346c3230346c3230346c32
    二一一三三二    3030343230303432303034323030343230303432303034323030303030346e3e30346c3230346c3230346c3b30346c3b30346e3e
    二一三三  303034323030343230303432303034323030303030346e3e30346c3230346c3b30346c3b
    二一二   3030343230303432303034323030303030346e3e30346c3230346e3e
    二三三二三二二   303034323030343230303432303034323030343230303432303034323030303030346e3e30346c3b30346c3b30346e3e30346c3b30346e3e30346e3e
    二三二一二二一   303034323030343230303432303034323030343230303432303034323030303030346e3e30346c3b30346e3e30346c3230346e3e30346e3e30346c32
    二三二三二三    3030343230303432303034323030343230303432303034323030303030346e3e30346c3b30346e3e30346c3b30346e3e30346c3b
    二二一一二一    3030343230303432303034323030343230303432303034323030303030346e3e30346e3e30346c3230346c3230346e3e30346c32
    二二三二一二    3030343230303432303034323030343230303432303034323030303030346e3e30346e3e30346c3b30346e3e30346c3230346e3e
    test.py   303033563030333830303355303033563030314d303033523030335f30303030303033563030333830303355303033563030314d303033523030335f
    
ls
  • 2 个回答
  • 111 Views
Martin Hope
Maxhawk
Asked: 2023-10-01 03:15:51 +0800 CST

需要有关 ls 和转义字符的帮助[重复]

  • 5
这个问题在这里已经有了答案:
为什么*不*解析`ls`(以及该怎么做)? (10 个回答)
为什么我的 shell 脚本会因为空格或其他特殊字符而卡住? (6 个回答)
2 天前关闭。

我正在尝试创建一个 bash 脚本,对目录中文件名包含空格的每个文件运行 ffmpeg 命令。这是我开始制作一个可以正常工作的单个文件的脚本。我用来tab填充文件名参数,其中包括所有空格的转义字符:

#!/bin/bash
input="./"$1
output="/xfer/transfer/temp/"$1
ffmpeg -i "${input}" -c:v copy -c:a libfdk_aac -b:a 160k "${output}"

下一步是对目录中的所有文件执行 ffmpeg 命令。假设目录如下所示,命令如下ls:

'Name of First File.mkv'
'Name of Second File.mkv'

这是我的测试代码:

#!/bin/bash
files=$(ls *)

for input in ${files}
do
   echo $input
done

我的问题是输出如下所示:

Name
of
First
File.mkv
Name
Of
Second
File.mkv

在 ls 命令中添加 a-b只是在每行末尾添加一个反斜杠。我需要帮助让$input看起来像Name of First File.mkv等等。

ls
  • 1 个回答
  • 49 Views
Martin Hope
John Smith
Asked: 2023-08-22 16:20:17 +0800 CST

如何可靠地捕获此脚本中“ls”的输出?

  • 7

以下脚本play_movie.sh旨在自动选择一部电影(如果当前目录中只有一部电影)并使用ffplay. 否则,它的目的是向用户显示一系列电影并接受他们的输入(要播放的电影)。

#!/usr/bin/bash

output_a=$(ls -R *.[aA][vV][iI] 2>/dev/null)
output_m=$(ls -R *.[mM][kKpP][vV4]] 2>/dev/null)
output_v=$(ls -R *.[vV][oO][bB]] 2>/dev/null)
all_exts="${output_a}${output_m}${output_v}"
ln_cnt=$(echo "${all_exts}" | wc -l)

if [[ "$ln_cnt" -eq 1 ]]; then
  echo -e "Playing: ${all_exts}\n"
  ffplay -hide_banner -infbuf -fs -sn -ast a:0 "${all_exts}"
elif [[ "$ln_cnt" -gt 1 ]]; then
  printf "Select a file out of the list below"
  ls -R *.[aA][vV][iI] 2>/dev/null 
  ls -R *.[mM][kKpP][vV4] 2>/dev/null 
  ls -R *.[vV][oO][bB] 2>/dev/null
  read line; ffplay -hide_banner -infbuf -fs -sn -ast a:0 "$line"
fi

我对这个脚本的问题是:

  1. if即使当前目录中有很多电影,脚本也会执行语句的第一个分支。然后我明白了No such file or directory。
  2. 如果只有一部电影要播放,我会的No such file or directory。

我很难依赖ls过去的输出。是否可以修复此脚本而无需使用find?

ls
  • 2 个回答
  • 401 Views
Martin Hope
Geremia
Asked: 2023-07-12 02:28:04 +0800 CST

ls 从特定文件开始

  • 6

如何ls在以特定文件名开头的目录中保存文件?

例如,如果我的 CWD 有以下文件:

$ ls -1
alpha.mp3
bar.xls
file1.txt
file2.txt
foo.odt
testing3.txt

如何打印以“file2.txt”开头的文件:

file2.txt
foo.odt
testing3.txt

或者在“foo.odt”处:

foo.odt
testing3.txt

?

ls
  • 3 个回答
  • 55 Views
Martin Hope
Ciprian Tomoiagă
Asked: 2023-01-10 00:07:40 +0800 CST

为什么'ls'只在我在某个目录时才显示内容?

  • 18

我正面临着一种ls我无法搜索到的非常混乱的行为。它显示目录中有内容,但只有当我在创建这些内容的目录中时才显示。

让我演示给你看:

ciprian Documents $ pwd
/Users/ciprian/Documents

ciprian Documents $ ls ../Downloads/rss22/
22rss-USB/

ciprian Documents $ ls ../Downloads/rss22/22rss-USB/
HTML/

ciprian Documents $ cd ../Downloads/rss22

ciprian rss22 $ ls

ciprian rss22 $ ls 22rss-USB/
gls: cannot access '22rss-USB/': No such file or directory

在我cd编辑到之后../Downloads/rss22,它的内容显示为空。cd ~/Desktop如果 I然后 I ,它也显示为空ls ../Downloads/rss22/,就像这里的第一种情况。

对我来说,这表明可能有一个名为../Downloads/rss22 inside Documents的文件夹。但我无法弄清楚如何显示它。ls -a ~/Documents不显示与这些文件夹相关的任何内容。

到底是怎么回事?

这些文件是通过尝试从存档中部分提取来创建的:unzip 22rss-USB.zip "22rss-USB/HTML/**/*" -d ../Downloads/rss22/

作为参考,我在macOS上,但我认为这不相关(它是 Unix,对吧?)。我正在使用 Bash 5.1.16(从默认 zsh 更改)。

输出type pwd:pwd 是一个 shell 内置命令。

事实证明,如果我这样做cd -P ../Downloads/igarss22/,它就会显示我期望的内容。我在哪里可以看到更多相关信息?man cd没有显示任何关于-P.

现在,之后cd -P ../Downloads/igarss22/

ciprian Documents $ cd -P ../Downloads/igarss22

ciprian igarss22 $ pwd
/Users/ciprian/Library/CloudStorage/OneDrive/Downloads/igarss22

正确的。所以我忘了这个;my~/Documents是指向我的 OneDrive 下文件夹的符号链接:

$ ll ~/ | grep Doc
lrwxr-xr-x    1 ciprian   38 May 19  2022 Documents -> /Users/ciprian/OneDrive/Documents

由于macOS v12 (Monterey)的一些魔法和变化,它实际上位于/Users/ciprian/Library/CloudStorage/OneDrive.

我仍然不确定到底发生了什么

ls
  • 1 个回答
  • 1655 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve