AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / 问题

Perguntas[ls](unix)

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

O que os números hexadecimais representam na saída ls do diretório /dev?

  • 6

Quando executo ls -l /devno meu Ubuntu, recebo uma saída como esta:

$ 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

A 10, 235quinta coluna mostra os números maiores e menores que especificam qual driver de dispositivo é usado para gerenciar o arquivo.

Quando executo o mesmo comando no macOS, recebo esta saída:

% 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

Em vez dos números maiores/menores, recebo um único número hexadecimal. Minha pergunta é: o que esses números hexadecimais representam?


O que eu tentei/pesquisei

  1. Existem arquivos diferentes que compartilham o mesmo hexadecimal. Então não parece representar os números maiores/menores, pois, pelo que entendi, essa combinação deveria ser única?

    brw-r-----  1 root       operator   0x1000001 14 Aug 22:16 disk0s1
    crw-r-----  1 root       operator   0x1000001 14 Aug 22:16 rdisk0s1
    
  2. ChatGPT tenta me convencer de que o número hexadecimal é um formato compactado para os números maiores e menores, mas não estava sendo muito claro sobre como interpretá-lo. Se eu dividir os 32 bits em metades e interpretar os primeiros 16 bits como maiores e os últimos 16 bits como menores, o número maior parecerá extraordinariamente grande (por exemplo, 0x1d000000dá 7424como o número maior.

  3. Instalar o coreutilspacote no meu Mac e usá- lslo me deu os familiares pares maiores/menores.

    $ /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 respostas
  • 111 Views
Martin Hope
gcb
Asked: 2024-08-03 00:14:37 +0800 CST

O que pode estar fazendo com que ls ignore LS_COLORS para diretórios setgid (sg, g+s)?

  • 8

Tentando mostrar o setgid em uma cor diferente e falhando.

tentei com o mínimo: LS_COLORS="sg:41;41" ls -la --color=automas ainda obtive cores de diretório regulares para um chmod g+sdiretório setgid ().

Então tentei com dircolors, primeiro produzi o "template" com dircolors -p > ~/.dircolors, editei apenas a linha setgid eeval $(dircolors -b ~/.dircolors)

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

produz:

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:

tentei cores mais óbvias 41;41(vermelho sobre vermelho), mas nada.

Funciona bem para arquivos , mas não para diretórios .

Aqui estão algumas capturas de tela. D1é um diretório com setgid.

l não está mostrando cor para g+s

o mesmo com a árvore só para ter certeza de que isso não é algo isolado parals árvore não mostrando cor para g+s

nos testes acima eu sutambém uso, porque ambos sue sgsão extensões gnu bash não disponíveis em outros shells.

$ 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 respostas
  • 97 Views
Martin Hope
user2153235
Asked: 2024-07-19 01:02:02 +0800 CST

Faça com que "ls" leia muitos caminhos de arquivo de um arquivo

  • 5

Freqüentemente uso o seguinte idioma para localizar todos os arquivos na árvore de arquivos iniciando o diretório atual e, em seguida, enviar os caminhos dos arquivos ls -ltpara que sejam mostrados os mais novos primeiro:

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

Fiquei surpreso ao ver que o arquivo mais recente estava faltando. Após algumas soluções de problemas, descobri que o motivo é que xargsprocessa 322 itens por padrão e o arquivo mais recente não estava entre os primeiros 322 caminhos de arquivo.

Eu poderia investigar mais para ajustar o máximo de 322, mas como nem sempre saberei de quantos precisarei, procurei maneiras de lsler caminhos de arquivo de um arquivo de texto. Dessa forma, posso enviar os findcaminhos do arquivo ed para (digamos) ~/tmp/FilePaths.txte lslê-los a partir daí.

Existe uma maneira de fazer lsisso? Existe um limite para quantos arquivos ele pode classificar cronologicamente para fins de ls -lt? Especificamente, preciso que cada linha inteira seja ~/tmp/FilePaths.txtinterpretada como caminho de arquivo.

Haveria mais opções para conseguir isso se eu sedadornasse cada linha com (digamos) aspas duplas para forçar a linha a ser interpretada como um único argumento, por exemplo ls $(cat ~/tmp/FilePaths),. No entanto, alguns nomes de arquivos conterão aspas duplas. Eu uso o Cygwin em um ambiente corporativo do Windows, então vale tudo no que diz respeito aos nomes de arquivos.

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

Por que um nome de arquivo está entre aspas duplas e aspas simples em torno de um caractere quando exibido no terminal?

  • 7

Por que um arquivo apareceria entre aspas duplas com um caractere entre aspas simples?

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

Estou usando o Ubuntu Server 22.04.3 LTS. Um programa de gerenciamento de central de serviços (Atlassian Jira Data Center 9.12.4, se for relevante) instalado no servidor grava em vários arquivos de log. Alguns dos arquivos são girados e, após uma atualização, alguns dos arquivos de log são exibidos conforme mostrado acima quando eu executo

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

Outros arquivos de log são exibidos sem aspas. Alguns exemplos:

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

Existem muitos posts sobre aspas simples e duplas em sistemas Unix, especialmente com os desenvolvedores GNU adicionando aspas simples em torno de arquivos com espaços. Estou um pouco familiarizado com as nuances que cercam esses personagens e o Unix, mas isso é novo para mim e não consigo encontrar uma explicação em nenhum lugar online (provavelmente porque é difícil formular o problema).

Examinei os arquivos de configuração de log e nada parece diferente entre as configurações de rotação inadimplentes do insight_automation.log e os outros arquivos de log. Meu único palpite é que o ponto no nome é um caractere Unicode diferente que tem escape semelhante ao dos espaços nos nomes de arquivos. Talvez One Dot Leader, Interpunct ou Bullet?

Tenho certeza de que posso resolver o problema de forma simples, mas saber por que ele é exibido dessa forma ajudaria muito.

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

Exibir os resultados em ordem alfabética, independentemente do caso

  • 5

Estou usando lsno MacOS 11.6.1. Na saída, as letras maiúsculas são exibidas antes das minúsculas. Por exemplo, recebo a seguinte saída:

$ ls

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

e gostaria de ter em vez disso:

$ ls

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

Esta é a saída padrão normal de ls? Como posso ter o número de saída 2?

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

Por que ls está classificando os nomes de arquivos chineses por comprimento?

  • 9

Encontrei um comportamento um pouco estranho que não entendo completamente com lsnomes de arquivos chineses. Estou executando o macOS 13.6.1 com SIP habilitado (sem modificações principais do sistema operacional), MacPorts instalados e inglês dos EUA como idioma principal.

Primeiro, execute este pequeno script em uma pasta em branco para fazer alguns arquivos de teste:

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")

Isso perfaz 30 arquivos nomeados com combinações aleatórias dos caracteres 一二三 (um, dois, três).

Em seguida, executo ls -lno meu Mac (versão "macOS 13.5" de acordo com a página de manual):

% 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 二三二一二二一

Os arquivos são claramente classificados por comprimento do nome do arquivo , mas de outra forma não são classificados em comprimentos idênticos, como se lsestivessem tratando todos os caracteres chineses como sendo exatamente equivalentes.

LANGestá definido como en_US.UTF-8(e nenhuma LC_*variável está definida), então talvez isso seja apenas um problema com a classificação em inglês?

% 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 二三二一二二一

Certo, talvez seja apenas o Mac integrado lssendo uma porcaria; vamos tentar GNU Coreutils (de 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 二三二一二二一

Além da exibição de data humoristicamente quebrada do GNU Coreutils, nada muda. A única coisa que parece funcionar é 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 二二三二一二

O que está acontecendo aqui? As localidades estão quebradas no meu Mac?

EDIT: Para esclarecer o comportamento esperado : eu esperaria lsclassificar os caracteres em qualquer ordem de classificação razoável; alguns pedidos razoáveis ​​seriam ponto de código Unicode (一, 三, 二), ordem numérica ou de contagem de traços (一, 二, 三) ou ordem Pinyin (二, 三, 一, correspondente a "er, san, yi").

Algumas informações extras para responder comentários (no en_US.UTF-8local):

  • a ordem permanece a mesma quando canalizada para sortou gsortcom ou sem -u.

  • na verdade, não há localidade C.utf-8 em meu sistema, o que explica por que obtenho a mesma saída que na localidade C, uma ordem por valor de byte e cada byte renderizado como ?.

  • expr '一二三' '<' '三一二', expr '一二三' '>' '三一二', expr '一二三' = '三一二'retorna 1, 0 e 0 respectivamente, seja com macos exprou GNU expr.

  • perl -MPOSIX -le 'print strcoll@ARGV' -- '一' '二'produz -140, seja com o perlfornecido com macos ou MacPorts.

  • perl -MPOSIX -le 'print strcoll@ARGV' -- '一一' '二'saídas19968

  • as codificações desses caracteres são semelhantes $'\344\270\200\344\270\200\344\270\211'às 一一三relatadas por glsno código do Cidioma, portanto, parece que eles estão codificados corretamente em UTF-8.

  • a saída de perl -MPOSIX -le 'print unpack "H*", strxfrm$_ for @ARGV' -- '一' '一一' '二'é:

    303034323030303030346c32
    30303432303034323030303030346c3230346c32
    303034323030303030346e3e
    
  • a saída de 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 respostas
  • 111 Views
Martin Hope
Maxhawk
Asked: 2023-10-01 03:15:51 +0800 CST

Precisa de ajuda com ls e caracteres de escape [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
Por que *não* analisar `ls` (e o que fazer em vez disso)? (10 respostas)
Por que meu script de shell engasga com espaços em branco ou outros caracteres especiais? (6 respostas)
Fechado há 2 dias .

Estou tentando criar um script bash para executar o comando ffmpeg em todos os arquivos em um diretório com nomes de arquivos que contenham espaços. Este é o script com o qual comecei para fazer um arquivo individual que funcione corretamente. Eu uso tabpara preencher o argumento filename que inclui um caractere de escape para todos os espaços:

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

O próximo passo é executar o comando ffmpeg em todos os arquivos de um diretório. Digamos que o diretório fique assim com o lscomando:

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

Aqui está meu código de teste:

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

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

Meu problema é que a saída fica assim:

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

Adicionar a -bao comando ls simplesmente adiciona uma barra invertida ao final de cada linha. Preciso de ajuda para fazer $inputparecer Name of First File.mkv, etc.

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

Como capturar de forma confiável a saída de 'ls' neste script?

  • 7

O script a seguir play_movie.shdestina-se a selecionar automaticamente um filme se houver apenas um no diretório atual e reproduzi-lo com ffplay. Caso contrário, destina-se a exibir uma seleção de filmes ao usuário e obter informações deles (o filme a ser reproduzido).

#!/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

O problema que tenho com este script:

  1. O script executa a primeira ramificação da ifinstrução mesmo se houver muitos filmes no diretório atual. Então eu entendo No such file or directory.
  2. Se houver apenas um filme para ser exibido, eu ganho No such file or directory.

Tive dificuldade em confiar na saída do lspassado. É possível corrigir esse script sem a necessidade de usar find?

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

ls começando em um arquivo específico

  • 6

Como faço para lsarquivos em um diretório começando com um nome de arquivo específico?

Por exemplo, se meu CWD tiver esses arquivos:

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

Como imprimo os arquivos começando em, digamos, "arquivo2.txt":

file2.txt
foo.odt
testing3.txt

ou em, digamos, "foo.odt":

foo.odt
testing3.txt

?

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

Por que 'ls' só exibe o conteúdo quando estou em um determinado diretório?

  • 18

Estou enfrentando um comportamento muito confuso que lsnão consigo procurar. Ele mostra que há conteúdo em um diretório, mas apenas quando estou no diretório de onde eles foram criados.

Deixe-me te mostrar:

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

Depois que eu cded to ../Downloads/rss22, seu conteúdo é exibido como vazio. Também é mostrado vazio if I cd ~/Desktope then I ls ../Downloads/rss22/, como no primeiro caso aqui.

Para mim, isso indica que pode haver uma pasta chamada ../Downloads/rss22 dentro de Documents . Mas não consigo descobrir como exibi-lo. ls -a ~/Documentsnão mostra nada relacionado a essas pastas.

O que está acontecendo?

Os arquivos foram criados tentando uma extração parcial de um arquivo:unzip 22rss-USB.zip "22rss-USB/HTML/**/*" -d ../Downloads/rss22/

Para referência, estou no macOS , embora não ache isso relevante (é um Unix, certo?). Estou usando o Bash 5.1.16 (alterado do zsh padrão).

Saída de type pwd: pwd é um shell embutido.

Acontece que, se eu fizer cd -P ../Downloads/igarss22/isso, ele mostrará o conteúdo que eu espero. Onde posso ver mais sobre isso? man cdnão mostra nada sobre -P.

Agora, depoiscd -P ../Downloads/igarss22/

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

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

Certo. Então eu esqueci isso; my ~/Documentsé um link simbólico para uma pasta no meu OneDrive:

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

Que, devido a alguma mágica e mudanças no macOS v12 (Monterey), na verdade vive sob /Users/ciprian/Library/CloudStorage/OneDrive.

Eu ainda não tenho certeza do que exatamente está acontecendo

ls
  • 1 respostas
  • 1655 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve