web-dev-qa-db-ja.com

現在のユーザーのデスクトップディレクトリへのパスはどこに保存されていますか?

私はLinuxに非常に慣れていないので、すべての基本事項を習得しています。私がそうしている間に、OSが特定のファイルを異なる方法で処理すること、つまり、現在ログインしているユーザーに関連付けられているデスクトップファイルである場合にGUIデスクトップ環境でそれらを表示することによって、奇妙なことに気づきました。 OSは、現在のユーザーのデスクトップディレクトリへのパス変数をどのようにして知るのですか?ハッカーの娯楽のために、任意のディレクトリがGUIデスクトップに表示されるように変更できますか?

2
Shadow43375

デスクトップディレクトリのデフォルトパスは、言語によって異なります。したがって、システムに存在する場合、$HOME/Desktopよりも適切な推測をxdg-user-dirsから取得できます。

$ xdg-user-dirs DESKTOP
/home/arnie97/桌面

xdg-user-dirsホームページ から別の方法もあります:

デスクトップとダウンロードディレクトリを見つける方法のシェルスクリプトの例を次に示します。

test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
echo ${XDG_DESKTOP_DIR:-$HOME/Desktop}
echo ${XDG_DOWNLOAD_DIR:-$HOME}

アプリケーションコードについては、さまざまなデスクトップがこれを統合し、これらのディレクトリを見つけるための素晴らしいAPIを備えていることが期待されます。

3
Arnie97

一般に、GNU/Linux(Unixなど)では、ユーザーのデスクトップディレクトリは~/Desktopで指定できます。省略形~/は、/path/to/home/usernameなどのホームディレクトリが何であっても展開されます。

ほとんどのshells(例:bash、ksh、cshなど)は~をホームディレクトリに展開しますが、すべて(例:rc)には展開しないことを明確にする必要があります。チルダはリテラル文字であるため、ファイル~filenameを使用できます。したがって、シェルは、特定の条件下でチルドを拡張するように設計する必要があります。

1
gracious1

ほとんどのディストリビューション(Linux(またはGNU/Linux)は、変更可能でない場合でも、善悪を問わず何もないからです)のパスは/home/<user name>/Desktopコマンドラインから次のように移動できます:cd /home/<username>/Desktopファイルの表示は、引用符なしで「ls」コマンドを使用するのと同じくらい簡単です。

1
Chris

これはデスクトップ環境によって異なります。

ウィンドウマネージャーを使用している場合は、さまざまなツールを使用して、デスクトップにデータを表示できます。 PCmanFMデスクトップ

ほとんどのツールとデスクトップ環境は、xdg-user-dir DESKTOP設定を尊重します。

0
ctx

デスクトップディレクトリは、システムの言語によって異なります。他の人のために与えられたオプションに追加すると、ファイル〜/ .config/users-dirs.dirsを見つけることができます

あなたがコンテンツを読むことができる例:

cat ~/.config/users-dirs.dirs

私のマシンではこれを示しています:

# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a Shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
# 
XDG_DESKTOP_DIR="$HOME/Escritorio"
XDG_DOWNLOAD_DIR="$HOME/Descargas"
XDG_TEMPLATES_DIR="$HOME/Plantillas"
XDG_PUBLICSHARE_DIR="$HOME/Público"
XDG_DOCUMENTS_DIR="$HOME/Documentos"
XDG_MUSIC_DIR="$HOME/Música"
XDG_PICTURES_DIR="$HOME/Imágenes"
XDG_VIDEOS_DIR="$HOME/Vídeos"

デスクトップディレクトリを確認する方法は次のとおりです: "$ HOME/Escritorio" $ HOMEはホームフォルダーを参照する環境変数です。実際には:

cd ~/Escritorio 
# is the same 
cd "$HOME/Escritorio"

プログラミングによってデスクトップディレクトリを取得することに興味がある場合は、ファイルを読み取ってコンテンツを解析できます。たとえば、デスクトップのディレクトリを取得するための私のJavaScriptコードを見てください。

async getLinuxDesktop(){
    let file = Path.join(Os.homedir(), ".config", "user-dirs.dirs")
    let data = {}
    if(fs.existsSync(file)){
        let content = await fs.readFileAsync(file,"utf8")
        let lines = content.split(/\r?\n/g).filter((a)=> !a.startsWith("#"))
        for(let line of lines){
            let i = line.indexOf("=")
            if(i >= 0){
                try{
                    data[line.substring(0,i)] = JSON.parse(line.substring(i + 1))
                }catch(e){}
            }
        }
    }
    if(data["XDG_DESKTOP_DIR"]){
        let desktop = data["XDG_DESKTOP_DIR"]
        desktop = desktop.replace(/\$([A-Za-z\-\_]+)|\$\{([^\{^\}]+)\}/g, (_, a, b) => (process.env[a || b] || ""))
        return desktop
    }else{
        return Path.join(Os.homedir(),"Desktop")
    }
}
0
James Suárez